C++实现图书管理系统简易版
【C++实现图书管理系统简易版】本文实例为大家分享了C++实现图书管理系统的具体代码,供大家参考,具体内容如下
包括管理员端和学生端,可以对图书进行借阅,归还,还可以修改账号登陆密码等
#include#include#include#include #include #include #include #include #include#include #include #include//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(){returnid; }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(){returnstudent_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"); } ManagerManager::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; /* while (1){cout << "请设置您的密码:" << endl; temp_password1 = input_password(); temp_password2 = input_password(); if (temp_password1 == temp_password2){student[student_len].password = temp_password1; student_len++; break; }else{cout << "两次密码不一致!请重新设置密码!" << endl; }}*/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"; }elsecout << "没有该选项!\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"; }elsecout << "没有该选项!\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){returna.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<<" "<
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- C++实现图书管理系统课程设计(面向对象)
- C++语言程序设计基础|第3章 函数
- c++|CCF 201903-1 试题名称( 小中大)
- java|用Compose实现手写春联效果
- python关键词对联_如何用深度学习框架PaddlePaddle实现智能春联
- spring boot 实现锁的几种方式
- jmeter|使用Robot Framework实现多平台自动化测试
- #|基于JAVA实现的WEB端UI自动化 -自动化测试简单介绍
- 用python实现表白
- #|她笑了——心里阳光满满(Matlab实现一个太阳心)