1目录一、需求分析.......................................1二、概要设计.......................................3三、详细设计......................................12四、调试分析......................................12五、用户手册......................................13六、测试数据......................................17七、附录..........................................312一、需求分析1.源文件采用多文件的工程结构。2.数据存储采用文件形式。3.标准C++输入输出4.程序完成企业人事工资管理,能够实现工资的录入、统计(整个单位的平均工资、最高工资、最低工资和工资均方差;各部门的平均工资、最高工资、最低工资和工资均方差)、查询(按工号或姓名查询)、修改、删除等功能。5.程序执行的命令:(1)录入员工工资信息;(2)选择需要执行的操作(添加、统计、删除、修改、查询);(3)输出结果。二、概要设计1.设计类的数据类型定义classmessage{private:charbornplace[10],duty[10];//籍贯职务intID;//身份证号public:charname[10],bumen[10];//姓名部门intnumber;//工号intbasesalary;//基本工资intjobsalary;//岗位工资intyljj;//医疗基金intsj;//税金intjiangjin;//奖金friendvoidmodify(intx);//友员函数friendintdel(intx);//友员函数3}2.程序模块(1)录入操作:voidwriten(intx),该模版主要实现工资信息的录入;(2)添加操作:voidadd(intx),该模版主要实现工资信息的添加;(3)删除操作:voiddel(intx),该模版主要实现工资信息的删除;(4)修改操作:voidmodify(intx),该模版主要实现工资信息的修改;(5)查询操作:voidfind(intx),该模版主要实现工资信息的查询(按名字查询或按工号查询);(6)统计操作:voidcount(intx),该模版主要实现工资信息的统计(统计单位的平均工资、最高工资、最低工资、工资均方差;统计部门的平均工资、最高工资、最低工资、工资均方差)。3.程序模块结构voidmain(){菜单(输入选择);操作;}三、详细设计(1)类模块classmessage{private:charbornplace[10],duty[10];//籍贯职务intID;//身份证号public:charname[10],bumen[10];//姓名部门intnumber;//工号intbasesalary;//基本工资intjobsalary;//岗位工资intyljj;//医疗基金intsj;//税金intjiangjin;//奖金message(){}//********************构造函数voidxinxi(chara_name[],chara_bornplace[],chara_duty[],chara_bumen[],inta_ID,int4a_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_jobsalary;jiangjin=a_jiangjin;yljj=a_yljj;sj=a_sj;}message&operator=(constmessage&s)//**********************运算符重载{strcpy(name,s.name);strcpy(bornplace,s.bornplace);strcpy(duty,s.duty);strcpy(bumen,s.bumen);ID=s.ID;number=s.number;basesalary=s.basesalary;jobsalary=s.jobsalary;jiangjin=s.jiangjin;yljj=s.yljj;sj=s.sj;return*this;}friendvoidmodify(intx);//************************友元函数friendintdel(intx);voidput(){coutnamebornplacedutybumenIDnumberbasesalaryjobsalaryjiangjinyljjsjendl;}~message()//**************************析构{}};5(2)主函数流程图(3)录入、添加函数流程图开始intb,or,i输入i值i=1录入i=2添加i=3删除i=4修改i=5查找i=6统计i=7退出结束开始cout(请输入您要添加的信息)cout(姓名,工号,职务,身份证号,籍贯,基本工资,岗位工资,奖金,医疗住房基金,税金)cin(name,num,duty,ID,bornplace,basesalary,jobsalary,jiangjin,yljj,sj)结束6(4)删除函数流程图messagea[30];fstreamap(wenjian.txt,ios::in||ios::out);//文件打开操作cout请输入要删除人员信息的名字:;cinming;//输入要删除的人员姓名coutendl;for(j=0,i=0;itemp;i++)//判断是否删除{if(strcmp(b[i].name,ming)==0)//标记要删除的信息{flag=i;}}if(flag==-1){cout没有要删除的信息。endl;return0;}for(j=0,i=0;itemp,jtemp-1;)//删除信息{if(flag!=i)开始inti,j,temp,flag=-1,charming输入删除的名字name=mingitemp,jtemp-1a[j]=b[i],i++,j++i++没有找到要删除的人end7{a[j]=b[i];//删除信息i++;j++;}elsei++;}(5)修改函数流程图cout输入要修改人的名字:;cinming;coutendl;coutflagendl;cout请输入修改信息:endl;cout姓名:endl;cinb[flag].name;cout籍贯:endl;cinb[flag].bornplace;cout职务:endl;cinb[flag].duty;cout部门:endl;startinti,j,charname输入mingb[i].name=ming输入修改的信息(名字,工号,职务,身份证号,籍贯,工资)cin(name,num,duty,ID,bornplace,basesalary,jobsalary,jiangjin,yljj,sj)没找到要修改的end8cinb[flag].bumen;cout身份证号:endl;cinb[flag].ID;cout工号:endl;cinb[flag].number;cout基本工资:endl;cinb[flag].basesalary;cout岗位工资:endl;cinb[flag].jobsalary;cout奖金:endl;cinb[flag].jiangjin;cout医疗住房基金:endl;cinb[flag].yljj;cout税金:endl;cinb[flag].sj;coutendl;(6)查找函数流程图1:按姓名查询开始inti,j,k,num;charming,k=1输入要查询的名字b[i].name=ming输入要查询的工号b[i].putB[i].num=numm没有找到要查找的姓名没有找到要查找的工号结束9cout输入要查询的姓名:;cinming;messageb[30];fstreamsp(wenjian.txt,ios::in||ios::out);for(j=0,i=0;itemp;i++){if(strcmp(b[i].name,ming)==0){cout姓名籍贯职务部门身份证号工号基本工资岗位工资奖金医疗住房基金税金endl;b[i].put();}}2.按工号查询:cout输入要查询的工号:;cinnu;messageb[30];for(i=0;itemp;i++){if(b[i].number==nu){cout姓名籍贯职务部门身份证号工号基本工资岗位工资奖金医疗住房基金税金endl;b[i].put();}}10(7)统计函数流程图1.按部门统计for(j=0,i=0;itemp;i++){if(strcmp(b[i].bumen,a_bumen)==0)开始inti,j,k,chara_bumen[10],sum=0,sum1=0k=1输入要统计的部门k=2cina_bumenb[i].bumen=a_bumeni=0,j=0,jtempi++j++sum=sum+b[i].basesalary+b[i].jobsalary+b[i].jiangjin-b[i].yljj-b[i].sj;u[i]=b[i].basesalary+b[i].jobsalary+b[i].jiangjin-b[i].yljj-b[i].sj;i=0,j=0,jtempb[i].bumen=a_bumensum=sum+basesalary+.jobsalary+.jiangjin-.yljj-.sj;u[i]=.basesalary+jobsalary+.jiangjin-.yljj-sj;i++j++end11{sum=sum+b[i].basesalary+b[i].jobsalary+b[i].jiangjin-b[i].yljj-b[i].sj;//实发工资u[i]=b[i].basesalary+b[i].jobsalary+b[i].jiangjin-b[i].yljj-b[i].sj;j++;}}intmax;intmin;max=u[0];min=u[0];intbb;for(i=0;itemp;i++){if(U[i]max){bb=U[i];U[i]=max;max=bb;//最高工资}}for(i=0;itemp;i++){if(U[i]min){bb=U[i];U[i]=min;min=U[i];//最低工资}}for(i=0;itemp;i++){b[i].basesalary=abs(sum/(j+0.0)-b[i].basesalary);//工资均方差sum1=sum1+b[i].basesalary;}2.单位统计intU[20];for(i=0;i20;i++){U[i]=0;}for(j=0,i=0;itemp;i++)12{sum=sum+b[i].basesalary+b[i].jobsalary+b[i].jiangjin-