作者 刘利
单位 惠州学院
根据下图类之间的继承关系,以及main和输出定义,定义Staff类、Saleman类、Manager类和SaleManager类。
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.show();
break;
}
//2.测试Saleman
case 2:{
Saleman sman(num,name,basicSale,personAmount);
sman.show();
break;
}
//3.测试Manager
case 3:{
Manager m(num,name,basicSale,totalAmount);
m.show();
break;
}
//4.测试SaleManager
case 4:{
SaleManager sm(num,name,basicSale,personAmount,totalAmount); // 参数含义依次为编号,姓名,基本工资,个人有销售额,销售总额
sm.show();
break;
}
}
return 0;
}
输入样例1:
1234 王兰 2000 8000 20000
1
输出样例1:
num:1234
name:王兰
BasicSale:2000
输入样例2:
1234 王兰 2000 8000 20000
2
输出样例2:
saleman 王兰:8000
输入样例3:
1234 王兰 2000 8000 20000
3
输出样例3:
manager 王兰:20000
输入样例4:
1234 王兰 2000 8000 20000
4
输出样例4:
num:1234
name:王兰
BasicSale:2000
personAmount:8000
totalAmount:20000
--------------------------------------------------------------------------------------------------------------------------------
答案
#include <iostream>
using namespace std;
#include <string>
class Staff
{
public:
int num, basicSale;
string name;
Staff(int m, string n, int b) : num(m), name(n), basicSale(b) {}
void show()
{
cout << "num:" << num << endl;
cout << "name:" << name << endl;
cout << "BasicSale:" << basicSale << endl;
}
};
class Saleman : virtual public Staff
{
public:
int personAmount;
Saleman(int m, string n, int b, int p) : Staff::Staff(m, n, b), personAmount(p) {}
void show()
{
cout << "saleman " << name << ":" << personAmount << endl;
}
};
class Manager : virtual public Staff
{
public:
int totalAmount;
Manager(int m, string n, int b, int t) : Staff::Staff(m, n, b), totalAmount(t) {}
void show()
{
cout << "manager " << name << ":" << totalAmount << endl;
}
};
class SaleManager : public Manager, public Saleman
{
public:
SaleManager(int m, string n, int b, int p, int t) : Staff::Staff(m, n, b), Manager(m, n, b, t), Saleman(m, n, b, p) {}
void show()
{
Staff::show();
cout << "personAmount:" << personAmount << endl;
cout << "totalAmount:" << totalAmount << endl;
}
};
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.show();
break;
}
//2.测试Saleman
case 2: {
Saleman sman(num, name, basicSale, personAmount);
sman.show();
break;
}
//3.测试Manager
case 3: {
Manager m(num, name, basicSale, totalAmount);
m.show();
break;
}
//4.测试SaleManager
case 4: {
SaleManager sm(num, name, basicSale, personAmount, totalAmount); // 参数含义依次为编号,姓名,基本工资,个人有销售额,销售总额
sm.show();
break;
}
}
return 0;
}