有一个大公司希望管理其所有的员工,这些员工大致分为:管理人员,正式员工和临时员工。对于不同的员工,需要管理的信息有些不同。管理人员的薪水是按照其等级来发放的,而正式工人和临时工人的薪水是按照其工作时间的长短来支付的。对于不同的人员,需要记录以下不同的信息:
管理人员:姓名,电话,薪水等级,红利等级,秘书姓名;
正式员工:姓名,电话,每小时工资数;
临时员工:姓名,电话,每小时工资数.
分析上面三种三种人员信息,我们会发现三类人员的信息有相同的地方,也有不同的地方.正式工人和临时工人的信息基本完全相同,而管理人员则有很大区别,所以,我们可以抽象出一个Employee类,来存放所有员工的共同信息,然后 从这个类派生出来一个管理人员类Manage和一个员工类Worker,并在Worker类中用一个成员来标记这是一个正式员工还是一个临时员工
看到没人回复你,帮你做了个,凑合着用吧
- -
#include <iostream>
#include <string>
using namespace std;
//基类
class Employee
{
public:
string name; //姓名
string phone; //电话
};
//经理类
class Manage : public Employee
{
public:
Manage(string name, string phone, int pd, int dd, string se)
{
//Employee(name,phone);
this->name = name;
this->phone = phone;
paydegree = pd;
divdegree = dd;
secretary = se;
}
int paydegree; //薪水等级
int divdegree; //红利等级
string secretary; //秘书姓名
int pay() //计算薪水
{
return paydegree + divdegree;
//假设薪水=薪水等级 + 红利等级
}
};
//员工类
class Worker : public Employee
{
public:
Worker(string name, string phone, int pp, bool tp)
{
//Employee(name, phone);
this->name = name;
this->phone = phone;
perpay = pp;
temporary = tp;
}
int perpay; //每小时工资数
bool temporary; //标记是否为临时工
int pay() //计算薪水
{
return perpay * 8 * 30;
//假设薪水=每小时工资数*每天8小时*每月30天
}
};
int main()
{
Manage m1("A","151",10000,5000,"B");
//经理
Worker w1("C","150",20,true);
//临时工
Worker w2("D","134",30,false);
//正式员工
cout<<m1.pay()<<endl;
cout<<w1.pay()<<endl;
cout<<w2.pay()<<endl;
return 0;
}