C语言程序设计报告-职工信息管理系统设计.doc

上传人:来看看 文档编号:5014228 上传时间:2020-01-28 格式:DOC 页数:39 大小:998.50KB
返回 下载 相关 举报
C语言程序设计报告-职工信息管理系统设计.doc_第1页
第1页 / 共39页
C语言程序设计报告-职工信息管理系统设计.doc_第2页
第2页 / 共39页
C语言程序设计报告-职工信息管理系统设计.doc_第3页
第3页 / 共39页
C语言程序设计报告-职工信息管理系统设计.doc_第4页
第4页 / 共39页
C语言程序设计报告-职工信息管理系统设计.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《C语言程序设计报告-职工信息管理系统设计.doc》由会员分享,可在线阅读,更多相关《C语言程序设计报告-职工信息管理系统设计.doc(39页珍藏版)》请在三一文库上搜索。

1、目录一 系统功能21系统需求分析22 系统功能总体设计23. 输入输出功能24. 总体设计流程图3二 概要设计41 抽象数据类型定义42 系统模块组成及其功能4三 详细设计51 用C语言定义相关数据52 各模块的类C码算法51 职工信息显示函数52 职工信息的追加函数63 职工信息修改函数64 职工信息删除函数85 职工信息查询函数106职工信息排序函数107退出函数103 函数的调用关系图10四 调试分析(包括流程图和截图)111 显示模块N-S图112追加模块的流程图123.查询模块的流程图144.排序模块的流程图155. 修改模块的流程图166删除模块流程图187. 各个模块的截图及说明

2、20五 总结28六 参考文献28七 程序原代码29一 系统功能 1系统需求分析 这是一个对职工信息管理的系统,通过这个系统可以显示所有职工的信息并可以对职工信息进行追加、修改、删除、查询、排序等多种功能的操作.2 系统功能总体设计 程序的功能:随着计算机科学的发展,现在我们不可能还是用手写的方式对职工的信息进行管理,这就需要设计一个系统运用计算机来实现对职工信息的管理.该系统用数组实现对职工信息数据的存储,且总体数据结构应用文件类型数据,文件类型为结构体数组,这就要建立数据库来存放职工的信息,通过指针文件来实现对数据库里信息的读和写,需要存储的职工信息包括职工号、职工姓名、性别、年龄、学历、工

3、资、部门、职称等等,最后通过函数的调用来实现对职工信息的管理.初始化 显示函数 追加函数主涵数main() 修改函数 删除函数 查询函数 排序函数 退出函数3. 输入输出功能数据库中的数据全通过fread()函数来读取数据,并且通过fwrite函数将修改过后的数据放到一个新的文件里去,从而实现的系统的输入输出功能。4. 总体设计流程图开始 主菜单 选择功能显示模块追加模块修改模块删除模块查询模块排序模块退出模块 保存修改后的数据结束二 概要设计 1 抽象数据类型定义Struct stu;long int zgh; /*职工号*/ Char name10; /*姓名*/ Char xb4; /*

4、性别*/ Int nl; /*年龄*/ Char xl10; /*学历*/ Double gz; /*工资*/ Char bm15; /*部门*/ Char zc10; /*职称*/s402 系统模块组成及其功能 主函数 void main() 显示函数 void Disp() 功能 : 显示数据库中职工的所有信息。 追加函数 void Appe() 功能 : 加入你想加入的职工的信息,可以追加多条,也可以追加多次。 修改函数 void Modi() 功能 : 修改你想修改的职工的信息,可以修改职工的某项信息,也可以修改多项信息,还可以多次修改其他职工的信息,你可以通过选择职工号 或者职工的姓

5、名二种方式进行修改职工的信息,。 删除函数 void Dele() 功能 : 删除你想删除的职工的所有信息,可以多次删除,同样可以通过职工号或者职工的姓名二种方式进行删除,删除后会显示删除结果。 查询函数 void Query() 功能 : 可以通过该函数来查询你所需职工的所有信息并显示,同样你可以选择是按职工号、职工的姓名、工资或者部门来查询,当你查询的职工不存在时系统还会提示你,你所查询的职工不存在。 排序函数 void Sore() 功能 : 通过该函数完成按职工工资降序排列并显示。 退出函数 功能 : 完成退出程序。三 详细设计 1 用C语言定义相关数据 Struct stulong

