公司工资管理系统程序设计报告
综合实验报告面向对象程序设计
目录
一、课程设计题目 (2)
二、主要功能分析 (3)
三、设计思路 (3)
四、编码实现 (3)
五、程序使用注意事项 (25)
六、运行结果 (25)
七、心得及体会 (28)
一、课程设计题目
公司工资管理系统
设计要求:
(1)公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。
(2)工资的计算办法:
经理:固定月薪为8000;
技术员:工作时间*小时工资(100元每小时);
销售员:销售额*4%提成;
销售经理:底薪(5000)+所辖部门销售额总额*0.5%;
(3)类的层次结构大体如下:
(4)输入数据要求每类人员不能少于4人,并按以下格式输出:
及某销售经理所辖部门各销售员的业绩及自己的工资表:
(5)总体设计,要有一个菜单,用于选择各项功能,其中
数据录入:输入各种数据;
数据统计:各销售经理的工资计算及最终按工资进行的冒泡排序;
数据打印:打印上述表格;
数据备份:把相关数据写入文件;
退出:退出本系统;
注:各项菜单都调用一个函数来实现。
二、主要功能分析
1、资料录入:通过键盘输入公司各项职员的各项数据;
2、资料统计:统计各销售经理下属销售员的销售额及销售额之和;销售经理按工资进行冒泡排序;
3、数据打印:按照表格的格式在屏幕上输出各类员工的信息;
4、资料备份:把各类员工的数据信息写入文件中保存;
5、退出:退出本系统
三、设计思路
1、整体考虑程序应该实现的功能,有数据输入,数据统计,数据打印,数据备份和退出系统5个。
2、首先定义了一个Employee的雇员基类,然后由此派生出Technician,Manager,Seller三个类,并且Manager类和Seller类为虚拟继承。然后定义一个Salesmanager类多重继承于Manager类和Seller类。所有的继承都为共有继承。
3、通过switch语句判断进行什么操作。
四、编码实现
#include
#include
#include
#include
#include
using 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 yejibiao();//打印业绩表格
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(); //
class Employee
{
public:
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 Employee
{
public:
Manager() //8000元为经理固定
月薪
{wage=8000;}
int managerwage() {return(wage);}
void set_in()
{
cout<<"经理的编号:";
cin>>num;
cout< cout<<"其姓名:"; cin>>name; cout< cout<<"性别(m/w):"; cin>>sex; cout< cout<<"年龄:"; cin>>age; cout< } }; class Technician:public Employee { public: void set_in() { cout<<"技术员的编号:"; cin>>num; cout< cout<<"其姓名:"; cin>>name; cout< cout<<"性别(m/w):"; cin>>sex; cout< cout<<"年龄:"; cin>>age; cout< cout<<"工作时间:"; cin>>worktime; cout< } int get_wage()//技术员工资算法 {return (worktime*100);} //100元为单位小时工资protected: int worktime; }; class Seller:virtual public Employee { public: int bossnume() {return(bossnum);} int money() {return(salesmoney);} void set_in() { cout<<"销售员的编号:"; cin>>num; cout< cout<<"其姓名:"; cin>>name; cout< cout<<"性别(m/w):"; cin>>sex; cout< cout<<"年龄:"; cin>>age; cout< cout<<"销售额:"; cin>>salesmoney; cout< cout<<"所属销售经理的编号:"; cin>>bossnum; cout< } double get_wage()//销售员工资算法 {return (salesmoney*0.04);} protected: int salesmoney; int bossnum; }; class Salesmanager:public Manager,public Seller { public: Salesmanager() {allsale=0;} void set_in() { cout<<"销售经理的编号:"; cin>>num; cout< cout<<"其姓名:"; cin>>name; cout< cout<<"性别(m/w):"; cin>>sex; cout< cout<<"年龄:"; cin>>age; cout< } double get_wage()//销售经理工资算法 {return (5000+allsale*0.005);} //5000元为销售经理 底薪 protected: int allsale; }; Manager boss[B]; Technician techni[T]; Seller salesman[S]; Salesmanager salesboss[SB]; int salesbosstotale[SB]={0}; Salesmanager exchangeSB; int exchange; int b=0,t=0,sb=0,s=0; int Inputboss() { for(int i=0;i boss[i].set_in(); cout<<"┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅"< return 0; }//经理数据处理函数 int Inputtechni() { for(int j=0;j techni[j].set_in(); cout<<"┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅"< return 0; }//技术员数据处理函数 int Inputsalesman() { for(int n=0;n salesman[n].set_in(); cout<<"┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅"< return 0; }//销售员数据处理函数 int Inputsalesboss() { for(int m=0;m salesboss[m].set_in(); return 0; }//销售经理数据处理函数 double wage1(int n) {return(5000+n*0.005);} //以下为第二步计算工资代码 void total() //求总销售额 { for(int n=0;n for(int m=0;m if(salesman[n].bossnume()==salesboss[m].nume()) {salesbosstotale[m]+=salesman[n].money(); break; } } void maopao() //冒泡法排序 { for(int n=1;n for(int m=1;m<=SB-n;m++) if(salesbosstotale[m-1]>salesbosstotale[m]) { exchangeSB=salesboss[m-1]; salesboss[m-1]=salesboss[m]; salesboss[m]=exchangeSB; exchange=salesbosstotale[m-1]; salesbosstotale[m-1]=exchange; salesbosstotale[m]=exchange; } } void yejibiao() //打印表格 { for(int n=0;n { cout<<"职工号为"< "< cout<<"┏━━━━━━┳━━━━━━┳━━━━━━━┓"< cout<<"┃职工号┃姓名┃销售额┃"< for(int j=0;j if(salesman[j].bossnume()==salesboss[n].nume()) { cout<<"┣━━━━━━╋━━━━━━╋━━━━━━━┫"< cout<<"┃"< ┃"< "< } cout<<"┣━━━━━━╋━━━━━━┻━━━━━━━┫"< cout<<"┃销售额总计: ┃"< cout<<"┗━━━━━━┻━━━━━━━━━━━━━━┛"< } } void SBrank() { cout<<"销售经理按工资排序为:"< excelhead(); for(int n=SB-1;n>-1;n--) { excelmiddle(); cout<<"┃"< "< "< "<<"┃"< } excelend(); } //以下为职工信息一览表代码 void technicianinformatian() { excelhead(); for(int k=0;k { excelmiddle(); cout<<"┃"< "< "< "< } excelend(); } void managerinformation() { excelhead(); for(int k=0;k { excelmiddle(); cout<<"┃"< "< ┃"< "< } excelend(); } void salesmanagerinformation() { excelhead(); for(int k=SB-1;k>-1;k--) { excelmiddle(); cout<<"┃"< "< "< "<<"┃"< } excelend(); } void sellerinformation() { cout<<"┏━━━━┳━━━━┳━━━┳━━━━┳━━━━┳━━ ━━┳━━━━━━━━┓"< cout<<"┃职工号┃姓名┃性别┃年龄┃岗位┃工 资┃所属部门经理编号┃"< for(int k=0;k { cout<<"┣━━━━╋━━━━╋━━━╋━━━━╋━━━━╋━━━━╋━━━━━━━━┫"< cout<<"┃"< "< "< ┃"< "< } cout<<"┗━━━━┻━━━━┻━━━┻━━━━┻━━━━┻━━ ━━┻━━━━━━━━┛"< } //各步表格的表头,表中和表尾 void excelhead() { cout<<"┏━━━━┳━━━━┳━━━┳━━━━┳━━━━┳━━ ━━┓"< cout<<"┃职工号┃姓名┃性别┃年龄┃岗位┃工 资┃"< } void excelmiddle() { cout<<"┣━━━━╋━━━━╋━━━╋━━━━╋━━━━╋━━ ━━┫"< } void excelend() { cout<<"┗━━━━┻━━━━┻━━━┻━━━━┻━━━━┻━━ ━━┛"< } //资料备份 void backup_yejibiao() { outfile.open("备份资料.doc",ios::out); for(int n=0;n { outfile<<"职工号为"< outfile<<"┏━━━━━━┳━━━━━━┳━━━━━━━┓"< outfile<<"┃职工号┃姓名┃销售额┃"< for(int j=0;j if(salesman[j].bossnume()==salesboss[n].nume()) { outfile<<"┣━━━━━━╋━━━━━━╋━━━━━━━┫"< outfile<<"┃"< "< } outfile<<"┣━━━━━━╋━━━━━━┻━━━━━━━┫"< outfile<<"┃销售额总计: ┃ "< outfile<<"┗━━━━━━┻━━━━━━━━━━━━━━┛ "< } } void backup_SBrank() { outfile<<"销售经理按工资排序为:"< outfile<<"┏━━━━┳━━━━┳━━━┳━━━━┳━━━━┳━━━━┓"< outfile<<"┃职工号┃姓名┃性别┃年龄┃岗位┃ 工资┃"< for(int n=SB-1;n>-1;n--) { outfile<<"┣━━━━╋━━━━╋━━━╋━━━━╋━━━━╋━━━━┫"< outfile<<"┃"< "< "< "<<"┃"< } outfile<<"┗━━━━┻━━━━┻━━━┻━━━━┻━━━━┻━ ━━━┛"< } void backup_technicianinformatian() { outfile<<"职工基本情况一览表如下"< outfile<<"技术员"< outfile<<"┏━━━━┳━━━━┳━━━┳━━━━┳━━━━┳━ ━━━┓"< outfile<<"┃职工号┃姓名┃性别┃年龄┃岗位┃ 工资┃"< for(int k=0;k { outfile<<"┣━━━━╋━━━━╋━━━╋━━━━╋━━━━╋━━━━┫"< outfile<<"┃"< "< "< "< } outfile<<"┗━━━━┻━━━━┻━━━┻━━━━┻━━━━┻━ ━━━┛"< } void backup_managerinformation() { outfile<<"经理"< outfile<<"┏━━━━┳━━━━┳━━━┳━━━━┳━━━━┳━ ━━━┓"< outfile<<"┃职工号┃姓名┃性别┃年龄┃岗位┃ 工资┃"< for(int k=0;k { outfile<<"┣━━━━╋━━━━╋━━━╋━━━━╋━━━━╋━━━━┫"< outfile<<"┃"< ┃"< "< } outfile<<"┗━━━━┻━━━━┻━━━┻━━━━┻━━━━┻━ ━━━┛"< } void backup_salesmanagerinformation() { outfile<<"销售经理"< outfile<<"┏━━━━┳━━━━┳━━━┳━━━━┳━━━━┳━ ━━━┓"< outfile<<"┃职工号┃姓名┃性别┃年龄┃岗位┃ 工资┃"< for(int k=0;k { outfile<<"┣━━━━╋━━━━╋━━━╋━━━━╋━━━━╋━━━━┫"< outfile<<"┃"< "< "< "<<"┃"< } outfile<<"┗━━━━┻━━━━┻━━━┻━━━━┻━━━━┻━━━━┛"< } void backup_sellerinformation() { outfile<<"销售员"< outfile<<"┏━━━━┳━━━━┳━━━┳━━━━┳━━━━┳━ ━━━┳━━━━━━━━┓"< outfile<<"┃职工号┃姓名┃性别┃年龄┃岗位┃ 工资┃所属部门经理编号┃"< for(int k=0;k { outfile<<"┣━━━━╋━━━━╋━━━╋━━━━╋━━━━ ╋━━━━╋━━━━━━━━┫"< outfile<<"┃"< "< "< ┃"< "<