用C++编写一个程序实现读者管理系统,要求实现四个内容,1.浏览一个txt文本中的所有读者信息(包括证件号,姓名,性别,工作单位,证件状态)2.增加新的读者的信息到txt文本中3.用姓名或证件号查询某个读者信息4.修改某个读者的信息。
时间: 2024-11-10 09:26:08 浏览: 14
在C++中,我们可以使用标准库如fstream和string来实现这个简单的读者管理系统。以下是一个简化的例子,展示了如何基本地操作一个txt文件:
```cpp
#include <iostream>
#include <fstream>
#include <map>
#include <string>
// 定义读者类
class Reader {
public:
std::string id;
std::string name;
char gender;
std::string work_unit;
bool status; // 证件状态
Reader(std::string id, std::string name, char gender, std::string work_unit) : id(id), name(name), gender(gender), work_unit(work_unit), status(true) {}
};
// 读取txt文件函数
void load ReadersFromTXT(const std::string& filename) {
std::ifstream file(filename);
if (!file.is_open()) {
std::cerr << "Failed to open file!" << std::endl;
return;
}
std::map<std::string, Reader> readerMap;
std::string line;
while (std::getline(file, line)) {
std::istringstream iss(line);
std::string id, name, genderStr, work_unit;
char sex;
if (!(iss >> id >> name >> sex >> work_unit)) {
std::cerr << "Invalid data format in file!" << std::endl;
continue;
}
sex = sex == 'M' ? 'm' : 'f'; // 根据字符转换性别
readerMap[id] = Reader(id, name, sex, work_unit);
}
file.close();
}
// 添加新读者函数
void addReaderToTXT(const std::string& filename, const Reader& newReader) {
std::ofstream file(filename, std::ios_base::app);
if (!file.is_open()) {
std::cerr << "Failed to append to file!" << std::endl;
return;
}
file << newReader.id << " " << newReader.name << " " << newReader.gender << " " << newReader.work_unit << " " << (newReader.status ? "active" : "inactive") << "\n";
file.close();
}
// 查询读者函数
bool searchReaderByName(const std::map<std::string, Reader>& readers, const std::string& name) {
auto it = readers.find(name);
return it != readers.end();
}
// 修改读者信息函数(这里仅示例,实际应用需要考虑文件同步问题)
void modifyReader(const std::map<std::string, Reader>& readers, std::string& id, std::string new_name, char new_gender, std::string new_work_unit) {
if (searchReaderByName(readers, id)) {
readers[id].name = new_name;
readers[id].gender = new_gender;
readers[id].work_unit = new_work_unit;
} else {
std::cout << "Reader not found!" << std::endl;
}
}
int main() {
loadReadersFromTXT("readers.txt");
// 使用readerMap进行操作...
// 示例:
Reader newReader("123456", "张三", 'm', "A公司");
addReaderToTXT("readers.txt", newReader);
std::string queryName = "张三";
if (searchReaderByName(readers, queryName)) {
std::cout << "Found reader with name " << queryName << ": " << readers[queryName].id << std::endl;
} else {
std::cout << "No reader found with name " << queryName << std::endl;
}
return 0;
}
```
注意,此代码只是一个基础示例,实际项目中还需要处理错误、异常以及文件同步等问题。
阅读全文