c++建立一个职工档案,它包括职工的工作证号、姓名、性别、出生时参加工作时间、文化程度、工资等内容,最后输出:职工的平均年龄和平均工资;各文化程度职工人数的分布情况。
时间: 2024-11-25 09:11:45 浏览: 5
在C++中创建一个职工档案类,我们可以定义一个名为`Employee`的类,包含成员变量和相应的访问器和修改器。以下是基本的实现:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <map>
class Employee {
public:
// 构造函数
Employee(int id, std::string name, char gender, int birth_year, std::string edu_level, double salary)
: work_id(id), name(name), gender(gender), start_work(birth_year), edu(edu_level), wage(salary) {}
// 获取工作证号、姓名等属性
int getWorkId() const { return work_id; }
std::string getName() const { return name; }
char getGender() const { return gender; }
int getStartWorkYear() const { return start_work; }
std::string getEducationLevel() const { return edu; }
double getSalary() const { return wage; }
private:
// 成员变量
int work_id;
std::string name;
char gender;
int start_work;
std::string edu;
double wage;
};
// 计算员工平均年龄和工资
double calculateAverageAge(const std::vector<Employee>& employees) {
int total_age = 0;
for (const auto& emp : employees) {
total_age += emp.getStartWorkYear();
}
return static_cast<double>(total_age) / employees.size();
}
double calculateAverageSalary(const std::vector<Employee>& employees) {
double total_salary = 0;
for (const auto& emp : employees) {
total_salary += emp.getSalary();
}
return total_salary / employees.size();
}
// 统计教育水平分布
std::map<std::string, int> countEducationLevels(const std::vector<Employee>& employees) {
std::map<std::string, int> level_count;
for (const auto& emp : employees) {
level_count[emp.getEducationLevel()]++;
}
return level_count;
}
int main() {
std::vector<Employee> workers = {
{1, "张三", 'M', 1990, "本科", 5000},
{2, "李四", 'F', 1988, "硕士", 7000},
{3, "王五", 'M', 1995, "专科", 4000}
// 更多员工...
};
double avg_age = calculateAverageAge(workers);
double avg_salary = calculateAverageSalary(workers);
std::cout << "职工平均年龄:" << avg_age << "岁" << std::endl;
std::cout << "职工平均工资:" << avg_salary << "元" << std::endl;
std::map<std::string, int> education_distribution = countEducationLevels(workers);
std::cout << "各文化程度职工人数分布:" << std::endl;
for (const auto& pair : education_distribution) {
std::cout << pair.first << ": " << pair.second << "人" << std::endl;
}
return 0;
}
```
在这个例子中,我们首先定义了一个`Employee`类,包含了每个员工的基本信息,并提供了一些获取属性的方法。然后,我们定义了计算平均年龄和工资以及统计教育水平分布的辅助函数。在`main`函数里,我们创建了一组员工实例并执行上述操作。
阅读全文