C语言职工工作量统计系统.docx
- 文档编号:30284844
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:19
- 大小:416.09KB
C语言职工工作量统计系统.docx
《C语言职工工作量统计系统.docx》由会员分享,可在线阅读,更多相关《C语言职工工作量统计系统.docx(19页珍藏版)》请在冰豆网上搜索。
C语言职工工作量统计系统
C语言职工工作量统计系统
C语言职工工作量统计系统(总17页)
《C语言课程设计》报告
题目:
职工工作量统计系统
班级:
学号:
姓名:
指导老师:
成绩:
1.课程设计的目的和意义···········································1
2.总体设计思路(功能模块图)······························2
3.详细设计··························································3
4.课程设计总体会··············································15
5.教师评语························································15
一、课程设计目的和意义
通过课程设计的实践环节的教学,可以加深对课堂所学基础知识的掌握与理解,提高所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。
“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。
二、总体设计思路(功能模块图)
三、详细设计
1、模块功能介绍
一.输入职工基本信息
二.工作量输入并累加
三.按工作量从大到小排序并标上名次
四.按职工号删除职工信息
2、程序清单
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#defineFILENAME"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");
}
/*******************************************************
显示菜单
*******************************************************/
intreadFromFile(structworkerw[])
{
FILE*fp=NULL;
inti=0;
fp=fopen(FILENAME,"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;i if(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;j if(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;i if(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;j w[j]=w[j+1]; length--; printf("删除成功! \n"); } } else printf("\n指定的职工不存在! \n"); returnlength; } /******************************************************** 按职工号删除职工信息 ********************************************************/ voidwriteToFile(structworkerw[],intlength) { FILE*fp=NULL; inti=0; fp=fopen(FILENAME,"wb"); if(fp==NULL) { printf("打开文件出错! \n"); exit(0); } for(i=0;i fwrite(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: { writeToFile(w,length);//保存 printf("程序使用以结束\n"); exit(0); } default: { printf("输入有错误请重新输入: \n"); } } }while (1); } 3、系统运行结果 显示菜单 职工信息输入 工作量输入 按工作量排序 按工号删除信息 结束程序 四、课程设计总结体会 经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,这段时间里,我又学到了更多C知识,如: 对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。 ,这一点会让我终生受益。 通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。 五、教师评语 评阅教师: 评阅日期: 2010年9月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 职工 工作量 统计 系统