C企业工资管理系统课程设计.docx
- 文档编号:4379674
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:33
- 大小:151.05KB
C企业工资管理系统课程设计.docx
《C企业工资管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《C企业工资管理系统课程设计.docx(33页珍藏版)》请在冰豆网上搜索。
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];//姓名部门
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_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< } ~message()//**************************析构 {} }; (2)主函数流程图 (3)录入、添加函数流程图 (4)删除函数流程图 messagea[30]; fstreamap("wenjian.txt",ios: : in||ios: : out);//文件打开操作 cout<<"请输入要删除人员信息的名字: "; cin>>ming;//输入要删除的人员姓名 cout< 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< cout< 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<<"工号: "< cin>>b[flag].number; cout<<"基本工资: "< cin>>b[flag].basesalary; cout<<"岗位工资: "< cin>>b[flag].jobsalary; cout<<"奖金: "< cin>>b[flag].jiangjin; cout<<"医疗住房基金: "< cin>>b[flag].yljj; cout<<"税金: "< cin>>b[flag].sj; cout< (6)查找函数流程图 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 { if(strcmp(b[i].bumen,a_bumen)==0) { 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[],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()//定义put函数,以便于其他函数的调用 { cout< } ~message()//**************************析构 {} }; voidmain() { inti,b; intor; cout<<"********欢迎进入企业工资管理系统********"< cout<<"***********1.工资信息录入操作***********"< cout<<"***********2.工资信息增加操作***********"< cout<<"***********3.工资信息删除操作***********"< cout<<"***********4.工资信息修改操作***********"< cout<<"***********5.工资信息查找操作***********"< cout<<"***********6.工资信息统计操作***********"< cout<<"***********7.退出***********************"< cout<<"*********请输入你要进行的操作选项*******"< cin>>i; cout< while(i! =10) { switch(i) { default: cout<<"你输入的有误,请重新输入。 "< case1: cout<<"输入企业人员的人数: ";//输入信息 cin>>b; cout< writein(b); break; case2: //添加 add(b); b++; break; case3: //删除 del(b); b--; break; case4: //修改 modify(b); break; case5: //查询 cout<<"┌─────────────┐"< cout<<"│请输入您要选择的查询方式: │"< cout<<"│1.按姓名查找操作│"< cout<<"│2.按工号查找操作│"< cout<<"└─────────────┘"< cin>>or; if(or==1) namfind(b); elseif(or==2) numfind(b); break; case6: //统计 intcc; cout<<"┌─────────────┐"< cout<<"│请输入您要选择的查询方式: │"< cout<<"│1.按部门统计│"< cout<<"│2.按单位统计│"< cout<<"└─────────────┘"< //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) { cout<<"Cannotopenfile\n."; } for(j=0;j { cout<<"姓名: "< cin>>a_name; cout<<"籍贯: "< cin>>a_bornplace; cout<<"职务: "< cin>>a_duty; cout<<"部门: "< cin>>a_bumen; cout<<"身份证号: "< cin>>a_ID; cout<<"工号: "< cin>>a_number
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 企业 工资管理 系统 课程设计