6、int zgh; /*职工号*/Char name10; /*姓名*/Char xb4; /*性别*/Int nl; /*年龄*/Char xl10; /*学历*/Double gz; /*工资*/Char bm15; /*部门*/Char zc10; /*职称*/s40;2 各模块的类C码算法 1 职工信息显示函数void Disp() /*显示模块*/int i; 定义循环变量system(COLOR 1f); 调整显示界面颜色;for(i=0;iN;i+) 利用for 循环 将数据库的内容出来printf(输出职工信息); 2 职工信息的追加函数void Appe() /*追加模块*/

7、int i,p,t; void Wr_file(); printf(请输入你想添加的职工个数:);scanf(%d,&i); for(p=0;pi;p+) (利用for循环追加想要追加的职工的个数) printf(你还想要追加吗?是 请按1 否 请按2);scanf(%d,&t);if(t=1) Appe(); printf(“追加后的信息为:”);3 职工信息修改函数void Modi() /* 修改模块*/ int n,c,p,i,b=1,j=0,k=1;char fname10;int long r;system(COLOR 9f); (控制颜色)void Wr_file();print

8、f(请选择修改方式n);printf(1:职工号 2:姓名n);scanf(%d,&n);switch(n) 输入工号或姓名for(i=0;iN;i+)case 1:for(b=1;b2;)printf(请输入职工号:);scanf(%ld,&r);for(i=0;iN;i+)if(si.zgh=r)p=i;j=1;switch(j)case 0:printf(无此人信息n); scanf(%d,&b);break;case 1:for(;k2;)printf(请选择修改项目n); scanf(%d,&c);switch(c)(修改并保存)Wr_file();printf(你还要修改此人其他项

9、目吗n);printf(1:yes 2:non);scanf(%d,&k); if(k=1) continue; (若是k=1则继续修改此人的信息) printf(你还要修改其他职工的其他项目吗n);printf(1:yes 2:non);scanf(%d,&k);if(k=1) continue;break;case 2:for(;b2;)printf(请输入姓名:);scanf(%s,fname);for(i=0;iN;i+)if(strcmp(si.name,fname)=0) (判断是否找到这个人)p=i;j=1; switch(j) case 0:printf(无此人信息n); sc

10、anf(%d,&b);break;case 1:for(;k2;)printf(请选择修改项目n);scanf(%d,&c);switch(c)(修改并保存) printf(你还要修改此人其项目吗n); printf(1:yes 2:non); scanf(%d,&k);if(k=1) continue; break;printf(你还要修改其他职工的其他项目吗?n);printf(1:yes 2:non);scanf(%d,&b); break;break;(修改完了输出) 4 职工信息删除函数void Dele() /*删除模块*/ int a,b,c,d,x,p,i,j=0; char

11、sname10; long int sgh; system(COLOR 5f); void Quit(); (退出函数) printf(请选择删除方式n);scanf(%d,&x); switch(x)case 1:for(c=1;c2;)printf(请输入删除工号n);scanf(%ld,&sgh);for(i=0;iN;i+) if(si.zgh=sgh)b=i;j=1; switch(j)case 0:printf(无此人n);printf(还要删n);printf(1.yes 2.non); 选择是否还要删除 scanf(%d,&c);break;case 1:printf(是否删除

12、此人n);printf(1.yes 2.non);scanf(%d,&a);switch(a)case 1:for(p=(b+1);pN;p+)d=b+1;sb=sd;b+; N=N-1; Wr_file(); printf(还要删除吗n);printf(1.yes 2.non); 选择是否还要删除?scanf(%d,&c);break;case 2:c=2;break;break; case 2:for(c=1;c2;) (按姓名进行删除,用for循环控制)printf(请输入删除姓名n);scanf(%s,&sname);for(i=0;iN;i+)if(strcmp(si.name,sn

13、ame)=0)b=i;j=1;switch(j)case 0:printf(无此人n);printf(是否还要删除n);printf(1.yes 2.non); scanf(%d,&c);break;case 1:printf(是否删除此人n);printf(1.yes 2.non); 选择是否删除?scanf(%d,&a);switch(a)case 1:for(p=(b+1);pN;p+)d=b+1;sb=sd;b+;N=N-1; Wr_file(); printf(还要删除吗n);printf(1.yes 2.non);scanf(%d,&c);break;case 2:c=2;brea

