销售经理(多继承/虚基类)

根据下图类之间的继承关系,以及main和输出定义,定义Staff类、Saleman类、Manager类和SaleManager类。

0012.png

Staff类包含的数据成员有编号(num),姓名(name),基本工资(basicSale)。Saleman类包含的数据成员个人有销售额(personAmount),在Manager类中包含的数据成员有销售总额(totalAmount)。在SaleManager中不包含其他数据成员。

函数接口定义:

int main()

裁判测试程序样例:

#include <iostream>
using namespace std;
/* 请在这里填写答案 */
int main()
{
    int num;
    string name;
    int basicSale,personAmount,totalAmount;
    cin>>num>>name>>basicSale>>personAmount>>totalAmount;
    int n;
    //根据n值不同测试不同的类;
    cin>>n;
    switch(n)
    {
        case 1:{
                Staff s(num,name,basicSale); 
                s.shows();                           
               break;   
        }         
        //2.测试Saleman
        case 2:{
            Saleman sman(num,name,basicSale,personAmount); 
            sman.show();
            cout<<"-------------------"<<endl;
            sman.Staff::shows();
            break;
        }
        //3.测试Manager
        case 3:{
            Manager m(num,name,basicSale,totalAmount); 
            m.show();
            cout<<"-------------------"<<endl;
            m.Staff::shows();
            break;
        }
        //4.测试SaleManager 
        case 4:{
            SaleManager sm(num,name,basicSale,personAmount,totalAmount); // 参数含义依次为编号,姓名,基本工资,个人有销售额,销售总额
            sm.show(); 
            cout<<"-------------------"<<endl;
            sm.Saleman::show();
            cout<<"-------------------"<<endl;
            sm.Manager::show();
            cout<<"-------------------"<<endl;
            sm.shows(); 
            break;
        }
    }    
    return 0;
}

输入样例1:

1234 王兰 2000 8000 20000
1

输出样例1:

num:1234
name:王兰
BasicSale:2000

输入样例2:

1234 王兰 2000 8000 20000
2

输出样例2:

slaeman 王兰:8000
-------------------
num:1234
name:王兰
BasicSale:2000

输入样例3:

1234 王兰 2000 8000 20000
3

输出样例3:

manager 王兰:20000
-------------------
num:1234
name:王兰
BasicSale:2000

输入样例4:

1234 王兰 2000 8000 20000
4

输出样例4:

num:1234
name:王兰
BasicSale:2000
personAmount:8000
totalAmount:20000
-------------------
slaeman 王兰:8000
-------------------
manager 王兰:20000
-------------------
num:1234
name:王兰
BasicSale:2000

 注意show()和shows()


// 员工类,表示员工信息
class Staff {
protected:
    int num;            // 员工编号
    string name;        // 员工姓名
    int basicSale;      // 基本工资

public:
    // 构造函数,初始化员工信息
    Staff(int n, const string& nm, int bs) : num(n), name(nm), basicSale(bs) {}

    // 显示员工信息
    void shows() {
        cout << "num:" << num << endl;
        cout << "name:" << name << endl;
        cout << "BasicSale:" << basicSale << endl;
    }
};

// 销售员工类,继承自员工类,表示销售员工信息
class Saleman : virtual public Staff {
public:
    int personAmount;   // 个人销售额

    // 构造函数,初始化销售员工信息
    Saleman(int n, const string& nm, int bs, int pa) : Staff(n, nm, bs), personAmount(pa) {}

    // 显示销售员工信息
    void show() {
        cout << "slaeman " << name << ":" << personAmount << endl;
    }
};

// 经理类,继承自员工类,表示经理信息
class Manager : virtual public Staff {
public:
    int totalAmount;    // 销售总额

    // 构造函数,初始化经理信息
    Manager(int n, const string& nm, int bs, int ta) : Staff(n, nm, bs), totalAmount(ta) {}

    // 显示经理信息
    void show() {
        cout << "manager " << name << ":" << totalAmount << endl;
    }
};

// 销售经理类,同时继承自销售员工类和经理类,表示销售经理信息
class SaleManager : public Saleman, public Manager {
public:
    // 构造函数,初始化销售经理信息
    SaleManager(int n, const string& nm, int bs, int pa, int ta) 
        : Staff(n, nm, bs), Saleman(n, nm, bs, pa), Manager(n, nm, bs, ta) {}

    // 显示销售经理信息
    void show() {
        // 先显示基本信息
        Staff::shows();
        // 再显示个人销售额和销售总额
        cout << "personAmount:" << personAmount << endl;
        cout << "totalAmount:" << totalAmount << endl;
    }
};

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值