实现公司员工的管理,设计employee 类,包含员工基本信息:编号,姓名,性别,出生日期和职务。出生日期使用自定义的Date 类。Employee 类有可以从外部访问类成员的友元函数。程序的基本功能有:1.职工信息的录入2.职工信息的显示。3.用对象数据保存已输入的职工对象4.可以修改人员的基本信息5.可以通过编号或姓名进行人员查询(使用c++)
时间: 2023-06-20 21:04:07 浏览: 457
好的,下面是一个简单的 Employee 类的实现:
```cpp
#include <string>
#include "Date.h" // 自定义的日期类
class Employee {
public:
Employee(int num, std::string name, char gender, Date birthdate, std::string position)
: num_(num), name_(name), gender_(gender), birthdate_(birthdate), position_(position) {}
friend void display(const Employee& emp); // 友元函数,可以访问类的私有成员
void modify_name(std::string new_name) { name_ = new_name; }
void modify_gender(char new_gender) { gender_ = new_gender; }
void modify_birthdate(Date new_birthdate) { birthdate_ = new_birthdate; }
void modify_position(std::string new_position) { position_ = new_position; }
int get_num() const { return num_; }
std::string get_name() const { return name_; }
char get_gender() const { return gender_; }
Date get_birthdate() const { return birthdate_; }
std::string get_position() const { return position_; }
private:
int num_;
std::string name_;
char gender_;
Date birthdate_;
std::string position_;
};
```
其中 `Date` 是自定义的日期类,可以根据需要自行实现。这里只列出 `Employee` 类的基本框架,实现了基本的构造函数、访问器和修改器等基本函数。
下面是一个简单的使用示例,包括录入、显示、修改和查询等操作:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 使用 std::find_if 算法
#include "Employee.h"
// 友元函数,可以访问 Employee 类的私有成员
void display(const Employee& emp) {
std::cout << "编号:" << emp.get_num() << std::endl;
std::cout << "姓名:" << emp.get_name() << std::endl;
std::cout << "性别:" << emp.get_gender() << std::endl;
std::cout << "出生日期:" << emp.get_birthdate().to_string() << std::endl;
std::cout << "职务:" << emp.get_position() << std::endl;
std::cout << std::endl;
}
int main() {
std::vector<Employee> employees; // 存储职工信息的容器
// 录入职工信息
employees.emplace_back(Employee(1, "张三", 'M', Date(1990, 1, 1), "经理"));
employees.emplace_back(Employee(2, "李四", 'F', Date(1995, 2, 2), "助理"));
employees.emplace_back(Employee(3, "王五", 'M', Date(2000, 3, 3), "程序员"));
// 显示职工信息
std::cout << "所有职工信息:" << std::endl;
for (const auto& emp : employees) {
display(emp);
}
// 修改职工信息
std::cout << "修改职工信息:" << std::endl;
auto it = std::find_if(employees.begin(), employees.end(),
[](const Employee& emp) { return emp.get_name() == "张三"; });
if (it != employees.end()) {
it->modify_position("总经理");
display(*it);
}
// 查询职工信息
std::cout << "查询职工信息:" << std::endl;
int num_to_find = 2;
auto it2 = std::find_if(employees.begin(), employees.end(),
[num_to_find](const Employee& emp) { return emp.get_num() == num_to_find; });
if (it2 != employees.end()) {
display(*it2);
} else {
std::cout << "找不到编号为 " << num_to_find << " 的职工。" << std::endl;
}
std::string name_to_find = "王五";
auto it3 = std::find_if(employees.begin(), employees.end(),
[name_to_find](const Employee& emp) { return emp.get_name() == name_to_find; });
if (it3 != employees.end()) {
display(*it3);
} else {
std::cout << "找不到姓名为 " << name_to_find << " 的职工。" << std::endl;
}
return 0;
}
```
需要注意的是,这里只是一个简单的示例代码,实际应用中可能需要更完善的错误处理、数据持久化等功能。
阅读全文