版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一、需求分析 1二、概要设计 3三、详细设计 12四、调试分析 12五、用户手册 13六、测试数据 17七、附录 31一、需求分析1)源文件采用多文件的工程结构。2)数据存储采用文件形式。(3)标准C+俞入输出4)程序完成企业人事工资管理,能够实现工资的录入、统计(整个单位的平均工资、最 高工资、最低工资和工资均方差;各部门的平均工资、最高工资、最低工资和工资均方 差)、查询(按工号或姓名查询) 、修改、删除等功能。5)程序执行的命令:(1)录入员工工资信息;2)选择需要执行的操作(添加、统计、删除、修改、查询)(3)输出结果。一、 概要设计1. 设计类的数据类型定义class messa
2、geprivate:籍贯 职务部门char bornplace10,duty10;/int ID;/ 身份证号public:char name10,bumen10;/ 姓名int number; / 工号int basesalary;/ 基本工资int jobsalary;/ 岗位工资int yljj;/ 医疗基金int sj;/ 税金friend int del(int x); / 友员函数2. 程序模块( 1)录入操作: void writen(int x),该模版主要实现工资信息的录入;( 2)添加操作: void add(int x) ,该模版主要实现工资信息的添加;( 3)删除操作:
3、 void del(int x) ,该模版主要实现工资信息的删除;(4)修改操作: void modify ( int x ),该模版主要实现工资信息的修改;(5)查询操作: void find(int x),该模版主要实现工资信息的查询(按名字查询或按工号查询);( 6)统计操作: void count(int x) ,该模版主要实现工资信息的统计(统计单位的平均 工资、最高工资、最低工资、工资均方差;统计部门的平均工资、最高工资、最低 工资、工资均方差)。3程序模块结构 void main()菜单(输入选择); 操作;三、详细设计(1)类模块class messageprivate:籍贯
4、职务部门char bornplace10,duty10;/int ID;/ 身份证号public:char name10,bumen10;/ 姓名int number; /工号int basesalary;/ 基本工资int jobsalary;/ 岗位工资int yljj;/ 医疗基金int sj;/ 税金int jiangjin;/ 奖金/*构造函数void xinxi(char a_name,char a_bornplace,char a_duty,char a_bumen,inta_ID,inta_sj)a_number,int a_basesalary,int a_jobsalary
5、,int a_jiangjin,inta_yljj,intstrcpy(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,);str
6、cpy(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;friend void modify(int x); /*友元函数friend int del(int x);void put()IDyljjcoutname bornplace duty bumen number
7、 basesalary jobsalary jiangjin sj mi ng; /输入要删除的人员姓名coute ndl;for(j=0,i=0;itemp;i+) /判断是否删除flag=i;if(flag=-1)endl;删除信息cout 没有要删除的信息return 0;for(j=0,i=0;itemp,jming;coute ndl;coutflagendl;cout 请输入修改信息 :endl;cout 姓名: ;cout 籍贯: bflag.bornplace;cout 职务: bflag.duty;cout 部门: bflag.bumen;cout 身份证
8、号 : bflag.ID;cout 工号: bflag.number;cout 基本工资 : bflag.basesalary;cout 岗位工资 : alary;cout 奖金: bflag.jiangjin;cout 医疗住房基金 : bflag.yljj;cout 税金: bflag.sj;coutming;message b30;fstream sp(we njia n. txt,ios:i n|ios:out);for(j=0,i=0;itemp;i+)if(strcmp(bi. name,mi ng)=0)cout 姓名 籍贯 职务 部门 身份证号 工号 基本工
9、资 岗位工资 奖金 医 疗住房基金 税金 endl;bi.put();2. 按工号查询:coutnu;message b30;for(i=0;itemp;i+)if(bi.number=nu)cout 姓名 籍贯 职务 部门 身份证号 工号 基本工资 岗位工资 奖金 医 疗住房基金 税金 endl;bi.put();(7)统计函数流程图end1. 按部门统计for(j=0,i=0;itemp;i+)if(strcmp(bi.bumen,a_bumen)=0)sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj; / 实发工资u
10、i=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;j+;int max;int min;min=u0;int bb;for(i=0;imax)bb=Ui;Ui=max;max=bb; / 最高工资for(i=0;itemp;i+)if(Uimin)min=Ui;/ 最低工资for(i=0;itemp;i+)工资均方差 bi.basesalary=abs(sum/(j+0.0)-bi.basesalary);/ sum1=sum1+bi.basesalary;2. 单位统计int U20;for(i=0;i20;i+)Ui=0;for(
11、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)Ui=max;max=bb; / 最高工资for(i=0;itemp;i+)if(Uimin)bb=Ui;Ui=min;min=Ui;/ 最低工资for(i=0;itemp;i+)工资均方差bi.basesalar
12、y=abs(sum/(j+0.0)-bi.basesalary);/sum1=sum1+bi.basesalary;四、调试分析1、开始使用文件保存时出现不能为 read 错误,后通过查阅资料解决了问题;2、删除部分程序开始不能判断是否找到了要删除的人员信息,后来加了flag 标记后可以判断了;3、统计部分程序在求均方差的时候出现算法错误,后来查阅了均方差公式后改正了过来4、使用友员函数可以解决类外作用域问题。五、用户手册1. 本程序的运行环境为 doc 操作系统;2进入界面后,按照提示输入选择;3. 选择 1:执行工资信息录入操作;4. 选择 2:执行工资信息添加操作;5. 选择 3:执行工
13、资信息删除操作;6. 选择 4:执行工资信息修改操作;7. 选择 5:执行工资信息查询操作;8. 选择 6:执行工资信息统计操作;9. 选择 7:退出工资管理系统;10. 输入后按回车键,即可输出信息,按提示输入即可。六、测试数据( 1)选择 1:工资录入选择( 2):添加工资信息(3)选择 3:删除工资信息(4)选择 4:修改工资信息(5)选择 5:查找工资信息(6)选择 6:统计工资信息(7)选择 7:退出七、附录#includeiostream.h#include stdlib.h#include stdio.h#includestring.h#includemessage.hclass
14、 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(char a_name,char a_bornplace,char a_duty,char a_bumen,int a_ID,int a_number,int a_b
15、asesalary,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_jobsalary;jiangjin=a_jiangjin;yljj=a_yljj;sj=a_sj;message &operator=(const message &s)
16、/* 运算符重载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;friend void modify(int x);友元函数friend int del(int x);void put() / 定义 put 函数,以
17、便于其他函数的调用bumen IDcoutname bornplace dutynumber basesalary jobsalaryjiangjinyljjsjendl;析构message();void main()int i,b;int or;cout* 欢迎进入企业工资管理系统 *endl;cout*1.工资信息录入操作*endl;cout*2.工资信息增加操作*endl;cout*3.工资信息删除操作*endl;cout*4.工资信息修改操作*endl;cout*5.工资信息查找操作*endl;cout*6.工资信息统计操作*endl;cout*7.退出 *endl;cout* 请输入
18、你要进行的操作选项 *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;case 5:/ 查询or;if(or=1)namfind(b);else if(or=2)numfind(b);break;case 6:/ 统计int cc;cout |1endl;coutvv
19、 |请输入您要选择的查询方式:|endl;cout | 1.按部门统计I endl;coutvv | 2.按单位统计| vvendl;cout 11or; :cincc;if(cc=1)bmcount(b);else if(cc=2)dwcount();break;case 7:exit(0);cout* 欢迎进入企业工资管理系统 *endl;cout*1.工资信息录入操作 *endl;cout*2.工资信息增加操作 *endl;cout*3.工资信息删除操作 *endl;cout*4.工资信息修改操作 *endl;cout*5.工资信息查找操作 *endl;cout*6.工资信息统计操作 *
20、endl;cout*7.退出 *i;coutendl;void writein(int x) / 工资信息录入职务message a10;char a_name10,a_bornplace10,a_duty10,a_bumen10; /姓名 籍贯身份部门int j,a_ID,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,a_number;/证号 基本工资 岗位工资 奖金 医疗住房基金 税金fstream f(wenjian.txt,ios:out);/ 打开文件if(!f)for(j=0;jx;j+)cout 姓名: a_name;cout 籍
21、贯: a_bornplace;cout 职务: a_duty;cout 部门: a_bumen;cout 身份证号 : a_ID;cout 工号: a_number;cina_basesalary;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.writ
22、e(char *)&aj,sizeof(aj ); / 保存录入的信息f.close(); / 关闭文件ifstream in(wenjian.txt,ios:in);message b10;for(j=0;jx;j+)if(!in.eof()in.read(char *)&bj,sizeof(aj);bj.put();elseexit(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,
23、a_yljj,a_sj,a_number,temp=30;message c;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_jobsalary;cout 奖金: a_jiangjin;cout 医疗住房基金 : a_yljj;cout 税金: a_sj;coutendl;c.xinxi(a_name,a_bo
24、rnplace,a_duty,a_bumen,a_ID,a_number,a_basesalary,a_jobI I salary,a_jiangjin,a_yljj,a_sj);ofstream out(wenjian.txt,ios:app);out.write(char *)&c,sizeof(class message);/保存到文件中out.close();cout 增加成功 !endl;int i,j,temp,flag=-1;char ming10;system(cls);ifstream in(wenjian.txt);message b30,c;for(j=0;j30;j+)
25、if(!in.eof()in.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;cout 文件内保存的信息有 :endl;/ 输出文件内的人员信息工资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);temp = j-1;break;
26、sp.close();message a30;fstream ap(wenjian.txt,ios:in|ios:out);coutming;coutendl;for(j=0,i=0;itemp;i+)if(strcmp(,ming)=0)/.11.标记要删除的信息flag=i;if(flag=-1)endl;删除信息cout 没有要删除的信息return 0;for(j=0,i=0;itemp,jtemp-1; )/if(flag!=i)aj=bi;i+;j+;ap.close();ofstream np(wenjian.txt);for(i=0;itemp-1;i+)写入文件
27、np.write(char *)&ai,sizeof(class message);/np.close();cout 删除成功 !endl;return 1;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
28、 原文件信息是 :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 工号: bflag.number; cout 基本工资 : bflag.basesalar
29、y; cout 岗位工资 : alary; cout 奖金: bflag.jiangjin;cout 医疗住房基金 : bflag.yljj;cout 税金: bflag.sj;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;coutmi
30、ng;coutendl;cout 这个人的信息是 :endl;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);elsetemp = j-1;break;for(j=0,i=0;itemp;i+)if(strcmp(,ming)=0)cout 姓名 籍贯 职务 部门 身份证号 工号 基本工资 岗位工资 奖金 医 疗住房基金 税金 endl;bi.put();sp.close();void num
31、find(int x) /按工号查找操作int nu,i,j,temp;coutnu;coutendl;cout 这个人的信息是 :endl;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);elsetemp = j-1;break;for(i=0;itemp;i+)if(bi.number=nu)cout 姓名 籍贯 职务 部门 身份证号 工号 基本工资 岗位工资 奖金 医 疗住房基金 税金 endl;bi
32、.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); elsetemp = j-1;break;int U20;for(i=0;i20;i+)Ui=0;for(j=0,i=0;itemp;i+)if(strcmp(bi.bumen,a_bumen)=0)sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;Ui=bi.basesalary+bi.j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院制氧室工作制度
- 医院财务可工作制度
- 单间隔离室工作制度
- 卫生区工作制度汇编
- 卫生间清洁工作制度
- 卫生院纠风工作制度
- 危化品司机工作制度
- 日照市2026成人高考高起专英语预测试题(含答案)
- 县疫情防控工作制度
- 县领导包乡工作制度
- 甲状腺科普宣教
- 2026年人教版七年级下册历史知识点总结归纳
- 腰椎病中医护理贴敷应用
- 四川省四川省地质大数据中心2024年公开考核招聘工作人员笔试历年参考题库典型考点附带答案详解
- 4.1版本YJK抗震性能化设计专题-牟善鑫
- 2026年男朋友渣男测试题及答案
- 物业防汛培训课件
- 工程建设标准强制性条文(房屋建筑部分)
- 2026年主题教育活动问题清单及整改措施
- 建筑与小区雨水控制及利用工程技术规范
- SPD项目介绍教学课件
评论
0/150
提交评论