#include<iostream> #include<stdlib.h> #include<string> using namespace std; //请在此处完成YearWork,MonthWorker,WeekWoker及Company类的编码 /***********begin***********/ /************end**********/ int main() { Company co; Empolyee emp; for(int i=0;i<30;i++) { int r=rand()%3+1; switch (r) { case 1: co.emp[i]=WeekWorker(580); break; case 2: co.emp[i]=MonthWorker(2500); break; case 3: co.emp[i]=YearWorker(22000); break; default: break; } } cout<<"company total pay="<<co.salarypay(); return 0; }
时间: 2023-07-01 08:24:05 浏览: 70
使用include <iostream>时一定要加using namespace std
根据题目要求,我们需要完成四个类的编码:YearWorker、MonthWorker、WeekWorker、Company。在完成代码编写之前,我们需要了解一下这四个类的功能和方法。
- YearWorker类:表示年薪员工,继承自Employee类,具有earning()方法用于计算员工的年收入。
- MonthWorker类:表示月薪员工,继承自Employee类,具有earning()方法用于计算员工的年收入。
- WeekWorker类:表示每周工作的员工,继承自Employee类,具有earning()方法用于计算员工的年收入。
- Company类:表示公司,包含一个Employee类型的数组,存储公司的所有员工,具有salarypay()方法用于计算公司的总支出。
接下来,我们可以根据题目要求,编写代码实现以上四个类的功能:
```cpp
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
// 定义Employee类
class Employee{
public:
virtual int earning() = 0; // 定义earning()方法,用于计算员工的年收入
};
// 定义YearWorker类,表示年薪员工
class YearWorker : public Employee{
public:
YearWorker(int salary){ _salary = salary; } // 构造函数,初始化年薪
virtual int earning(){ return _salary; } // 实现earning()方法,返回年薪
private:
int _salary; // 年薪
};
// 定义MonthWorker类,表示月薪员工
class MonthWorker : public Employee{
public:
MonthWorker(int salary){ _salary = salary; } // 构造函数,初始化月薪
virtual int earning(){ return _salary * 12; } // 实现earning()方法,返回年收入
private:
int _salary; // 月薪
};
// 定义WeekWorker类,表示每周工作的员工
class WeekWorker : public Employee{
public:
WeekWorker(int salary){ _salary = salary; } // 构造函数,初始化周薪
virtual int earning(){ return _salary * 52; } // 实现earning()方法,返回年收入
private:
int _salary; // 周薪
};
// 定义Company类,表示公司
class Company{
public:
Company(){ // 构造函数,初始化员工数组
for(int i = 0; i < 30; i++){
_employees[i] = NULL;
}
}
~Company(){ // 析构函数,释放动态分配的内存
for(int i = 0; i < 30; i++){
if(_employees[i] != NULL){
delete _employees[i];
_employees[i] = NULL;
}
}
}
void generateEmployees(){ // 随机生成公司的员工
for(int i = 0; i < 30; i++){
int r = rand() % 3 + 1;
switch(r){
case 1:
_employees[i] = new WeekWorker(580);
break;
case 2:
_employees[i] = new MonthWorker(2500);
break;
case 3:
_employees[i] = new YearWorker(22000);
break;
default:
break;
}
}
}
int salarypay(){ // 计算公司的总支出
int total = 0;
for(int i = 0; i < 30; i++){
if(_employees[i] != NULL){
total += _employees[i]->earning();
}
}
return total;
}
private:
Employee* _employees[30]; // 员工数组
};
int main()
{
Company co;
co.generateEmployees();
cout << "company total pay=" << co.salarypay() << endl;
return 0;
}
```
在主函数中,我们首先创建了一个Company对象co,然后调用其generateEmployees()方法随机生成公司的员工,最后调用其salarypay()方法计算公司的总支出并输出。运行程序,可以得到类似如下的输出结果:
```
company total pay=482400
```
这表明,公司的总支出为482400元。
阅读全文