C语言课程设计——职工工作量统计系统.doc_第1页
C语言课程设计——职工工作量统计系统.doc_第2页
C语言课程设计——职工工作量统计系统.doc_第3页
C语言课程设计——职工工作量统计系统.doc_第4页
C语言课程设计——职工工作量统计系统.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2013级C语言课程设计报告湖 北 师 范 学 院 计 科 院C语言课程设计报告题目: 职工工作量统计系统 完成人: 赵天宇、梁可 学号: 2013115040430 2013115040419 批阅人: 夏 端 峰 2014年6月15日目录一、课程设计的目的与意义2二、总体设计思路2三、详细设计31、模块功能介绍3(1)、菜单设计3(2)、输入职工基本信息4(3)、工作量输入并累加4(4)、职工按照量化得分排序5(5)、查询、修改或删除某工号人员信息6(6)、信息浏览功能7(7)、信息查询功能详细8(8)、信息修改功能详细9(9)、信息删除功能9四、各功能实现后的展示101、菜单界面:112、职工信息输入界面113、职工信息浏览界面124、按量化得分排序后界面125、查询职工信息功能界面126、修改职工信息界面137、删除职工信息功能界面138、工作量累加界面14五、附录一141、程序清单14六、附录二:小组分工40一、 课程设计的目的与意义作为一门课程,通过课程设计的实践环节的教学,可以加深对课堂所学基础知识的掌握与理解,提高所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。作为学生,我们可以通过查阅相关资料,编写相关程序来增加自己的编程经验,强化自己的自主学习能力,强化自身的编程实践能力,掌握一定的软件开发流程。二、 总体设计思路设计框图如下:职工工作量统计系统菜单设计录入职工信息工作量输入查询职工信息职工信息按量化得分排序职工信息的删除浏览职工信息结束程序三、 详细设计1、 模块功能介绍(1)、菜单设计菜单界面大致设计为:职工工作量统计系统1、 职工基本信息录入;2、 工作量累加;3、 按照量化得分排序;4、 删除某职工信息;5、 浏览所有员工信息表;6、 查询莫员工信息;7、 修改某员工信息;8、 结束程序,将数据写入文件。(2)、输入职工基本信息设计框图如下:是否(3)、工作量输入并累加设计框图如下:(4)、职工按照量化得分排序设计框图如下:(5)、查询、修改或删除某工号人员信息具体的设计框图如下:(6)、信息浏览功能设计框图如下:(7)、信息查询功能详细设计框图如下:(8)、信息修改功能详细设计框图如下:(9)、信息删除功能设计框图如下:四、 各功能实现后的展示1、 菜单界面:2、 职工信息输入界面3、 职工信息浏览界面4、 按量化得分排序后界面5、 查询职工信息功能界面6、 修改职工信息界面7、 删除职工信息功能界面可见相比较于刚才,删去了4号职工张亮。8、 工作量累加界面可以看到2号职工赵天宇的工作量直接累加上了五、 附录一1、 程序清单2、 #include3、 #include4、 #include5、 #define FILENAME d:worker.bin6、 #define N 1007、 struct worker8、 9、 int empnum; /*工号*/10、 char name20; /*姓名*/11、 char sex5; /*性别*/12、 char birthday30; /*生日*/13、 char Dep20; /*系别*/14、 int age; /*年龄*/15、 double Teachworkload; /*教育工作量*/16、 double Scientficworkload; /*科研工作量*/17、 double Qscore; /*量化得分*/18、 int grade; /*该员工的排名名次*/19、 char Position30; /*职称*/20、 ;21、 /* 22、 定义23、 */24、 void xinxi()25、 26、 printf(n+n);27、 printf(+ 职工工作量统计系统 +n);28、 printf(+ +n);29、 printf(+ 1. 职工基本信息输入 +n);30、 printf(+ +n);31、 printf(+ 2. 工作量累加 +n);32、 printf(+ +n);33、 printf(+ 3. 按照量化得分排序 +n);34、 printf(+ +n);35、 printf(+ 4. 删除某职工信息 +n);36、 printf(+ +n);37、 printf(+ 5.浏览所有员工信息表 +n);38、 printf(+ +n);39、 printf(+ 6.查询某员工信息 +n);40、 printf(+ +n);41、 printf(+ 7.修改某员工信息 +n);42、 printf(+ +n);43、 printf(+ 8. 结束程序,将数据写入文件 +n);44、 printf(+n);45、 46、 /* 47、 显示菜单48、 */49、 void Qscore1(struct worker w,int length)50、 51、 int i=0,sum1=0,sum2=0;52、 for(i=0;ilength;i+)53、 54、 sum1+=wi.Teachworkload;55、 sum2+=wi.Scientficworkload;56、 57、 /return wj.Qscore=(wj.Scientficworkload/sum2)*(1/2)+(wj.Teachworkload/sum1)*(1/2);58、 for(i=0;i=N) /*如果溢出,则跳出文件*/80、 break;81、 if(fread(w+i,sizeof(worker),1,fp)=1)82、 i+;83、 84、85、 fclose(fp); /*关闭文件*/86、 87、 return i;88、 89、 /* 90、 信息显示到屏幕91、 */92、 int f(struct worker w,int length)93、 94、 int i=length,j=0,flag=1; /*i用来表示已经录入过信息的人数*/95、 while(iN)96、 97、 printf(第%d个职工n,i+1); /*显示下一个需要输入信息的员工是第几个员工*/ 98、 printf(n);99、 printf(请你输入工号(以职工号为0结束输入):n); /*输入职工号信息*/100、 scanf(%d,&wi.empnum);101、 if(wi.empnum=0) break;102、 printf(n);103、 printf(n);104、 for(j=0;jlength;j+)105、 106、 if(wj.empnum=wi.empnum) 107、 108、 flag=0;109、 printf(该职工号人员已经存在,请重新输入);110、 111、 112、 if(flag=0) break; /*如果职工已经存在那么跳出程序*/113、 printf(请你输入该员工的姓名:n); /*开始输入该员工的各类基本信息*/114、 scanf(%s,&);115、 printf(请你输入该员工的性别:n);116、 scanf(%s,&wi.sex);117、 printf(请输入该员工的年龄:n);118、 scanf(%d,&wi.age);119、 printf(请输入该员工的出生年月日(格式1995/03/23):n);120、 scanf(%s,&wi.birthday);121、 printf(请输入该员工的系别:n);122、 scanf(%s,&wi.Dep);123、 printf(请你输入该员工的教育工作量(单位:小时):n);124、 scanf(%lf,&wi.Teachworkload);125、 printf(n);126、 printf(请你输入该员工的科研工作量(单位:小时):n);127、 scanf(%lf,&wi.Scientficworkload);128、 /printf(请你输入该员工的量化的分(单位:分),wi.Qscore);129、 /scanf(%d,&wi.Qscore);130、 printf(请你输入该员工的职位:n);131、 scanf(%s,&wi.Position);132、 printf(n);133、 i+;134、 135、 Qscore1(w,length);136、 return i;137、 138、 /* 139、 功能:输入职工基本信息 140、 */141、 void input(struct worker w,int length)142、 143、 int i=1,empnum;/*i用来寻找需要累加工作量的员工*/144、 double Scientficworkload,Teachworkload;145、 printf(请输入工号:n); /*用来查找某位工人*/146、 scanf(%d,&empnum);147、 if(empnum=0) 148、 149、 printf(输入错误请重新输入);150、 getchar();151、 scanf(%d,&empnum);152、 153、 else154、 155、 printf(请输入新完成教育工作量(单位:小时,无增加请填0):n); /*输入各类新增工作量*/156、 getchar();157、 scanf(%lf,&Teachworkload);158、 printf(请输入新完成的科研工作量(单位:小时,无增加请填0):n);159、 getchar();160、 scanf(%lf,&Scientficworkload);161、 /printf(请输入所需要增加的量化得分(单位:分,无增加请填0):n);162、 /getchar();163、 /scanf(%d,&Qscore);164、 for(i=0;i=length) /*如果员工不存在,提示重新输入工号*/174、 175、 printf(工号不存在:n);176、 printf(请输入工号:n);177、 scanf(%d,&empnum);178、 179、 Qscore1(w,length);180、 181、 182、 /* 183、 功能:工作量输入并累加 184、 */185、 void sortQscore(struct worker w,int length) /*选择法对量化得分进行排序*/186、 187、 int i=0,j=0,k=0;188、 struct worker s; /*结构体temp转换变量*/189、 for(i=0;ilength;i+) /*选择法对于量化得分进行排序*/190、 191、 k=i;192、 for(j=i+1;jwk.Qscore) k=j;195、 196、 /*交换wi and wk*/197、 s=wk;198、 wk=wi;199、 wi=s;200、 201、 if(length0) w0.grade=1; 202、 for(i=1;ilength;i+) /*循环对于量化得分排序好后的人进行标上名次的操作*/203、 204、 if(wi.Qscore=wi-1.Qscore) wi.grade=wi-1.grade;205、 else wi.grade=wi-1.grade+1;206、 207、 printf(名次 工号 姓名 年龄 性别 生日 系别 职称 教育工作量 科研工作量 量化得分n);/*输出表头*/208、 for(i=0;ilength;i+) /*输出排序之后的职工工作量信息表*/209、 210、 Qscore1(w,length);211、 printf(%dt,wi.grade);212、 printf(%dt,wi.empnum);213、 printf(%st,);214、 printf(%dt,wi.age);215、 printf(%st,wi.sex);216、 printf(%st,wi.birthday);217、 printf(%st,wi.Dep);218、 printf(%st,wi.Position);219、 printf(%5.2lft,wi.Teachworkload);220、 printf(%5.2lft,wi.Scientficworkload);221、 printf(%5.2lft,wi.Qscore);222、 printf(n);223、 printf(n);224、 225、 226、 /* 227、 按量化得分从大到小排序并标上名次并且输出排序结果 228、 */229、 int delet(struct worker w,int length)230、 231、 int i=0,j=0;232、 char choice; /*给用户来判断是否删除*/233、 int empnum; /*所需要删除职工信息的工号*/234、 printf(请输入需要删除的员工职工号:n);235、 scanf(%d,&empnum); /*输入所需要删除的职工号*/236、 for(i=0;ilength;i+) /*循环查找该职工是否存在并输出该职工工号信息*/237、 238、 if(wi.empnum=empnum)239、 240、 printf(想删除的职工号为:);241、 printf(%dn,wi.empnum);242、 break;243、 244、 245、 if(ilength)246、 247、 printf(你却定要删除这个职工信息吗?(Y/N)n); /*输出让用户确实是否删除*/248、 getchar();249、 scanf(%c,&choice);250、 if(choice=Y|choice=y)251、 252、 for(j=i;jlength;j+)253、 254、 wj=wj+1;255、 256、 length-; /*删除之后总人数减一*/257、 printf(删除成功);258、 259、 260、 else printf(n指定员工不存在n);261、 return length;262、 263、 /*264、 按职工号删除职工信息265、 */266、 void writeToFile(struct worker w,int length) /*数据写入文件的功能函数*/267、 268、 FILE *fp=NULL; /*设置文件指针*/269、 int i=0;270、 fp=fopen(FILENAME,wb); /*打开文件*/271、 if(fp=NULL) /*打开失败*/272、 273、 printf(打开文件出错!n);274、 exit(0);275、 276、 for(i=0;ilength;i+) /*循环写入文件每一组结构体数据*/277、 fwrite(w+i,sizeof(worker),1,fp); /*写入每个结构体数据*/278、 fclose(fp); /*关闭文件*/279、280、 281、 /*282、 结构体数组中的职工信息输出到文件283、 */284、 void viewworker(struct worker w,int length)285、 286、 int i;287、 Qscore1(w,length);288、 /printf(你确定要浏览所有职工信息?(Y/N);289、 /scanf(%c,&choice);290、 /if(choice=Y|choice=y) /*确认浏览信息*/291、 printf(工号 姓名 年龄 性别 生日 系别 职称 教育工作量 科研工作量 量化得分n);/*输出表头*/292、 for(i=0;ilength;i+) /*输出职工工作量信息表*/293、 294、 printf(%dt,wi.empnum);295、 printf(%st,);296、 printf(%dt,wi.age);297、 printf(%st,wi.sex);298、 printf(%st,wi.birthday);299、 printf(%st,wi.Dep);300、 printf(%st,wi.Position);301、 printf(%5.2lft,wi.Teachworkload);302、 printf(%5.2lft,wi.Scientficworkload);303、 printf(%5.2lft,wi.Qscore);304、 printf(n);305、 printf(n);306、 307、 308、 void Seek(struct worker w,int length)309、 310、 int i;311、 char Dep20;312、 printf(请输入你想要查询信息职工的系别或者职称:n);313、 scanf(%s,&Dep);314、 /*if(empnum=0) 315、 316、 printf(输入错误,请重新输入:n);317、 scanf(%d,&empnum);318、 */319、 for(i=0;ilength;i+)320、 321、 if(strcmp(wi.Dep,Dep)=0)322、 323、 printf(该系别员工的信息如下:n);324、 for(i=0;ilength;i+) /*搜寻员工信息*/325、 326、 if(strcmp(wi.Dep,Dep)=0) /*判断是否是系别查询*/327、 328、 printf(工号姓名年龄性别生日系别职称教育工作量科研工作量量化得分n);/*输出表头*/329、 printf(%dt,wi.empnum);330、 printf(%st,);331、 printf(%dt,wi.age);332、 printf(%st,wi.sex);333、 printf(%st,wi.birthday);334、 printf(%st,wi.Dep);335、 printf(%st,wi.Position);336、 printf(%5.2lft,wi.Teachworkload);337、 printf(%5.2lft,wi.Scientficworkload);338、 printf(%5.2lft,wi.Qscore);339、 printf(n);340、 printf(n);341、 342、 343、 344、 if(strcmp(wi.Position,Dep)=0)/*判断是否是职称查询*/345、 346、 for(i=0;ilength;i+)347、 348、 if(strcmp(wi.Position,Dep)=0)349、 350、 printf(工号姓名年龄性别生日系别职称教育工作量科研工作量量化得分n);/*输出表头*/351、 printf(%dt,wi.empnum);352、 printf(%st,);353、 printf(%dt,wi.age);354、 printf(%st,wi.sex);355、 printf(%st,wi.birthday);356、 printf(%st,wi.Dep);357、 printf(%st,wi.Position);358、 printf(%5.2lft,wi.Teachworkload);359、 printf(%5.2lft,wi.Scientficworkload);360、 printf(%5.2lft,wi.Qscore);361、 printf(n);362、 printf(n);363、 364、 365、 366、 /if(strcmp(wi.Position,Dep)!=0&strcmp(wi.Dep,Dep)!=0) printf(输入错误!);break;367、 368、 369、 void modify(struct worker w,int length)370、 371、 int i,empnum;372、 char choice;373、 printf(请问你所需要修改信息的职员工号是多少?n);374、 scanf(%d,&empnum);375、 printf(请问你是否需要修改该员工的信息?:(Y/N);376、 getchar();377、 scanf(%c,&choice);378、 if(choice=y|choice=Y)379、 380、 for(i=0;i=length) printf(该职工号不存在!);406、 407、 printf(修改信息后的该员工信息为:n);408、 Qscore1(w,length);409、 for(i=0;ilength;i+)410、 411、 if(wi.empnum=empnum) 412、 413、 printf(该员工的信息如下:n);414、 printf(工号姓名年龄性别生日系别职称教育工作量科研工作量量化得分n);/*输出表头*/415、 printf(%dt,wi.empnum);416、 printf(%st,);417、 printf(%dt,wi.age);418、 printf(%st,wi.sex);419、 printf(%st,wi.birthday);420、 printf(%st,wi.Dep);421、 printf(%st,wi.Position);422、 printf(%5.2lft,wi.Teachworkload

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论