版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一、需求分析1二、概要设计3三、详细设计12四、调试分析12五、用户手册13六、测试数据17七、附录311. 需求分析源文件采用多文件的工程结构。2. 数据存储采用文件形式。3. 标准C+俞入输出程序完成企业人事工资管理,能够实现工资的录入、统计(整个单位的平均工资、最高工资、最低工资和工资均方差;各部门的平均工资、最高工资、最低工资和工资均方差)、查询(按工号或姓名查询)、修改、删除等功能程序执行的命令:(1) 录入员工工资信息;(2) 选择需要执行的操作(添加、统计、删除、修改、查询);(3) 输出结果。二、概要设计设计类的数据类型定义classmessage(private:char
2、bornplace10,duty10;/籍贯职务intID;/身份证号public:charname10,bumen10;/姓名部门intnumber;/工号intbasesalary;/基本工资intjobsalary;/岗位工资intyljj;/医疗基金intsj;/税金intjiangjin;/奖金friendvoidmodify(intx);/友员函数friendintdel(intx);/友员函数1. 程序模块(1) 录入操作:voidwriten(intx),该模版主要实现工资信息的录入;(2) 添加操作:voidadd(intx),该模版主要实现工资信息的添加;(3) 删除操作:
3、voiddel(intx),该模版主要实现工资信息的删除;(4) 修改操作:voidmodify(intx),该模版主要实现工资信息的修改;查询操作:voidfind(intx),该模版主要实现工资信息的查询(按名字查询或按工号查询);统计操作:voidcount(intx),该模版主要实现工资信息的统计(统计单位的平均工资、最高工资、最低工资、工资均方差;统计部门的平均工资、最高工资、最低工资、工资均方差)。程序模块结构voidmain()菜单(输入选择);操作;三、详细设计(1)类模块classmessage籍贯职务private:charbornplace10,duty10;/intID
4、;/身份证号public:charname10,bumen10;/姓名部门intnumber;/工号intbasesalary;/基本工资intjobsalary;/岗位工资intyljj;/医疗基金intsj;/税金intjiangjin;/奖金message()/*构造函数voidxinxi(chara_name,chara_bornplace,chara_duty,chara_bumen,inta_ID,inta_number,inta_basesalary,inta_jobsalary,inta_jiangjin,inta_yljj,inta_sj)(strcpy(name,a_nam
5、e);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=(constmessage&s)*运算符重载(strcpy(name,);strcpy(bornplace,s.bornplace);strcpy(duty,s.duty);strcp
6、y(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;friendvoidmodify(intx);*友元函数friendintdel(intx);voidput()(coutnamebornplacedutybumenIDnumberbasesalaryjobsalaryjiangjinyljjsjendl;message()/*析构;(2)主函数流程图(3)录入、添加函
7、数流程图(4)删除函数流程图fstreamap(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;return0;for(j=0,i=0;itemp,jtemp-1;)/删除信息(if(flag!=i)(aj=bi;/删除信息i+;j+;(5) elsei+;修改函数流程图coutming;coutendl;cout
8、flagendl;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;coutendl;查找函数流程图1:按姓名查询coutming;messageb30;fstr
9、eamsp(wenjian.txt”,ios:in|ios:out);for(j=0,i=0;itemp;i+)if(strcmp(,ming)=0)cout姓名籍贯职务部门身份证号工号基本工资岗位工资奖金医疗住房基金税金endl;2. 按工号查询:coutnu;messageb30;for(i=0;itemp;i+)if(bi.number=nu)cout姓名籍贯职务部门身份证号工号基本工资岗位工资奖金医疗住房基金税金”endl;bi.put();(6) 统计函数流程图开始inti,j,k,chara_bumen10,sum=0,sum1=0输入要统计的部门k=1k=2i=0,
10、j=0,labumenbi.bumen=abumeni=0,j=0,jtempbi.bumen=abumensum=sum+basesalary+.jobsalary+.jiangjin-.yljj-.sj;ui=.basesalary+jobsalary+.jiangjin-.yljj-sj;sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;ui=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;i+j+i+j+end1.按部门统计for(j=0,i=0;itemp
11、;i+)if(strcmp(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+;intmax;intmin;max=u0;min=u0;intbb;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+)
12、bi.basesalary=abs(sum/(j+0.0)-bi.basesalary);/工资均方差sum1=sum1+bi.basesalary;2. 单位统计intU20;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+;intmax;intmin;max=U0;min=U0;intbb;for(i=0;ima
13、x)(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.basesalary=abs(sum/(j+0.0)-bi.basesalary);/工资均方差sum1=sum1+bi.basesalary;四、调试分析1、开始使用文件保存时出现不能为read错误,后通过查阅资料解决了问题;2、删除部分程序开始不能判断是否找到了要删除的人员信息,后来加了flag标记后可以判断了;3、统计部分程序在求均方差的时候出现算法错误,后来查阅了均方差公式后改正了过来
14、4、使用友员函数可以解决类外作用域问题。五、用户手册1. 本程序的运行环境为doc操作系统;2. 进入界面后,按照提示输入选择;3. 选择1:执行工资信息录入操作;4. 选择2:执行工资信息添加操作;5. 选择3:执行工资信息删除操作;6. 选择4:执行工资信息修改操作;7. 选择5:执行工资信息查询操作;8. 选择6:执行工资信息统计操作;9. 选择7:退出工资管理系统;10. 输入后按回车键,即可输出信息,按提示输入即可。六、测试数据(1)选择1:工资录入C;UseelenovoDcktQpdzbllkI黄号浬系SfeXguoTiDcrbusgBnlico.统:XXM11;.41:1猖入加
15、黑找计登腐删修杏毒二息息息S息息Tkp.4另MEE三=-一M_E曾资寰资资出你步工工工工工工1B:ASB2渝入企业人灵的人数*号处证:名三贯西篆苫.针字姓蚩辽职总?身1工C:UserslenovoDetopdzb企业丁咨含重云姓guanliDebugg-anliexe*基本工资,2000岗位工设:奖金:2000医疗住房基金:1000税金:1000姓名:籍费经理部门:mekl反田XL身务证号:2,XAU泊ftericvoDektjp-d;b全业工黄管忌系锭、斜alRDehuqcyeI.se”区本工演=b.530网位工资=B住房基金hann翱冬EQ8i二二4*二Bl-总目曾宣息息4里嗜普善,资资出
16、笙社*建至塑总经证F股H*齐江江zZ=三四:二二二一du!:MM1M28M0董过舞X抹基;MK3过XKSWSHKMi:Xtf瞽菖XKMHMMMMW18001U091000SW选择(2):添加工资信息CALefsMenoDedttopdzbMtJkTiSguanlDebugguanli.exe!.会耍增加例人员的信息,具n=工处册正号:仁十工资:岗代H资:蜂00丢狞仕房基金=00甲.-,CAUsersJertoklzopdz七nlRDubugtJanii.ckc鹭内保与毗言息宅=江西总皂理.四江西经理斑王麻I:!职务部门人识112M02009诚E221WI5MHU身份证号2&M跚1UUUI33i
17、mI9605伽3跚名字殊三工号1皿bM3如工贫晚成珈*欢迎进人菩业工费菖理系统工重百息/?|二更信息胃馈二流槽息统计很l+*克算知丁算XK、N算XX*MTWtM情辎A你要讲彳-的操咋诜功*i_r2U2i_rji_ri-aJ,uyuhL*UJ,_rU5JXJKTjtRMKMMXM-MMMM,-,mMMMMMWII-1An.ijiH*9CM*9HIEH*3KM*WOEM.XJ4XJtXJIJtJlJCItHr*MTt*XJINJIJCKifnum:Wmwx*MHMXMXMMKMM(4)选择4:修改工资信息三-P*削八其S3土Wes-.eicvs.e-ktap-dzcXSTt/J-rie.iq-.q
18、.iilefXJR!*2.工咨工姿七、附录#includeiostream.h#includestdlib.h#includestdio.h#includestring.h#includemessage.hclassmessage(private:charbornplace10,duty10;/籍贯职务intID;/身份证号public:charname10,bumen10;/姓名部门intnumber;/工号intbasesalary;intjobsalary;/基本工资/岗位工资intyljj;/医疗基金intsj;/税金intjiangjin;message()(/奖金*构造函数void
19、xinxi(chara_name,chara_bornplace,chara_duty,chara_bumen,inta_ID,inta_number,inta_basesalary,inta_jobsalary,inta_jiangjin,inta_yljj,inta_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_jobsalar
20、y;jiangjin=a_jiangjin;yljj=a_yljj;sj=a_sj;/*运算符重message&operator=(constmessage&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*this;frie
21、ndvoidmodify(intx);friendintdel(intx);voidput()定义put函数,coutnamebornplacedutybumennumberbasesalaryjobsalarysjendl;message()*以便于其他函数的调用*友元函数IDjiangjin”yljj析构;voidmain()inti,b;intor;coutvv”*欢迎进入企业工资管理系统*“vendl;coutvv*工资信息录入操作工资信息增加操作%*”vendr*“vendlqqutvv*4工资信息删除操作工资信息修改操作工资信息查找操作心心*“vendl;心心*刈r大知*,vend
22、;*“vendl;cout*工资信息统计操作出*请输入你要进行的操作选项*“vend.endl;*“vvendIcini;coutendl;while(i!=10)switch(i)default:cout你输入的有误,请重新输入。endl;break;case1:cout输入企业人员的人数:;/输入信息cinb;coutendl;writein(b);break;case2:/添加add(b);b+;break;case3:/删除del(b);b-;break;case4:/修改modify(b);break;case5:/查询coutr-1endl;cout|请输入您要选择的查询方式:|e
23、ndl;cout|1.按姓名查找操作|endlcout2.按工号查找操作|endl;coutendl;cinor;if(or=1)namfind(b);elseif(or=2)numfind(b);break;case6:/统计intcc;coutendl;cout请输入您要选择的查询方式:endl;cout1.按部门统计endl;cout2.按单位统计endl;coutor;:cincc;if(cc=1)bmcount(b);elseif(cc=2)dwcount();break;case7:exit(0);cout*欢迎进入企业工资管理系统*endl;cout*1.工资信息录入操作*end
24、l;cout*2.工资信息增加操作*endl;cout*3.工资信息删除操作*endl;cout*4.工资信息修改操作*endl;cout*5.工资信息查找操作*endl;cout*6.工资信息统计操作*endl;cout*7.退出*endl;cout*请输入你要进行的操作选项*i;coutendl;voidwritein(intx)/工资信息录入(messagea10;chara_name10,a_bornplace10,a_duty10,a_bumen10;/姓名籍贯职务部门intj,a_ID,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,
25、a_number;/身份证号基足工资岗位工资奖金医住代基4税金fstreamf(wenjian.txt,ios:out);/打开文件if(!f)(coutCannotopenfilen.;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;cout岗位工资:a_jobsalary;cout奖金:a_jiangjin;cout医疗住房基金:a_yljj;cout税金:a_sj;coutendl;
26、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;ifstreamin(wenjian.txt,ios:in);messageb10;for(j=0;jx;j+)(if(!in.eof()(in.read(char*)&bj,sizeof(aj);bj.put();elseexit(0);in.close();vo
27、idadd(intx)/工资信息添加(chara_name10,a_bornplace10,a_duty10,a_bumen10;inta_ID,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,a_number,temp=30;messagec;cout输入要增加的人员的信息:endl;cout姓名:a_name;cout籍贯:a_bornplace;cout职务:a_duty;cout部门:a_bumen;cout身份证号:a_ID;cout工号:a_number;cout基本工资:a_basesalary;cout岗位工资:a_jobsala
28、ry;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);ofstreamout(wenjian.txt”,ios:app);out.write(char*)&c,sizeof(classmessage);/保存至U文件中out.close();cout增加成功!endl;intdel(intx)/工资信息删除(inti,j,
29、temp,flag=-1;charming10;system(cls);ifstreamin(wenjian.txt);messageb30,c;for(j=0;j30;j+)if(!in.eof()in.read(char*)&bj,sizeof(classmessage);elsetemp=j-1;break;cout”文件内保存的信息有:endl;/输出文件内的人员信息cout”姓名地址职务部门身份证号工号工资endl;for(j=0;jtemp;j+)bj.put();in.close();fstreamsp(wenjian.txt”,ios:in|ios:out);for(j=0;j
30、30;j+)if(!sp.eof()sp.read(char*)&bj,sizeof(classmessage);elsetemp=j-1;break;sp.close();messagea30;fstreamap(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;return0;for(j=0,i=0;itemp,jtemp-1;)/删除信息(if(flag!=i
31、)(aj=bi;i+;j+;elsei+;ap.close();ofstreamnp(wenjian.txt);for(i=0;itemp-1;i+)(np.write(char*)&ai,sizeof(classmessage);/写入文件np.close();cout删除成功!endl;return1;voidmodify(intx)/工资信息修改(charming10;inti,j,temp,flag;messageb30;ifstreamsp(wenjian.txt);for(j=0;j30;j+)(if(!sp.eof()sp.read(char*)&bj,sizeof(classm
32、essage);/打开文件else(temp=j-1;break;sp.close();coutming;coutendl;cout原文件信息是:endl;for(i=0;itemp;i+)/输出文件内保存的信息(if(strcmp(,ming)=0)(flag=i;bi.put();coutendl;coutflagendl;coutendl;cout请输入修改信息:endl;cout姓名:;cout籍贯:bflag.bornplace;cout职务:bflag.duty;cout部门:bflag.bumen;cout身份证号:bflag.ID;cout工号
33、:bflag.number;cout基本工资:bflag.basesalary;cout岗位工资:alary;cout奖金:bflag.jiangjin;cout医疗住房基金:bflag.yljj;cout税金:bflag.sj;coutendl;ofstreamin(wenjian.txt);for(i=0;itemp;i+)if(!in)coutCannotopen!endl;in.write(char*)&bi,sizeof(classmessage);coutendl;in.close();voidnamfind(intx)/按姓名查找操作intj,temp,i;c
34、harming10;coutming;coutendl;cout这个人的信息是:endl;messageb30;fstreamsp(wenjian.txt”,ios:in|ios:out);for(j=0;j30;j+)if(!sp.eof()sp.read(char*)&bj,sizeof(classmessage);elsetemp=j-1;break;for(j=0,i=0;itemp;i+)if(strcmp(,ming)=0)cout姓名籍贯职务部门身份证号工号基本工资岗位工资奖金医疗住房基金税金endl;sp.close();voidnumfind(intx)/按工号
35、查找操作(intnu,i,j,temp;coutnu;coutendl;cout这个人的信息是:endl;messageb30;fstreamsp(wenjian.txt”,ios:in|ios:out);for(j=0;j30;j+)(if(!sp.eof()(sp.read(char*)&bj,sizeof(classmessage);else(temp=j-1;break;for(i=0;itemp;i+)(if(bi.number=nu)(cout姓名籍贯职务部门身份证号工号基本工资岗位工资奖金医疗住房基金税金endl;bi.put();sp.close();voidbmcount(intx)按部门统计操作(inti,j,sum=0,sum1=0,temp;chara_bumen10;couta_bumen;coutendl;messageb30;fstreamsp(wenjian.txt”,ios:in|ios:out);for(j=0;j30;j+)if(!sp.eof()sp.read(char*)&bj,sizeof(classmessage);elsetemp=j-1;break;intU20;for(i=0;i20;i+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年青海道德与法制中考试卷
- 2025网络借贷和担保服务合同
- 2025土地租赁居间合同
- 2025服装加工合作合同范本
- 2025房地产合作开发合同相关范文
- 钢结构工程成本浮动合同签订策略
- 重庆市博物馆维修工程合同
- 公共设施用地租赁合同范本
- 油气田开发钻井合同
- 2025防水施工承包合同
- 2025年1月普通高等学校招生全国统一考试适应性测试(八省联考)语文试题
- 《立式辊磨机用陶瓷金属复合磨辊辊套及磨盘衬板》编制说明
- 保险公司2025年工作总结与2025年工作计划
- 育肥牛购销合同范例
- 国际森林日森林防火教育宣传主题班会PPT模板
- 药厂质量管理部QA人员岗位设置表
- 剑桥国际少儿英语“第三级”单词默写表
- (精心整理)高中生物必修二非选择题专题训练
- 小学二年级100以内进退位加减法混合运算
- 福建省流动人口信息登记表
- 市委组织部副部长任职表态发言
评论
0/150
提交评论