《职工档案管理计划系统c++设计.doc》由会员分享,可在线阅读,更多相关《职工档案管理计划系统c++设计.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、+中南大学高级程序设计实践(C+)课程设计报告设计题目 职工档案管理系统 指导老师 设计者 专业班级 设计日期 目录一、本次课题的基本内容和要求二、软件设计整体规划及方案三、程序功能简介四、主体内容:1、设计分析与程序结构2、相关模块源程序功能及程序说明 3、操作方法(流程)4、试验结果5、设计体会6、参考文献一、本次课题的基本内容和要求1、基本要求:为方便管理某单位职工档案信息,编写一个职工档案管理系统软件。系统记录必须包括职工的ID号、姓名以及性别、出生年月、职称、工资、所在单位、在岗情况等。2、基本管理功能:(1) 添加:增加一名职工的档案信息到管理系统中。(2) 查询:可以根据职工姓名
2、或ID号查找某人的相关信息,若找到则显示其信息。(3) 修改:在管理系统中修改一名职工的记录。(4) 保存:将所有职工档案信息保存在一个文件中(数据库文件或普通的文本文件)。(5) 读取:从文件中读取已保存了数据。(6) 删除:从管理系统中删除一条记录。(7) 恢复:能恢复被删除的记录。(8) 统计:(A)计算平均工资及总工资,(B)统计男/女职工各占总职工的人数的百分比、统计职工平均年龄和单位在岗职工人数占总职工人数的百分比、统计副高以上职工人数占总职工人数的百分比。(C)以表格形式打印全部职工档案信息表。二、软件设计整体规划及方案1、自顶向下、逐步细化、逐步求精所谓“自顶向下,逐步细化、逐
3、步求精”就是在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。每个子任务如果仍很复杂,还可以再分解为若干个子任务。如此逐层分解,对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包括哪几个意思,这就是“自顶向下,逐步细化”的方法。2、菜单技术当一个程序的规模比较庞大,层次和模块比较多时,不要每次都将所有模块按顺序执行一遍,最好在每一层,至少在最高几层都设一个“菜单”。为方便用户操作,“菜单”技术已广泛使用在计
4、算机的系统软件中,具体做法是:程序首先把各功能说明及相应代号以菜单形式显示在屏幕上,然后由用户在键盘上输入所选的功能代号,程序自动转去调用相应的功能模块进行处理。3、 时间安排1、阅读设计题目、任务内容,规划设计进度,并进行软件的各相关功能模块的规划设计(1天)。2、在C+环境下,用结构化程序设计思想进行C+语言程序设计、功能模块调试(7-9天)。3、进行课程设计报告编写与整理(2天)。4、课程设计结束时,进行设计成果演示;对相关电子文档进行整理上交(包括:程序文件、帮助说明文档);交课程设计报告一份。3、 程序功能简介1、数据文件管理功能:创建新文件、打开老文件。2、输入添加/插入记录:能够
5、完成对任意一条记录输入、添加或插入数据表中,并保存到数据文件中。3、显示、查询记录:能够打开已存在的数据表文件,根据用户要求按所给记录关键字显示、查询一个或多个相关联记录的各项信息。4、修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。5、删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能),并对新的数据表信息进行文件保存。6、统计功能:能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:总数、平均值、分段信息)。7、恢复记录:
6、恢复已删除的数据并进行保存。四、主体内容:1、 设计分析与程序结构开始显示系统版本信息用户管理和登录系统初始化保存记录帮助信息进行排序修改记录查找记录删除记录添加记录显示记录012345678显示和选择主菜单结束2、相关模块源程序功能及程序说明#include#include#include#include#includeusing namespace std;class Workerpublic:Worker() /*构造函数初始化*/num0=0; name0=0;float salary=0;float age=0;sex0=0;address0=0;zhicheng0=0;char n
7、um20;char name20; float salary;float age;char sex20;char address20; char zhicheng20;class functionprivate:Worker wor100; /*Worker类中的对象数组*/public:void add(char num20,char name20,float salary,float age,char sex5,char address20,char zhicheng20);/*添加职工信息*/void del(char name20); /*删除*/void search_num(cha
8、r num10); /*按职工号查找*/void search_name(char name20); /*按姓名查找*/void modify(char name20); /*修改*/ void save(); /*保存*/void read(); /*读取*/void recover(); /*恢复*/void statistics(); /*统计*/void display(); /*显示*/;float m=0; void function:add(char num20,char name20,float salary,float age,char sex5,char address20
9、,char zhicheng20)/*添加职工信息*/int x=1;for(int i=0;i100;i+)if(!strcmp(wori.name,0) /第i个对象姓名为空字符strcpy(wori.num,num);strcpy(wori.name,name);wori.salary=salary;wori.age=age;strcpy(wori.sex,sex);strcpy(wori.address,address);strcpy(wori.zhicheng,zhicheng);x=0;if(x=0)cout添加成功!endl;m+;break;void function:disp
10、lay() /*显示*/ cout所有信息如下:(单位:元)endl;for(int i=0;i100;i+)if(!strcmp(wori.name,0);elsecout编号:wori.numendl;cout姓名:wori.nameendl;cout工资:wori.salaryendl;cout年龄:wori.ageendl;cout性别:wori.sexendl;cout单位:wori.addressendl;cout职称:wori.zhichengendlendl;void function:search_num(char num20) /*按职工号查找*/ int x,y=1,z=
11、1;for(int i=0;i100;i+)if(!strcmp(wori.num,num)x=i;z=0;y=1;cout编号:wori.numendl;cout姓名:wori.nameendl;cout工资:wori.salaryendl;cout年龄:wori.ageendl;cout性别:wori.sexendl;cout单位:wori.addressendl;cout职称:wori.zhichengendlendlendl;else y=0;if(z=0)break;if(y=0)cout 输入的编号查找不到!endl;void function:search_name(char n
12、ame20) /*按姓名查找*/ int x,y=1,z=1;for(int i=0;i100;i+)if(!strcmp(wori.name,name)x=i;z=0;y=1;cout编号:wori.numendl;cout姓名:wori.nameendl;cout工资:wori.salaryendl;cout年龄:wori.ageendl;cout性别:wori.sexendl;cout单位:wori.addressendl;cout职称:wori.zhichengendlendl;else y=0;if(z=0)break;if(y=0)cout 输入的姓名查找不到!endl;void
13、function:modify(char name20) /*修改*/ int x;for(int i=0;i100;i+)if(!strcmp(wori.name,name)x=i;char t;cout (1)修改编号:endlendl;cout (2)修改姓名:endlendl;cout (3)修改工资:endlendl;cout (4)修改年龄:endlendl;cout (5)修改性别:endlendl;cout (6)修改单位:endlendl;cout (7)修改职称:endlendl;coutt;switch(t)case 1:coutnum1;strcpy(worx.num,
14、num1);cout 修改成功!endl;break;case 2:coutname1;strcpy(worx.name,name1);cout 修改成功!endl;break;case 3:coutsalary1;worx.salary=salary1;cout 修改成功!endl;break;case 4:coutage1;worx.age=age1;cout 修改成功!endl;break;case 5:coutsex1;strcpy(worx.sex,sex1);case 6:coutaddress1;strcpy(worx.address,address1);cout 修改成功!en
15、dl;break;case 7:coutzhicheng1;strcpy(worx.zhicheng,zhicheng1);cout 修改成功!endl;break; void function:save() /*保存*/ char name20;coutname;strcat(name,.txt);ofstream save(name);for(int i=0;i100;i+)if(strcmp(wori.name,0) save编号:wori.numendl;save姓名:wori.nameendl;save工资:wori.salaryendl;save年龄:wori.ageendl;sa
16、ve性别;wori.sexendl;save单位:wori.addressendl;save职称:wori.zhichengendlendlendl;save.close();void function:read() /*读取*/char name20;coutname;strcat(name,.txt);ifstream open(name);char ch;while(!open.eof()open.get(ch);coutch;open.close(); void function:del(char name20) /*删除*/int x=1,y=1;for(int i=0;i100;i
17、+)if(!strcmp(wori.name,name)ofstream recover(recover.txt,ios:app);recoverwori.num wori.name wori.salary wori.age wori.sex wori.address wori.zhichengendl;recover.close();strcpy(wori.num,0);strcpy(wori.name,0);wori.salary=0;wori.age=0;strcpy(wori.sex,0);strcpy(wori.address,0);strcpy(wori.zhicheng,0);x
18、=0;y=0;if(x=0)cout删除成功endl;m-;break;if(y=1)cout删除失败;void function:recover() /*恢复*/ifstream recover(recover.txt); for(int i=0;iwori.numwori.namewori.salarywori.agewori.sexwori.addresswori.zhicheng;recover.close();cout您所删除的记录已恢复;m+;ofstream clean(recover.txt);clean0;clean.close();void function:statist
19、ics() /*统计*/float all=0,allage=0,fnum=0;float w1,w2,w3 ;cout统计信息如下:(单位:元)endl;for(int i=0;i100;i+)if(!strcmp(wori.name,0);elsecout编号:wori.numendl;cout姓名:wori.nameendl;cout工资:wori.salaryendl;cout年龄:wori.ageendl;cout性别:wori.sexendl;cout单位:wori.addressendl;cout职称:wori.zhichengendlendl; all=all+wori.sal
20、ary; w1=all/m;allage=allage+wori.age;w2=allage/m;if(!strcmp(wori.sex,f)fnum=fnum+1;w3=fnum/m;coutendlendl统计表格如下:endl;coutsetiosflags(ios:left);cout _endl;coutsetw(7)编 号setw(7) 姓 名setw(7)工 资setw(7)年 龄setw(7)性 别setw(7)岗 位setw(7)职 称setw(7)endl; cout _endl; for(i=0;i100;i+)if(!strcmp(wori.name,0);elseco
21、utsetw(7)wori.numsetw(7)wori.namesetw(7)wori.salarysetw(7)wori.agesetw(7)wori.sexsetw(7)wori.addresssetw(7)wori.zhichengendl; cout_endlendlendl;cout _endl;coutsetw(7)总职工数setw(7)总的工资setw(7)平均工资setw(7)平均年龄setw(7)女职工数setw(7)女职工比例endl;cout _endl;coutsetw(7)m setw(7)all setw(7)w1 setw(7)w2 setw(7)fnum se
22、tw(7)w3 endl;cout _endl;int main()coutendlendlendlendlendl*职工档案管理系统*endl;coutendl* 系统开发设计者:甘一帆 *endl;coutendl* 专业班级:电气工程1303班 *endl;coutendl*endl;coutendl请按任意键开始;getchar();system(cls);function c1;int select;int k=1,e=1,j=1;while(k=1) coutendl*功能列表*endl;coutendl* 1、添加:增加一个新的职工信息 *endl; coutendl* 2、显示
23、:显示所有的职工信息 *endl;coutendl* 3、查询:查找职工的信息 *endl;coutendl* 4、修改:修改职工的信息 *endl;coutendl* 5、保存:保存职工的信息到文件中 *endl;coutendl* 6、读取:读取文件中职工的信息 *endl;coutendl* 7、删除:删除职工的信息 *endl;coutendl* 8、恢复:恢复误删的职工信息 *endl;coutendl* 9、统计:显示职工的统计信息 *endl;coutendl* 0、退出本操作系统 *endl;coutendl*endl; cout我要进行的操作是:select;int j=1,
24、e=1;system(cls);switch (select)case 1:while(j=1)char num120;char name120;float salary1;float age1;char sex15; char address120; char zhicheng120;coutendlendl;coutnum1;coutendlname1;coutendlsalary1;coutendlage1;coutendlsex1;coutendladdress1;coutendlzhicheng1;c1.add(num1,name1,salary1,age1,sex1,address
25、1,zhicheng1);cout输入除1以外任意数结束添加;输入1继续添加!j; break;case 2:c1.display();break;case 3:int select2;cout请选择查询方式:1.按编号查询。2.按姓名查询select2;switch(select2)case 1:char num220;coutnum2;c1.search_num(num2);break;case 2:char name220;coutname2;c1.search_name(name2);break;break;case 4:coutname3;c1.modify(name3);break
26、;case 5:c1.save();break;case 6:c1.read();break;case 7:while(e=1)coutname6;c1.del(name6);coute;break;case 8:c1.recover();break;case 9:c1.statistics();break;case 0:k=0;cout即将退出系统!endl;break;default:cout选择错误endl;getchar();getchar();getchar();return 0;3、操作方法(流程)4、试验结果5、设计体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决
27、实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在唐老师的辛勤指导下,终于游逆而解。同时,在学长的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!6、参考文献C+程序设计C+程序设计题解与上机指导
限制150内