编写一个人事管理系统代码,运用链表,要求具有以下功能,员工信息录入,修改,添加,删除 查询(按名字查询和按职工号查询),且有输入文件和输出文件
时间: 2024-09-11 09:10:43 浏览: 47
要创建一个人事管理系统,我们可以使用C++来设计,因为它提供了强大的数据结构支持,如链表。这里我们将使用`std::list`作为基础数据结构,但请注意,C++标准库没有直接提供`Employee`链表节点的模板,所以我们需要自己定义。
首先,我们定义一个简单的`Employee`类:
```cpp
class Employee {
public:
std::string name;
int worker_id;
// 其他可能需要的属性和构造/析构函数
Employee(const std::string& n, int w) : name(n), worker_id(w) {}
};
```
然后我们需要创建链表容器来存储员工:
```cpp
#include <list>
class PersonManager {
private:
std::list<Employee> employees;
public:
void addEmployee(const Employee& e) {
employees.push_back(e);
}
void removeEmployee(int worker_id_to_remove) {
employees.remove_if([worker_id_to_remove](const Employee& e) { return e.worker_id == worker_id_to_remove; });
}
void updateEmployee(int old_worker_id, const Employee& updated_employee) {
for (auto it = employees.begin(); it != employees.end(); ++it) {
if (it->worker_id == old_worker_id) {
*it = updated_employee;
break;
}
}
}
void searchByName(const std::string& name) {
for (const auto& employee : employees) {
if (employee.name == name) {
// 打印或返回找到的员工
}
}
}
void searchByWorkerId(int worker_id) {
for (const auto& employee : employees) {
if (employee.worker_id == worker_id) {
// 打印或返回找到的员工
}
}
}
};
```
接下来,我们需要处理文件操作,使用`fstream`从文件读取数据并写入数据:
```cpp
void loadEmployeesFromFile(const std::string& filename, PersonManager& pm) {
std::ifstream file(filename);
if (file.is_open()) {
std::string line;
while (getline(file, line)) {
std::istringstream iss(line);
std::string name;
int id;
if (!(iss >> name >> id)) {
// 处理错误,例如空行或格式不正确
} else {
Employee emp(name, id);
pm.addEmployee(emp);
}
}
file.close();
} else {
std::cerr << "Failed to open the file." << std::endl;
}
}
void saveEmployeesToFile(const std::string& filename, const PersonManager& pm) {
std::ofstream file(filename);
if (file.is_open()) {
for (const auto& employee : pm.employees) {
file << employee.name << " " << employee.worker_id << "\n";
}
file.close();
} else {
std::cerr << "Failed to open the file for writing." << std::endl;
}
}
```
现在你可以用这些函数来构建一个完整的人事管理系统了。你可以根据需求调用这些函数进行员工管理、读取和保存数据到文件。
阅读全文