C企业工资管理系统课程设计.docx
- 文档编号:23244010
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:37
- 大小:248.50KB
C企业工资管理系统课程设计.docx
《C企业工资管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《C企业工资管理系统课程设计.docx(37页珍藏版)》请在冰豆网上搜索。
C企业工资管理系统课程设计
一、需求分析1
二、概要设计3
三、详细设计12
四、调试分析12
五、用户手册13
六、测试数据17
七、附录31
一、需求分析
(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);//友员函数
}
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];//姓名部门
intbasesalary;//基本工资
intjobsalary;//岗位工资
intyljj;//医疗基金
intsj;//税金
intjiangjin;//奖金
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_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()
{
"< cout< "< {} }; 2)主函数流程图 '...开始... intb,or,i 输入i值 1r 1r 1F 1r 1 f 1r i=1 录 入 i=2 添加 i=3 删除 i=4 修改 i =5 i=6 统 计 i=7 退出 L 丄 V 1 1 f 工 J (3)录入、添加函数流程图 (4)删除函数流程图 messagea[30]; fstreamap("wenjian.txt",ios: : in||ios: : out);//文件打开操作 COUt«"请输入要删除人员信息的名字: "; cin>>ming;//输入要删除的人员姓名 cout«endl; for(j=0,i=0;i { if(strcmp(b[i].name,ming)==0)//标记要删除的信息 { flag=i; } if(flag==-1) "< //删除信息 cout<<"没有要删除的信息return0; } for(j=0,i=0;i { if(flag! =i) { a[j]=b[i];//删除信息 i++; j++; } else i++; } (5)修改函数流程图 COUt«"输入要修改人的名字: "; cin»ming; cout«endl; coutvvflagvvendl; cout«"请输入修改信息: "< cout«"姓名: "< cin>>b[flag].name; cout«"籍贯: "< cin>>b[flag].bornplace; cout«"职务: "< cin>>b[flag].duty; cout«"部门: "< cin>>b[flag].bumen; cout«"身份证号: "< cin>>b[flag].ID; cout<<"工号: "< cout<<"基本工资: "< cout<<"岗位工资: "< cin>>b[flag].jobsalary; cout<<"奖金: "< cin>>b[flag].jiangjin; cout<<"医疗住房基金: "< cout<<"税金: "< cout< (6)查找函数流程图 int 输入要查询的名//输入要查询的工丿7 1: 按姓名查询 COUt«"输入要查询的姓名: "; cin»ming; messageb[30]; fstreamsp("wenjian.txt",ios: : in||ios: : out); for(j=0,i=0;i { if(strcmp(b[i].name,ming)==0) { Cout«"姓名籍贯职务部门身份证号工号基本工资岗位工资奖金医疗 住房基金税金"< b[i].put(); } 2.按工号查询: cout<<"输入要查询的工号: "; cin>>nu; messageb[30]; for(i=0;i { if(b[i].number==nu) { cout<<"姓名籍贯职务部门身份证号工号基本工资岗位工资奖金医疗住房基金税金"< b[i].put(); } } (7)统计函数流程图 幵始 1.按部门统计 for(j=0,i=0;i //实 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;i { if(U[i]>max) { bb=U[i]; U[i]=max; max=bb;//最高工资 } } for(i=0;i { if(U[i] bb=U[i]; U[i]=min; min=U[i];//最低工资 } } for(i=0;i 工资均方差 { b[i].basesalary=abs(sum/(j+0.0)-b[i].basesalary);//sum1=sum1+b[i].basesalary; } 2.单位统计 intU[20]; for(i=0;i<20;i++) { U[i]=0; } for(j=0,i=0;i { //实 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;i { if(U[i]>max) { bb=U[i]; U[i]=max; max=bb;//最高工资 } } for(i=0;i { if(U[i] { bb=U[i]; U[i]=min; min=U[i];//最低工资 } } for(i=0;i //工资均方差 b[i].basesalary=abs(sum/(j+0.0)-b[i].basesalary); sum1=sum1+b[i].basesalary; 四、调试分析 1、开始使用文件保存时出现不能为read错误,后通过查阅资料解决了问题; 2、删除部分程序开始不能判断是否找到了要删除的人员信息,后来加了flag标记后可以判断了; 3、统计部分程序在求均方差的时候出现算法错误,后来查阅了均方差公式后改正了过来 4、使用友员函数可以解决类外作用域问题。 五、用户手册 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: 退出 七、附录 #include"iostream.h" #include"stdlib.h" #include"stdio.h" #include"string.h" #include"message.h" 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[],int a_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_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()//定义put函数,以便于其他函数的调用 cout< "< ~message() //**************************析构 {} }; voidmain() { inti,b; intor; cout<<"********欢迎进入企业工资管理系统********"< cout<<"***********1. 工资信息录入操作***********"< cout<<"***********2. 工资信息增加操作***********"< cout<<"***********3. 工资信息删除操作***********"< cout<<"***********4. 工资信息修改操作***********"< cout<<"***********5. 工资信息查找操作***********"< cout<<"***********6. 工资信息统计操作***********"< cout<<"***********7. 退出***********************"< cout<<"*********请输入你要进行的操作选项*******"< cout< while(i! =10) switch(i) { default: cout<<"你输入的有误,请重新输入。 "< cout<<"输入企业人员的人数: ";//输入信息cin>>b; cout< writein(b); break; case2: //添加 add(b); b++; break; case3: //删除 del(b); b--; break; case4: //修改 modify(b); break; case5: //查询 cout«"|1"< coutvv"|请输入您要选择的查询方式: I"< COUt«"|1.按姓名查找操作 "< cout<<"I2.按工号查找操作|"< cout«"11"< cin>>or; if(or==1) namfind(b); elseif(or==2) numfind(b); break; case6: //统计 intcc; COUt«"| "< cout<<"I请输入您要选择的查询方式: I"< cout<<"I1.按部门统计 I"< cout<<"I2.按单位统计 I"< cout«"11"< //cin>>or;: cin>>cc; if(cc==1) bmcount(b); elseif(cc==2) dwcount(); break; case7: exit(0); } cout<<"********欢迎进入企业工资管理系统********"< cout<<"***********1. 工资信息录入操作 ***********"< cout<<"***********2. 工资信息增加操作 ***********"< cout<<"***********3. 工资信息删除操作 ***********"< cout<<"***********4. 工资信息修改操作 ***********"< cout<<"***********5. 工资信息查找操作 ***********"< cout<<"***********6. 工资信息统计操作 ***********"< cout<<"***********7. 退出***********************"< cout<<"*********请输入你要进行的操作选项*******"< cin>>i; cout< } } voidwritein(intx)//工资信息录入 { messagea[10]; 职务部 //身份证 chara_name[10],a_bornplace[10],a_duty[10],a_bumen[10];//姓名籍贯门 intj,a_ID,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,a_number; 号基本工资岗位工资奖金医疗住房基金税金 fstreamf("wenjian.txt",ios: : out);//打开文件 if(! f) C①lunqleAAUo=pu①vyr一®vyno。 mnpleAAUo=pu①vy-<臣-vv^oo(Doe-du」oqleAAUo=pu①vy-眼wvyno。 (DlueuleAAUo=pu①vy-吨戟-vv^oo (++XVOHD」。 」宀 =rLACD-匸uedoouueQ-vvlnoo 三_AleAAUo jpuevy-州«咚也fcw-vv^oo c: 55uq「roAAC-0=pu①vy••劭-vv^oo-AJe-esqo「roAAC-0=pu①vy--vv^oo-AJe-es①seq—eAAUo=pu①vy-^HMffl-vv^ooueqlunuleAAUo=pu①vy--vv^oo Q_leAAUo=pu①vy-恥目仝啄-vv^oo cout<<"税金: "< cin>>a_sj; cout< a[j].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*)&a[j],sizeof(a[j]));//保存录入的信息 } f.close();//关闭文件 cout< ifstreamin("wenjian.txt",ios: : in); messageb[10];for(j=0;j if(! in.eof()) { in.read((char*)&b[j],sizeof(a[j]));b[j].put(); } else exit(0); } in.close(); voidadd(intx)//工资信息添加 { chara_name[10],a_bornplace[10],a_duty[10],a_bumen[1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 企业 工资管理 系统 课程设计