(2)设计工人类Worker,它具有姓名name、年龄age、工作部门Dept、工资salary 等数据成员。其中,salary即前面设计的Sarary类型的数据。按照第前面的形式完成Worker类的程序设计,并统计工人的人数(用静态成员统计人数)。
时间: 2024-11-15 10:32:23 浏览: 14
为了设计`Worker`类,我们将结合之前`Salary`类并在类中增加必要的成员变量,同时添加静态成员变量来统计工人总人数。这里是一个简单的实现:
```cpp
#include <iostream>
#include "Salary.h" // 假设我们在同一个项目中,已经包含前面的Salary头文件
class Worker {
private:
std::string name;
int age;
std::string Dept;
Salary salary; // 使用Salary类型的数据作为工资
public:
// 默认构造函数
Worker(const std::string& name, int age, const std::string& dept)
: name(name), age(age), Dept(dept), salary(0) {}
// 构造函数,接受完整信息
Worker(const std::string& name, int age, const std::string& dept, double wage, double subsidy,
double rent, double water_fee, double elec_fee)
: name(name), age(age), Dept(dept), salary(wage, subsidy, rent, water_fee, elec_fee) {}
// 设置个人信息
void setName(const std::string& f) { name = f; }
void setAge(int f) { age = f; }
void setDept(const std::string& f) { Dept = f; }
// 统计当前worker的工资
double getSalary() const { return salary.RealSalary(); }
// 静态成员函数,增加工人人数
static int incrementWorkers() {
static int count = 0;
return ++count;
}
// 静态成员函数,获取工人总数
static int getTotalWorkers() {
return count;
}
// 重载输出运算符,方便打印信息
friend std::ostream &operator<<(std::ostream &os, const Worker &w) {
os << "Name: " << w.name << ", Age: " << w.age << ", Department: " << w.Dept
<< ", Salary: " << w.getSalary() << std::endl;
return os;
}
};
// 主函数用于演示
int main() {
Worker worker1("张三", 25, "IT", 5000, 1000, 800, 50, 100);
Worker worker2("李四", 30, "HR", 6000, 1500, 900, 60, 120);
Worker::incrementWorkers(); // 增加工人人数
std::cout << "Worker 1:\n" << worker1 << std::endl;
std::cout << "Total Workers: " << Worker::getTotalWorkers() << std::endl;
return 0;
}
```
在这个示例中,我们定义了`Worker`类,包含姓名、年龄、部门和`Salary`类型的工资。还添加了两个静态成员函数`incrementWorkers`和`getTotalWorkers`分别用于统计工人人数和获取总人数。`main`函数中创建了两个`Worker`对象并显示了它们的信息,同时也展示了如何统计工人总数。
阅读全文