基于 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 结构体定义校友信息,包含多个成员变量来存储校友的个人信息。
  • 通过用户输入来实现各种功能,包括添加、显示、查询、修改、删除、排序等操作。
  • 使用 ofstreamifstream 类实现校友信息的保存和加载,方便数据持久化存储。
  • 程序中还使用了 stringstream 类来简化文件读写操作。

注意:

  • 此程序仅为示例,可能需要根据实际需求进行相应的修改和完善。
  • 可以根据实际情况添加更多功能,例如搜索校友信息、统计校友数量等。
  • 可以对程序进行进一步优化,例如使用更强大的数据结构、提高代码效率等。
C++ 校友录管理系统程序设计 - 轻松管理校友信息

原文地址: https://www.cveoy.top/t/topic/o6wX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录