C++ 校友录管理系统程序设计 - 轻松管理校友信息
基于 C++ 的校友录管理系统程序设计
本程序示例提供了一个简单的校友录管理系统,可以实现添加、查询、修改、删除、排序校友信息,并支持将数据保存到文件和从文件加载。
基本要求:
- 校友的信息包括姓名、性别、年龄、届级、系、班级、通讯地址、电话、QQ、email 等。
功能要求:
- 能够实现数据的录入、查询(按姓名、届级、系、班级)、修改、删除、排序(按姓名、届级),以及校友信息读写文件。
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
struct Alumni {
string name;
string gender;
int age;
string batch;
string department;
string className;
string address;
string phoneNumber;
string qq;
string email;
};
void addAlumni(vector<Alumni>& alumniList) {
Alumni alumni;
cout << '请输入校友的姓名:';
cin >> alumni.name;
cout << '请输入校友的性别:';
cin >> alumni.gender;
cout << '请输入校友的年龄:';
cin >> alumni.age;
cout << '请输入校友的届级:';
cin >> alumni.batch;
cout << '请输入校友的系:';
cin >> alumni.department;
cout << '请输入校友的班级:';
cin >> alumni.className;
cout << '请输入校友的通讯地址:';
cin >> alumni.address;
cout << '请输入校友的电话:';
cin >> alumni.phoneNumber;
cout << '请输入校友的 QQ:';
cin >> alumni.qq;
cout << '请输入校友的 email:';
cin >> alumni.email;
alumniList.push_back(alumni);
cout << '校友信息添加成功!' << endl;
}
void displayAlumni(const Alumni& alumni) {
cout << '姓名:' << alumni.name << endl;
cout << '性别:' << alumni.gender << endl;
cout << '年龄:' << alumni.age << endl;
cout << '届级:' << alumni.batch << endl;
cout << '系:' << alumni.department << endl;
cout << '班级:' << alumni.className << endl;
cout << '通讯地址:' << alumni.address << endl;
cout << '电话:' << alumni.phoneNumber << endl;
cout << 'QQ:' << alumni.qq << endl;
cout << 'email:' << alumni.email << endl;
cout << endl;
}
void displayAlumniList(const vector<Alumni>& alumniList) {
for (const auto& alumni : alumniList) {
displayAlumni(alumni);
}
}
void searchAlumni(const vector<Alumni>& alumniList) {
string keyword;
cout << '请输入查询关键字:';
cin >> keyword;
vector<Alumni> searchResult;
for (const auto& alumni : alumniList) {
if (alumni.name == keyword || alumni.batch == keyword || alumni.department == keyword || alumni.className == keyword) {
searchResult.push_back(alumni);
}
}
if (searchResult.empty()) {
cout << '未找到匹配的校友信息!' << endl;
} else {
cout << '查询结果:' << endl;
displayAlumniList(searchResult);
}
}
void modifyAlumni(vector<Alumni>& alumniList) {
string keyword;
cout << '请输入要修改信息的校友姓名:';
cin >> keyword;
for (auto& alumni : alumniList) {
if (alumni.name == keyword) {
cout << '请输入新的校友信息:' << endl;
cout << '姓名:';
cin >> alumni.name;
cout << '性别:';
cin >> alumni.gender;
cout << '年龄:';
cin >> alumni.age;
cout << '届级:';
cin >> alumni.batch;
cout << '系:';
cin >> alumni.department;
cout << '班级:';
cin >> alumni.className;
cout << '通讯地址:';
cin >> alumni.address;
cout << '电话:';
cin >> alumni.phoneNumber;
cout << 'QQ:';
cin >> alumni.qq;
cout << 'email:';
cin >> alumni.email;
cout << '校友信息修改成功!' << endl;
return;
}
}
cout << '未找到匹配的校友信息!' << endl;
}
void deleteAlumni(vector<Alumni>& alumniList) {
string keyword;
cout << '请输入要删除信息的校友姓名:';
cin >> keyword;
auto it = remove_if(alumniList.begin(), alumniList.end(), [&](const Alumni& alumni) {
return alumni.name == keyword;
});
if (it != alumniList.end()) {
alumniList.erase(it, alumniList.end());
cout << '校友信息删除成功!' << endl;
} else {
cout << '未找到匹配的校友信息!' << endl;
}
}
bool sortByName(const Alumni& alumni1, const Alumni& alumni2) {
return alumni1.name < alumni2.name;
}
bool sortByBatch(const Alumni& alumni1, const Alumni& alumni2) {
return alumni1.batch < alumni2.batch;
}
void sortAlumni(vector<Alumni>& alumniList) {
int choice;
cout << '请选择排序方式:' << endl;
cout << '1. 按姓名排序' << endl;
cout << '2. 按届级排序' << endl;
cin >> choice;
switch (choice) {
case 1:
sort(alumniList.begin(), alumniList.end(), sortByName);
cout << '根据姓名排序完成!' << endl;
break;
case 2:
sort(alumniList.begin(), alumniList.end(), sortByBatch);
cout << '根据届级排序完成!' << endl;
break;
default:
cout << '无效的选择!' << endl;
break;
}
}
void saveAlumniList(const vector<Alumni>& alumniList, const string& filename) {
ofstream file(filename);
if (file.is_open()) {
for (const auto& alumni : alumniList) {
file << alumni.name << ' ';
file << alumni.gender << ' ';
file << alumni.age << ' ';
file << alumni.batch << ' ';
file << alumni.department << ' ';
file << alumni.className << ' ';
file << alumni.address << ' ';
file << alumni.phoneNumber << ' ';
file << alumni.qq << ' ';
file << alumni.email << endl;
}
cout << '校友信息保存成功!' << endl;
} else {
cout << '无法打开文件!' << endl;
}
}
void loadAlumniList(vector<Alumni>& alumniList, const string& filename) {
ifstream file(filename);
if (file.is_open()) {
alumniList.clear();
string line;
while (getline(file, line)) {
Alumni alumni;
stringstream ss(line);
ss >> alumni.name;
ss >> alumni.gender;
ss >> alumni.age;
ss >> alumni.batch;
ss >> alumni.department;
ss >> alumni.className;
ss >> alumni.address;
ss >> alumni.phoneNumber;
ss >> alumni.qq;
ss >> alumni.email;
alumniList.push_back(alumni);
}
cout << '校友信息加载成功!' << endl;
} else {
cout << '无法打开文件!' << endl;
}
}
int main() {
vector<Alumni> alumniList;
string filename = 'alumni_list.txt'; // 文件名可以根据需要自行修改
int choice;
while (true) {
cout << '======================' << endl;
cout << '校友录管理系统' << endl;
cout << '======================' << endl;
cout << '1. 添加校友信息' << endl;
cout << '2. 显示所有校友信息' << endl;
cout << '3. 查询校友信息' << endl;
cout << '4. 修改校友信息' << endl;
cout << '5. 删除校友信息' << endl;
cout << '6. 排序校友信息' << endl;
cout << '7. 保存校友信息到文件' << endl;
cout << '8. 从文件加载校友信息' << endl;
cout << '0. 退出系统' << endl;
cout << '======================' << endl;
cout << '请选择操作:';
cin >> choice;
switch (choice) {
case 1:
addAlumni(alumniList);
break;
case 2:
displayAlumniList(alumniList);
break;
case 3:
searchAlumni(alumniList);
break;
case 4:
modifyAlumni(alumniList);
break;
case 5:
deleteAlumni(alumniList);
break;
case 6:
sortAlumni(alumniList);
break;
case 7:
saveAlumniList(alumniList, filename);
break;
case 8:
loadAlumniList(alumniList, filename);
break;
case 0:
cout << '感谢使用校友录管理系统,再见!' << endl;
return 0;
default:
cout << '无效的选择!' << endl;
break;
}
}
}
程序说明:
- 程序使用了
vector容器来存储校友信息,方便管理和操作。 - 使用
struct结构体定义校友信息,包含多个成员变量来存储校友的个人信息。 - 通过用户输入来实现各种功能,包括添加、显示、查询、修改、删除、排序等操作。
- 使用
ofstream和ifstream类实现校友信息的保存和加载,方便数据持久化存储。 - 程序中还使用了
stringstream类来简化文件读写操作。
注意:
- 此程序仅为示例,可能需要根据实际需求进行相应的修改和完善。
- 可以根据实际情况添加更多功能,例如搜索校友信息、统计校友数量等。
- 可以对程序进行进一步优化,例如使用更强大的数据结构、提高代码效率等。
原文地址: https://www.cveoy.top/t/topic/o6wX 著作权归作者所有。请勿转载和采集!