1、. .中国地质大学课 程 设 计 报 告 书所属课程名称 C程序设计 题 目 职工信息管理系统 院 系班 级 学号 学生XX 指导教师 辅导教师 中国地质大学2021年9月6日. .word.zl. .课 程 设 计 论 文 任 务 书工程学院 专 业 052081 班一、课程设计论文题目 职工信息管理系统 二、课程设计论文工作:自 2021年 08月 28 日起至 2021年 09月 08 日止。三、课程设计论文的容要求:1、设计容: 制作职工信息管理系统,职工信息包括职工号,XX,性别,年龄,学历,工资,住址,等(职工号不重复),并实现数据录入、数据删除和数据浏览以及数据查询等一些功能。
2、2、课程设计的要求: A.系统以菜单方式工作B.职工信息录入功能(职工信息用文件保存)-输入C.职工信息浏览功能 -输出D.查询和排序功能:(至少一种查询方式) -算法E.按工资查询F.按学历查询等G.职工信息删除,修改功能(任选项)2021 年 9月 6 日一、需求分析1.能够对职工的根本情况进展输入、修改、增加以及删除和存盘。2.能够对职工信息的浏览。3.能够实现对职工的查询。4.能够对职工的根本工资情况进展设定。5.能够将职工信息和根本工资信息以文档形式保存6.程序能够以菜单形式出现. .word.zl. .二、概要分析职工信息管理系统设计职工信息包括职工号,XX,性别,年龄,学历,工资
3、,住址,等(职工号不重复),试设计一职工信息管理系统,使之能提供以下功能: 系统以菜单方式工作 职工信息录入功能(职工信息用文件保存)-输入 职工信息浏览功能 -输出 查询和排序功能:(至少一种查询方式) -算法 按工资查询 按学历查询等 职工信息删除,修改功能(任选项)下面是功能框架图:三、详细设计以及调试分析A.详细设计1,创立了一个构造体employee,它包含num工号,nameXX,sex性别,age年龄,xueli学历,wage(工资),addr住址,tel8个基类,即为员工的根本信息。2,创立了主函数main,用它调用子函数menu,add,del,display,Input,l
4、oad,modify,save,search,search num,search xueli。通过主函数对子函数的调用实现程序的各项功能。B.调试分析void main() menu(); int n,flag; char a;-Configuration: 1 - Win32 Debug-piling.1.cg:1.c(55) : error C2143: syntax error : missing ; before typeg:1.c(56) : error C2143: syntax error : missing ; before typeg:1.c(61) : error C206
5、5: n : undeclared identifierg:1.c(64) : error C2065: flag : undeclared identifierg:1.c(90) : error C2065: a : undeclared identifierError executing cl.exe.1.obj - 5 error(s), 0 warning(s)开场由于在主函数的调用过程中把子函数的调用放在了变量的定义之前,导致程序无法运行,后来改正错误,程序可以正常运行。另外在程序中还出现各种小错误,这里不一一列举。通过调试我发现调试是一个漫长而枯燥的过程 ,很锻炼人的耐心。 . .
6、word.zl. .四、程序使用指南1翻开程序出现菜单项选择项2,选择录入职工信息,按提示录入3.通过选项依次实现对职工信息的浏览,查询,删除,增加和修改。五.源代码#include #include #include #include #define N 100struct employee int num;/工号 char name10;/XX char sex; /性别 int age;/年龄 char xueli30;/学历 int wage;/工资 char addr30;/住址 long int tel;/em100; void menu();void input();void s
7、ave(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); void menu() printf( *欢迎使用查询系统*n); printf(n); printf(n);printf( *职工信息管理*n);printf( 1.录入职工信息);printf( 2.浏览职工信息n);printf( 3.查询职工信息);printf( 4.删除职工信息n); printf( 5.增加职工信息);pr
8、intf( 6.修改职工信息n);printf( 7.退出n);printf( *谢谢使用*n); printf(n); printf(n);void main() int n,flag; char a; menu();do printf(请选择你需要操作的步骤(1-7):n); scanf(%d,&n); if(n=1&n=7) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=0); while(flag=1) switch(n) case 1:printf(输入职工信息n);printf(n);input();bre
9、ak; case 2:printf(浏览职工信息n);printf(n);display();break; case 3:printf(按职工号或学历查询职工信息n);printf(n);search();break; case 4:printf(删除职工信息n);printf(n);del();break; case 5:printf(添加职工信息n);printf(n);add();break; case 6:printf(修改职工信息n);printf(n);modify();break; case 7:exit(0);break; default :break; getchar();
10、printf(n); printf(是否继续进展(y or n):n); scanf(%c,&a); if(a=y) flag=1; system(cls); menu(); printf(请再次选择你需要操作的步骤(1-7):n); scanf(%d,&n); printf(n); else exit(0);void input() int i,m; printf(请输入需要创立信息的职工人数(1-100):n); scanf(%d,&m); for (i=0;im;i+) printf(职工号: ); srand(int)time(0); emi.num=rand()%10000+2000
11、0000; if(emi.num!=emi-1.num) printf(%8d ,emi.num); printf(n); printf(请输入XX: ); scanf(%s,emi.name); getchar(); printf(请输入性别(f-女 m-男): ); scanf(%c,&emi.sex); printf(请输入年龄: ); scanf(%d,&emi.age); printf(请输入学历: ); scanf(%s,emi.xueli); printf(请输入工资: ); scanf(%d,&emi.wage); printf(请输入住址: ); scanf(%s,emi.a
12、ddr); printf(请输入: ); scanf(%d,&emi.tel); printf(n); printf(n创立完毕!n); save(m);void save(int m) int i;FILE*fp;if (fp=fopen(employee_list,wb)=NULL) printf (cannot open filen); exit(0);for (i=0;im;i+) if (fwrite(&emi,sizeof(struct employee),1,fp)!=1) printf(file write errorn); fclose(fp);int load() FILE
13、*fp;int i=0; if(fp=fopen(employee_list,rb)=NULL) printf (cannot open filen); exit(0);else do fread(&emi,sizeof(struct employee),1,fp); i+; while(feof(fp)=0);fclose(fp);return(i-1);void display() int i;int m=load();printf(n 职工号tXXt性别t年龄t学历t工资t住址t n);for(i=0;im;i+) printf(n %dt%st%ct%dt%st%dt%st%ldn,e
14、mi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); void del() int m=load();int i,j,n,t,flag;char name20;printf(n 原来的职工信息:n); display(); printf(n);printf(请输入要删除的职工的XX:n);scanf(%s,name);for(flag=1,i=0;flag&im;i+) if(strcmp(emi.name,name)=0) printf(n已找到此人,原始记录为:n); printf(n职工号tXXt性别t
15、年龄t学历t工资t住址t n); printf(n%dt%st%ct%dt%st%dt%st%ldn,emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); printf(n确实要删除此人信息请按1,不删除请按0n); scanf(%d,&n); if(n=1) for(j=i;jm-1;j+) strcpy(emj.name,emj+1.name); emj.num=emj+1.num; emj.sex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1
16、.xueli); emj.wage=emj+1.wage; strcpy(emj.addr,emj+1.addr); emj.tel=emj+1.tel; flag=0; if(!flag) m=m-1;else printf(n对不起,查无此人!n); printf(n 浏览删除后的所有职工信息:n); save(m); display(); printf(n继续删除请按1,不再删除请按0n);scanf(%d,&t);switch(t) case 1:del();break; case 0:break; default :break;void add()FILE*fp;int n; int
17、 count=0; int i; int m=load(); printf(n 原来的职工信息:n); display(); printf(n); fp=fopen(emploee_list,a); printf(请输入想增加的职工数:n);scanf(%d,&n); for (i=m;i=1&t=4) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=0); while(flag=1) switch(t) case 1:printf(按职工号查询n);search_num();break; case 2:printf(按
18、学历查询n);search_xueli();break; case 3:main();break; default:break; void search_num() int num; int i,t; int m=load(); printf(请输入要查找的职工号(20001111-20009999):n); scanf(%d,&num); for(i=0;im;i+) if(num=emi.num) printf(n已找到此人,其记录为:n); printf(n职工号tXXt性别t年龄t学历t工资t住址t n); printf(n%dt%st%ct%dt%st%dt%st%ldn,emi.n
19、um,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); break; if(i=m) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询职工号请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2: break; default:break; void search_xueli() char xueli30; int i,t; int m=load(); printf(请输入要查找的学历:n); sc
20、anf(%s,xueli); for(i=0;im;i+) if(strcmp(emi.xueli,xueli)=0) printf(n已找到,其记录为:n); printf(n职工号tXXt性别t年龄t学历t工资t住址t n); printf(n%dt%st%ct%dt%st%dt%st%ldn,emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); if(i=m) printf(n); printf(返回查询函数请按1,继续查询学历请按2n); scanf(%d,&t); switch(t) case 1
21、:search();break; case 2:break; default :break; void modify() int num;char name10;char sex; int age;char xueli30; int wage; char addr30; long int tel; int b,c,i,n,t,flag; int m=load(); printf(n 原来的职工信息:n); display(); printf(n); printf(请输入要修改的职工的XX:n);scanf(%s,name);for(flag=1,i=0;flag&i8|c1) printf(n
22、选择错误,请重新选择!n); flag=0; if(flag=1)printf(n对不起,查无此人!n); do switch(c) case 1:printf(职工号改为: ); scanf(%d,&num); emi-1.num=num; break; case 2:printf(XX改为: ); scanf(%s,name); strcpy(emi-1.name,name); break; case 3:printf(性别改为: ); getchar(); scanf(%c,&sex); emi-1.sex=sex; break; case 4:printf(年龄改为: ); scanf
23、(%d,&age); emi-1.age=age; break; case 5:printf(学历改为: ); scanf(%s,xueli); strcpy(emi-1.xueli,xueli); break; case 6:printf(工资改为: ); scanf(%d,&wage); break; case 7:printf(住址改为: ); scanf(%s,addr); strcpy(emi-1.addr,addr); break; case 8:printf(改为: ); scanf(%ld,&tel); emi-1.tel=tel; break; printf(n); prin
24、tf(n是否确定所修改的信息?n 是 请按1 ; 不,重新修改 请按2: n); scanf(%d,&b); while(b=2); printf(n浏览修改后的所有职工信息:n); printf(n); save(m); display(); printf(n继续修改请按1,不再修改请按0n); scanf(%d,&t); switch(t) case 1:modify();break; case 0:break; default :break;六、总结开场看到题目时,一点头绪都没有,无从下手。后来通过看书了解到了构造化设计方法,顿时豁然开朗。于是我按照题目要求把一个大系统分成模块,一个模块一个模块地编程序,这样就相当于在做小题目,问题简化多了。编模块时,开场也无从下手,经过反复思考后,终于有点思路了,后来越来越熟练,逐渐得心应手起来。我的程序很烦琐,编得很痛苦,连续奋战了几天,终于调试成功。虽然很烦琐,但我无怨无悔,因为我通过学习,学会了调试一个较长程序的根本方法,学会了用流程图表示算法,不仅初步了解了C+的使用,还进一步掌握和提高了利用C语言进展程序设计的能力。教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。. .word.zl.