定义一个员工类Employee,有数据成员姓名string name,编号string id。定义一个销售员继承自员工类sales,工资为销售额float sale的提成10%,每个类均有dispaly()函数输出信息,编写主函数测试。主函数中,输入销售人员的信息,并计算工资,如果销售额小于0,则提示“input error!”并结束程序
时间: 2024-03-21 07:37:54 浏览: 41
好的,下面是实现员工类Employee和销售员类Sales的代码:
```c++
#include <iostream>
#include <string>
using namespace std;
class Employee {
protected:
string name; // 姓名
string id; // 编号
public:
Employee(string name="", string id=""): name(name), id(id) {}
virtual void display() { // 虚函数,用于输出员工信息
cout << "Name: " << name << endl;
cout << "ID: " << id << endl;
}
};
class Sales: public Employee {
private:
float sale; // 销售额
public:
Sales(string name="", string id="", float sale=0): Employee(name, id), sale(sale) {}
void display() { // 重载虚函数,用于输出销售员信息
Employee::display(); // 先调用基类的display函数输出姓名和编号
cout << "Sale: " << sale << endl;
cout << "Salary: " << (sale < 0 ? 0 : sale*0.1) << endl; // 计算并输出工资(注意工资不能为负数)
}
};
int main() {
string name, id;
float sale;
cout << "Please input the information of the salesperson:" << endl;
cout << "Name: ";
getline(cin, name); // 使用getline函数可以读入含有空格的字符串
cout << "ID: ";
getline(cin, id);
cout << "Sale: ";
cin >> sale;
if (sale < 0) { // 销售额小于0,输出错误信息并结束程序
cout << "Input error!" << endl;
return 0;
}
Sales s(name, id, sale); // 创建销售员对象
s.display(); // 输出销售员信息
return 0;
}
```
运行程序后,可以输入销售员的信息,如果销售额小于0则输出错误信息并结束程序,否则输出销售员的姓名、编号、销售额和工资(工资为销售额的10%)。