您的位置:首页 > 其它

实现一个工资管理系统

2014-06-21 16:19 465 查看
一、内容
1.题目《小型公司工资管理系统》设计
2.设计说明与要求
(1) 公司主要有5类人员:文秘、技术经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、年龄、性别等信息。
人的职工号、姓名、月工资、年龄、性别等信息。
(2) 工资的计算方法
A、技术经理:固定月薪为5000元,业绩分三个等级,每级1000元奖金。
B、技术员:工作时间*小时工资(40/小时);
C、销售员:销售额*5%提成;
D、销售经理:底薪(5000元)+所辖部门销售总额*0.3%
E、文秘:固定工资4000元,奖金视当月的工作情况而定。
(3) 输入员工数据,要求每类人员不能少于4人,员工信息输出格式参考运行效果。
二、存档
(1) 实现功能
① 数据录入:输入各种数据;
② 数据统计:统计各销售经理下属销售员的销售额之和;销售经理按工
资进行的冒泡排序;
③ 数据打印:打印各类员工的数据信息;
④ 数据备份:把各类员工的数据信息写入文件中保存;
⑤ 退出:推出本系统;
(2) 菜单说明
⑴数据录入指通过键盘输入各类员工的各项数据;
⑵数据统计指统计各销售经理下身书销售员的销售额及销售额之和;销售按工资进行冒泡排序;
⑶数据打印指按照表格的格式在屏幕上输出各员工的信息;
⑷数据备份指将所有员工的信息保存到文件;
⑸退出:结束程序的运行。

三、设计思路
从运行效果可以看出主函数是一个选择结构,可以确定主函数的内容;再根据类的层次结构合理的定义类及其对象,在类中声明成员函数来完成对保护数据成员的调用,输出数据。
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;

const A=2;
const B=4;
int a,b,c,d,s;

/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/
class employee //员工(基类)
{
protected:
string name;
int num;
int age;
char sex;
double pay;
public:
employee()
{
name="\0";
num=0;
age=0;
sex='\0';
pay=0;
}

void set()
{
cout<<"其姓名:"; cin>>name;
cout<<"性别(M/W):"; cin>>sex;
cout<<"年龄:";
cin>>age;
}

int get1()
{
return num;
}

string get2()
{
return name;
}

char get3()
{
return sex;
}

int get4()
{
return age;
}

double payment()
{
return pay;
}
};

/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/
class technician:public employee//技术员
{
protected:
int workhour;
public:
void set()
{
cout<<"技术员的编号:"; cin>>num;
employee::set();
cout<<"工作时间:"; cin>>workhour;
cout<<endl;
pay=40*workhour;
}
};technician te[A];
/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/

class manager:public employee //技术经理
{
public:
void set()
{
cout<<"技术经理的编号:";
cin>>num;
employee::set();
cout<<endl;
}

int get()
{
return 5000;
}
};manager mana[A];
/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/

class secretary:public employee //文秘
{public:
void set()
{
cout<<"文秘的编号:";
cin>>num;
employee::set();
cout<<endl;
}

int get()
{
return 4000;
}
};secretary secr[A];
/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/
class seller:public employee//销售员
{
protected:
double sell;
int managernum;
public:
void set()
{
cout<<"销售员的编号:"; cin>>num;
employee::set();
cout<<"销售额:";
cin>>sell;
cout<<"所属销售经理的编号:";
cin>>managernum;
pay=sell*0.05;
cout<<endl;
}
int get5()
{
return managernum;
}
double get6()
{
return sell;
}
void tongji()
{
cout<<"│"<<setw(12)<<num
<<"│"<<setw(12)<<name
<<"│"<<setw(12)<<sell
<<"│"<<endl;
}
};seller se[B];

/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/
class sellmanager:public employee //销售经理
{
protected:
int sumsale;
public:
void set()
{
cout<<"销售经理的编号:"; cin>>num; employee::set();
cout<<endl;
for (int i=0;i<B;i++)
if (num==se[i].get5())
{ sumsale=sumsale+se[i].get6();
}
pay=5000+sumsale*0.003;
}
void tongji()
{
cout<<"职工号为 "<<num<<" 销售经理 "<<name<<" 下属销售员的业绩为:"<<endl;
cout<<"┌──────┬──────┬──────┐"<<endl;
cout<<"│"<<setw(12)<<"职工号"
<<"│"<<setw(12)<<"姓名"
<<"│"<<setw(12)<<"销售额 "
<<"│"<<endl;
}
};sellmanager semana[A];

