假设某销售公司有销售经理和销售员工,月工资的计算办法是:销售经理固定月薪为8000元并提取销售额的0.5%作为工资;销售员工提取销售额的千分之五作为工资。编一程序,定义一个基类 employee,它包
时间: 2023-05-31 14:19:41 浏览: 182
### 回答1:
含姓名、基本工资和销售额三个数据成员,以及计算工资的虚函数 getSalary()。再定义两个派生类 manager 和 salesman,分别实现销售经理和销售员工的工资计算方法。最后在主函数中创建一个销售经理对象和一个销售员工对象,分别输出他们的姓名和月工资。
以下是示例代码:
```
#include <iostream>
#include <string>
using namespace std;
class employee {
protected:
string name;
double baseSalary;
double sales;
public:
employee(string n, double bs, double s) {
name = n;
baseSalary = bs;
sales = s;
}
virtual double getSalary() {
return baseSalary;
}
};
class manager : public employee {
public:
manager(string n, double bs, double s) : employee(n, bs, s) {}
double getSalary() {
return baseSalary + sales * .005;
}
};
class salesman : public employee {
public:
salesman(string n, double bs, double s) : employee(n, bs, s) {}
double getSalary() {
return baseSalary + sales * .001;
}
};
int main() {
manager m("张经理", 800, 100000);
salesman s("李销售", 500, 80000);
cout << m.name << "的月工资为:" << m.getSalary() << "元" << endl;
cout << s.name << "的月工资为:" << s.getSalary() << "元" << endl;
return ;
}
```
输出结果:
```
张经理的月工资为:13000元
李销售的月工资为:900元
```
### 回答2:
含姓名、员工号、月销售额等属性和计算工资的虚函数 calculatePay,再派生出销售经理类 manager 和销售员工类 salesman,实现各自的计算工资函数。在程序中通过批量输入员工信息和月销售额,计算所有员工工资并输出。
假设某销售公司有销售经理和销售员工,他们的月工资的计算办法不同,需要编写程序来计算和输出。首先,定义一个基类 employee,包含员工姓名、员工号、月销售额等属性和计算工资的虚函数 calculatePay。然后派生出销售经理类 manager 和销售员工类 salesman,实现各自的计算工资函数。
class Employee {
protected:
string name; // 员工姓名
string number; // 员工号
double sales; // 月销售额
public:
Employee(string n, string no, double s) {
name = n;
number = no;
sales = s;
}
virtual double calculatePay() {
return 0;
}
};
class Manager : public Employee {
public:
Manager(string n, string no, double s) : Employee(n, no, s) {}
virtual double calculatePay() {
return 8000 + 0.005 * sales;
}
};
class Salesman : public Employee {
public:
Salesman(string n, string no, double s) : Employee(n, no, s) {}
virtual double calculatePay() {
return 0.001 * sales;
}
};
在程序中,批量输入员工信息和月销售额,并计算所有员工的工资总额和平均工资,并输出。
int main() {
vector<Employee *> employees;
double totalPay = 0;
double avgPay = 0;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
string name, number;
double sales;
cin >> name >> number >> sales;
Employee *employee;
if (number[0] == 'M') {
employee = new Manager(name, number, sales);
} else {
employee = new Salesman(name, number, sales);
}
employees.push_back(employee);
totalPay += employee->calculatePay();
}
avgPay = totalPay / n;
cout << "total pay: " << totalPay << endl;
cout << "average pay: " << avgPay << endl;
for (int i = 0; i < n; i++) {
delete employees[i];
}
return 0;
}
在程序中,首先输入员工数量n,再循环输入n个员工信息。根据员工号的第一个字符判断员工类型,然后创建对应的 employee 对象,并使用一个 vector 存储所有员工对象。计算出员工的总工资和平均工资,并输出。最后循环删除所有员工对象。
### 回答3:
含员工姓名、销售额和月工资三个数据成员,以及一个成员函数 getSalary(),用来计算员工月工资。然后派生出两个子类:manager 和 salesman,分别表示销售经理和销售员工。
在定义 manager 类时,需要定义一个新的数据成员 commissionRate,来记录销售经理提取销售额的0.5%。在 getSalary() 函数中,先计算出销售经理的销售提成额,然后加上固定工资8000元即可。在定义 salesman 类时,直接在 getSalary() 函数中计算出销售员工的销售提成额,乘以千分之五即可。
最后,定义一个主程序,创建 manager 和 salesman 实例,分别输入他们的销售额并计算他们的月工资,输出结果即可。以下是程序示例:
```c++
#include <iostream>
#include <string>
using namespace std;
class Employee {
public:
string name; // 员工姓名
double sales; // 销售额
double salary; // 月工资
virtual void getSalary() = 0; // 计算月工资的虚函数
};
class Manager : public Employee {
public:
double commissionRate; // 提成比率
Manager(string n, double s, double c): name(n), sales(s), commissionRate(c) {}
virtual void getSalary() {
double commission = sales * commissionRate;
salary = 8000 + commission;
}
};
class Salesman : public Employee {
public:
Salesman(string n, double s): name(n), sales(s) {}
virtual void getSalary() {
salary = sales * 0.005;
}
};
int main() {
Manager m("Jack", 50000, 0.005);
m.getSalary();
cout << m.name << "的月工资为:" << m.salary << "元" << endl;
Salesman s("Tom", 20000);
s.getSalary();
cout << s.name << "的月工资为:" << s.salary << "元" << endl;
return 0;
}
```
阅读全文