返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现图书管理系统简易版的方法
  • 717
分享到

C++实现图书管理系统简易版的方法

2023-06-29 11:06:29 717人浏览 独家记忆
摘要

本文小编为大家详细介绍“c++实现图书管理系统简易版的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++实现图书管理系统简易版的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。包括管理员端和学生端,可以

本文小编为大家详细介绍“c++实现图书管理系统简易版的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++实现图书管理系统简易版的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

包括管理员端和学生端,可以对图书进行借阅,归还,还可以修改账号登陆密码等

#include<iOStream>#include<string>#include<string.h>#include<cstdio>#include<coNIO.h>#include<fstream>#include<cstring>#include<iomanip>#include<alGorithm>#include<regex>#include<windows.h>#include<sstream>//stringstream要使用到的头文件#define STUDENT_FILE "student_text.txt"#define BOOK_FILE "book_text.txt"#define CLASS_FILE "class.txt"#define MAX 1000#define MIN 100using namespace std;class Student;class Book;class Clazz;void initialize();//初始化void Manager_Menu();void Student_Menu();void existSystem();  //退出图书管理系统 void show_book_base();string input_password();//不可见输入密码int student_id_exist(int id);//查找用户是否存在int manager_id_exist(int id);int book_id_exist(int id);//查找书籍是否存在int class_id_exist(int id);int random_id(); //产生随机图书编号void book_find();void load_infORMation();void update_information();void reGISt_windows();void regist_manager();void regist_student();bool student_cmp(Student a, Student b);bool class_cmp(Clazz a, Clazz b);bool book_cmp(Book a, Book b);class Book{    int book_id;                    //书籍编号    string book_name;               //书籍名称    int book_total_num;             //该类书籍总数    string book_author;             //书籍作者    string book_type;               //书籍分类    string book_present;            //书籍简介    int book_student_len;           //每种书共有几人选    int student_id[MIN];       //借阅该书籍的学生学号    string student_name[MIN];  //借阅该书籍的学生姓名public:    Book()    {        book_id = -1;        book_total_num = 0;        book_student_len = 0;        book_type = "";        book_present = "";        memset(student_id, 0, MIN);        for (int i = 0; i < MIN; i++)        {            student_name[i] = "";        }    }    void set_book_name(string book_name)    {        this->book_name = book_name;    }    void set_book_author(string book_author)    {        this->book_author = book_author;    }    void set_book_type(string book_type)    {        this->book_type = book_type;    }    void set_book_total_num(int book_total_num)    {        this->book_total_num = book_total_num;    }    void set_book_id(int book_id)    {        this->book_id = book_id;    }    int get_book_id()    {        return book_id;    }    void set_book_information(int book_id, string book_name, int book_total_num, string book_author, string book_type)    {        set_book_id(book_id);        set_book_name(book_name);        set_book_author(book_author);        set_book_type(book_type);        set_book_total_num(book_total_num);        //set_book_present(book_present);    }    void set_book_present(string book_present)    {        this->book_present = book_present;    }    string& get_book_present()    {        return book_present;    }    void show_book_information();    friend int book_id_exist(int id);    friend void show_book_base();    friend class Student;    friend class Manager;    friend void initialize();    friend void load_information();    friend void update_information();};Book book[MAX];int book_len = 0;class User{protected:    int id;    string name;    string passWord;    int mark;public:    User()    {        id = -1;        mark = 0;        name = "";        password = "";    }    void password_update();    virtual void book_insert()=0;    virtual void book_delete()=0;    friend void initialize();    void set_id(int id)    {        this->id = id;    }    void set_name(string name)    {        this->name = name;    }    void set_mark(int mark)    {        this->mark = mark;    }    void set_password(string password)    {        this->password = password;    }    int get_id()    {        return  id;    }    int get_mark()    {        return this->mark;    }    string get_name()    {        return name;    }    string get_password()    {        return password;    }};class Student:public User{    int student_grade;    //入学年份--年级    int class_id;    string student_gender;    int student_book_len;//借阅书籍总数public:    Student()    {        id = -1;  //id为-1时表示该账户无效        class_id = -1;        name = "";        student_gender = "";        student_grade = -1;        student_book_len = 0;    }    Student operator = (const Student& p);    void set_class_id(int id)    {        class_id = id;    }    void set_student_grade(int student_grade)    {        this->student_grade = student_grade;    }    void set_student_gender(string student_gender)    {        this->student_gender = student_gender;    }    int get_class_id()    {        return class_id;    }    int get_student_grade()    {        return student_grade;    }    string get_student_gender()    {        return  student_gender;    }        //学生    void book_insert();    void student_information_view();    void book_delete();    void student_information_update();    //学生修改账号密码        void show_self();    void student_windows();     friend void eroll_windows();     friend class Manager;    friend void load_information();    friend void update_information();    friend bool student_cmp(Student a,Student b);};Student student[MAX];int student_len = 0;class Manager :public User{public:    Manager()    {        id = -1;        mark = 0;        name = "";        password = "";    }    Manager(int id,int mark,string name,string password)    {        this->id =id;        this->mark = mark;        this->name = name;        this->password = password;    }    Manager operator = (const Manager& p);    //管理员对学生账号的管理    void student_insert();    void student_delete();    void student_view();     //管理员对书籍的管理    void book_insert();    void book_delete();    void book_view();    void book_update();    //班级    void class_insert();    void class_update();    void class_view();    void class_delete();    void manager_windows();    void manager_insert();        friend void load_information();    friend void update_information();};Manager manager[MIN];int manager_len = 0;class Clazz{    int class_id;    string class_name;    string teacher_name;    int student_len;public:    Clazz()    {        class_id = -1;        class_name = "";        teacher_name = "";        student_len = 0;    }    int get_class_id()    {        return class_id;    }    string get_class_name()    {        return class_name;    }    string get_teacher_name()    {        return teacher_name;    }    void set_class_id(int id)    {        this->class_id =id;    }    void set_class_name(string name)    {        this->class_name = name;    }    void set_teacher_name(string name)    {        this->teacher_name = name;    }        friend int class_id_exist(int id);    friend void load_information();    friend void update_information();};Clazz clazz[MIN];int class_len = 0; int main(){    initialize();    //登录    regist_windows();    system("pause");    return 0;} void initialize(){    system("title 图书信息管理系统");    system("color f0");    system("mode con cols=90 lines=38");    srand((int)time(0));     load_information();    Manager p1;    p1.set_id(111111);    p1.set_name("张晖");    p1.set_password("111111");    manager[0]=p1; manager_len++;    Manager p2(222222,1, "李四", "222222");    manager[1]=p2; manager_len++;}void Manager_Menu(){     cout << " ________________________________________________________________________________________" << endl;    cout << " |                             图书管理管理系统                                         |" << endl;    cout << " |______________________________________________________________________________________|" << endl;    cout << " |              1.增加学生信息              |              13.修改登录密码              |" << endl;    cout << " |              2.查看学生信息              |              14.退出当前账号              |" << endl;    cout << " |              3.删除学生信息              |              0.退出管理系统               |" << endl;    cout << " |__________________________________________|___________________________________________|" << endl;    cout << " |              4.增加书籍信息              |              8.增加班级信息               |" << endl;    cout << " |              5.查看书籍信息              |              9.查看班级信息               |" << endl;    cout << " |              6.修改书籍信息              |              10.修改班级信息              |" << endl;    cout << " |              7.删除书籍信息              |              11.删除班级信息              |" << endl;    cout << " |                                          |              12.增加管理员                |" << endl;    cout << " |__________________________________________|___________________________________________|" << endl;    cout << endl;}void Student_Menu(){    cout << "           ______________________________________________" << endl;    cout << "           |                学生图书系统                |" << endl;    cout << "           |____________________________________________|" << endl;    cout << "           |               1.选择借阅书籍               |" << endl;    cout << "           |               2.查找书籍信息               |" << endl;    cout << "           |               3.归还借阅书籍               |" << endl;    cout << "           |               4.查询个人信息               |" << endl;    cout << "           |____________________________________________|" << endl;    cout << "           |               5.修改个人信息               |" << endl;    cout << "           |               6.修改登录密码               |" << endl;    cout << "           |               7.退出当前账号               |" << endl;    cout << "           |               0.退出管理系统               |" << endl;    cout << "           |____________________________________________|" << endl;    cout << endl;}void Manager::manager_windows(){    while (true)    {        int choice = 0;        Manager_Menu();        cout << "\t\t请输入您的选择:" << endl;        cout << "          ";        cin >> choice;        switch (choice)        {        case 0://退出        {            existSystem();            break;        }        case 1://添加        {            student_insert();            break;        }        case 2://显示        {            student_view();            break;        }        case 3://删除        {            student_delete();            break;        }        case 4:        {            book_insert();            break;        }        case 5:        {            book_view();//book_find();            break;        }        case 6://查找        {            book_update();            break;        }        case 7:        {            book_delete();            break;        }        case 8:        {            class_insert();            break;        }        case 9:        {            class_view();            break;        }        case 10://查找        {            class_update();            break;        }        case 11:        {            class_delete();            break;        }        case 12:        {            manager_insert();            break;        }        case 13:        {            password_update();            break;        }        case 14://回到登录界面        {            system("cls");            update_information();            regist_windows();            break;        }        default:        {            cout << "没有该选项!" << endl;            system("cls");            break;        }        }    }}void Student::student_windows(){     while (true)    {        int choice = 0;        Student_Menu();        cout << "\t\t请输入您的选择:" << endl;        cout << "         ";        cin >> choice;        switch (choice)        {        case 0://退出        {            existSystem();            break;        }        case 1://添加        {            book_insert();            break;        }        case 2:        {            book_find();            break;        }        case 3:        {            book_delete();            break;        }        case 4:        {            student_information_view();            break;        }        case 5:        {            student_information_update();            break;        }        case 6:        {            password_update();            break;        }        case 7://回到登录界面        {            system("cls");            update_information();            regist_windows();            break;        }        default:        {            cout << "没有该选项" << endl;            system("cls");            break;        }        }    }}void regist_windows(){    int select = 0;    cout << "\t\t1.管理员登录" << endl;    cout << "\t\t2.学生登录" << endl;    cin >> select;    system("cls");    if (select == 1)    {        regist_manager();    }    else if (select == 2)    {        regist_student();    }    else    {        cout << "该选项不存在!请选择1或2!" << endl;    }}void regist_manager(){    cout << "\t用户名:";    int temp_user_id = -1; cin >> temp_user_id; cout << endl;    cout << "\t密码:";    string temp_password;  temp_password = input_password();    int flag = 0;    int position = manager_id_exist(temp_user_id);    if (position == -1)    {        cout << "该用户不存在!" << endl;        regist_manager();     }    else if (manager[position].get_password() == temp_password)    {        system("cls");        while (true)        {            manager[position].manager_windows();        }    }    else    {        cout << "\t\t用户名或密码错误" << endl << endl;        regist_manager();    }    system("pause");    system("cls");}void regist_student(){    int temp_user_id = 0;    string temp_password;    cout << "\t用户名:";    cin >> temp_user_id;    cout << endl;    cout << "\t密码:";    temp_password = input_password();    int flag = 0;    int position = student_id_exist(temp_user_id);    if (position == -1)    {        cout << "\t该用户不存在!" << endl;        regist_student();    }    else if (student[position].get_password() == temp_password)    {        system("cls");        while (true)        {            student[position].student_windows();        }    }    else    {        cout << "\t\t用户名或密码错误" << endl << endl;        regist_student();    }    system("pause");    system("cls");}void Book::show_book_information(){    cout << "-------------------------------------------------------------------------------------\n";    cout << " 书名\t\t\t类型\t\t\t\t作者\n";    cout << book_name << "\t\t\t" << book_type << "\t\t\t" << book_author << endl;    cout << "-------------------------------------------------------------------------------------\n";    cout << " 总数\t\t\t剩余量\n";    cout << book_total_num << "\t\t\t" << (book_total_num - book_student_len) << endl;    cout << "-------------------------------------------------------------------------------------\n";    cout << "\t\t\t小说简介\n";    cout << book_present << endl;    cout << "-------------------------------------------------------------------------------------\n";}void User::password_update(){    int flag = 0;    while (true)    {        cout << "请输入旧密码:";        string last_password, new_password1, new_password2;        last_password = input_password();        if (last_password == password)        {            cout << "请输入新密码(大于等于6位):"; new_password1 = input_password();            cout << "请再次输入新密码:";         new_password2 = input_password();            if (new_password1 == new_password2)            {                if ((new_password1.size() >= 6) && (new_password1.size() <= 13))                {                    this->password = new_password1;                    cout << "密码修改成功!" << endl;                    break;                }                else                {                    cout << "密码应大于等于6位!修改失败!" << endl;                }            }            else            {                cout << "两次密码不一致!请重新输入!" << endl;            }        }        else        {            flag++;            if (flag <= 3)            {                cout << "旧密码错误!" << endl;            }            else            {                cout << "密码多次输入错误!返回菜单界面!";                break;            }        }    }    system("pause");    system("cls");} Manager  Manager::operator = (const Manager& p){    this->id = p.id;    this->mark = p.mark;    this->name = p.name;    this->password = p.password;    return *this;}void Manager::student_insert(){    if (student_len > MAX)    {        cout << "信息系统已满,无法添加!" << endl;        return;    }    else    {        Student temp_student;        cout << "请输入学号:" << endl;        int temp_id; cin >> temp_id;        cout << "请输入姓名:" << endl;        string temp_name; cin >> temp_name;        cout << "请输入权限:" << endl;        cout << "1.普通用户权限" << endl;        cout << "2.高级用户权限" << endl;        int temp_mark; cin >> temp_mark;        temp_student.set_mark(temp_mark);        string temp_student_gender;        while (true)        {            cout << "请选择性别:" << endl;            cout << "1.女\n2.男\n";            int choice = 0; cin >> choice;            if (choice == 1)            {                temp_student_gender = "女"; break;            }            else if (choice == 2)            {                temp_student_gender = "男"; break;            }            else            {                cout << "没有该选项!请重新选择!\n";            }        }        int temp_student_grade;        while (true)        {            cout << "请输入年级(入学年份):" << endl;            cout << "1.2018\n2.2019\n3.2020\n4.2021\n";            int choice = 0; cin >> choice;            if (choice == 1)            {                temp_student_grade = 2018; break;            }            else if (choice == 2)            {                temp_student_grade = 2019; break;            }            else if (choice == 3)            {                temp_student_grade = 2020; break;            }            else if (choice == 2)            {                temp_student_grade = 2021; break;            }            else            {                cout << "没有该选项!请重新选择!\n";            }        }        cout << "\t\t班级信息如下\n";        for (int i = 0; i < class_len; i++)            cout << clazz[i].get_class_id() << "\t\t" << clazz[i].get_class_name() << endl;        while (1)        {            cout << "请输入班级编号\n";            int temp_id = 0; cin >> temp_id;            if (class_id_exist(temp_id) != -1)            {                temp_student.set_class_id(temp_id);                break;            }            else            {                cout << "该班级编号不存在!\n";            }        }         string temp_password;        stringstream transform;        transform << temp_id; transform >> temp_password;        temp_student.set_password(temp_password);        temp_student.set_id(temp_id);        temp_student.set_student_grade(temp_student_grade);        temp_student.set_name(temp_name);        temp_student.set_student_gender(temp_student_gender);        student[student_len] = temp_student;               student_len++;        cout << "学生信息添加成功!" << endl;        sort(student, student + student_len, student_cmp);    }    system("pause");    system("cls");}void Manager::student_view(){    cout << "\t\t1.查询单个账号信息" << endl;    cout << "\t\t2.查看所有账号信息" << endl;    int choice; cin >> choice;    if (choice == 1)    {        cout << "\t\t请输入查询账号:" << endl;        int id; cin >> id;        int pos = student_id_exist(id);        if (pos == -1)        {            cout << "\t\t该账号不存在!" << endl;        }        else        {            student[pos].show_self();        }    }    else    {        if (student_len == 0)        {            cout << "当前记录为空" << endl;        }        else        {            cout << "序号:\t姓名:\t学号: \t年级: \t性别\n";            for (int i = 0; i < student_len; i++)            {                cout << i + 1 << "\t\t";                cout << student[i].name << "\t\t" << student[i].id << "\t\t";                if (student[i].student_book_len == 0)                {                    cout << "未借阅书籍";                }                else                {                    for (int j = 0; j < book_len; j++)                    {                        for (int k = 0; k < book[j].book_total_num; k++)                        {                            if (book[j].student_name[k] == student[i].name)                                cout << book[j].book_id << "\t\t" << book[j].book_name << endl;;                        }                    }                }                cout << endl;            }        }    }    system("pause");    system("cls");}void Manager::student_delete(){    cout << "请输入您要删除的学生账号:" << endl;    int temp_id;    cin >> temp_id;    int position = student_id_exist(temp_id);    if (position != -1)    {        for (int i = position; i < student_len - 1; i++)        {            student[i] = student[i + 1];        }        student_len--;        cout << "删除成功" << endl;    }    else    {        cout << "该学生账号不存在!" << endl;    }    system("pause");    system("cls");}void Manager::book_insert(){    int temp_book_id;    string temp_book_name;    show_book_base();    //cout << "请输入想增加的书籍编号:" << endl;    cout << "书籍编号由系统自动生成!" << endl;    temp_book_id = random_id();    cout << "请输入想增加的书籍名称:" << endl;    cin >> temp_book_name;    cout << "请输入书籍数量:" << endl;    int temp_book_len; cin >> temp_book_len;    cout << "请输入书籍作者:" << endl;    string temp_book_author; cin >> temp_book_author;    cout << "请输入书籍分类:" << endl;    string temp_book_type; cin >> temp_book_type;    cout << "请输入书籍简介:" << endl;    string temp_book_present; cin >> temp_book_present;    book[book_len].set_book_information(temp_book_id, temp_book_name, temp_book_len, temp_book_author, temp_book_type);    book[book_len].set_book_present(temp_book_present);    book_len++;    cout << "书籍信息添加成功!" << endl;    sort(book, book + book_len, book_cmp);    system("pause");    system("cls");}void Manager::book_delete(){    int temp_book_id;    show_book_base();    cout << "请输入想删除的书籍id号:" << endl;    cin >> temp_book_id;    if (book_id_exist(temp_book_id) == -1)    {        cout << "该书籍不存在!" << endl;    }    else    {        for (int i = 0; i < book_len - 1; i++)        {            book[i] = book[i + 1];        }        book_len--;        cout << "书籍信息删除成功!" << endl;    }    system("pause");    system("cls");}void Manager::book_update(){    show_book_base();    cout << "请输入想修改的书籍编号:" << endl;    int temp_book_id;  cin >> temp_book_id;    cout << "请选择你要修改的书籍信息" << endl;    cout << "1--修改书籍名称" << endl;    cout << "2--修改书籍总数" << endl;    cout << "3--修改书籍作者" << endl;    cout << "4--修改书籍分类" << endl;    cout << "5--修改书籍简介" << endl;    cout << "0--返回菜单" << endl;    int choice = 0; cin >> choice;    switch (choice)    {    case 0: break;    case 1:    {        cout << "请输入书籍名称:" << endl;        string temp_book_name; cin >> temp_book_name;        book[book_len].set_book_name(temp_book_name);        cout << "修改成功\n";        break;    }    case 2:    {        cout << "请输入书籍总数:" << endl;        int temp_book_len; cin >> temp_book_len;        book[book_len].set_book_total_num(temp_book_len);        break;    }    case 3:    {        cout << "请输入书籍作者:" << endl;        string temp_book_author; cin >> temp_book_author;        book[book_len].set_book_author(temp_book_author);        break;    }    case 4:    {        cout << "请输入书籍分类:" << endl;        int temp_book_type; cin >> temp_book_type;        book[book_len].book_type = temp_book_type;        break;    }case 5:    {        cout << "请输入书籍简介:" << endl;        string temp_book_present; cin >> temp_book_present;        book[book_len].book_present = temp_book_present;        break;    }    default:    {        cout << "没有该选项!" << endl; break;    }    }    system("pause");    system("cls"); }void Manager::book_view(){    if (book_len == 0)    {        cout << "无借阅信息!" << endl;    }    for (int i = 0; i < book_len; i++)    {        cout << "书籍id号:" << book[i].book_id << "\t书籍名:" << book[i].book_name            << "\t作者:" << book[i].book_author            << "\t书籍剩余数:" << (book[i].book_total_num - book[i].book_student_len)            << "\t书籍总数:" << book[i].book_total_num << endl;        if (book[i].book_student_len == 0)        {            cout << "\t\t空!" << endl;        }        else        {            cout << "学号\t\t" << "姓名" << endl;            for (int j = 0; j < book[i].book_student_len; j++)            {                cout << book[j].book_id << "\t" << book[j].book_name << endl;            }        }        cout << endl;    }    cout << "\t如果您需要查询书籍详细信息,请输入1;不需要则输入0\n";    int ch = 0; cin >> ch;    if (ch==1)        book_find();    system("pause");    system("cls");}void Manager::class_insert(){    int temp_id;    string temp_name;    cout << "请输入想增加的班级编号:" << endl;    cin >> temp_id;    clazz[class_len].set_class_id(temp_id);    cout << "请输入想增加的班级名称:" << endl;    cin >> temp_name;    clazz[class_len].set_class_name(temp_name);    cout << "请输入想增加的班主任姓名:" << endl;    string temp_teacher_name; cin >> temp_teacher_name;    clazz[class_len].set_teacher_name(temp_teacher_name);    class_len++;    cout << "班级信息添加成功!" << endl;    sort(clazz, clazz + class_len, class_cmp);    system("pause");    system("cls");}void Manager::class_delete(){    int temp_book_id;    cout << "班级编号\t\t\t班级名称\n";    for (int i = 0; i < book_len; i++)        cout << clazz[i].get_class_id()<< "\t\t" << clazz[i].get_class_name () << endl;    cout << "请输入想删除的班级编号:" << endl;    cin >> temp_book_id;    if (class_id_exist(temp_book_id) == -1)    {        cout << "该班级不存在!" << endl;    }    else    {        for (int i = 0; i < class_len - 1; i++)        {            clazz[i] = clazz[i + 1];        }        class_len--;        cout << "班级信息删除成功!" << endl;    }    system("pause");    system("cls");}void Manager::class_update(){    class_view();    cout << "请输入想修改的班级编号:" << endl;    int temp_book_id;  cin >> temp_book_id;    cout << "请选择你要修改的班级信息" << endl;    cout << "1--修改班级名称" << endl;    cout << "2--修改班主任姓名" << endl;    cout << "0--返回菜单" << endl;    int choice = 0; cin >> choice;    switch (choice)    {    case 0: break;    case 1:    {        cout << "请输入班级名称:" << endl;        string temp_name; cin >> temp_name;        clazz[class_len].set_class_name(temp_name);        cout << "修改成功\n";        break;    }    case 2:    {        cout << "请输入班主任名称:" << endl;        string temp_teacher_name; cin >> temp_teacher_name;        clazz[class_len].set_teacher_name(temp_teacher_name);        cout << "修改成功\n";        break;    }    default:    {        cout << "没有该选项!" << endl; break;    }    }    system("pause");    system("cls"); }void Manager::class_view(){    if (class_len == 0)    {        cout << "无班级信息!" << endl;    }    else    {        cout << "\t\t班级信息如下" << endl;        cout << "班级编号\t\t班级名称\t\t班主任姓名" << endl;        for (int i = 0; i < class_len; i++)            cout << clazz[i].get_class_id() << setw(32) << clazz[i].get_class_name() << setw(26) << clazz[i].get_teacher_name() << endl;    }    system("pause");    system("cls");}void Manager::manager_insert(){    if (this->mark == 0)    {        cout << "\t\t权限不足!" << endl;    }    else    {        cout << "请输入账号:" << endl;        int temp_id; cin >> temp_id;        cout << "请输入姓名:" << endl;        string temp_name; cin >> temp_name;        cout << "请输入权限:" << endl;        cout << "1.普通管理员权限" << endl;        cout << "2.高级管理员权限" << endl;        int temp_mark; cin >> temp_mark;        cout << "密码默认为账号!" << endl;        string temp_password;        stringstream transform;        transform << temp_id; transform >> temp_password;        Manager temp(temp_id, temp_mark, temp_name, temp_password);        manager[manager_len] = temp;        manager_len++;    }    system("pause");    system("cls");} Student Student::operator = (const Student& p){    this->id = p.id;    this->name = p.name;    this->student_gender = p.student_gender;    this->student_grade = p.student_grade;    this->class_id = p.class_id;    this->student_book_len = p.student_book_len;    this->password = p.password;    return *this;}void Student::book_insert(){    cout << "可选书籍如下:" << endl;    show_book_base();    int temp_book_id;    cout << "请输入你要借阅的书籍编号:" << endl;    cin >> temp_book_id;    int position = book_id_exist(temp_book_id);    int count = book[position].book_student_len;    if (position == -1)    {        cout << "该书籍不存在!" << endl;    }    else    {        book[position].student_id[count] = this->id;        book[position].student_name[count] = this->name;        book[position].book_student_len++;        student_book_len++;        cout << "借阅成功!" << endl;    }    system("pause");    system("cls");}void Student::student_information_view(){    cout << "\t\t请输入查询账号:" << endl;    int id; cin >> id;    int pos =student_id_exist(id);    if (pos != student_id_exist(id))    {        cout << "\t\t您无查看他人账号权限!" << endl;    }    else    {        show_self();    }    system("pause");    system("cls");}void Student::student_information_update(){    cout << "请选择你要更改的信息:\n";    cout << "1.修改性别\n";    cout << "2.修改年级\n";    cout << "3.修改班级\n";    int choice; cin >> choice;    if (choice == 1)    {        cout << "1.男\n2.女\n";        int select; cin >> select;        if (select == 1)        {            this->student_gender = "男";            cout << "修改成功!\n";        }        else if (select == 1)        {            this->student_gender = "女";            cout << "修改成功!\n";        }        else            cout << "没有该选项!\n";    }    else if (choice == 2)    {        cout << "1.2018\n2.2019\n3.2020\n4.2021\n";        int select; cin >> select;        if (select == 1)        {            this->student_grade = 2018;            cout << "修改成功!\n";        }        else if (select == 2)        {            this->student_grade = 2019;            cout << "修改成功!\n";        }        else if (select == 3)        {            this->student_grade = 2020; cout << "修改成功!\n";        }        else if (select == 4)        {            this->student_grade = 2021; cout << "修改成功!\n";        }        else            cout << "没有该选项!\n";    }    else if(choice == 3)    {        cout << "\t\t班级信息如下" << endl;        cout << "班级编号\t\t班级名称\t\t班主任姓名" << endl;        for (int i = 0; i < class_len; i++)            cout << clazz[i].get_class_id() << "\t\t" << clazz[i].get_class_name() << "\t\t" << clazz[i].get_teacher_name() << endl;        while (1)        {            cout << "\t\t请输入你选择的班级编号\n" << endl;            int select; cin >> select;            if (class_id_exist(select) != -1)            {                int temp_id; cin >> temp_id;                this->class_id = temp_id;                break;            }            else            {                cout << "\t\t该班级编号不存在!\n";            }        }    }    else    {        cout << "该选项不存在!\n";    }    system("pause");    system("cls");}void Student::book_delete(){    cout << "您的已选书籍如下:" << endl;    if (student_book_len == 0)    {        cout << "空!" << endl;    }    else    {        cout << "序号\t\t书籍名称\t\t书籍编号" << endl;;        for (int i = 0; i < book_len; i++)        {            for (int j = 0; j < book[i].book_student_len; j++)            {                if (book[i].student_id[j] == this->id)                {                    cout << i + 1 << "\t\t" << book[i].book_name << "\t\t\t" << book[i].book_id << endl;                }            }        }    }    cout << endl << "请输入您想退还的书籍编号:" << endl;    int temp_book_id;  cin >> temp_book_id;    int book_position = book_id_exist(temp_book_id);    if (book_position == -1)    {        cout << "该书籍不存在!" << endl;    }    else    {        int student_position = -1;        for (int i = 0; i < book[book_position].book_student_len; i++)        {            if (book[book_position].student_id[i] == id)            {                student_position = i;                break;            }        }        if (student_position != -1)        {            for (int i = student_position; i < book[book_position].book_student_len - 1; i++)            {                book[book_position].student_id[i] = book[book_position].student_id[i + 1];                book[book_position].student_name[i] = book[book_position].student_name[i + 1];            }            book[book_position].book_student_len--;            student_book_len--;            cout << "书籍归还成功!" << endl;        }        else        {            cout << "你并未借阅过该书籍!" << endl;        }    }    system("pause");    system("cls");}void Student::show_self(){    cout << "\t\t账号信息如下:" << endl;    cout << "______________________________________________________________________________\n";    cout << " 姓名:" << this->name << "\t\t 学号:" << this->id << "\n";    cout << "______________________________________________________________________________\n";    cout << " 性别:" << this->student_gender << "\t\t 班级编号:" << this->class_id << "\n";    cout << "______________________________________________________________________________\n";    cout << " 书籍编号" << "\t\t书籍名称" << "\n";    cout << "______________________________________________________________________________\n";    if (this->student_book_len == 0)    {        cout << "\t\t暂未借阅书籍" << "\n";    }    else    {        for (int i = 0; i < book_len; i++)        {            for (int j = 0; j < book[i].book_student_len; j++)            {                if (book[i].student_id[j] == this->id)                {                    cout << "\t\t" << book[i].book_id                        << "\t\t" << book[i].book_name << "\n";                }            }        }    }    cout << "______________________________________________________________________________\n";}void book_find(){    cout << "请输入你要查找的书籍编号:" << endl;    int temp_book_id; cin >> temp_book_id;    int position = book_id_exist(temp_book_id);    if (position == -1)    {        cout << "该书籍编号不存在!查找失败!" << endl;    }    else    {        book[position].show_book_information();    }    system("pause");    system("cls");}void show_book_base(){    cout << "书籍id号:\t" << "书籍名称:" << endl;    for (int i = 0; i < book_len; i++)    {        cout << book[i].book_id << "\t\t" << book[i].book_name << endl;    }}int student_id_exist(int id)//二分查找{    int left = 0;    int right = student_len;    int mid = 0;    while (left < right)    {        mid = (left + right) / 2;        if (id == student[mid].get_id())            return mid;        if (id > student[mid].get_id())            left = mid + 1;        else if (id < student[mid].get_id())            right = mid;    }    return -1;}int manager_id_exist(int id){    for (int i = 0; i < manager_len; i++)    {        if (manager[i].get_id() == id)        {            return i;        }    }    return -1;}int book_id_exist(int id){    int left = 0;    int right = book_len;    int mid = 0;    while (left < right)    {        mid = (left + right) / 2;        if (id == book[mid].get_book_id())            return mid;        if (id > book[mid].get_book_id())            left = mid + 1;        else if (id < book[mid].get_book_id())            right = mid;    }    return -1;}int class_id_exist(int id){    int left = 0;    int right = class_len;    int mid = 0;    while (left < right)    {        mid = (left + right) / 2;        if (id == clazz[mid].get_class_id())            return mid;        if (id > clazz[mid].get_class_id())            left = mid + 1;        else if (id < clazz[mid].get_class_id())            right = mid;    }    return -1;}bool student_cmp(Student a, Student b){    return  a.id < b.id;}bool class_cmp(Clazz a, Clazz b){    return a.get_class_id() < b.get_class_id();}bool book_cmp(Book a, Book b){    return a.get_book_id() < b.get_book_id();}void existSystem(){    cout << "欢迎下次使用" << endl;    system("pause");    exit(0);}int random_id() //产生随机书籍编号{    int id;    for (int i = 0; i < 8; i++)    {        id = rand();    }    return id;}string input_password(){    char temp_password[20];    int len = 0; char key;    while ((key = _getch()) != '\r')//不可见输入    {        if (len < 12)        {            temp_password[len++] = key;            putchar('*');        }        else        {            cout << endl << endl;;            cout << "\t  密码过长" << endl;        }    }    temp_password[len] = '\0';//字符串结束标记:\0;    cout << endl;    return temp_password;}void load_information(){    ifstream fin;    fin.open(BOOK_FILE, ios::in);    if (fin.is_open() == false)    {        cout << "文件打开失败!" << endl;    }    fin >> book_len;     for (int i = 0; i < book_len; i++)    {                fin >> book[i].book_id >> book[i].book_name >> book[i].book_total_num            >> book[i].book_student_len >> book[i].book_author >> book[i].book_type            >> book[i].book_present;    }    fin.close();      fin.open(CLASS_FILE, ios::in);    if (fin.is_open() == false)    {        cout << "文件打开失败!" << endl;    }    fin >> class_len;     for (int i = 0; i < class_len; i++)    {        fin >> clazz[i].class_id >> clazz[i].class_name >> clazz[i].teacher_name;    }    fin.close();     fin.open(STUDENT_FILE, ios::in);    if (fin.is_open() == false)    {        cout << "文件打开失败!" << endl;    }    fin >> student_len;     for (int i = 0; i < student_len; i++)    {        fin >> student[i].id >> student[i].name >> student[i].mark>>student[i].student_grade>> student[i].class_id             >> student[i].student_gender >> student[i].password >> student[i].student_book_len;    }    fin.close();    sort(book, book + book_len, book_cmp);    sort(clazz, clazz + class_len, class_cmp);    sort(student, student + student_len, student_cmp);}void update_information(){    ofstream fou;    fou.open(BOOK_FILE, ios::out);    if (fou.is_open() == false)    {        cout << "文件打开失败!" << endl;    }    fou << book_len << endl;    for (int i = 0; i < book_len; i++)    {        fou << book[i].book_id << " " << book[i].book_name << " " << book[i].book_total_num << " " << book[i].book_student_len            << " " << book[i].book_author << " " << book[i].book_type << " " << book[i].book_present << endl;    }    fou.close();     fou.open(CLASS_FILE, ios::out);    if (fou.is_open() == false)    {        cout << "文件打开失败!" << endl;    }    fou << class_len << endl;    for (int i = 0; i < class_len; i++)    {        fou << clazz[i].class_id <<" "<< clazz[i].class_name <<" "<< clazz[i].teacher_name << endl;    }    fou.close();     fou.open(STUDENT_FILE, ios::out);    if (fou.is_open() == false)    {        cout << "文件打开失败!" << endl;    }    fou << student_len << endl;    for (int i = 0; i < student_len; i++)    {        fou << student[i].id << " " << student[i].name << " " << student[i].mark<<" "<<student[i].student_grade<<" "<<student[i].class_id            << " " << student[i].student_gender << " " << student[i].password << " " << student[i].student_book_len << endl;    }    fou.close();}

