




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录需求分析.1概要设计.3详细设计.12调试分析.12用户手册.13测试数据.17附录.31需求分析源文件采纳多文件的工程结构。数据存储采纳文件形式。标准C+输入输出程序完成企业人事工资治理,能够实现工资的录入、统计(整个单位的平均工资、最高工资、最低工资和工资均方差;各部门的平均工资、最高工资、最低工资和工资均方差)、查询(按工号或姓名查询)、修改、删除等功能。程序执行的命令:录入职职员资信息;选择需要执行的操作(添加、统计、删除、修改、查询);输出结果。概要设计设计类的数据类型定义class messageprivate:char bornplace10,duty10;/籍贯 职务 in
2、t ID;/身份证号public:char name10,bumen10;/姓名 部门 int number; /工号int basesalary;/差不多工资int jobsalary;/岗位工资int yljj;/医疗基金int sj;/税金int jiangjin;/奖金friend void modify(int x); /友员函数friend int del(int x); /友员函数 程序模块录入操作:void writen(int x),该模版要紧实现工资信息的录入;添加操作:void add(int x),该模版要紧实现工资信息的添加;删除操作:void del(int x),
3、该模版要紧实现工资信息的删除;修改操作:void modify(int x),该模版要紧实现工资信息的修改;查询操作:void find(int x) ,该模版要紧实现工资信息的查询(按名字查询或按工号查询);统计操作:void count(int x),该模版要紧实现工资信息的统计(统计单位的平均工资、最高工资、最低工资、工资均方差;统计部门的平均工资、最高工资、最低工资、工资均方差)。 3程序模块结构void main()菜单(输入选择);操作;三、详细设计(1)类模块class messageprivate:char bornplace10,duty10;/籍贯 职务 int ID;/身
4、份证号public:char name10,bumen10;/姓名 部门 int number; /工号int basesalary;/差不多工资int jobsalary;/岗位工资int yljj;/医疗基金int sj;/税金 int jiangjin;/奖金message() /*构造函数void xinxi(char a_name,char a_bornplace,char a_duty,char a_bumen,int a_ID,int a_number,int a_basesalary,int a_jobsalary,int a_jiangjin,int a_yljj,int a
5、_sj)strcpy(name,a_name); strcpy(bornplace,a_bornplace); strcpy(duty,a_duty); strcpy(bumen,a_bumen); ID=a_ID; number=a_number; basesalary=a_basesalary; jobsalary=a_jobsalary; jiangjin=a_jiangjin; yljj=a_yljj; sj=a_sj; message &operator=(const message &s) /*运算符重载 strcpy(name,);strcpy(bornplace,s
6、.bornplace);strcpy(duty,s.duty);strcpy(bumen,s.bumen);ID=s.ID;number=s.number;basesalary=s.basesalary;jobsalary=alary;jiangjin=s.jiangjin;yljj=s.yljj;sj=s.sj;return * this;friend void modify(int x); /*友元函数friend int del(int x);void put()coutname bornplace duty bumen ID number basesalary jobsal
7、ary jiangjin yljj sjendl;message() /*析构;(2)主函数流程图 开始int b,or,i输入i值i=1录入i=2添加i=3删除i=4修改i =5查找i=6统计i=7退出结束(3)录入、添加函数流程图开始开始cout(请输入您要添加的信息)cout(姓名,工号,职务,身份证号,籍贯,差不多工资,岗位工资,奖金,医疗住房基金,税金)cin(name,num,duty,ID,bornplace,basesalary,jobsalary,jiangjin,yljj,sj)结束删除函数流程图开始开始int i,j,temp,flag=-1,char ming输入删除的
8、名字name=mingitemp,jtemp-1aj=bi,i+,j+i+没有找到要删除的人endmessage a30;fstream ap(wenjian.txt,ios:in|ios:out); /文件打开操作 coutming; /输入要删除的人员姓名 coutendl; for(j=0,i=0;itemp;i+) /推断是否删除 if(strcmp(,ming)=0)/标记要删除的信息 flag=i; if(flag=-1)cout没有要删除的信息。endl;return 0; for(j=0,i=0;itemp,jtemp-1; )/删除信息if(flag!=i)aj
9、=bi; /删除信息i+;j+;elsei+;(5)修改函数流程图startstartint i,j,char name输入=ming输入修改的信息(名字,工号,职务,身份证号,籍贯,工资)cin(name,num,duty,ID,bornplace,basesalary,jobsalary,jiangjin,yljj,sj)没找到要修改的endcoutming;coutendl;coutflagendl;cout请输入修改信息:endl; cout姓名: ;cout籍贯: bflag.bornplace;cout职务: bflag.duty;cout
10、部门: bflag.bumen;cout身份证号: bflag.ID;cout工号: bflag.number;cout差不多工资: bflag.basesalary;cout岗位工资: alary;cout奖金: bflag.jiangjin;cout医疗住房基金: bflag.yljj;cout税金: bflag.sj;coutendl;(6)查找函数流程图开始开始int i,j,k,num;char ming,k=1输入要查询的名字=ming输入要查询的工号bi.putBi.num=numm没有找到要查找的姓名没有找到要查找的工号结束1:按姓名查询cou
11、tming; message b30;fstream sp(wenjian.txt,ios:in|ios:out); for(j=0,i=0;itemp;i+)if(strcmp(,ming)=0)cout姓名 籍贯 职务 部门 身份证号 工号 差不多工资 岗位工资 奖金 医疗住房基金 税金 endl;bi.put();2.按工号查询:coutnu; message b30;for(i=0;itemp;i+)if(bi.number=nu)cout姓名 籍贯 职务 部门 身份证号 工号 差不多工资 岗位工资 奖金 医疗住房基金 税金 a_bumenbi.bumen=a_bumen
12、i=0,j=0,jtempi+j+sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;ui=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;i=0,j=0,jtempbi.bumen=a_bumensum=sum+basesalary+.jobsalary+.jiangjin-.yljj-.sj;ui=.basesalary+jobsalary+.jiangjin-.yljj-sj;i+j+end按部门统计 for(j=0,i=0;itemp;i+)if(strcmp
13、(bi.bumen,a_bumen)=0)sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj; /实发工资ui=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;j+;int max;int min; max=u0;min=u0;int bb;for(i=0;imax)bb=Ui;Ui=max;max=bb; /最高工资for(i=0;itemp;i+)if(Uimin)bb=Ui;Ui=min;min=Ui;/最低工资for(i=0;itemp;i+) bi.base
14、salary=abs(sum/(j+0.0)-bi.basesalary);/工资均方差sum1=sum1+bi.basesalary;2.单位统计int U20;for(i=0;i20;i+)Ui=0;for(j=0,i=0;itemp;i+)sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;/实发工资Ui=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;j+;int max;int min; max=U0;min=U0;int bb;for(i=0;imax)b
15、b=Ui;Ui=max;max=bb; /最高工资for(i=0;itemp;i+)if(Uimin)bb=Ui;Ui=min;min=Ui;/最低工资for(i=0;itemp;i+) bi.basesalary=abs(sum/(j+0.0)-bi.basesalary);/工资均方差sum1=sum1+bi.basesalary;四、调试分析1、开始使用文件保存时出现不能为read错误,后通过查阅资料解决了问题;2、删除部分程序开始不能推断是否找到了要删除的人员信息,后来加了flag标记后能够推断了;3、统计部分程序在求均方差的时候出现算法错误,后来查阅了均方差公式后改正了过来4、使用友
16、员函数能够解决类外作用域问题。五、用户手册1.本程序的运行环境为doc操作系统;2进入界面后,按照提示输入选择;3.选择1:执行工资信息录入操作;4.选择2:执行工资信息添加操作;5.选择3:执行工资信息删除操作;6.选择4:执行工资信息修改操作;7.选择5:执行工资信息查询操作;8.选择6:执行工资信息统计操作;9.选择7:退出工资治理系统;10.输入后按回车键,即可输出信息,按提示输入即可。六、测试数据(1)选择1:工资录入选择(2):添加工资信息(3)选择3:删除工资信息(4)选择4:修改工资信息(5)选择5:查找工资信息(6)选择6:统计工资信息(7)选择7:退出七、附录#includ
17、eiostream.h#include stdlib.h#include stdio.h#includestring.h#includemessage.hclass messageprivate:char bornplace10,duty10;/籍贯 职务 int ID;/身份证号public:char name10,bumen10;/姓名 部门 int number; /工号int basesalary;/差不多工资int jobsalary;/岗位工资int yljj;/医疗基金int sj;/税金 int jiangjin;/奖金message() /*构造函数void xinxi(ch
18、ar a_name,char a_bornplace,char a_duty,char a_bumen,int a_ID,int a_number,int a_basesalary,int a_jobsalary,int a_jiangjin,int a_yljj,int a_sj)strcpy(name,a_name);strcpy(bornplace,a_bornplace);strcpy(duty,a_duty);strcpy(bumen,a_bumen);ID=a_ID;number=a_number;basesalary=a_basesalary;jobsalary=a_jobsal
19、ary;jiangjin=a_jiangjin;yljj=a_yljj;sj=a_sj;message &operator=(const message &s) /*运算符重载 strcpy(name,); strcpy(bornplace,s.bornplace);strcpy(duty,s.duty);strcpy(bumen,s.bumen);ID=s.ID;number=s.number;basesalary=s.basesalary;jobsalary=alary;jiangjin=s.jiangjin;yljj=s.yljj;sj=s.sj;return *
20、 this;friend void modify(int x); /*友元函数friend int del(int x);void put() /定义put函数,以便于其他函数的调用coutname bornplace duty bumen ID number basesalary jobsalary jiangjin yljj sjendl;message() /*析构;void main()int i,b;int or;cout*欢迎进入企业工资治理系统*endl;cout*1.工资信息录入操作*endl;cout*2.工资信息增加操作*endl;cout*3.工资信息删除操作*endl;
21、cout*4.工资信息修改操作*endl;cout*5.工资信息查找操作*endl;cout*6.工资信息统计操作*endl;cout*7.退出*endl;cout*请输入你要进行的操作选项*i;coutendl;while(i!=10) switch(i) default: cout你输入的有误,请重新输入。endl;break; case 1: coutb; coutendl; writein(b); break; case 2:/添加 add(b); b+; break; case 3:/删除 del(b); b-; break; case 4:/修改 modify(b); break;
22、 case 5:/查询 cout endl;cout请输入您要选择的查询方式:endl;cout1.按姓名查找操作 endl;cout2.按工号查找操作 endl; coutor;if(or=1) namfind(b);else if(or=2)numfind(b); break; case 6:/统计int cc; coutendl;cout请输入您要选择的查询方式:endl;cout1.按部门统计 endl;cout2.按单位统计 endl; coutor;:cincc;if(cc=1) bmcount(b);else if(cc=2)dwcount(); break; case 7: e
23、xit(0); cout*欢迎进入企业工资治理系统*endl;cout*1.工资信息录入操作*endl;cout*2.工资信息增加操作*endl;cout*3.工资信息删除操作*endl;cout*4.工资信息修改操作*endl;cout*5.工资信息查找操作*endl;cout*6.工资信息统计操作*endl;cout*7.退出*endl;cout*请输入你要进行的操作选项*i;coutendl;void writein(int x) /工资信息录入message a10;char a_name10,a_bornplace10,a_duty10,a_bumen10; /姓名 籍贯 职务 部门
24、int j,a_ID,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,a_number;/身份证号 差不多工资 岗位工资 奖金 医疗住房基金 税金 fstream f(wenjian.txt,ios:out);/打开文件if(!f) coutCan not open filen.;for(j=0;jx;j+)cout姓名: a_name;cout籍贯: a_bornplace;cout职务: a_duty;cout部门: a_bumen;cout身份证号: a_ID;cout工号: a_number;cout差不多工资: a_basesalary
25、;cout岗位工资: a_jobsalary;cout奖金: a_jiangjin;cout医疗住房基金: a_yljj;cout税金: a_sj;coutendl;aj.xinxi(a_name,a_bornplace,a_duty,a_bumen,a_ID,a_number,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj); f.write(char *)&aj,sizeof(aj );/保存录入的信息f.close(); /关闭文件coutendl;ifstream in(wenjian.txt,ios:in);message b10;fo
26、r(j=0;jx;j+)if(!in.eof() in.read(char *)&bj,sizeof(aj); bj.put();else exit(0);in.close();void add(int x) /工资信息添加 char a_name10,a_bornplace10,a_duty10,a_bumen10;int a_ID,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,a_number,temp=30; message c;cout输入要增加的人员的信息:endl; cout姓名: a_name;cout籍贯: a_bornplac
27、e;cout职务: a_duty;cout部门: a_bumen;cout身份证号: a_ID;cout工号: a_number;cout差不多工资: a_basesalary;cout岗位工资: a_jobsalary;cout奖金: a_jiangjin;cout医疗住房基金: a_yljj;cout税金: a_sj;coutendl;c.xinxi(a_name,a_bornplace,a_duty,a_bumen,a_ID,a_number,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj); ofstream out(wenjian.tx
28、t,ios:app);out.write(char *)&c,sizeof(class message);/保存到文件中out.close();cout增加成功!endl;int del(int x) /工资信息删除int i,j,temp,flag=-1;char ming10;system(cls); ifstream in(wenjian.txt);message b30,c;for(j=0;j30;j+)if(!in.eof() in.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;cout文件内保存的信息有:end
29、l; /输出文件内的人员信息cout姓名 地址 职务 部门 身份证号 工号 工资 endl;for(j=0;jtemp;j+)bj.put();in.close(); fstream sp(wenjian.txt,ios:in|ios:out);for(j=0;j30;j+)if(!sp.eof() sp.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;sp.close();message a30;fstream ap(wenjian.txt,ios:in|ios:out); coutming; coutendl; for(
30、j=0,i=0;itemp;i+) if(strcmp(,ming)=0)/标记要删除的信息 flag=i; if(flag=-1)cout没有要删除的信息。endl;return 0; for(j=0,i=0;itemp,jtemp-1; )/删除信息if(flag!=i)aj=bi;i+;j+;elsei+;ap.close();ofstream np(wenjian.txt);for(i=0;itemp-1;i+)np.write(char *)&ai,sizeof(class message);/写入文件 np.close();cout删除成功!endl;return 1
31、;void modify(int x) /工资信息修改char ming10;int i,j,temp,flag;message b30; ifstream sp(wenjian.txt);for(j=0;j30;j+)if(!sp.eof() sp.read(char *)&bj,sizeof(class message); /打开文件elsetemp = j-1;break; sp.close(); coutming;coutendl; cout原文件信息是:endl;for(i=0;itemp;i+) /输出文件内保存的信息if(strcmp(,ming)=0)flag =
32、 i; bi.put();coutendl;coutflagendl;coutendl;cout请输入修改信息:endl; cout姓名: ;cout籍贯: bflag.bornplace;cout职务: bflag.duty;cout部门: bflag.bumen;cout身份证号: bflag.ID;cout工号: bflag.number;cout差不多工资: bflag.basesalary;cout岗位工资: alary;cout奖金: bflag.jiangjin;cout医疗住房基金: bflag.yljj;cout税金: bflag.sj
33、;coutendl;ofstream in(wenjian.txt);for(i=0;itemp;i+)if(!in)coutCan not open!endl; in.write(char *)&bi,sizeof(class message); coutendl; in.close();void namfind(int x) /按姓名查找操作int j,temp,i;char ming10;coutming;coutendl;cout那个人的信息是:endl; message b30;fstream sp(wenjian.txt,ios:in|ios:out); for(j=0;j30;j
34、+)if(!sp.eof() sp.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;for(j=0,i=0;itemp;i+)if(strcmp(,ming)=0)cout姓名 籍贯 职务 部门 身份证号 工号 差不多工资 岗位工资 奖金 医疗住房基金 税金 endl;bi.put();sp.close();void numfind(int x) /按工号查找操作int nu,i,j,temp; coutnu;coutendl;cout那个人的信息是:endl; message b30;fstream sp(w
35、enjian.txt,ios:in|ios:out); for(j=0;j30;j+) if(!sp.eof() sp.read(char *)&bj,sizeof(class message); else temp = j-1;break; for(i=0;itemp;i+)if(bi.number=nu)cout姓名 籍贯 职务 部门 身份证号 工号 差不多工资 岗位工资 奖金 医疗住房基金 税金 endl;bi.put();sp.close();void bmcount(int x) /按部门统计操作int i,j,sum=0,sum1=0,temp;char a_bumen10;couta_bumen;coutendl; message b30;fstream sp(wenjian.txt,ios:in|ios:out); for(j=0;j30;j+) if(!sp.eof() sp.read(char *)&bj,sizeof(class message); else temp = j-1;break; int U20;for(i=0;i20;i+)Ui=0;for(j=0,i=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省蚌埠市禹会区北京师范大学蚌埠附属学校2025届高考化学四模试卷含解析
- 山东省青岛市黄岛区致远中学2025年高三第三次测评化学试卷含解析
- 家政服务技能培训
- 幼儿园中班冬至主题教育
- 幻听常见护理诊断及措施
- 急性呼吸衰竭护理查房
- 2025年金刚石触媒材料合作协议书
- 大兴机场工程项目管理
- 2025年医用激光仪器设备项目建议书
- 2025届安徽马鞍山市高考仿真卷化学试卷含解析
- 分布式光伏高处作业专项施工方案
- 成语小故事胸有成竹
- JC474-2008 砂浆、混凝土防水剂
- 一年级综合实践-集中注意力
- 《大学物理学》精美课件(全)
- 廉洁谈话一问一答简短六篇
- 校服采购投标方案(技术标)
- 儿童压力性损伤评估量表与预防措施
- 高中数学开放题赏析
- 品质部工作计划
- 微生物课件(老师版) 1.流感病毒
评论
0/150
提交评论