学生信息管理系统(C++)

来源:互联网 发布:淘宝开店挣钱吗 编辑:程序博客网 时间:2024/05/08 01:07

学生信息管理系统中学生信息包含学号,姓名,性别以及年龄,能够进行的操作有输入学生信息,添加,删除,修改和查询某个学生信息,还有显示全部学生信息和删除全部学生信息。程序的主体是一个student类,数据成员为学生信息,成员函数是对学生信息的操作,主要思路是将输入每个学生信息分别保存到student类的对象中,然后将这些对象保存到vector容器中,可以在容器内对学生信息进行添加,删除等操作,然后再将容器上的内容写入到文本文件上,这样之前写入的学生信息就不会随着退出系统而消失。
下面是程序源码:


#include<iostream>#include<fstream>#include<sstream>#include<string>#include<vector>#include<algorithm>using namespace std;class student{    friend vector<student> save();    friend void print(vector<student>&);    friend void write(vector<student>&);public:    student() = default;    ~student() = default;    void set();     //初始化信息,第一次对信息的录入    void add();     //添加学生信息    void del();     //删除某学生信息    void change();      //修改某学生信息    void search();      //查询某学生信息    void display();     //显示全部学生信息    void alldel();      //删除全部学生信息private:    string name, sex, num, age;     //学生信息包含学号,姓名,性别,年龄};vector<student> save();void print(vector<student>&);void write(vector<student>&);void student::set(){    string setname, setsex, setnum, setage;    vector<student> vec=save();    cout << "当学号输入为'#'时,停止输入!!!" << endl;    while (1)       //依次录入相应个数的学生信息    {        cout << "请输入学号:" << endl;        cin >> setnum;        if (setnum == "#") break;        if (setnum != "#")        {            student data;            data.num = setnum;            cout << "请输入姓名:" << endl;            cin >> setname;            data.name = setname;            cout << "请输入性别:" << endl;            cin >> setsex;            data.sex = setsex;            cout << "请输入年龄:" << endl;            cin >> setage;            data.age = setage;            vec.push_back(data);        }    }    write(vec);}void student::add(){    string addnum, addage,addname, addsex;    vector<student> vec = save();    student data;    cout << "请输入您要添加的数据" << endl;    cout << "请输入学号:" << endl;    cin >> data.num;    cout << "请输入姓名:" << endl;    cin >> data.name;    cout << "请输入性别:" << endl;    cin >> data.sex;    cout << "请输入年龄:" << endl;    cin >> data.age;    vec.push_back(data);    write(vec);    cout << "添加成功!" << endl;}void student::del(){    vector<student> vec=save();    print(vec);    size_t k;    cout << "你想删除第几个?" << endl;    cin >> k;    k = k - 1;    if (k >= vec.size())    {        cerr << "out of the size!" << endl;        exit(1);    }    auto p = vec.begin() + k;    vec.erase(p);       //删除迭代器所指的对象    write(vec);    cout << "删除成功!" << endl;}void student::change(){    vector<student> vec=save();    print(vec);    int k;    student item;    cout << "修改第几个数据?" << endl;    cin >> k;    k = k - 1;    cout << "请输入新的数据:" << endl;    cout << "请输入学号:" << endl;    cin >> item.num;    cout << "请输入姓名:" << endl;    cin >> item.name;    cout << "请输入性别:" << endl;    cin >> item.sex;    cout << "请输入年龄:" << endl;    cin >> item.age;    *(vec.begin() + k) = item;    write(vec);    cout << "修改成功!" << endl;}void student::search(){    string searchnum, searchname;    vector<student> vec=save();    char ch;    int w = 0;    cout << "a.按学号查找    b.按姓名查找" << endl;    cout << "请输入a或者b!" << endl;    cin >> ch;    if (ch == 'a')    {        cout << "请输入学号!" << endl;        cin >> searchnum;        for (auto& i : vec)            if (i.num == searchnum)            {                w = 1;                cout << "   学号  姓名  性别  年龄  " << endl;                cout << "   " << i.num;                cout << "   " << i.name;                cout << "   " << i.sex;                cout << "   " << i.age << endl;            }        if (w == 0)            cout << "无此人信息!" << endl;    }    else if (ch == 'b')    {        cout << "请输入姓名!" << endl;        cin >> searchname;        for (auto& i : vec)            if (i.name == searchname)            {                w = 1;                cout << "   学号  姓名  性别  年龄  " << endl;                cout << "   " << i.num;                cout << "   " << i.name;                cout << "   " << i.sex;                cout << "   " << i.age << endl;            }        if (w == 0)            cout << "无此人信息!" << endl;    }    else cout << "没有此选项!" << endl;}void student::display(){    vector<student> vec=save();    print(vec);}void student::alldel(){    vector<student> vec = save();    vec.erase(vec.begin(), vec.end());    write(vec);}vector<student> save()   //将文本中的学生信息保存到vector上{    vector<student> vec;    string line;    ifstream infile("C:/Users/leizh/Documents/Visual Studio 2015/Projects/SIMC/SIMC/file.txt", iostream::in);    if (!infile)    {        cerr << " open error" << endl;        exit(1);    }    while (getline(infile, line))    {        student data;        istringstream item(line);        item >> data.num >> data.name >> data.sex >> data.age;        vec.push_back(data);    }    infile.close();    return vec;}void write(vector<student>& v)      //  将vector上保存的学生信息写入到文本中{    sort(v.begin(), v.end(), [](const student& a, const student& b) {return a.num < b.num; });  //  对学生信息按学号排序    ofstream outfile("C:/Users/leizh/Documents/Visual Studio 2015/Projects/SIMC/SIMC/file.txt", iostream::out);    if (!outfile)    {        cerr << " open error" << endl;        exit(1);    }    for (auto& i : v)    {        outfile << i.num << "   ";        outfile << i.name << "   ";        outfile << i.sex << "   ";        outfile << i.age << "   " << endl;    }    outfile.close();}void print(vector<student>& v)      //输出vector上保存的学生信息{    cout << "   学号  姓名  性别  年龄  " << endl;    for (auto& i : v)    {        cout << "   " << i.num;        cout << "   " << i.name;        cout << "   " << i.sex;        cout << "   " << i.age << endl;    }}student stu;void main(){    void menu();    menu();    char ch;    cin >> ch;    while (ch != '0')    {        system("cls");     //清屏        switch (ch)        {        case '1':stu.set(); break;        case '2':stu.add(); break;        case '3':stu.del(); break;        case '4':stu.change(); break;        case '5':stu.search(); break;        case '6':stu.display(); break;        case '7':stu.alldel(); break;        case '0':cout << "退出系统!"; break;        default:cout << "没有此选项!" << endl; break;        }        menu();        cin >> ch;    }}void menu()      //主菜单{    cout << endl << 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 << "     *   0.退出                        *" << endl;    cout << "     * * * * * * * * * * * * * * * * * *" << endl;}

Demo:

这里写图片描述

这里写图片描述

这里写图片描述

原创粉丝点击