/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
/*&&&&&&&&&&&&&&&&&&&&&&&&&&以下为函数&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
void line()
{
}//画线

/****************************************************/
/*************************输入***********************/
/****************************************************/
void shuru1()
{
for(a=0;a<A;a++)
te[a].set();
line();
cout<<"-------------------------------------"<<endl<<endl;
}
void shuru2() {
for(a=0;a<A;a++) mana[a].set(); line();
}

void shuru3() {
for(b=0;b<B;b++) se[b].set(); line();
}

void shuru4() {
for(a=0;a<A;a++) semana[a].set(); line();
}
void shuru5() {
for(a=0;a<A;a++) secr[a].set(); line();
}

/****************************************************/
/*************************目录***********************/
/****************************************************/
void mulu()
{
cout<<" ★★小型公司工资管理系统★★ "<<endl;
cout<<"┌───────────────┐"<<endl;
cout<<"│ 请选择您所需的操作           │"<<endl;
cout<<"│ 数据输入:	  1,并按回车键 │"<<endl;
cout<<"│ 数据统计:	  2,并按回车键 │"<<endl;
cout<<"│ 数据打印:	  3,并按回车键 │"<<endl;
cout<<"│ 数据备份:	  4,并按回车键 │"<<endl;
cout<<"│ 退出系统:	  5,并按回车键 │"<<endl;
cout<<"└───────────────┘"<<endl;
cin>>c;
cout<<endl;
}
void cijimulu()
{

cout<<" ★★小型公司工资管理系统★★ "<<endl;
cout<<"请选择一个操作:";
cout<<endl;
cout<<"┌────────────────┐"<<endl;
cout<<"│ 请选择您所需的操作             │"<<endl;
cout<<"│技术员数据输入:  1,并按回车键 │"<<endl;
cout<<"│技术经理数据输入:2,并按回车键 │"<<endl;
cout<<"│销售员数据输入:  3,并按回车键 │"<<endl;
cout<<"│销售经理数据输入:4,并按回车键 │"<<endl;
cout<<"│文秘数据输入:    5,并按回车键 │"<<endl;
cout<<"│返回上一级:      6,并按回车键 │"<<endl;
cout<<"└────────────────┘"<<endl;
cout<<"请选择一个操作:";
cin>>d;
cout<<endl;
}

/****************************************************/
/*************************标题***********************/
/****************************************************/
void biaotou()
{
cout<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
cout<<"│"<<setw(12)<<"职工号"
<<"│"<<setw(12)<<"姓名"
<<"│"<<setw(12)<<"性别"
<<"│"<<setw(12)<<"年龄"
<<"│"<<setw(12)<<"工资"
<<"│"<<endl;
}
void biaozhong()
{
cout<<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
}
void biaowei()
{
cout<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;
}

/****************************************************/
/*************************统计***********************/
/****************************************************/
void tongji()
{
int a,b,s;
for(a=0;a<A;a++)
{
s=0;
semana[a].tongji();
for(b=0;b<B;b++)
{
if(se[b].get5()==semana[a].get1())
{
cout<<"├──────┼──────┼──────┤"<<endl;
se[b].tongji();
s=s+se[b].get6();
}
}
cout<<"├──────┼──────┴──────┤"<<endl;
cout<<"│"<<setw(8)<<"销售额总计: "
<<"│ "<<setw(21)<<s<<" "<<endl;
cout<<"└──────┴─────────────┘"<<endl;
}
cout<<"销售经理按工资排序为:"<<endl;
biaotou();
for(int i=0;i<A-1;i++)
{
for(int j=i+1;j<A;j++)
if(semana[i].payment()<semana[j].payment())
{
sellmanager g;
g=semana[i];
semana[i]=semana[j];
semana[j]=g;
}
}
for (int k=0;k<A;k++)
{
biaozhong();
cout<<"│"<<setw(12)<<semana[k].get1()
<<"│"<<setw(12)<<semana[k].get3()
<<"│"<<setw(12)<<semana[k].get2()
<<"│"<<setw(12)<<semana[k].get4()
<<"│"<<setw(12)<<semana[k].payment()
<<"│"<<endl;
}
biaowei();
}

