新生 一个c++程序问题

编写一个程序实现小型公司的工资管理。该公司主要有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");
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632