第1题
编程实现小型公司的工资管理。该公司主要有4类人员:经理(manager)、兼职技术人员(technician)、销售员(salesman)和销售经理(salesmanager)。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元,兼职技术人员按每小时100元领取月薪,销售员按当月销售额的4%提成,销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的千分之五。兼职技术人员一个月工作小时数、销售员一个月销售额、销售经理所管辖部门一个月销售总额由各个类的成员函数完成设置。(要求用抽象类和类继承)
#include <iostream>
using namespace std;
//雇员类
class Employee {
protected :
int _id;
double _salary;
string _name;
public:
Employee(int id,string name)
:_id(id),_name(name)
{}
virtual ~Employee(){}
virtual double CalcSalary()=0;
};
//经理类
class Manager:public Employee{
public:
Manager(int id,string name):Employee(id,name){}
virtual double CalcSalary(){
_salary=8000;
return _salary;
};
};
//兼职技术员类
class Technician:public Employee{
int _workHour;
public:
Technician(int id,string name):Employee(id,name){}
void SetWorkHour(int workHour){
_workHour = workHour;
}
virtual double CalcSalary(){
_salary=100*_workHour;
return _salary;
};
};
//销售经理类
class Salesman:public Employee{
double _salesMount;
public :
Salesman (int id,string name):Employee(id,name){}
void SetSalesMount(double salesMount){
_salesMount=salesMount;
}
virtual double CalcSalary(){
_salary=0.04*_salesMount;
return _salary;
};
};
class SalesManager:public Employee{
double _salesTotalMount;
public:
SalesManager (int id,string name):Employee(id,name){}
void
SetSalesTotalMount(double salesTotalMount){
_salesTotalMount=salesTotalMount;
}
virtual double CalcSalary(){
_salary =5000 +0.005 * _salesTotalMount;
return _salary;
};
};
int main()
{
Manager zhang(1000, "张三");
Technician li(1000, "李四");
Salesman wang(1000, "王五");
SalesManager zhao(1000, "赵六");
li.SetWorkHour(50);
wang.SetSalesMount(175000);
zhao.SetSalesTotalMount(1500000);
Employee *pEmployeeA[]={&zhang,&li,&wang,&zhao};
for (int i = 0; i <4; i++) {
cout << pEmployeeA [i] ->CalcSalary() << endl;
}
}