#include<iostream>
#include<string>
using namespace std;
class Employee {
protected:
double pay;
int grade;
int id;
string name;
static int num;
public:
Employee(string name) { num++;id = num;grade = 1; pay = 0; };
};
int Employee::num = 0;
class Technician :public Employee {
protected:
int hour;
int hourpay;
public:
Technician(string name);
friend void Promote(Technician&T);
friend void SetWorkHour(Technician&T,int hour);
friend void DispPay(Technician&T);
};
Technician::Technician(string name):Employee(name)
{
hour = 0;
this->name = name;
hourpay = 100;
}
class Salesman:virtual public Employee{
protected:
double sales;
double rate;
public:
Salesman(string name);
friend void Promote(Salesman&S);
friend void SetSales(Salesman&S, double sales);
friend void DisPay(Salesman&S);
};
Salesman::Salesman(string name) :Employee(name)
{
this->name = name;
rate = 0.04;
sales = 0;
}
class Manager :virtual public Employee {
protected:
double monthpay;
public:
Manager(string name);
friend void Promote(Manager&M);
friend void DisPay(Manager&M);
};
Manager::Manager(string name) :Employee(name)
{
monthpay = 8000;
};
class SalesManager:public Manager,public Salesman {
public:
SalesManager(string name);
friend void Promote(SalesManager&S);
friend void DisPay(SalesManager&S);
};
SalesManager::SalesManager(string name):Salesman(name),Manager(name),Employee(name)
{
monthpay = 5000;
rate = 0.05;
}
void Promote(Technician&T) {
T.grade = 3;
}
void Promote(Salesman&S)
{
S.grade = 1;
}
void Promote(Manager&M)
{
M.grade = 4;
}
void Promote(SalesManager&S)
{
S.grade = 3;
}
void SetWorkHour(Technician&T,int hour)
{
T.hour = hour;
}
void SetSales(Salesman&S,double sales)
{
S.sales = sales;
}
void DispPay(Technician&T)
{
T.pay = T.hour*T.hourpay;
cout << "技术员:" << T.name << " 上月工作时长:" << T.hour << " 上月工资:" << T.pay << endl;
}
void DisPay(Salesman&S)
{
S.pay = S.rate*S.sales;
cout << "销售员:" << S.name<<" 上月销售额:" << S.sales << " 上月工资:" << S.pay << endl;
}
void DisPay(Manager&M)
{
cout << "经理:" << M.name << " 上月工资" << M.pay << endl;
}
void DisPay(SalesManager&S)
{
S.pay = S.monthpay + S.sales*S.rate;
cout << "销售经理:" << S.name << " 上个月部门销售总额:" << S.sales << " 上个月工资:" << S.pay << endl;
}
int main()
{
SalesManager M("tom");
SetSales(M, 100000);
DisPay(M);
system("pause");
}
C++使用对象完成一个公司薪资系统
最新推荐文章于 2021-04-06 20:16:16 发布