读到这里,这篇“C++实现图书管理系统简易版的方法”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。

--结束END--

本文标题: C++实现图书管理系统简易版的方法

本文链接: https://lsjlt.com/news/324674.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++实现图书管理系统简易版的方法
    本文小编为大家详细介绍“C++实现图书管理系统简易版的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++实现图书管理系统简易版的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。包括管理员端和学生端,可以...
    99+
    2023-06-29
  • C++实现图书管理系统简易版
    本文实例为大家分享了C++实现图书管理系统的具体代码,供大家参考,具体内容如下 包括管理员端和学生端,可以对图书进行借阅,归还,还可以修改账号登陆密码等 #include<io...
    99+
    2024-04-02
  • Java实现简易版的【图书管理系统】
    目录 🌎1.分析图书管理系统的功能 🌍 2.在IDEA中进行功能类的创建 🦄2.1  创建一个名为book的包,里面存放书相关的 🦄 2.2 创建一个名为Operation...
    99+
    2023-09-11
    java
  • C++实现简易图书馆管理系统
    本文实例为大家分享了C++实现简易图书馆管理系统的具体代码,供大家参考,具体内容如下 思路 在本程序中共有四个类: book类:此类有书的基本信息:书名,编号,作者,价格等,和基本的...
    99+
    2024-04-02
  • C++实现简单版图书管理系统
    本文实例为大家分享了C++实现简单版图书管理系统的具体代码,供大家参考,具体内容如下 1、系统需求 图书管理系统是一个可以记录图书借记和存储的工具。 本教程主要利用C++来实现一个图...
    99+
    2024-04-02
  • python实现简易图书管理系统
    本文实例为大家分享了python实现简易图书管理系统的具体代码,供大家参考,具体内容如下 一、设计需求 1.添加书籍2.查询数据3.借书 存储方式 ,用excel保存到硬盘上或者用....
    99+
    2024-04-02
  • Python实现简易的图书管理系统
    本文实例为大家分享了Python实现简易图书管理系统的具体代码,供大家参考,具体内容如下 首先展示一下图书管理系统的首页: 这是图书管理系统的发布图书页面: 最后是图书管理系统的...
    99+
    2024-04-02
  • Java Web实现简易图书管理系统
    本文实例为大家分享了Java Web实现简易图书管理系统的具体代码,供大家参考,具体内容如下 前言 首先实现的是用户的登录注册,注册成功后自动跳转到图书列表页面,之后实现图书的增删改...
    99+
    2024-04-02
  • 怎么使用Java实现简易版的图书管理系统
    这篇文章主要介绍“怎么使用Java实现简易版的图书管理系统”,在日常操作中,相信很多人在怎么使用Java实现简易版的图书管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Java实现简易版的图书管...
    99+
    2023-07-02
  • python如何实现简易图书管理系统
    这篇“python如何实现简易图书管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python如何实现简易图书管理系统...
    99+
    2023-06-29
  • C++实现简易图书馆管理系统的代码怎么写
    这篇文章主要讲解了“C++实现简易图书馆管理系统的代码怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++实现简易图书馆管理系统的代码怎么写”吧!思路在本程序中共有四个类:book类:...
    99+
    2023-06-29
  • C++实现简单图书馆管理系统
    本文实例为大家分享了C++实现简单图书馆管理系统的具体代码,供大家参考,具体内容如下 写了一个小项目,图书馆系统,功能如下: 1,添加书籍2,删除书籍(可删除还没外借的书籍)3,读者...
    99+
    2024-04-02
  • C++版图书管理系统
    本文实例为大家分享了C++版图书管理系统的具体代码,供大家参考,具体内容如下 使用介绍 图书管理系统源码由两部分组成,第一部分book.h头文件,第二部分book.cpp源文件。复制...
    99+
    2024-04-02
  • C++实现图书管理系统最新版
    图书管理系统设计,供大家参考,具体内容如下 一、问题描述及功能要求 (1)图书信息录入功能(图书信息用文件保存) (2)图书信息浏览功能 (3)查询和排序功能:(至少一种查询方式) ...
    99+
    2024-04-02
  • 如何实现C++版图书管理系统
    这篇文章主要介绍了如何实现C++版图书管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下使用介绍图书管理系统源码由两部分组成,第一部分book.h头文件,第二...
    99+
    2023-06-29
  • 用Java实现简易的图书管理系统(超详细)
    目录 1.设计背景 2.设计思路 3.模块展示及代码演示 3.1 Book类的实现 3.2 BookList类的实现(书架) 3.3 异常类的实现(OperationException) 3.4 用户类的实现 3.5 操作接口的实现(定义...
    99+
    2023-09-01
    java 开发语言
  • C#实现图书管理系统
    本文为大家分享了C#实现图书管理系统课程设计,供大家参考,具体内容如下 一、设计目的 通过模拟图书管理系统,实现以下功能学生账号的注册学生对馆藏图书状况的查询学生借书,还书状态的查询...
    99+
    2024-04-02
  • C#商品管理系统简易版
    本文实例为大家分享了C#实现简易商品管理系统的具体代码,供大家参考,具体内容如下 在这里,写了一个巨简单的商品管理系统,只有一个添加和查看,只是为了给自己练手的! 商品id &nbs...
    99+
    2024-04-02
  • C++实现图书馆管理系统
    本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下 一、实验名称 图书馆管理系统 二、实验目的 利用C++语言设计开发一个小型的图书馆管理系统模拟程序,...
    99+
    2024-04-02
  • java实现简单的图书管理系统
    本文实例为大家分享了java实现简单的图书管理系统的具体代码,供大家参考,具体内容如下 一、项目分布 Book类: 定义了书的一些属性(书名,作者,价格,分类,状态)并且写了属性的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作