您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 总结/报告 > C语言职工工作量统计系统
《C语言课程设计》报告题目:职工工作量统计系统班级:学号:姓名:指导老师:成绩:目录1.课程设计的目的和意义···········································12.总体设计思路(功能模块图)······························23.详细设计··························································34.课程设计总体会··············································155.教师评语························································15计算机程序设计基础C语言课程设计1一、课程设计目的和意义通过课程设计的实践环节的教学,可以加深对课堂所学基础知识的掌握与理解,提高所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。计算机程序设计基础C语言课程设计2二、总体设计思路(功能模块图)职工工作量统计系统1.职工基本信息输入2.工作量输入3.按工作量排序4.按职工工号进行信息删除5.结束程序计算机程序设计基础C语言课程设计3三、详细设计1、模块功能介绍一.输入职工基本信息输入工号判断工号是否为零输入工作量否结束i++是开始计算机程序设计基础C语言课程设计4二.工作量输入并累加三.按工作量从大到小排序并标上名次开始输入工号判断工号是否为零输入完成量判断输入工号是否存在将新完成数量累加结束否是否是计算机程序设计基础C语言课程设计5四.按职工号删除职工信息开始通过选择或冒泡排序,将职工按工作量从大到小排序,并判断第I名职工的工作量是否与第I-1名职工工作量相等,若相等,将第I-1名职工的名次附值给第I名职工,若不相等,则把地I-1名职工的名次加1附值给I。依次给所有职工排名结束开始判断工号是否存在将删掉信息的职工之后的职工依次向前附值确认删除结束输入欲删除职工号存在不存在计算机程序设计基础C语言课程设计62、程序清单#includestdio.h#includestring.h#includestdlib.h#defineFILENAMEworker.bin#defineN20structworker{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;计算机程序设计基础C语言课程设计7inti=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(iN){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++;}计算机程序设计基础C语言课程设计8returni;}/*******************************************************功能:输入职工基本信息*******************************************************/voidinput(structworkerw[],intlength){inti=1;intnumber,counts;printf(请输入工号:);scanf(%d,&number);while(number!=0){printf(请输入完成数量:\n);scanf(%d,&counts);for(i=0;ilength;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;ilength;i++){k=i;for(j=i+1;jlength;j++)if(w[j].countsw[k].counts)k=j;/*交换w[i]andw[k]*/s=w[k];w[k]=w[i];计算机程序设计基础C语言课程设计9w[i]=s;}if(length0)w[0].grade=1;for(i=1;ilength;i++)if(w[i].counts==w[i-1].counts)w[i].grade=w[i-1].grade;elsew[i].grade=w[i-1].grade+1;}/////////////////////////////////////////////////////////////////////////////////*按工作量从大到小排序并标上名次*/////////////////////////////////////////////////////////////////////////////////voidsortNumber(structworkerw[],intlength){inti=0;intgrade,count;if(length0){while(ilength){count=0;grade=w[i].grade;printf(名次:%d,grade);printf(工作量:%d,w[i].counts);printf(%s,工号:);while(ilength){if(grade==w[i].grade){printf(%d,w[i].number);count++;}elsebreak;i++;}printf(人数:%d\n,count);}}elseprintf(职工数据不存在!\n);计算机程序设计基础C语言课程设计10}/////////////////////////////////////////////////////////////////////////////////*输出名次、同一名次的职工人数及他们的工号,姓名*/////////////////////////////////////////////////////////////////////////////////intdelet(structworkerw[],intlength,intstuNum){inti,j;charchoice;for(i=0;ilength;i++){if(stuNum==w[i].number){printf(%s,欲删除职工号为:);printf(%d\n,w[i].number);break;}}if(ilength){printf(你确实要删除这个职工吗?(Y/N));scanf(%c,&choice);if(choice=='Y'||choice=='y'){for(j=i;jlength;j++)w[j]=w[j+1];length--;printf(删除成功!\n);}}elseprintf(\n指定的职工不存在!\n);returnlength;}/********************************************************按职工号删除职工信息********************************************************/voidwriteToFile(structworkerw[],intlength){FILE*fp=NULL;inti=0;计算机程序设计基础C语言课程设计11fp=fopen(FILENAME,wb);if(fp==NULL){printf(打开文件出错!\n);exit(0);}for(i=0;ilength;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,&s
本文标题:C语言职工工作量统计系统
链接地址:https://www.777doc.com/doc-6223123 .html