/****************************************************/
/*************************显示***********************/
/****************************************************/
void daying()
{
int k;
cout<<"请等待......."<<endl<<endl;
cout<<"职工基本情况一览表如下"<<endl<<endl;
cout<<"技术员"<<endl<<endl;
biaotou();

for(k=0;k<A;k++)
{
biaozhong();
cout<<"│"<<setw(12)<<te[k].get1()
<<"│"<<setw(12)<<te[k].get2()
<<"│"<<setw(12)<<te[k].get3()
<<"│"<<setw(12)<<te[k].get4()
<<"│"<<setw(12)<<te[k].payment()
<<"│"<<endl;
}
biaowei();
line();
cout<<"技术经理"<<endl<<endl;
biaotou();
for(k=0;k<A;k++)
{
biaozhong();
cout<<"│"<<setw(12)<<mana[k].get1()
<<"│"<<setw(12)<<mana[k].get2()
<<"│"<<setw(12)<<mana[k].get3()
<<"│"<<setw(12)<<mana[k].get4()
<<"│"<<setw(12)<<mana[k].get()
<<"│"<<endl;
}
biaowei();
line();
cout<<"销售经理"<<endl<<endl;
biaotou();
for(k=0;k<A;k++)
{
biaozhong();
cout<<"│"<<setw(12)<<semana[k].get1()
<<"│"<<setw(12)<<semana[k].get3()
<<"│"<<setw(12)<<semana[k].get2()
<<"│"<<setw(12)<<semana[k].get4()
<<"│"<<setw(12)<<semana[k].payment()
<<"│"<<endl;
}
biaowei();
line();
cout<<"销售员"<<endl<<endl;
cout<<"┌────┬────┬────┬────┬────┬──────────┐"<<endl;
cout<<"│"<<setw(8)<<"职工号"
<<"│"<<setw(8)<<"姓名"
<<"│"<<setw(8)<<"性别"
<<"│"<<setw(8)<<"年龄"
<<"│"<<setw(8)<<"工资"
<<"│"<<setw(20)<<"所属部门经理"
<<"│"<<endl;

for(k=0;k<B;k++)
{
cout<<"├────┼────┼────┼────┼────┼──────────┤"<<endl;
cout<<"│"<<setw(8)<<se[k].get1()
<<"│"<<setw(8)<<se[k].get2()
<<"│"<<setw(8)<<se[k].get3()
<<"│"<<setw(8)<<se[k].get4()
<<"│"<<setw(8)<<se[k].payment()
<<"│"<<setw(20)<<se[k].get5()
<<"│"<<endl;
}
cout<<"└────┴────┴────┴────┴────┴──────────┘"<<endl<<endl;
cout<<"------------------------------------------------"<<endl<<endl;
cout<<"文秘"<<endl<<endl;
biaotou();
for(k=0;k<A;k++)
{
biaozhong();
cout<<"│"<<setw(12)<<secr[k].get1()
<<"│"<<setw(12)<<secr[k].get2()
<<"│"<<setw(12)<<secr[k].get3()
<<"│"<<setw(12)<<secr[k].get4()
<<"│"<<setw(12)<<secr[k].get()
<<"│"<<endl;
}
biaowei();
line();
}
/****************************************************/
/*************************备份***********************/
/****************************************************/
void beifen()
{
ofstream myfile("qt.txt");
int k;
cout<<"请等待......."<<endl<<endl;
myfile<<"职工基本情况一览表如下"<<endl<<endl; myfile<<"技术员"<<endl<<endl;
myfile<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
myfile<<"│"<<setw(12)<<"职工号"
<<"│"<<setw(12)<<"姓名"
<<"│"<<setw(12)<<"性别"
<<"│"<<setw(12)<<"年龄"
<<"│"<<setw(12)<<"工资"
<<"│"<<endl;

for(k=0;k<A;k++)
{
myfile  <<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
myfile  <<"│"<<setw(12)<<te[k].get1()
<<"│"<<setw(12)<<te[k].get2()
<<"│"<<setw(12)<<te[k].get4()
<<"│"<<setw(12)<<te[k].get3()
<<"│"<<setw(12)<<te[k].payment()
<<"│"<<endl;
}
myfile<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;
myfile<<"技术经理"<<endl<<endl;
myfile<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
myfile<<"│"<<setw(12)<<"职工号"
<<"│"<<setw(12)<<"姓名"
<<"│"<<setw(12)<<"性别"
<<"│"<<setw(12)<<"年龄"
<<"│"<<setw(12)<<"工资"
<<"│"<<endl;
for(k=0;k<A;k++)
{
myfile<<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
myfile<<"│"<<setw(12)<<mana[k].get1()
<<"│"<<setw(12)<<mana[k].get3()
<<"│"<<setw(12)<<mana[k].get2()
<<"│"<<setw(12)<<mana[k].get4()
<<"│"<<setw(12)<<mana[k].get()
<<"│"<<endl;
}
myfile<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;
myfile<<"销售经理"<<endl<<endl;
myfile<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
myfile<<"│"<<setw(12)<<"职工号"
<<"│"<<setw(12)<<"姓名"
<<"│"<<setw(12)<<"性别"
<<"│"<<setw(12)<<"年龄"
<<"│"<<setw(12)<<"工资"
<<"│"<<endl;
for(k=0;k<A;k++)
{
myfile<<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
myfile<<"│"<<setw(12)<<semana[k].get1()
<<"│"<<setw(12)<<semana[k].get3()
<<"│"<<setw(12)<<semana[k].get2()
<<"│"<<setw(12)<<semana[k].get4()
<<"│"<<setw(12)<<semana[k].payment()
<<"│"<<endl;
}
myfile<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;
myfile<<"销售员"<<endl<<endl;
myfile<<"┌────┬────┬────┬────┬────┬──────────┐"<<endl;
myfile<<"│"<<setw(8)<<"职工号"
<<"│"<<setw(8)<<"姓名"
<<"│"<<setw(8)<<"性别"
<<"│"<<setw(8)<<"年龄"
<<"│"<<setw(8)<<"工资"
<<"│"<<setw(20)<<"所属部门经理"
<<"│"<<endl;
for(k=0;k<B;k++)
{
myfile<<"├────┼────┼────┼────┼────┼──────────┤"<<endl;
myfile<<"│"<<setw(8)<<se[k].get1()
<<"│"<<setw(8)<<se[k].get2()
<<"│"<<setw(8)<<se[k].get3()
<<"│"<<setw(8)<<se[k].get4()
<<"│"<<setw(8)<<se[k].payment()
<<"│"<<setw(20)<<se[k].get5()
<<"│"<<endl;
}
myfile<<"└────┴────┴────┴────┴────┴──────────┘"<<endl<<endl;
myfile<<"文秘"<<endl<<endl;
myfile<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
myfile<<"│"<<setw(12)<<"职工号"
<<"│"<<setw(12)<<"姓名"
<<"│"<<setw(12)<<"性别"
<<"│"<<setw(12)<<"年龄"
<<"│"<<setw(12)<<"工资"
<<"│"<<endl;
for(k=0;k<A;k++)
{
myfile<<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
myfile<<"│"<<setw(12)<<secr[k].get1()
<<"│"<<setw(12)<<secr[k].get3()
<<"│"<<setw(12)<<secr[k].get2()
<<"│"<<setw(12)<<secr[k].get4()
<<"│"<<setw(12)<<secr[k].get()
<<"│"<<endl;
}
myfile<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;

}

/*****************************主循环**************************/
int main()
{
while (c!=5)

{
mulu();
d=0;			//保证可以正常进入次级目录
line();
switch(c)
{
case 1:
while (d!=6)
{
cijimulu();
line();
switch(d)
{
case 1:shuru1();continue;
case 2: shuru2(); continue;
case 3: shuru3(); continue;
case 4:shuru4(); continue;
case 5:shuru5();continue;
}

}continue;
case 2:
tongji(); continue;
case 3:
daying();continue;
case 4:
beifen(); continue;
}

}
return 0;

}




















内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: