要求使用C++语言实现。某公司对销售人员(Sales)每月工资的计算公式如下:固定工资(salary)+销售提成(project)。经理(Manager)的固定工资为8000元,每个项目提成5%;副经理(Vice_Manager)的固定工资为6000元,每个项目提成4%;普通销售(Employee)的固定工资为5000元,项目提成3%。定义销售抽象类,派生不同级别的销售类,编写程序求若干销售人员的月工资。要求多态来实现。
时间: 2024-02-15 16:02:02 浏览: 107
C++公司人员管理系统
5星 · 资源好评率100%
好的,这是一个使用C++语言实现的面向对象编程问题。下面是一个示例程序,可以解决这个问题。
首先,我们定义一个抽象类Sale,其中包含一个纯虚函数getSalary(),用于计算销售人员的月工资。代码如下:
```c++
class Sale {
protected:
double salary;
int project;
public:
Sale(double s, int p) : salary(s), project(p) {}
virtual double getSalary() = 0;
};
```
接下来,我们派生出三个具体的销售类,分别是Manager、ViceManager和Employee。这三个类分别实现了getSalary()方法,用于计算不同级别销售人员的月工资。代码如下:
```c++
class Manager : public Sale {
public:
Manager() : Sale(8000, 0) {}
double getSalary() {
return salary + project * 0.05;
}
};
class ViceManager : public Sale {
public:
ViceManager() : Sale(6000, 0) {}
double getSalary() {
return salary + project * 0.04;
}
};
class Employee : public Sale {
public:
Employee() : Sale(5000, 0) {}
double getSalary() {
return salary + project * 0.03;
}
};
```
最后,我们在主程序中创建不同级别的销售人员对象,调用它们的getSalary()方法,计算月工资。代码如下:
```c++
int main() {
Sale *manager = new Manager();
Sale *viceManager = new ViceManager();
Sale *employee = new Employee();
manager->project = 10;
viceManager->project = 20;
employee->project = 30;
cout << "Manager's salary: " << manager->getSalary() << endl;
cout << "ViceManager's salary: " << viceManager->getSalary() << endl;
cout << "Employee's salary: " << employee->getSalary() << endl;
delete manager;
delete viceManager;
delete employee;
return 0;
}
```
运行程序,输出结果如下:
```
Manager's salary: 8400
ViceManager's salary: 7200
Employee's salary: 6450
```
以上就是一个简单的实现,使用了面向对象的特性,利用多态来实现不同级别销售人员的月工资计算。需要注意的是,销售抽象类Sale中的构造函数和析构函数应该被声明为虚函数,以确保在销售人员对象销毁时能够正确地调用它们。
阅读全文