#include<iostream> #include<stdlib.h> #include<string> using namespace std; //请在此处完成YearWork,MonthWorker,WeekWoker及Company类的编码 /***********begin***********/ /************end**********/ int main() { Company co; 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:18:32 浏览: 76
这段代码的作用是模拟一个公司的员工工资支付系统,其中包括三种类型的员工:WeekWorker(按周计薪的员工)、MonthWorker(按月计薪的员工)和YearWorker(按年计薪的员工)。代码中使用了一个Company类来管理所有的员工,并通过一个for循环随机生成30个不同类型的员工,然后计算公司总共需要支付的薪水。
具体来说,代码中的实现思路如下:
1. 首先定义了三个类:YearWorker、MonthWorker和WeekWorker,它们都是Employee类的子类,分别代表按年、按月和按周计薪的员工。
2. 在Company类中,定义了一个数组emp来存储所有的员工。
3. 在主函数中,通过一个for循环随机生成30个不同类型的员工,并将它们存储到Company对象的emp数组中。
4. 最后调用Company对象的salarypay方法,计算公司总共需要支付的薪水,并输出结果。
完整代码如下:
```c++
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
//员工类
class Employee
{
public:
virtual int pay() = 0; //纯虚函数
};
//按年计薪的员工
class YearWorker :public Employee
{
private:
int salary; //年薪
public:
YearWorker(int s) :salary(s) {} //构造函数
int pay() { return salary; } //实现计算薪水的方法
};
//按月计薪的员工
class MonthWorker :public Employee
{
private:
int salary; //月薪
public:
MonthWorker(int s) :salary(s) {} //构造函数
int pay() { return salary; } //实现计算薪水的方法
};
//按周计薪的员工
class WeekWorker :public Employee
{
private:
int salary; //周薪
public:
WeekWorker(int s) :salary(s) {} //构造函数
int pay() { return salary; } //实现计算薪水的方法
};
//公司类
class Company
{
public:
Employee *emp[30]; //员工数组
int salarypay() //计算公司总共需要支付的薪水
{
int sum = 0;
for (int i = 0; i < 30; i++)
{
sum += emp[i]->pay(); //调用不同类型员工的计算薪水方法
}
return sum;
}
};
int main()
{
Company co;
for (int i = 0; i < 30; i++)
{
int r = rand() % 3 + 1;
switch (r) {
case 1:
co.emp[i] = new WeekWorker(580);
break;
case 2:
co.emp[i] = new MonthWorker(2500);
break;
case 3:
co.emp[i] = new YearWorker(22000);
break;
default:
break;
}
}
cout << "company total pay=" << co.salarypay();
return 0;
}
```
阅读全文