职工工资表、使用继承方法、设计5个类、代替四类员工、利用多态性实现信息输入与输出

 

望采纳

可以使用以下代码来实现:
#include <iostream>
#include <string>
using namespace std;
// 定义基类Employee
class Employee
{
public:
    Employee(string name, int salary)
    {
        m_name = name;
        m_salary = salary;
    }
    virtual void input()
    {
        cout << "请输入员工姓名:";
        cin >> m_name;
        cout << "请输入员工工资:";
        cin >> m_salary;
    }
    virtual void output()
    {
        cout << "员工姓名:" << m_name << endl;
        cout << "员工工资:" << m_salary << endl;
    }
protected:
    string m_name;
    int m_salary;
};
// 定义派生类Manager
class Manager : public Employee
{
public:
    Manager(string name, int salary, int bonus) : Employee(name, salary)
    {
        m_bonus = bonus;
    }
    virtual void input()
    {
        Employee::input();
        cout << "请输入绩效奖金:";
        cin >> m_bonus;
    }
    virtual void output()
    {
        Employee::output();
        cout << "绩效奖金:" << m_bonus << endl;
    }
private:
    int m_bonus;
};
// 定义派生类Worker
class Worker : public Employee
{
public:
    Worker(string name, int salary, int overtime) : Employee(name, salary)
    {
        m_overtime = overtime;
    }
    virtual void input()
    {
        Employee::input();
        cout << "请输入加班时长:";
        cin >> m_overtime;
    }
    virtual void output()
    {
        Employee::output();
        cout << "加班时长:" << m_overtime << endl;
    }
private:
    int m_overtime;
};
// 定义派生类Salesman
class Salesman : public Employee
{
public:
    Salesman(string name, int salary, int commission) : Employee(name, salary)
    {
        m_commission = commission;
    }
    virtual void input()
    {
        Employee::input();
        cout << "请输入提成:";
        cin >> m_commission;
    }
    virtual void output()
    {
        Employee::output();
        cout << "提成:" << m_commission << endl;
    }
private:
    int m_commission;
};
// 定义派生类Technician
class Technician : public Employee
{
public:
    Technician(string name, int salary, int allowance) : Employee(name, salary)
    {
        m_allowance = allowance;
    }
    virtual void input()
    {
        Employee::input();
        cout << "请输入津贴:";
        cin >> m_allowance;
    }
    virtual void output()
    {
        Employee::output();
        cout << "津贴:" << m_allowance << endl;
    }
private:
    int m_allowance;
};
int main()
{
    Employee *employees[4];
    employees[0] = new Manager("张三", 10000, 1000);
    employees[1] = new Worker("李四", 8000, 10);
    employees[2] = new Salesman("王五", 6000, 500);
    employees[3] = new Technician("赵六", 5000, 200);
    for (int i = 0; i < 4; i++)
    {
        employees[i]->input();
        employees[i]->output();
    }
    return 0;
}