C++图书馆管理系统 [STL实现]

时间:2021-09-26 17:50:54
//管理员权限   //            1.对图书的增删查改 //            2.对用户的增删查改 //用户权限 //            1.查询 借阅 续借 修改密码 //程序文件 //            book.txt 存放图书馆数据 【编号 书名 作者 出版日期】 //            user.txt 存放用户数据 【学号 姓名 密码】 //            userborrow.txt 存放用户借书数据【编号 书名 作者 出版日期】 //            library.txt 存放修改后的书籍数据 【编号 书名 作者 出版日期】 // //             /*             *Library Management System -By Leo             *    Copyright © 2018.5 - 2018.6             *       Leo.All Rights Reserved.             *               Ver 1.0             */ #include<bits/stdc++.h> using namespace std; class date//日期类 { private:     int year;//年     int month;//月 public:     //构造函数     date(){         year=0;         month=0;     }     date(int x,int y){         year=x;         month=y;     }     //get set 函数     int getYear(){return year;}     int getMonth(){return month;}     void setYear(int x){year=x;}     void setMonth(int x){month=x;}     //显示日期函数     void dispdate(){         cout<<year<<"年"<<month<<"月";     }     //重载输入运算符     friend istream &operator>>(istream  & in,  date &x){        in>>x.year>>x.month;        return in;        }     //重载输出运算符     friend ostream &operator<<( ostream &output, const date &x )       {          output<<x.year<<" "<<x.month;          return output;       } }; class book//书籍类 { private:     int id;//图书编号     string title;//书名     string author;//作者     date dat;//出版日期     int num;//库存数量 副本为3     int renewnum;//续借次数 最多一次     string startdate;     string enddate; public:     //构造函数     book(){         id=0;         title="NULL";         author="NULL";         dat;         num=3;         renewnum=0;     }     book(int x,string a,string b,date c){         id=x;         title=a;         author=b;         dat=c;         num=3;         renewnum=0;     }     //Get函数     int getId(){return id;}     string getTitle(){return title;}     string getAuthor(){return author;}     date getDate(){return dat;}     int getNum(){return num;}     int getRenewnum(){return renewnum;}     //Set函数     void setId(int x){id=x;}     void setTitle(string x){title=x;}     void setAuthor(string x){author=x;}     void setDate(date x){dat=x;}     void setNum(int x){num=x;}     void setRenewnum(int x){renewnum=x;}     //获取系统时间作为借书时间     string getTime(){         time_t t = time(0);         char tmp[11];         strftime(tmp,sizeof(tmp),"%Y %m %d",localtime(&t));         return tmp;     }     void dispdate(){         string str=getTime();         int x=(str[6]-48)+2;         for(int i=0;i<=4;i++){             cout<<str[i];         }             cout<<str[5]<<x;//2018_08_08         for(int i=7;i<=9;i++){             cout<<str[i];         }     }     //显示函数     void dispbook(bool x){         if(x){             cout<<setw(10)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"出版日期"<<setw(6)<<" 库存 "<<setw(6)<<"续借"<<setw(12)<<"借阅时间"<<setw(10)<<"应还时间"<<endl;             cout<<setw(10)<<id<<setw(10)<<title<<setw(10)<<author<<setw(6)<<dat<<setw(6)<<num<<setw(6)<<renewnum<<"    "<<setw(6)<<getTime()<<"  ";dispdate();cout<<endl;             cout<<endl;         }         else{         cout<<setw(10)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"出版日期"<<setw(6)<<" 库存 "<<setw(6)<<"续借次数"<<endl;         cout<<setw(10)<<id<<setw(10)<<title<<setw(10)<<author<<setw(6)<<dat<<setw(6)<<num<<setw(6)<<renewnum<<endl;         cout<<endl;         }     }     //重载输入运算符     friend istream &operator>>(istream  & in,  book &x){        in>>x.id>>x.title>>x.author>>x.dat;        return in;        }     //重载输出运算符     friend ostream &operator<<( ostream &output, const book &x )       {          output<<x.id<<" "<<x.title<<" "<<x.author<<" "<<x.dat<<" "<<x.num<<" "<<x.renewnum;          return output;       }     //重载赋值运算符     void operator=(const book &x){         id=x.id;         title=x.title;         author=x.author;         dat=x.dat;         num=x.num;         renewnum=x.renewnum;     } }; class user//用户类 { private:     long long int id;//学号     string name;//姓名     string password;//密码     int booknum;//借阅数目 public:     vector<book> b;//存放用户借的图书     vector<book>::iterator b1;//用户借的图书 迭代器     vector<book> b2;//文件读写容器 相当于图书馆     vector<book>::iterator itb2;//文件读写迭代器     multimap<string,int> m1;//根据书名查找 First->书名 Second->下标     multimap<string,int>::iterator mit1;//根据书名查找 对应迭代器     multimap<string,int> m2;//根据作者查找 First->作者 Second->下标     multimap<string,int>::iterator mit2;//根据作者查找 对应迭代器     multimap<int,int> m3;//根据出版日期查找 First->出版日期 Second->下标     multimap<int,int>::iterator mit3;//根据出版日期查找 对应迭代器     //构造函数     user(){         id=0;         name="NULL";         password="123456";         booknum=0;     }     user(long long int a,string b,string c){         id=a;         name=b;         password=c;         booknum=0;     }     //Get函数     long long int getId(){return id;}     string getName(){return name;}     string getPassword(){return password;}     int getBooknum(){return booknum;}     //Set函数     void setId(long long int x){id=x;}     void setName(string x){name=x;}     void setPassword(string x){password=x;}     void setBooknum(int x){booknum=x;}     //验证密码     bool isPassword(string x){         if(password==x) return true;         else return false;     }     //重载输入运算符     friend istream &operator>>(istream  & in,  user &x){        in>>x.id>>x.name>>x.password;        return in;        }     //重载输出运算符     friend ostream &operator<<( ostream &output, const user &x )       {          output<<x.id<<" "<<x.name<<" "<<x.password;          return output;       }     //显示函数     void dispuser(){         if(booknum){//如果借阅数量不为0 则输出借阅图书             cout<<setw(10)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"密码"<<setw(10)<<"借阅数量"<<endl;             cout<<setw(10)<<id<<setw(10)<<name<<setw(10)<<password<<setw(10)<<booknum<<endl;             for(b1=b.begin();b1!=b.end();b1++){               b1->dispbook(1); // cout<<*b1<<endl;             }         }         else{             cout<<setw(10)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"密码"<<setw(10)<<"借阅数量"<<endl;             cout<<setw(10)<<id<<setw(10)<<name<<setw(10)<<password<<setw(6)<<booknum<<endl;         }     }     //显示book文件所有图书     void dispallbook(){         for(itb2=b2.begin();itb2!=b2.end();itb2++){             itb2->dispbook(0); // cout<<*b1<<endl;            }     }     //借阅图书     void borrowbook(int x){         b.push_back(b2[x-1]);//从文件书籍Vector b2 到用户书籍Vector b         b[booknum].setId(booknum+1);//重新设置下标         booknum++;//借阅数量 +1         int i=b2[x-1].getId()-1;//向量下标         int j=b2[x-1].getNum()-1;//库存数量 -1         b[i].setNum(j);//修改库存     }     //续借图书     void reborrowbook(){         dispuser();         cout<<"请输入你要续借的图书编号:"<<endl;         int x;         cin>>x;         b[x-1].setRenewnum(1);         b[x-1].dispbook(1);         //cout<<b[x-1];         cout<<endl;         cout<<"续借成功!"<<endl;     }     //归还图书     void returnbook(int x){         if(b.empty()){//如果用户借阅图书为0             cout<<"该用户没有借阅任何书籍!\n";         }         else{             b1=b.begin()-1+x;             b.erase(b1);//删除图书             booknum--;//借阅数量 -1             int i=b2[x-1].getId()-1;//向量下标             int j=b2[x-1].getNum()+1;//库存数量 +1             b[i].setNum(j);//修改库存             save();             cout<<"成功归还图书!\n";         }     }     //查询图书 [图书馆中的图书]     //按书名查询     string seaBytitle(string x){         mit1=m1.find(x);//根据书名查找 返回迭代器         int num=m1.count(x);// x 出现的次数         if(mit1==m1.end()){//如果没找到 find() 会返回m2.end()             cout<<"     未找到该图书!请检查书名是否正确!\n";         }         else{             cout<<"您要查找的图书信息如下:\n\n";             for(;num>0;num--){//输出所有结果             int temp=mit1->second;//下标             b2[temp-1].dispbook(0);//显示图书信息             mit1++;             }         }     }     //按作者查询     string seaByauthor(string x){         mit2=m2.find(x);//根据书名查找 返回迭代器         int num=m2.count(x);// x 出现的次数         if(mit2==m2.end()){//如果没找到 find() 会返回m2.end()             cout<<"     未找到该图书!请检查作者名是否正确!\n";         }         else{             cout<<"您要查找的图书信息如下:\n\n";             for(;num>0;num--){//输出所有结果                int temp=mit2->second;//下标                 b2[temp-1].dispbook(0);//显示图书信息                 mit2++;             }         }     }     //按出版日期查询     string seaBydate(int x){         mit3=m3.find(x);//根据书名查找 返回迭代器         int num=m3.count(x);         if(mit3==m3.end()){//如果没找到 find() 会返回m3.end()             cout<<"     未找到该图书!请检查日期是否正确!\n";         }         else{             cout<<"您要查找的图书信息如下:\n\n";             for(;num>0;num--){//输出所有结果                 int temp=mit3->second;//下标                 b2[temp-1].dispbook(0);//显示图书信息                 mit3++;             }         }     }     //读取文件     void read()     {     b.clear();     b2.clear();     m1.clear();     m2.clear();     m3.clear();     ifstream infile;//只读模式打开book.txt     infile.open("book.txt",ios::in);         book temp;         if (!infile){cout<<"Error!读取文件失败!\n";}         else{             while(infile>>temp){                 b2.push_back(temp);//压入图书馆                 m1.insert(make_pair(temp.getTitle(),temp.getId()));//书名                 m2.insert(make_pair(temp.getAuthor(),temp.getId()));//作者                 m3.insert(make_pair(temp.getDate().getYear(),temp.getId()));//出版日期             }         }     infile.close();     }     //保存用户借阅图书文件     void save()     {      ofstream outfile;      outfile.open("userborrow.txt",ios::out);      if (!outfile){cout<<"Error!保存文件失败!\n";}         else{             for(b1=b.begin();b1!=b.end();b1++){                 outfile<<*b1<<endl;             }         }      outfile.close();      b.clear();     b2.clear();     m1.clear();     m2.clear();     m3.clear();     } }; class admin//管理员类 { public:     date d;     string password;//管理员密码     vector<user> u;     vector<user>::iterator u1;     vector<book> b;     vector<book>::iterator b1;     //书籍map     multimap<string,int> m1;//根据书名查找 First->书名 Second->下标     multimap<string,int>::iterator mit1;//根据书名查找 对应迭代器     multimap<string,int> m2;//根据作者查找 First->作者 Second->下标     multimap<string,int>::iterator mit2;//根据作者查找 对应迭代器     multimap<int,int> m3;//根据出版日期查找 First->出版日期 年 Second->下标     multimap<int,int>::iterator mit3;//根据出版日期查找 对应迭代器     //用户map     map<long long int,string> m4;//根据学号查找 First->学号 Second->姓名     map<long long int,string>::iterator mit4;//根据学号查找 对应迭代器     map<string,long long int> m5;//根据姓名查找 First->姓名 Second->学号     map<string,long long int>::iterator mit5;//根据姓名查找 对应迭代器     //构造函数     admin(){         password="123456";//默认密码     }     admin(string x){         password=x;     }     //修改密码     void setPassword(string x){password=x;}     //读取user文件     void readuser(){         u.clear();         m4.clear();         m5.clear();         ifstream infile;//只读模式打开user.txt         infile.open("user.txt",ios::in);         user temp;         if (!infile){cout<<"Error!读取文件失败!\n";}         else{             while(infile>>temp){                 u.push_back(temp);//加入user vector                 m4.insert(make_pair(temp.getId(),temp.getName()));//根据学号查找                 m5.insert(make_pair(temp.getName(),temp.getId()));//根据姓名查找             }         }         infile.close();     }     //保存user文件     void saveuser(){      ofstream outfile;      user x;      outfile.open("user.txt",ios::app);      if (!outfile){cout<<"Error!保存文件失败!\n";}         else{             for(u1=u.begin();u1!=u.end();u1++){                 outfile<<u1->getId()<<" "<<u1->getName()<<" "<<u1->getPassword()<<endl;                 }         }       outfile.close();         u.clear();         m4.clear();         m5.clear();     }     //读取book文件     void readbook()     {         b.clear();         m1.clear();         m2.clear();         m3.clear();     ifstream infile;//只读模式打开book.txt     infile.open("book.txt",ios::in);         book temp;         if (!infile){cout<<"Error!读取文件失败!\n";}         else{             while(infile>>temp){                 b.push_back(temp);//加入图书馆书库                 m1.insert(make_pair(temp.getTitle(),temp.getId()));//书名                 m2.insert(make_pair(temp.getAuthor(),temp.getId()));//作者                 m3.insert(make_pair(temp.getDate().getYear(),temp.getId()));//出版日期             }         }      infile.close();     }     //保存文件     void savebook()     {      ofstream outfile;      outfile.open("library.txt",ios::out);      if (!outfile){cout<<"Error!读取文件失败!\n";}         else{             for(b1=b.begin();b1!=b.end();b1++){                 outfile<<b1->getId()<<" "<<b1->getTitle()<<" "<<b1->getAuthor()<<" "<<b1->getDate()<<endl;             }         }      outfile.close();         b.clear();         m1.clear();         m2.clear();         m3.clear();     }     //增加图书     void addBook(){         book tem;         cout<<"请依次输入书籍信息:   [编号 书名 作者 出版日期 xxxx年xx月]\n";         cin>>tem;//重载输入运算符         b.push_back(tem);         cout<<"\n书籍添加成功!\n";     }     //删除图书     void delBook(){         if(b.empty()){cout<<"      !!!Error!!!\n书籍容器为空!请先添加书籍!\n";}         else {             for(b1=b.begin();b1!=b.end();b1++){//输出容器中所有图书                 b1->dispbook(0);             }             cout<<endl;             cout<<"\n\n请输入要删除书籍的编号:\n";             int x;             cin>>x;//输入书籍编号             b1=b.begin()-1+x;             cout<<*b1<<endl;             b.erase(b1);             cout<<"删除书籍成功!\n";         }     }     //查找图书 这里暂时调用用户里的查找图书函数     //查询图书 [图书馆中的图书]     //按书名查询     string seaBytitle(string x){         mit1=m1.find(x);//根据书名查找 返回迭代器         int num=m1.count(x);// x 出现的次数         if(mit1==m1.end()){//如果没找到 find() 会返回m2.end()             cout<<"     未找到该图书!请检查书名是否正确!\n";         }         else{             cout<<"您要查找的图书信息如下:\n\n";             for(;num>0;num--){//输出所有结果             int temp=mit1->second;//下标             b[temp-1].dispbook(0);//显示图书信息             mit1++;             }         }     }     //按作者查询     string seaByauthor(string x){         mit2=m2.find(x);//根据书名查找 返回迭代器         int num=m2.count(x);// x 出现的次数         if(mit2==m2.end()){//如果没找到 find() 会返回m2.end()             cout<<"     未找到该图书!请检查作者名是否正确!\n";         }         else{             cout<<"您要查找的图书信息如下:\n\n";             for(;num>0;num--){//输出所有结果                int temp=mit2->second;//下标                 b[temp-1].dispbook(0);//显示图书信息                 mit2++;             }         }     }     //按出版日期查询     string seaBydate(int x){         mit3=m3.find(x);//根据书名查找 返回迭代器         int num=m3.count(x);         if(mit3==m3.end()){//如果没找到 find() 会返回m3.end()             cout<<"     未找到该图书!请检查日期是否正确!\n";         }         else{             cout<<"您要查找的图书信息如下:\n\n";             for(;num>0;num--){//输出所有结果                 int temp=mit3->second;//下标                 b[temp-1].dispbook(0);//显示图书信息                 mit3++;             }         }     }     //修改图书     void setbook(){      int number;      book temp;      for( b1=b.begin();b1!=b.end();b1++){//输出所有图书让用户选择编号         cout<<*b1<<endl<<endl;      }      cout<<"请输入要修改的图书编号:"<<endl;      cin>>number;      system("cls");      cout<<"您要修改的图书信息:"<<endl;      cout<<b[number-1]<<endl;//输出该图书信息 确认修改      b.erase(b.begin()-1+number);//删除该图书      cout<<"请依次输入要添加的书籍信息:   [编号 书名 作者 出版日期 xxxx年xx月]\n";      cin>>temp;//输入新图书信息      b.insert((b.begin()-1+number),temp);      system("cls");      cout<<"    \n修改图书信息成功!"<<endl;      savebook();//保存到文件     }     //创建用户 增加用户     void adduser(){         cout<<"请输入要创建的用户信息:     [学号 姓名 密码]\n";         user temp;         cin>>temp;         u.push_back(temp);//加入user vector         m4.insert(make_pair(temp.getId(),temp.getName()));//根据学号查找         m5.insert(make_pair(temp.getName(),temp.getId()));//根据姓名查找         cout<<"创建用户:    "<<temp<<"    成功!\n";     }     //删除用户     void deluser(){         for(mit4=m4.begin();mit4!=m4.end();mit4++){//输出所有user             cout<<"   "<<mit4->first<<"  "<<mit4->second<<endl;         }         cout<<"请输入要删除的用户学号:\n\n";         long long int temp;         cin>>temp;         mit4=m4.find(temp);//学号查找         if(mit4!=m4.end()){             cout<<"删除用户:   ";             cout<<mit4->first<<"    "<<mit4->second;             cout<<"   成功!\n";             m4.erase(mit4);             m5.erase(mit4->second);         }         else cout<<"\n未找到学号为 "<<temp<<" 的用户!\n";     }     //查询用户 学号     void seaById(){         cout<<"请输入要查询的学号:\n";         int id;         cin>>id;         mit4=m4.find(id);//学号查找         if(mit4!=m4.end()){             cout<<"您要查找的用户:   \n";             cout<<"     "<<mit4->first<<"    "<<mit4->second<<endl;         }         else cout<<"\n未找到学号为 "<<id<<" 的用户!\n";     }     //查询用户 姓名     void seaByName(){         cout<<"请输入要查询的姓名:\n";         string name;         cin>>name;         mit5=m5.find(name);         if(mit5!=m5.end()){             cout<<"您要查找的用户:   \n";             cout<<"     "<<mit5->second<<"    "<<mit5->first<<endl;         }         else cout<<"\n未找到姓名为 "<<name<<" 的用户!\n";     }     //修改用户     void setuser(){         for(mit4=m4.begin();mit4!=m4.end();mit4++){//输出所有user             cout<<"   "<<mit4->first<<"  "<<mit4->second<<endl;         }         cout<<"请输入要修改的学号:\n";         int id;         cin>>id;         mit4=m4.find(id);//学号查找         if(mit4!=m4.end()){             cout<<"您要修改的用户:   \n";             cout<<"     "<<mit4->first<<"    "<<mit4->second<<endl;             cout<<"您输入修改后的 学号 姓名 密码:   \n";             user temp;             cin>>temp;             m4.erase(mit4);//删除             m5.erase(mit4->second);//删除             m4.insert(make_pair(temp.getId(),temp.getName()));//学号             m5.insert(make_pair(temp.getName(),temp.getId()));//姓名             cout<<"修改成功!\n";         }         else cout<<"\n未找到学号为 "<<id<<" 的用户!\n";     }     //验证密码     bool isPassword(string x){         if(password==x) return true;         else return false;     }     //显示所有用户     void dispalluser(){         for(u1=u.begin();u1!=u.end();u1++){             u1->dispuser();       }     } }; class menu//菜单类 { public:     date d;     book b;     user u;     admin a;     void welcome(){//主欢迎菜单     system("color 0B");     cout << "■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n";     cout << "■                                                                 ■\n";     cout << "■                                                                 ■\n";     cout << "■             ┏━━━━━━━━━━━━━━━━━━━━━━━┓                           ■\n";     cout << "■             ┃                       ┃                           ■\n";     cout << "■             ┃ 图书馆管理系统 Ver 1.0┃                           ■\n";     cout << "■             ┃                       ┃                           ■\n";     cout << "■             ┃      山东农业大学     ┃                           ■\n";     cout << "■             ┃                       ┃                           ■\n";     cout << "■             ┃  By  Leo  2018.5      ┃                           ■\n";     cout << "■             ┃                       ┃                           ■\n";     cout << "■             ┗━━━━━━━━━━━━━━━━━━━━━━━┛                           ■\n";     cout << "■                                                                 ■\n";     cout << "■                                                                 ■\n";     cout << "■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n";     cout << "\n                  按 任 意 键 清 屏                                \n";     //Sleep(2000);     system("pause");     system("cls");     system("color 0F");     }     void selectmenu(){//选择菜单 管理员or用户         cout << "              [0]  退出系统\n";         cout << "              [1]  管理员界面\n";         cout << "              [2]  用户界面\n";         cout << "请输入要进入的页面:\n" ;         int command;         cin>>command;         switch (command){         case 0:{             cout<<"         -     感谢使用  -  正在退出系统   -   \n";             system("pause");             system("cls");             exit(0); //exit(1)是异常退出 exit(0)是正常退出             break;             }         case 1:{             cout<<"请输入管理员初始密码:   [123456] \n";             string pass;             rcin : while(cin>>pass)             {              if(u.isPassword(pass)){system("cls");a.readbook();a.readuser();Administrator();}                 else{                     cout<<"密码输入错误!请重新输入:\n";                     goto rcin;                 }             }             break;             }         case 2:{             cout<<"请输入用户初始密码:   [123456] \n";             string pass;             recin : while(cin>>pass)             {              if(u.isPassword(pass)){                 system("cls");                 int a; string b,c;                 cout<<"请输入用户信息:[学号 姓名 密码]\n";                 cin>>a>>b>>c;                 u.setId(a);u.setName(b);u.setPassword(c);                 u.read();                 cout<<"初始化用户完成!进入用户操作菜单!\n";                 useroperator();                 }                 else{                     cout<<"密码输入错误!请重新输入:\n";                     goto recin;                 }             }             break;           }           default:{             cout << "Command Error!请重新输入!" << endl;             selectmenu();           }         }     }     void Administrator(){//管理员菜单         amenu:cout << "■■■■■■■■■■■■管理员系统■■■■■■■■■■■■■\n";         cout << "■                  ┏━━━━━━━━━━━━━━┓                      ■\n";         cout << "■                  ┃ [0] 退出系统 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [1] 增加图书 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [2] 删除图书 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [3] 查找图书 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [4] 修改图书 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [5] 创建用户 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [6] 删除用户 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [7] 查询用户 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [8] 修改用户 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [9] 修改密码 ┃                      ■\n";         cout << "■                  ┗━━━━━━━━━━━━━━┛                      ■\n";         cout << "■■■■■■■■■■■[-1]返回上一层■■■■■■■■■■■■\n";         cout << "输入要进行的操作:" ;         int command;         cincom : cin >> command;         switch (command){         case -1:{             system("cls");             selectmenu();//返回上一层         }         case 0:{//退出系统             a.savebook();             a.saveuser();             cout<<"         -     感谢使用  -  正在退出系统   -   \n";             system("pause");             system("cls");             exit(0); //exit(1)是异常退出 exit(0)是正常退出             break;         }         case 1:{//增加图书             system("cls");             a.addBook();goto amenu;//返回主菜单             break;}         case 2:{//删除图书             system("cls");             a.delBook();goto amenu;//返回主菜单             break;}         case 3:{//查找图书             system("cls");      chaxun:cout<<"             [1]按书名查询\n";             cout<<"             [2]按作者查询\n";             cout<<"             [3]按出版日期查询\n";             cout<<"请输入查询方式:\n";             int way;             cin>>way;             switch(way){                 case 1:{                     cout<<"请输入要查询的书名:\n";                     string title;                     cin>>title;                     //u.seaBytitle(title);                     a.seaBytitle(title);                     system("pause");                     system("cls");                     goto amenu;                 }                 case 2:{                     cout<<"请输入要查询的作者:\n";                     string author;                     cin>>author;                     //u.seaByauthor(author);                     a.seaByauthor(author);                     system("pause");                     system("cls");                     goto amenu;                 }                 case 3:{                     cout<<"请输入要查询的出版日期: [****年]\n";                     int year;                     cin>>year;                     //u.seaBydate(year);                     a.seaBydate(year);                     system("pause");                     system("cls");                     goto amenu;                 }                 default:{                     system("cls");                     cout << "       Command Error!请重新输入!" << endl;                     goto chaxun;                 }             }         }         case 4:{//修改图书             system("cls");             a.setbook();             goto amenu;             break;         }         case 5:{//创建用户             system("cls");             a.adduser();             system("pause");             goto amenu;             break;         }         case 6:{//删除用户             system("cls");             a.deluser();             system("pause");             goto amenu;             break;         }         case 7:{//查询用户             system("cls");             cout<<"             [1]按学号查询\n";             cout<<"             [2]按姓名查询\n";             cout<<"请输入查询方式:\n";             int way;             cin>>way;             switch(way){                 case 1:                 a.seaById();                 system("pause");                 system("cls");                 goto amenu;                 break;                 case 2:                 a.seaByName();                 system("pause");                 system("cls");                 goto amenu;                 break;           }         }         case 8:{//修改用户             system("cls");             a.setuser();             system("pause");             system("cls");             goto amenu;             break;         }         case 9:{//修改密码             system("cls");             string pass;             cout<<"请输入原密码:\n";             cin>>pass;             cout<<endl;             if(a.isPassword(pass)) {                 cout<<"请输入新密码:\n";                 cin>>pass;                 a.setPassword(pass);                 cout<<endl;                 cout<<"密码修改成功!\n";             }             else cout<<"Error! 密码输入错误! 已返回主菜单!\n";             goto amenu;//返回主菜单             break;}         default:{             cout << "Command Error!请重新输入!" << endl;             goto cincom;}         } }     void useroperator(){//用户菜单         umenu:cout << "■■■■■■■■■■■■■用户系统■■■■■■■■■■■■■\n";         cout << "■                  ┏━━━━━━━━━━━━━━┓                      ■\n";         cout << "■                  ┃ [0] 退出系统 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [1] 借阅图书 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [2] 续借图书 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [3] 归还图书 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [4] 查询图书 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [5] 显示用户 ┃                      ■\n";         cout << "■                  ┣━━━━━━━━━━━━━━┫                      ■\n";         cout << "■                  ┃ [6] 修改密码 ┃                      ■\n";         cout << "■                  ┗━━━━━━━━━━━━━━┛                      ■\n";         cout << "■■■■■■■■■■■[-1]返回上一层■■■■■■■■■■■■\n";         cout << "输入要进行的操作:" ;         int command;         cin >> command;         switch (command){         case -1:{             system("cls");             selectmenu();//返回上一层         }         case 0:{//退出系统             u.save();             cout<<"         -     感谢使用  -  正在退出系统   -   \n";             system("pause");             system("cls");             exit(0); //exit(1)是异常退出 exit(0)是正常退出             break;         }         case 1:{//借阅图书             int x;             if(u.b.size()>=10) cout<<"\n借阅数量已达10本上限!\n";             else {                 u.dispallbook();//显示所有图书                 cout<<"\n请输入借阅的图书编号:\n";                 cin>>x;                 u.borrowbook(x);                 cout<<u.b2[x-1]<<endl;                 cout<<"借阅成功!\n";                 system("pause");                 system("cls");                 goto umenu;             }             break;         }         case 2:{//续借图书             u.reborrowbook();             system("pause");             system("cls");             goto umenu;             break;         }         case 3:{//归还图书             if(u.b.empty()){                     system("cls");                     cout<<"\n该用户未借阅任何图书!"<<endl;                     system("pause");                     goto umenu;                     }             else{                 u.dispuser();//显示用户信息 包括借阅的图书信息                 int x;                 cout<<"请输入要归还的图书编号:\n";                 cin>>x;                 u.returnbook(x);                 cout<<endl;                 goto umenu;             }             break;         }         case 4:{//查询图书             system("cls");      chaxun:cout<<"             [1]按书名查询\n";             cout<<"             [2]按作者查询\n";             cout<<"             [3]按出版日期查询\n";             cout<<"请输入查询方式:\n";             int way;             cin>>way;             switch(way){                 case 1:{                     cout<<"请输入要查询的书名:\n";                     string title;                     cin>>title;                     u.seaBytitle(title);                     system("pause");                     system("cls");                     goto umenu;                 }                 case 2:{                     cout<<"请输入要查询的作者:\n";                     string author;                     cin>>author;                     u.seaByauthor(author);                     system("pause");                     system("cls");                     goto umenu;                 }                 case 3:{                     cout<<"请输入要查询的出版日期: [****年]\n";                     int year;                     cin>>year;                     u.seaBydate(year);                     system("pause");                     system("cls");                     goto umenu;                 }                 default:{                     system("cls");                     cout << "       Command Error!请重新输入!" << endl;                     goto chaxun;                 }             }             break;         }         case 5:{//显示用户             u.dispuser();             system("pause");             system("cls");             goto umenu;             break;         }         case 6:{//修改密码             system("cls");             string pass;             cout<<"请输入原密码:\n";             cin>>pass;             cout<<endl;             if(u.isPassword(pass)) {                 cout<<"请输入新密码:\n";                 cin>>pass;                 u.setPassword(pass);                 cout<<endl;                 cout<<"密码修改成功!\n";             }             else cout<<"Error! 密码输入错误! 已返回主菜单!\n";             goto umenu;//返回主菜单             break;         }       default :{           system("cls");           cout<<"       Error!  Error!  Error!\n";           cout<<"        输入命令错误! 请重新输入! \n";           cout<<"       Error!  Error!  Error!\n";           goto umenu;         }       }    } }; int main() {     menu m;//菜单类     m.welcome();//欢迎菜单     m.selectmenu();//选择 Administrator or useroperator 菜单 }