某公司对销售人员(Sales)每月工资的计算公式如下:固定工资(salary)+销售提成(project)。经理(Manager)的固定工资为8000元,每个项目提成5%;副经理(Vice_Manager)的固定工资为6000元,每个项目提成4%;普通销售(Employee)的固定工资为5000元,项目提成3%。定义销售抽象类,派生不同级别的销售类,编写程序求若干销售人员的月工资。要求多态来实现。
时间: 2024-02-16 18:00:26 浏览: 90
好的,这是一个非常典型的面向对象编程的问题,我们可以用C++语言来实现。
首先,我们需要定义一个销售抽象类,其中包括计算工资的纯虚函数:
```cpp
class Sales {
public:
Sales(double salary): m_salary(salary) {}
virtual ~Sales() {}
virtual double calculate_salary(int projects) = 0;
protected:
double m_salary;
};
```
然后,我们派生出经理、副经理和普通销售类,并分别实现计算工资的函数:
```cpp
class Manager : public Sales {
public:
Manager(): Sales(8000.0) {}
double calculate_salary(int projects) override {
return m_salary + projects * 0.05 * m_salary;
}
};
class ViceManager : public Sales {
public:
ViceManager(): Sales(6000.0) {}
double calculate_salary(int projects) override {
return m_salary + projects * 0.04 * m_salary;
}
};
class Employee : public Sales {
public:
Employee(): Sales(5000.0) {}
double calculate_salary(int projects) override {
return m_salary + projects * 0.03 * m_salary;
}
};
```
最后,我们可以在主函数中创建若干个销售人员,并调用他们的计算工资函数:
```cpp
int main() {
Manager manager;
ViceManager vice_manager;
Employee employee;
int projects = 10;
std::cout << "Manager's salary: " << manager.calculate_salary(projects) << std::endl;
std::cout << "Vice manager's salary: " << vice_manager.calculate_salary(projects) << std::endl;
std::cout << "Employee's salary: " << employee.calculate_salary(projects) << std::endl;
return 0;
}
```
这样,我们就用多态的方式实现了一个不同级别销售人员的月工资计算程序。