C语言职工工作量统计系统.docx
《C语言职工工作量统计系统.docx》由会员分享,可在线阅读,更多相关《C语言职工工作量统计系统.docx(18页珍藏版)》请在冰豆网上搜索。
C语言职工工作量统计系统
《C语言课程设计》报告
题目:
职工工作量统计系统
班级:
学号:
姓名:
指导老师:
成绩:
1.课程设计的目的和意义···········································1
2.总体设计思路(功能模块图)······························2
3.详细设计··························································3
4.课程设计总体会··············································15
5.教师评语························································15
一、课程设计目的和意义
通过课程设计的实践环节的教学,可以加深对课堂所学基础知识的掌握与理解,提高所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。
“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。
二、总体设计思路(功能模块图)
三、详细设计
1、模块功能介绍
一.输入职工基本信息
二.工作量输入并累加
三.按工作量从大到小排序并标上名次
四.按职工号删除职工信息
2、程序清单
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#define"worker.bin"
#defineN20
structworker
{
intnumber;/*工号*/
intcounts;/*数量*/
intgrade;/*等级*/
};
/*******************************************************
定义
*******************************************************/
voidxinxi()
{
printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("+职工工作量统计系统+\n");
printf("++\n");
printf("+1.职工基本信息输入+\n");
printf("++\n");
printf("+2.工作量输入+\n");
printf("++\n");
printf("+3.按工作量排序+\n");
printf("++\n");
printf("+4.按职工工号进行信息删除+\n");
printf("++\n");
printf("+5.结束程序+\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
}
/*******************************************************
显示菜单
*******************************************************/
intreadFromworkerw[])
{
FILE*fp=NULL;
inti=0;
fp=fopen(,"rb");/*打开文件*/
if(fp!
=NULL)
{
while(!
feof(fp))/*从文件中读入学生*/
{
if(i>=N)
break;
if(fread(w+i,sizeof(worker),1,fp)==1)
i++;
}
fclose(fp);
}
returni;
}
/*******************************************************
信息显示到屏幕
*******************************************************/
intf(structworkerw[],intlength)
{
inti=length;
while(i{
printf("第%d个职工\n",i);
printf("\n");
printf("请你输入工号(以职工号为0结束):
\n");/*输入工号*/
scanf("%d",&w[i].number);
if(w[i].number==0)
break;
printf("\n");
printf("\n");
printf("请你输入数量:
\n");/*输入数量*/
scanf("%d",&w[i].counts);
printf("\n");
i++;
}
returni;
}
/*******************************************************
功能:
输入职工基本信息
*******************************************************/
voidinput(structworkerw[],intlength)
{
inti=1;
intnumber,counts;
printf("请输入工号:
");
scanf("%d",&number);
while(number!
=0)
{
printf("请输入完成数量:
\n");
scanf("%d",&counts);
for(i=0;iif(w[i].number==number)
{
w[i].counts+=counts;
break;
}
if(i>=length)
printf("工号不存在:
\n");
printf("请输入工号:
");
scanf("%d",&number);
}
}
/*******************************************************
功能:
工作量输入并累加
*******************************************************/
voidsortCounts(structworkerw[],intlength)
{
inti=0,j=0,k=0;
structworkers;
for(i=0;i{
k=i;
for(j=i+1;jif(w[j].counts>w[k].counts)
k=j;
/*交换w[i]andw[k]*/
s=w[k];
w[k]=w[i];
w[i]=s;
}
if(length>0)
w[0].grade=1;
for(i=1;iif(w[i].counts==w[i-1].counts)
w[i].grade=w[i-1].grade;
else
w[i].grade=w[i-1].grade+1;
}
////////////////////////////////////////////////////////////////////////////////
/*按工作量从大到小排序并标上名次*/
////////////////////////////////////////////////////////////////////////////////
voidsortNumber(structworkerw[],intlength)
{
inti=0;
intgrade,count;
if(length>0)
{while(i{
count=0;
grade=w[i].grade;
printf("名次:
%d",grade);
printf("工作量:
%d",w[i].counts);
printf("%s","工号:
");
while(i{
if(grade==w[i].grade)
{
printf("%d",w[i].number);
count++;
}
else
break;
i++;
}
printf("人数:
%d\n",count);
}
}
else
printf("职工数据不存在!
\n");
}
////////////////////////////////////////////////////////////////////////////////
/*输出名次、同一名次的职工人数及他们的工号,姓名*/
////////////////////////////////////////////////////////////////////////////////
intdelet(structworkerw[],intlength,intstuNum)
{
inti,j;
charchoice;
for(i=0;i{
if(stuNum==w[i].number)
{
printf("%s","欲删除职工号为:
");
printf("%d\n",w[i].number);
break;
}
}
if(i{
printf("你确实要删除这个职工吗?
(Y/N)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{
for(j=i;jw[j]=w[j+1];
length--;
printf("删除成功!
\n");
}
}
else
printf("\n指定的职工不存在!
\n");
returnlength;
}
/********************************************************
按职工号删除职工信息
********************************************************/
voidwriteToworkerw[],intlength)
{
FILE*fp=NULL;
inti=0;
fp=fopen(,"wb");
if(fp==NULL)
{
printf("打开文件出错!
\n");
exit(0);
}
for(i=0;ifwrite(w+i,sizeof(worker),1,fp);
fclose(fp);
}
/********************************************************
结构体数组中的职工信息输出到文件
********************************************************/
voidmain()
{
intchoice;
structworkerw[N];
intNUM;charstuName[100];
intstuNum;
intlength=0;
length=readFromFile(w);//读入
do
{xinxi();
scanf("%d",&choice);
switch(choice)
{case1:
length=f(w,length);
break;
case2:
input(w,length);
break;
case3:
sortCounts(w,length);
sortNumber(w,length);
break;
case4:
printf("请输入欲删除的职工号");
scanf("%d",&stuNum);
length=delet(w,length,stuNum);
break;
case5:
{
writeTo);//保存
printf("程序使用以结束\n");
exit(0);
}
default:
{
printf("输入有错误请重新输入:
\n");
}
}
}while
(1);
}
3、系统运行结果
显示菜单
职工信息输入
工作量输入
按工作量排序
按工号删除信息
结束程序
四、课程设计总结体会
经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,这段时间里,我又学到了更多C知识,如:
对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。
,这一点会让我终生受益。
通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
五、教师评语
评阅教师:
评阅日期:
2010年9月