《公司工资管理系统程序设计报告(共29页).doc》由会员分享,可在线阅读,更多相关《公司工资管理系统程序设计报告(共29页).doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上综 合 实 验 报 告 面向对象程序设计目 录一、 课程设计题目2二、主要功能分析 3三、设计思路 3四、编码实现 3五、程序使用注意事项25六、运行结果25七、心得及体会28一、课程设计题目公司工资管理系统设计要求:(1)公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。(2)工资的计算办法:经理:固定月薪为8000;技术员:工作时间小时工资(100元每小时);销售员:销售额4%提成;销售经理:底薪(5000)所辖部门销售额总额0.5%;(3)类的层次结构大体如下:雇员类技术员类经理类销售员类销售经理类
2、(4)输入数据要求每类人员不能少于4人,并按以下格式输出:职工号姓名性别年龄岗位工资排名及某销售经理所辖部门各销售员的业绩及自己的工资表:职工号姓名销售额销售额合计:(5)总体设计,要有一个菜单,用于选择各项功能,其中数据录入:输入各种数据;数据统计:各销售经理的工资计算及最终按工资进行的冒泡排序;数据打印:打印上述表格;数据备份:把相关数据写入文件;退出:退出本系统;注:各项菜单都调用一个函数来实现。二、主要功能分析1、资料录入:通过键盘输入公司各项职员的各项数据;2、资料统计:统计各销售经理下属销售员的销售额及销售额之和;销售经理按工资进行冒泡排序;3、数据打印:按照表格的格式在屏幕上输出
3、各类员工的信息;4、资料备份:把各类员工的数据信息写入文件中保存;5、退出:退出本系统三、设计思路1、整体考虑程序应该实现的功能,有数据输入,数据统计,数据打印,数据备份和退出系统5个。2、首先定义了一个Employee的雇员基类,然后由此派生出Technician,Manager,Seller三个类,并且Manager类和Seller类为虚拟继承。然后定义一个Salesmanager类多重继承于Manager类和Seller类。所有的继承都为共有继承。3、通过switch语句判断进行什么操作。四、编码实现#include#include#include#include#includeusin
4、g namespace std;ofstream outfile;const int B=4;const int T=4;const int SB=2;const int S=4;double wage1(int n);void managerinformation();/经理信息void technicianinformatian();/技术员信息void salesmanagerinformation();/销售经理信息void sellerinformation();/销售员信息void total();/求工资函数void maopao();/冒泡排序进行工资排列void yejibi
5、ao();/打印业绩表格void SBrank();/销售经理工资排序void excelhead();/表头void excelmiddle();/表中void excelend();/表尾void backup_yejibiao(); /void backup_SBrank(); /void backup_technicianinformatian(); /各项信息表格备份void backup_managerinformation(); /void backup_salesmanagerinformation(); /void backup_sellerinformation(); /c
6、lass Employeepublic:int nume() return(num);/职工号string nam()return(name);/名字char showsex() return(sex); /性别int showage() return(age);/年龄protected:int num;string name;char sex;int age;int wage;class Manager:virtual public Employeepublic:Manager() /8000元为经理固定月薪wage=8000;int managerwage() return(wage);v
7、oid set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;class Technician:public Employeepublic:void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;coutworktime;coutendl;int get_wage()/技术员工资算法return (worktime*100); /100元为单位小时工资protected:int workt
8、ime;class Seller:virtual public Employeepublic:int bossnume() return(bossnum);int money() return(salesmoney); void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;coutsalesmoney;coutendl;coutbossnum;coutendl; double get_wage()/销售员工资算法 return (salesmoney*0.04);protected:i
9、nt salesmoney;int bossnum;class Salesmanager:public Manager,public Sellerpublic:Salesmanager()allsale=0; void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;double get_wage()/销售经理工资算法return (5000+allsale*0.005); /5000元为销售经理底薪protected:int allsale;Manager bossB;Technicia
10、n techniT;Seller salesmanS;Salesmanager salesbossSB;int salesbosstotaleSB=0;Salesmanager exchangeSB;int exchange;int b=0,t=0,sb=0,s=0;int Inputboss()for(int i=0;iB;i+)bossi.set_in(); coutendl;return 0;/经理数据处理函数int Inputtechni()for(int j=0;jT;j+)technij.set_in(); coutendl;return 0;/技术员数据处理函数int Input
11、salesman()for(int n=0;nS;n+)salesmann.set_in(); coutendl;return 0;/销售员数据处理函数int Inputsalesboss()for(int m=0;mSB;m+)salesbossm.set_in();return 0;/销售经理数据处理函数double wage1(int n)return(5000+n*0.005);/以下为第二步计算工资代码void total() /求总销售额for(int n=0;nS;n+)for(int m=0;mSB;m+)if(salesmann.bossnume()=salesbossm.n
12、ume()salesbosstotalem+=salesmann.money(); break;void maopao() /冒泡法排序for(int n=1;nSB;n+)for(int m=1;msalesbosstotalem)exchangeSB=salesbossm-1;salesbossm-1=salesbossm;salesbossm=exchangeSB;exchange=salesbosstotalem-1;salesbosstotalem-1=exchange;salesbosstotalem=exchange;void yejibiao() /打印表格 for(int n
13、=0;nSB;n+)cout职工号为salesbossn.nume()销售经理salesbossn.nam()下属的销售员业绩为:endl; coutendl; cout职工号 姓名 销售额 endl;for(int j=0;jS;j+)if(salesmanj.bossnume()=salesbossn.nume()coutendl;coutsetw(12)salesmanj.nume()setw(12)salesmanj.nam()setw(14)salesmanj.money()endl; coutendl; cout销售额总计: setw(28)salesbosstotalenendl
14、; coutendl;void SBrank()cout销售经理按工资排序为:-1;n-)excelmiddle();coutsetw(8)salesbossn.nume()setw(8)salesbossn.nam()setw(6)salesbossn.showsex()setw(8)salesbossn.showage()setw(8)销售经理setw(8)wage1(salesbosstotalen)endl;excelend();/以下为职工信息一览表代码void technicianinformatian()excelhead();for(int k=0;kT;k+)excelmid
15、dle();coutsetw(8)technik.nume()setw(8)technik.nam()setw(6)technik.showsex()setw(8)technik.showage()setw(8)技术员setw(8)technik.get_wage()endl; excelend();void managerinformation()excelhead();for(int k=0;kB;k+) excelmiddle();coutsetw(8)bossk.nume()setw(8)bossk.nam()setw(6)bossk.showsex()setw(8)bossk.sho
16、wage()setw(8) 经理 setw(8)bossk.managerwage()-1;k-) excelmiddle();coutsetw(8)salesbossk.nume()setw(8)salesbossk.nam()setw(6)salesbossk.showsex()setw(8)salesbossk.showage()setw(8)销售经理setw(8)wage1(salesbosstotalek)endl;excelend();void sellerinformation()coutendl;cout 职工号 姓名 性别 年龄 岗位 工资 所属部门经理编号endl;for(
17、int k=0;kS;k+)coutendl;coutsetw(8)salesmank.nume()setw(8)salesmank.nam()setw(6)salesmank.showsex()setw(8)salesmank.showage()setw(8)销售员 setw(8)salesmank.get_wage()setw(16)salesmank.bossnume()endl;coutendl;/各步表格的表头,表中和表尾void excelhead()coutendl;cout 职工号 姓名 性别 年龄 岗位 工资 endl;void excelmiddle()coutendl;v
18、oid excelend()coutendl;/资料备份void backup_yejibiao() outfile.open(备份资料.doc,ios:out);for(int n=0;nSB;n+)outfile职工号为salesbossn.nume()销售经理salesbossn.nam()下属的销售员业绩为:endl;outfileendl;outfile职工号 姓名 销售额 endl; for(int j=0;jS;j+)if(salesmanj.bossnume()=salesbossn.nume()outfileendl;outfilesetw(12)salesmanj.nume
19、()setw(12)salesmanj.nam()setw(14)salesmanj.money()endl; outfileendl; outfile销售额总计: setw(28)salesbosstotalenendl; outfileendl;void backup_SBrank()outfile销售经理按工资排序为:endl; outfileendl;outfile 职工号 姓名 性别 年龄 岗位 工资 -1;n-)outfileendl;outfilesetw(8)salesbossn.nume()setw(8)salesbossn.nam()setw(6)salesbossn.sh
20、owsex()setw(8)salesbossn.showage()setw(8)销售经理setw(8)wage1(salesbosstotalen)endl;outfileendl;void backup_technicianinformatian()outfile职工基本情况一览表如下endl;outfile技术员endl;outfileendl;outfile 职工号 姓名 性别 年龄 岗位 工资 endl;for(int k=0;kT;k+)outfileendl;outfilesetw(8)technik.nume()setw(8)technik.nam()setw(6)techni
21、k.showsex()setw(8)technik.showage()setw(8)技术员 setw(8)technik.get_wage()endl;outfileendl;void backup_managerinformation()outfile经理endl;outfileendl;outfile 职工号 姓名 性别 年龄 岗位 工资 endl;for(int k=0;kB;k+)outfileendl;outfilesetw(8)bossk.nume()setw(8)bossk.nam()setw(6)bossk.showsex()setw(8)bossk.showage()setw
22、(8) 经理 setw(8)bossk.managerwage()endl;outfileendl;void backup_salesmanagerinformation()outfile销售经理endl;outfileendl;outfile 职工号 姓名 性别 年龄 岗位 工资 endl;for(int k=0;kSB;k+)outfileendl;outfilesetw(8)salesbossk.nume()setw(8)salesbossk.nam()setw(6)salesbossk.showsex()setw(8)salesbossk.showage()setw(8)销售经理set
23、w(8)wage1(salesbosstotalek)endl; outfileendl;void backup_sellerinformation()outfile销售员endl;outfileendl;outfile 职工号 姓名 性别 年龄 岗位 工资 所属部门经理编号endl;for(int k=0;kS;k+)outfileendl;outfilesetw(8)salesmank.nume()setw(8)salesmank.nam()setw(6)salesmank.showsex()setw(8)salesmank.showage()setw(8)销售员 setw(8)sales
24、mank.get_wage()setw(16)salesmank.bossnume()endl;outfileendl;outfile.close();/资料备份int main ()for(;)/建立选项表cout 小型公司工资管理系统endl;coutendl;cout 请选择您所需要的操作 endl;cout 数据输入:1,并按回车键 endl;cout 资料统计:2,并按回车键 endl;cout 数据打印:3,并按回车键 endl;cout 资料备份:4,并按回车键 endl;cout 退出系统:5,并按回车键 endl;coutendl;coutselect;/根据序号进行选择操作
25、switch(select)case 1:for(;)/输入数据选项中的子选项cout 小型公司工资管理系统endl; coutendl; cout 请选择您所需要的操作 endl; cout 经理数据输入 :1,并按回车键 endl; cout 技术员数据输入 :2,并按回车键 endl; cout 销售员数据输入 :3,并按回车键 endl; cout 销售经理数据输入:4,并按回车键 endl; cout 返回上一级 :5,并按回车键 endl; coutendl; coutchoice;switch(choice)case 1:Inputboss();b+;break;case 2:I
26、nputtechni();t+; break;case 3:Inputsalesman();s+;break;case 4:Inputsalesboss();sb+;break;case 5:break;default:cout输入有误,请重新输入.endl;if(choice=5) break;break;case 2:if(s=0) cout尚未输入销售员数据.endl;if(sb=0) cout尚未输入销售经理数据.endl;if(s=0|sb=0) break; total();maopao();yejibiao();SBrank(); break;case 3:cout请等待.end
27、l;if(t!=0|b!=0|sb!=0|s!=0)cout职工基本情况一览表如下endl;if(t!=0)cout技术员endl; technicianinformatian(); coutendl;if(b!=0)cout经理endl; managerinformation(); coutendl;if(sb!=0)cout销售经理endl; salesmanagerinformation(); coutendl;if(s!=0)cout销售员endl; sellerinformation(); coutendl; if(t=0&b=0&sb=0&s=0)cout尚未录入任何人员资料.endl;elseif(t=0)cout尚未录入技术员数据.endl; if(b=0)cout尚未录入经理数据.endl; if(sb=0)cout尚未录入销售经理数据.endl; if(s=0)