14、k;break;5 职工信息查询函数void Query() /*查询模块*/ int i,t,flag; long int b;char s18;system(COLOR 5f); printf(选择按职工号|姓名|工资|部门查询);查找该职工并显示其信息6职工信息排序函数void Sort() /*排序*/ int i,j;struct stu s1;(定义一个结构体中间变量)system(COLOR 6f);(控制颜色) for(i=0;iN-1;i+) for(j=i+1;jN;j+) if(si.gzsj.gz) s1=si;si=sj;sj=s1;(交换结构体的值) 7退出函数vo

15、id Quit() /*退出*/ printf( * Thank you bye * n); 3 函数的调用关系图Void main()void Disp()void Appe()void Modi()void Dele()void Sort()void Query()void Quit()四 调试分析(包括流程图和截图)1 显示模块N-S图 显示第i个职工的信息j打开rsdak文件For(i=0;fread()!=;i+显示读出第i个职工的信息 打开nwersk文件For(i=0;iN;i+将第i个职工的数据写入文件 关闭neaersk 文件2.追加模块流程图否选择追加模块主菜单 开始 输入

16、要追加的个数P=0Pi?输入要追加职工的信息N+P+结束还追加吗?否3.查询模块的流程图开始选择5查询模块输入职工号或姓名或工资或部门结束选择按什么方式寻找这个人 i职工号或姓名在数据库中是否存在是显示找到的这个职工的信息否按职工按姓名返回按部门按工资4.排序模块的流程图 开始定义一个结构体 s1IN-1?I=0是j=i+1,JN?是si.gzsj.gz?s1=si;si=sj;sj=s1;交换结构体的值j+I+否否结束否选择排序模块5. 修改模块的流程图开始选择修改模块选择修改方式职工号姓名退出输入职工号或姓名输入职工号输入姓名职工号是否存在姓名是否存在选择要修改哪一项信息并修改选择要修改哪

17、一项信息并修改还要修改吗还要修改吗结束否否是是6删除模块流程图开始选择删除模块选择删除方式职工号姓名退出输入职工号或姓名输入职工号输入姓名职工号是否存在姓名是否存在?确认删?确认删?删除删除是否还继续是否继续?结束是 是 是否否是是7. 各个模块的截图及说明运行程序,进入主菜单,显示如图所示: 系统提供了七个选项,可以通过选择数字进入你需要的模块操作。 选择1显示模块的截图如下图所示: 按任意键返回主菜单,选择菜单2进入追加模块的操作, 追加模块的截图如下所示: 在该模块的操作中可以选择追加一条,也可以追加多条。 按任意键退出,选择3进入修改模块的操作截图如下所示: 可以修改一个职工的某项信息

18、也可以修改多项信息,还可以修改其他职工的信息。 按任意键退出该模块,选择4进入删除模块的操作,截图如下: 可以按照两种方法删除当输入的人不存在是系统会给出提示此人不存在,可以进行多项删除。 按任意键退出,选择5进入查询模块的操作,截图如下: 该模块可以选择4种方式进行查询,当查询的信息不存在时,会给出此人不存在的提示,按5键退出查询模块。 按任意键退出后进入主菜单,选择6进入排序模块的操作,截图如下: 该排序是按员工的工资降序排列的。选菜单7退出系统截图如下:五 总结 在整个C语言的学习过程中让我学会了很多,老师也非常用心的教我们这门课程,带我们进入了这门课程的学习。刚开始的时候是最艰难的,在

19、这里我要感谢老师的用心教导,让我慢慢学会了该怎样去学习这种与机器对话的语言。经过半年的学习,我们迎来了将近一周的课程设计,刚拿到题目我吓到了,啊,要编这么多啊,而且还这么的难,但下来后通过查找资料,通过仔细思考以及组员的帮助,我还是完成了这次的设计任务。在这次设计中我是负责编查询模块的,另外我还编了排序模块,编的过程中遇到了很多的问题,但还是一一解决了,但在调试的过程中还是出现了很多的错误,这就需要我们仔细的发现问题和培养解决问题的能力,在这个方面我还是学习的不够。所以在以后的学习过程中我应该要培养自己的逻辑思维能力。 在设计程序时首先要理解各个模块的作用,只有这样才能为设计好程序做好铺垫。在

20、这次程序设计中我发现了其他组员的设计模块还存在着不足,这就需要我们认真思考程序中存在的不足,同时可以和其他组的同学一起讨论,学习的过程交流也是非常重要的。此外课后我们还需要和老师多交流,好好利用学习资源。程序答辩时我的程序出现了一点点小问题,虽然通过自己的检查还是解决了问题但它教会了我在平时要更用心的去检查和调试程序。通过这次一周的程序设计我明白只有抱着认真的态度才能做好每一件事,最后我要感谢我的老师,谢谢你的用心指导。六 参考文献C语言程序案例分析 人民邮电出版社C语言程序设计(第2版) 北京邮电大学出版社C程序设计(第三版) 清华大学出版社C语言程序设计案例分析 人民邮电出版社七 程序原代

21、码#include stdio.h#include #include string.h#include conio.hint N=0;struct stu long int zgh; /*职工号*/ char name10; /*姓名*/ char xb4; /*性别*/ int nl; /*年龄*/ char xl10; /*学历*/ double gz; /*工资*/ char bm15; /*部门*/ char zc10; /*职称*/ s40;void Re_file() FILE *fp; 定义一个指针文件 fp=fopen(D:rsdak.txt,r); 打开文件所指的文件,进行读

22、取文件里的内容while( fscanf(fp,%ldn%sn%sn%dn%sn%lfn%sn%sn,&sN.zgh,sN.name,sN.xb,&sN.nl,sN.xl,&sN.gz,sN.bm,sN.zc)!=EOF) N+; fclose(fp); 关闭文件 void Wr_file()int i; FILE *fp; fp=fopen(D:nwersk.txt,w); 打开文件把文件里的内容写到新的文件里 for(i=0;iN;i+) fprintf(fp,%ldn%sn%sn%dn%sn%lfn%sn%sn,si.zgh,si.name,si.xb,si.nl,si.xl,si.gz

23、,si.bm,si.zc); fclose(fp);void Disp() /*显示模块*/int i; system(COLOR 2f); printf(*n); printf(职工号 姓名 性别 年龄 学历 工资 部门 职称n); for(i=0;iN;i+) 用for循环把职工的信息显示出来 printf(%-6ld %-6s %-4s %-5d %-7s %-10.2lf %-10s %-4sn,si.zgh,si.name,si.xb,si.nl,si.xl,si.gz,si.bm,si.zc); printf(*n);void Appe() /*追加模块*/ int i,p,t;

24、void Wr_file(); printf(请输入你想添加的职工个数:);scanf(%d,&i); for(p=0;pi;p+) 定义P来控制追加的职工的个数 printf(pleasinput 职工号:); /*输入追加的职工号*/ scanf(%ld,&sN.zgh); printf(nplease inpue 姓名:); /*输入追加的姓名*/ scanf(%s,sN.name); printf(npleaseinput 性别:); /*输入追加的性别*/ scanf(%s,&sN.xb); printf(npleaseinput 年龄:); /*输入追加的年龄*/ scanf(%d

25、,&sN.nl); printf(nplease input学历:); /*输入追加的学历*/ scanf(%s,sN.xl); printf(npleaseinput 工资:); /*输入追加的工资*/ scanf(%lf,&sN.gz); printf(npleaseinput 部门:); /*输入追加的部门*/ scanf(%s,sN.bm); printf(nplease input职称:); /*输入追加的职称*/ scanf(%s,sN.zc); printf(n next n); N+;printf(你还想要追加吗?是 请按1 否 请按2);scanf(%d,&t);if(t=1

26、) Appe();void Modi() /* 修改模块*/ int n,c,p,i,b=1,j=0,k=1;char fname10;int long r;system(COLOR 9f); 控制颜色void Wr_file();printf(请选择修改方式n);printf(1:职工号 2:姓名n);scanf(%d,&n);switch(n)case 1:for(b=1;b2;)printf(请输入职工号:);scanf(%ld,&r);for(i=0;iN;i+) if(si.zgh=r) 判断输入的职工号是否存在p=i;j=1; 若库文件里存在输入的职工号则p=i代表已经找到swit

27、ch(j)case 0:printf(无此人信息n); scanf(%d,&b);break;case 1:for(;k2;)printf(请选择修改项目n); printf(*n); printf(* *n); printf(* 1:性别 2:年龄 3:学历 4:工资 5:部门 6:职称 7:退出 *n); printf(* *n); printf(*n); scanf(%d,&c);if(c=7) break;switch(c)case 1:printf(请输入性别n);scanf(%s,sp.xb);break;case 2:printf(请输入年龄n);scanf(%d,&sp.nl)

28、;break;case 3:printf(请输入学历n);scanf(%s,sp.xl);break;case 4:printf(请输入工资n);scanf(%lf,&sp.gz);break; case 5:printf(请输入部门n);scanf(%s,sp.bm);break; case 6:printf(请输入职称n);scanf(%s,sp.zc);break; Wr_file();printf(你还要修改此人其他项目吗n);printf(1:yes 2:non);scanf(%d,&k); if(k=1) continue; printf(你还要修改其他职工的其他项目吗n);pri

29、ntf(1:yes 2:non);scanf(%d,&k);if(k=1) continue;break; case 2:for(;b2;)printf(请输入姓名:);scanf(%s,fname);for(i=0;iN;i+)if(strcmp(si.name,fname)=0) 判断输入的姓名是否存在p=i;j=1;switch(j)case 0:printf(对不起,找不到此人信息n);printf(还要继续n);printf(1.yes 2.non);scanf(%d,&b);if(b=1) continue; case 1:for(;k2;)printf(请选择修改项目n); pr

30、intf(*n); printf(* *n); printf(* 1:性别 2年龄 3学历 4:工资 5部门 6职称 7:退出 *n); printf(* *n);printf(*n); scanf(%d,&c); if(c=7) break; switch(c) 定义一个开关语句来修改职工的某项信息case 1:printf(请输入性别n);scanf(%s,sp.xb);break; case 2:printf(请输入年龄n);scanf(%d,&sp.nl);break; case 3:printf(请输入学历n);scanf(%s,sp.xl);break; case 4:printf

31、(请输入工资n);scanf(%lf,&sp.gz);break; case 5:printf(请输入部门n);scanf(%s,sp.bm);break; case 6:printf(请输入职称n);scanf(%s,sp.zc);break; Wr_file(); printf(你还要修改此人其项目吗n); printf(1:yes 2:non); scanf(%d,&k);if(k=1) continue; break;printf(你还要修改其他职工的其他项目吗n);printf(1:yes 2:non);scanf(%d,&b); break;break; void Dele() /

32、*删除模块*/ int a,b,c,d,x,p,i,j=0; char sname10; long int sgh; system(COLOR 5f); 控制颜色 void Quit(); printf(请选择删除方式n); printf(*n); printf(* *n); printf(* 1:职工号 2:姓名 3:退出 *n); printf(* *n); printf(*n); scanf(%d,&x); switch(x) 定义一个开关语句来选择按哪种方式删除职工的信息 case 1:for(c=1;c2;)printf(请输入删除工号n);scanf(%ld,&sgh);for(i

33、=0;iN;i+) if(si.zgh=sgh) 判断要删除的职工信息库文件里是否存在b=i;j=1; switch(j)case 0:printf(无此人n);printf(还要删除吗n);printf(1.yes 2.non); scanf(%d,&c);break;case 1:printf(是否删除此人n);printf(1.yes 2.non);scanf(%d,&a);switch(a)case 1:for(p=(b+1);pN;p+)d=b+1;sb=sd;b+; N=N-1;Wr_file(); printf(还要删除吗n);printf(1.yes 2.non);scanf(%d,&c);break;case 2:c=2;break;break; case 2:for(c=1;c2;)printf(请输入删除姓名n);scanf(%s,&sname);for(i=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1