编写一个程序实现小型公司的工资管理。该公司主要有4类人员:经理,兼职技术人员,销售员和销售经理。要求存储这些人员的编号(编号从1000起)、姓名和月工资,计算月工资并显示全部信息。月工资的计算办法是:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;销售员按当月销售额的4%提成;销售经理既拿固定工资也领取销售提成,固定月工资5000元,提成为所管辖部门当月销售总额的5%。设基类中的数据成员为保护成员。
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#include <string>
class person
{
protected:
int id;
string name;
public:
person(int id,string name) : id(id),name(name) {}
string getName() {return name;}
virtual double getSalary() = 0;
};
class manager : public person
{
public:
manager(int id,string name) : person(id,name) {}
double getSalary() {return 8000;}
};
class technical : public person
{
private:
double workHours;
public:
technical(int id,string name,double workhours) : person(id,name),workHours(workhours) {}
double getSalary() {return 100*workHours;}
};
class saler : public person
{
private:
double sales;
public:
saler(int id,string name,double sales) : person(id,name),sales(sales) {}
double getSalary() {return sales * 0.04;}
};
class salermanager: public person
{
private:
double sales;
public:
salermanager(int id,string name,double sales) : person(id,name),sales(sales){}
double getSalary() {return sales*0.05 + 5000;}
};
int main()
{
person *p[4];
p[0] = new manager(1001,"zhangs");
p[1] = new technical(1002,"gaolong",40);
p[2] = new saler(1003,"wangw",300000);
p[3] = new salermanager(1004,"caofang",300000);
for(int i=0;i<4;i++)
cout<<p[i]->getName()<<"的月薪是:"<<p[i]->getSalary()<<endl;
system("pause");
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!