编写一个人事管理系统代码,运用链表,要求具有以下功能,员工信息录入,修改,且有输入文件和输出文件
时间: 2024-09-12 20:12:56 浏览: 43
创建一个人事管理系统,使用链表存储员工信息,涉及到的主要步骤包括定义员工节点结构、创建链表操作(如插入、查找、修改),以及读写文件的功能。这里是一个简化的示例代码来实现这些需求:
首先,我们需要定义一个`Employee`节点结构,包含员工的基本信息和指向下一个节点的指针:
```cpp
#include <iostream>
#include <fstream>
struct Employee {
std::string name;
int id;
// 其他可能的属性,如职位等
Employee* next; // 指向下个员工
Employee(const std::string& name, int id)
: name(name), id(id), next(nullptr) {}
};
```
接下来,我们可以实现链表的一些基本操作:
```cpp
class PersonnelManager {
private:
Employee* head;
public:
void addEmployee(const std::string& name, int id) {
Employee* newNode = new Employee(name, id);
if (!head) {
head = newNode;
} else {
Employee* current = head;
while (current->next) {
current = current->next;
}
current->next = newNode;
}
}
void modifyEmployee(int id, const std::string& newName) {
Employee* current = head;
while (current && current->id != id) {
current = current->next;
}
if (current) {
current->name = newName;
} else {
throw std::runtime_error("Employee not found");
}
}
// 文件操作部分省略,因为这里主要关注链表逻辑
// 你可以添加成员函数如readFromFile() 和 writeToFile() 来处理文件操作
};
```
至于文件操作,你需要两个函数,一个是从文件读取员工数据并添加到链表,另一个是将链表中的数据写入文件:
```cpp
void PersonnelManager::readFromFile(const std::string& filename) {
std::ifstream file(filename);
if (file.is_open()) {
std::string line;
while (std::getline(file, line)) {
// 解析每一行数据并调用addEmployee()
// 格式可能是 "Name,ID",具体解析方式取决于文件格式
}
file.close();
} else {
std::cerr << "Could not open file." << std::endl;
}
}
void PersonnelManager::writeToFile(const std::string& filename) {
std::ofstream file(filename);
if (file.is_open()) {
Employee* current = head;
while (current) {
file << current->name << "," << current->id << "\n";
current = current->next;
}
file.close();
} else {
std::cerr << "Could not open file for writing." << std::endl;
}
}
```
要完成这个人事管理系统,你需要一个主程序来驱动整个流程,例如从命令行接收用户的输入,选择相应的操作(如`add`, `modify`, `read`, `write`)并调用相应的方法。
阅读全文