版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档供参考,可复制、编制,期待您的好评与关注! 一、 课程设计目的通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固C语言程序设计课程学习的内容,掌握工程软件设计的基本方法。学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。为后续各门计算机课程的学习打下坚实基础。为毕业设计和以后工作打下必要基础。二、课程设计内容针对某企业的员工,对其信息进行系统的管理。三、需求分析对所开发系统功能、性能的描述,想要实现的目标。此系统可对该厂员工进行信息的录入,修改,删除,添加,查询,排序,统计,打印等功能。用户可通过提示选择进入某一功能界面,然后进行对员工的信息管理。每一
2、功能模块都充分为用户考虑,编排详细。使用户可以方便快捷的了解员工信息,及时有效的对员工进行信息的管理。四、概要设计1系统结构图(功能模块图)对系统进行分析,给出系统结构图;分析:此系统,为方便客户输入,以及使程序清晰化,因而本人采用模块法,将每一功能模块化,使程序中各函数间调用更加明了。以下为系统模块图。2功能模块说明对各个模块进行功能的描述。录入模块:输入该厂现有员工信息并保存与文件中,方便日后进行排序,更新,统计,打印等操作。输出模块:将所有员工信息,或所需员工信息输出于屏幕上,用于打印或查询员工信息。更新模块:此模块又分为删除,添加,修改三个模块。 删除模块:对已退休或离开该厂的员工进行
3、删除操作。 添加模块:添加新入厂的员工信息并保存起来。 修改模块:找到该员工并,选择所要修改的选项。排序模块:本程序只对员工年龄进行从小到大排序。查询模块:此模块分为按姓名,年龄,工作查询。姓名查询模块:输入要查找的姓名,找到就输出其信息。找不到则输出无此人。 年龄查询模块:输入要查找的年龄,找到就输出其信息。找不到则输出无此人。工作查询模块:输入要查找的工作,找到就输出其信息。找不到则输出无此人。统计模块:此模块分为,统计年龄,性别和工作。统计年龄:输入要统计的年龄,查找并输出,若无此年龄则输出暂无此年龄员工。统计性别:输入要统计的性别,查找并输出,若无此性别则输出暂无此性别员工。统计工作:
4、输入要统计的工作,查找并输出,若无此工作则输出暂无此工作员工。保存模块:将现有信息保存于文件中,以防丢失。系统模块图王氏企业员工信息管理系统 输入i的值,进入相应模块保存模块退出系统统计模块排序模块查询模块更新模块输出模块录入模块按年龄统计修改员工 信息添加员工信息按工作统计按性别统计按年龄排序按工作查询按年龄 查寻按姓名查询删除员工信息按任意键返回主界面五、详细设计及运行结果流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。结束保存模块输入i开始统计模块排序模块查询模块更新模块输出模块录入模块判断i值主函数: i=1 i=6 i=2 i=3 i=4 i=5 i=0退出系统结束打
5、开文件关闭文件i+输出员工信息i<ni=0 输出模块:开始i=0 否开始 录入模块: 是 结束打开文件关闭文件i+输入员工信息i<ni=0 否 是 否 是排序模块: 更新模块:输入i开始结束返回主界面i=0退出系统修改模块添加模块删除模块判断i值i>n-1j>ni=i+1j=j+1交换i与j的信息i的年龄大于j的年龄j=i+1i=0开始 否 i=3 i=1 i=2 i=0 是 否 否 是 是 否 是输出信息结束输入i开始结束返回主界面i=0退出系统统计性别统计年龄统计工作判断i值输入i开始结束返回主界面i=0退出系统工作查询姓名查询年龄查询判断i值查询模块: 统计模块:
6、 i=1 i=3 i=2 i=0 i=1 i=2 i=3 i=0 否 否 是 是 六、调试情况,设计技巧及体会1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。自我评价:本人自我觉得此系统还不错,程序简洁明了,功能齐全,而且充分从用户的角度进行编排,易于执行。经本人多次调试终于出现0个错误与警告,而且从未有过死循环,用户一旦输错,立即会有提示,此程序相当的健壮。因本人定义了全局变量,使操作更加简单易行,使用了结构体数组,避开链表那样的复杂操作。但不足之处便是没有链表那样节省内存。如有机会下次可能会用链表。2、在设计过程中的感受。在把字符一个个敲上屏幕时,坐在那一动不动相当的枯燥,一想
7、到过会儿就能看到自己亲自编的程序,就只能忍吧 。当看到模块一个个运行后与预料中的完全一样时,郁闷的心情立马被一种成就感替代。就想赶紧编完看看自己的杰作。然而也会遇到自己解决不了的问题,就只能去求老师了。这次最大的感受就是当你竭尽全力的干一件事时,就没有能挡住你的困难。七、参考文献C语言课本。八、附录:源代码 #include<stdio.h> #include<string.h> #define MAX 100 char filename20; /*文件名*/ FILE *fp; int n; /*当前该厂人数*/ struct date /*时间结构体*/ int y
8、ear; int mouth; int day; ; struct person /*员工信息结构体*/ char name10; /*姓名*/ int age; /*年龄*/ char job10; /*工作*/ char sex10; /*性别*/ char address20; /*地址*/ char phone10; /*电话*/ struct date in_time; /*入厂时间*/ t,workerMAX;/*录入模块*/ void input() int i; clrscr(); printf("nn请输入文件名n"); scanf("%s&qu
9、ot;,filename); printf("开始输入员工的信息n"); printf("n请输入现有员工人数n"); scanf("%d",&n); if(fp=fopen(filename,"w")=NULL) printf("不能建立!n"); exit(); for(i=0;i<n;i+) printf("第%d个人的信息:n",i+1); printf("姓名n"); scanf("%s",workeri.nam
10、e); printf("年龄n"); scanf("%d",&workeri.age); printf("工作n"); scanf("%s",workeri.job); printf("性别n"); scanf("%s",workeri.sex); printf("地址n"); scanf("%s",workeri.address); printf("电话n"); scanf("%s",w
11、orkeri.phone); printf("入厂年n"); scanf("%d",&workeri.in_time.year); printf("入厂月n"); scanf("%d",&workeri.in_time.mouth); printf("入厂日n"); scanf("%d",&workeri.in_time.day); printf("录入完毕,按任意键返回主菜单n"); getch(); for(i=0;i<n
12、;i+) fprintf(fp,"%s %d %s %s %s %s %d-%d-%dn",,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); fclose(fp);/*输出模块*/ void output() int i; if(fp=fopen(filename,"r")=NULL) printf(" 暂时未
13、有任何信息,请按任意键返回主菜单进行信息录入n"); getch(); exit(); clrscr(); printf(" 该厂的员工信息:n"); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); for(i=0;i<n;i+) fscanf(fp,"%s %d %s %s %s %s %d-%d-%d",,&workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,&worker
14、i.in_time.year,&workeri.in_time.mouth,&workeri.in_time.day); printf("%st%dt%st%st%st%st%d-%d-%d n",,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); fclose(fp); printf(" 输出完毕,按任意键返回主菜
15、单n"); getch(); /*保存模块*/ void save() int i; if(fp=fopen(filename,"w")=NULL) /*打开文件*/ printf("n 不能打开该文件!"); exit(); for(i=0;i<n;i+) fprintf(fp,"%s %d %s %s %s %s %d-%d-%dn",,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_t
16、ime.year,workeri.in_time.mouth,workeri.in_time.day); fclose(fp); /*读取信息*/void read_message() int i; printf("输入文件名n"); scanf("%s",filename); printf("n请输入现有员工人数n"); scanf("%d",&n); if(fp=fopen(filename,"r")=NULL) printf(" 暂时未有任何信息,请按任意键返回主菜单进行
17、信息录入n"); getch(); for(i=0;i<n;i+) fscanf(fp,"%s %d %s %s %s %s %d-%d-%d",,&workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,&workeri.in_time.year,&workeri.in_time.mouth,&workeri.in_time.day); fclose(fp);/*修改模块*/void modify() int i,flag,c
18、hoice; char ch,namekey10; flag=0; clrscr(); printf(" 开始修改n"); do printf("请输入要修改的员工姓名n"); scanf("%s",namekey); for(i=0;i<n;i+) if(strcmp(,namekey)=0) printf("是否修改此人(y/n)n"); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); printf("%st%dt%st%st%
19、st%st%d-%d-%d n",,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); getchar(); /*接收回车*/ ch=getchar(); if(ch='y') printf(" *您要修改那一项?*nn"); printf(" *1,姓名*nn"); printf(" *
20、2,年龄*nn"); printf(" *3,工作*nn"); printf(" *4,性别*nn"); printf(" *5,地址*nn"); printf(" *6,电话*nn"); printf(" *7,入厂年*nn"); printf(" *8,入厂月*nn"); printf(" *9,入厂日*nn"); printf(" 请选择(1-9)n"); scanf("%d",&choice
21、); switch(choice) case 1: printf("输入修改后的姓名n"); scanf("%s",); break; case 2: printf("输入修改后的年龄n"); scanf("%d",&workeri.age); break; case 3: printf("输入修改后的工作n"); scanf("%s",workeri.job); break; case 4: printf("输入修改后的性别n&qu
22、ot;); scanf("%s",workeri.sex); break; case 5: printf("输入修改后的地址n"); scanf("%s",workeri.address); break; case 6: printf("输入修改后的电话n"); scanf("%s",workeri.phone); break; case 7: printf("输入修改后的入厂年n"); scanf("%d",&workeri.in_time.ye
23、ar); break; case 8: printf("输入修改后的入厂月n"); scanf("%d",&workeri.in_time.mouth); break; case 9: printf("输入修改后的入厂日n"); scanf("%d",&workeri.in_time.day); break; printf("修改后的信息n"); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); printf("%st%dt%s
24、t%st%st%st%d-%d-%d n",,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); else break; else if(i=n) printf("此人不存在n"); printf("n是否继续输入(y/n)n"); getchar(); /*接收回车*/ ch=getchar(); if(ch=&
25、#39;y') printf("继续n"); flag=1; else flag=0; while(flag=1); printf("修改完毕,按任意键返回主菜单n") ;getch(); /*添加模块*/void add() int i,flag=0; char ch; clrscr(); printf("n 开始添加新员工n"); printf(" *-*nn");do i=n; printf("n 请输入添加职工的信息(姓名,年龄,工作,性别,地址,电话,入厂时间)n"); pri
26、ntf("姓名n"); scanf("%s",); printf("年龄n"); scanf("%d", &workeri.age); printf("工作n"); scanf("%s",workeri.job); printf(" 性别n"); scanf("%s",workeri.sex); printf("地址n"); scanf("%s",workeri.a
27、ddress); printf("电话n"); scanf(" %s",workeri.phone); printf("入厂年n"); scanf("%d",&workeri.in_time.year); printf("入厂月n"); scanf("%d",&workeri.in_time.mouth); printf("入厂日n"); scanf("%d",&workeri.in_time.day); n+;
28、 printf("n添加成功!是否继续输入(y/n)n"); getchar(); /*接收回车*/ ch=getchar(); if(ch='y') printf("继续n"); flag=1; else flag=0; while(flag=1); printf("添加完毕,按任意键返回主菜单n") ; getch(); /*删除模块*/void del() int i,flag; char ch,namekey10; flag=0; clrscr(); printf("开始删除n"); do
29、printf("请输入要删除员工的名字n"); scanf("%s",namekey); for(i=0;i<n;i+) if(strcmp(,namekey)=0) /*查找此人*/ printf("是否删除此人(y/n)n"); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); printf("%st%dt%st%st%st%st%d-%d-%d n",,workeri.age,workeri.job,workeri
30、.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); getchar(); /*接收回车*/ ch=getchar(); if(ch='y') for(;i<n;i+) workeri=workeri+1; n-; else break; else if(i=n) printf("此人不存在n"); printf("n是否继续输入(y/n)n"); getchar(); /*接收回车*/
31、ch=getchar(); if(ch='y') printf("继续n"); flag=1; else flag=0; while(flag=1); printf("操作完毕,按任意键返回主菜单n") ; getch(); /*更新模块*/ void renew() int i; do clrscr(); printf("nnn *更新员工信息*nn"); printf(" 按1,添加员工信息nn"); printf(" 按2,删除员工信息nn"); printf("
32、 按3,修改员工信息nn"); printf(" 按0,返回主菜单n"); printf(" 请选择(0-3)n"); scanf("%d",&i); switch(i) case 1: add(); break; case 2: del(); break; case 3: modify(); break; case 0: break; while(i!=0); save(); /*按姓名查找*/void name_cha() int i,j; char namekey10; j=0; clrscr(); print
33、f(" 输入要查询的员工姓名n"); scanf("%s",namekey); for(i=0;i<n;i+) if(strcmp(,namekey)=0) /*查找此人*/ printf("-员工信息-n"); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); printf("%st%dt%st%st%st%st%d-%d-%d n",,workeri.age,workeri.job,workeri.sex,worke
34、ri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); else j+; if(j=n) printf("此人不存在n"); printf("按任意键返回主菜单n"); getch(); /*按年龄查找*/void age_cha() int i,j; int agekey; j=0; clrscr(); printf(" 输入要查询员工的年龄n"); scanf("%d",&agek
35、ey); for(i=0;i<n;i+) if(workeri.age=agekey) printf("-员工信息-n"); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); printf("%st%dt%st%st%st%st%d-%d-%d n",,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.
36、in_time.day); else j+; if(j=n) printf("此人不存在n"); printf("按任意键返回主菜单n"); getch(); /*按工作查找*/void job_cha() int i,j; char jobkey10; j=0; clrscr(); printf("输入要查询的员工职务n"); scanf("%s",jobkey); for(i=0;i<n;i+) if(strcmp(workeri.job,jobkey)=0) printf("-员工信息-n&q
37、uot;); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); printf("%st%dt%st%st%st%st%d-%d-%d n",,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); else j+; if(j=n) printf("此人不存在n"); printf(&qu
38、ot;按任意键返回主菜单n"); getch(); /*查询模块*/ void inquire() int i; do clrscr(); printf("nnn *查询员工信息*nn"); printf(" *1,按姓名查询*nn"); printf(" *2,按年龄查询*nn"); printf(" *3,按工作查询*nn"); printf(" *0,返回主菜单n"); printf(" 请选择(0-3)n"); scanf("%d",&a
39、mp;i); switch(i) case 1: name_cha();break; case 2: age_cha(); break; case 3: job_cha();break; case 0: break; while(i!=0); /*排列模块*/ void line() int i,j; clrscr(); printf("-按年龄排序-nn"); for(i=0;i<n-1;i+) for(j=i+1;j<n;j+) if(workeri.age>workerj.age) t=workeri; workeri=workerj; worker
40、j=t; printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); for(i=0;i<n;i+) printf("%st%dt%st%st%st%st%d-%d-%d n",,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); printf("按任意键返回主菜单n"); getch(
41、); /*按年龄统计*/ void count_age() int i,j; int agekey; j=0; clrscr(); printf(" 输入要统计员工的年龄n"); scanf("%d",&agekey); for(i=0;i<n;i+) if(workeri.age=agekey) printf("-员工信息-n"); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); printf("%st%dt%st%st%st%st%d-%d-%d n",
42、,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); else j+; if(j=n) printf("暂无该年龄段员工n"); printf("按任意键返回主菜单n"); getch();/*按职务统计*/ void count_job() int i,j; char jobkey10; j=0; clrscr(); pr
43、intf("输入要统计的员工职务n"); scanf("%s",jobkey); for(i=0;i<n;i+) if(strcmp(workeri.job,jobkey)=0) printf("-员工信息-n"); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); printf("%st%dt%st%st%st%st%d-%d-%d n",,workeri.age,workeri.job,workeri.sex,workeri.address
44、,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); else j+; if(j=n) printf("暂无该职务或该职务暂时无人n"); printf("按任意键返回主菜单n"); getch();/*按性别统计*/ void count_sex() int i,j; char sexkey10; j=0; clrscr(); printf("输入要统计的员工性别n"); scanf("%s",sexkey)
45、; for(i=0;i<n;i+) if(strcmp(workeri.sex,sexkey)=0) printf("-员工信息-n"); printf("姓名t年龄t工作t性别t地址t电话t入厂时间 n"); printf("%st%dt%st%st%st%st%d-%d-%d n",,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day); else j+; if(j=n) printf("暂无该性别员工n"); printf("按任意键返回主菜单n"); getch();/*统计模块*/ void count() int i; do clrscr(); printf("nnn *统计员工信息*nn"); printf(" 按1,统计某年龄职工nn"); printf("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 包含2024年度特色的铲车及翻斗车租赁合同
- 二零二四年版权质押合同
- 承包2024年度大型购物中心厕所设计与施工合同
- 二零二四年度高级管理人员雇佣合同
- 二零二四年度船舶制造OEM合作与技术交流合同
- 2024年度电机产品生产工艺改进与优化合同2篇
- 二零二四年度电子产品生产销售合同
- 二零二四年度智能化安防系统设备采购合同
- 瓷砖铺贴工程2024年度合同
- 辽宁省重点高中沈阳市郊联体2024-2025学年高二上学期11月期中考试 语文 含解析
- 办公楼室内装饰工程施工设计方案技术标范本
- 研学开营仪式讲话稿
- ip授权合同范本
- 合肥2024年安徽合肥肥西县总工会招聘社会化工会工作者4人笔试历年典型考题及考点剖析附带答案详解
- 校服供货服务方案
- 120院前急救岗前培训
- 合肥市大东门的规划方案
- 第五章排球大单元教学设计课时教学设计人教版初中体育与健康七年级全一册
- 发展生涯报告
- 2024年1-全年时事政治试题及答案汇编-时事一点通、半月谈
- 物理化学基本原理
评论
0/150
提交评论