【问题描述】
定义一个员工类Employee,有数据成员姓名,编号。定义一个销售员继承自员工类Sales,工资为销售额的提成10%,定义一个经理类Manager,固定工资8000,定义一个销售经理类,继承自销售员类和经理类,工资为固定工资5000加销售额的提成5%。每个类均有display()函数输出信息,编写主函数测试。主函数中定义一个销售经理对象,销售额为100000,输出信息。
【输入形式】
程序参考的输入(第一行为提示文字):
Input id name and sale:
M001 zhangsan 100000
【输出形式】
程序参考的输出结果如下:
ID:M001
Name:zhangsan
Salary:10000
#include <iostream>
using namespace std;
class Employee
{
public:
Employee(string id,string name):id(id),name(name){}
void display()
{
cout<<"ID:"<<id<<endl;
cout<<"Name:"<<name<<endl;
}
protected:
string id,name;
};
class Sales : virtual public Employee
{
public:
Sales(string id, string name, float sale): Employee(id,name)
{
this->id = id;
this->name = name;
this->sale = sale;
}
void display()
{
cout << "ID:" << id << endl;
cout << "Name:" << name << endl;
cout << "salary:" << sale*0.1 << endl;
}
protected:
float sale;
};
class Manager : virtual public Employee
{
public:
Manager(string id,string name, float salary): Employee(id,name),salary(salary){}
void display()
{
}
protected:
float salary=8000;
};
class SalesManager : public Manager, public Sales
{
public:
SalesManager(string id, string name, float sale): Sales(id, name,sale), Manager(id,name,5000),Employee(id,name)
{
this->id = id;
this->name = name;
this->salary = salary + sale*0.05;
}
void display()
{
cout << "ID:" << id << endl;
cout << "Name:" << name << endl;
cout << "Salary:" << salary << endl;
}
};
int main()
{
string id,name;
float sale;
cout<<"Input id name and sale:"<<endl;
cin>>id>>name>>sale;
if(sale<0)
{
cout<<"Input Error!"<<endl;
return 0;
}
SalesManager sm(id,name,sale);
sm.display();
return 0;
}