C++使用对象完成一个公司薪资系统

#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");
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值