文章目录

  • 1.用户登入、注册界面
  • 2.用户
    • 2.1用户类
    • 2.2查看所有藏书
    • 2.3查找图书
    • 2.4修改密码
  • 3.读者
    • 3.1首页
    • 3.2读者类
    • 3.3借书操作
    • 3.4还书操作
    • 3.5查看借阅的书
  • 4.管理员界面
    • 4.1管理员类
    • 4.2增加图书
    • 4.3删除图书
    • 4.4清空书架
    • 4.5修改图书信息
    • 4.6查看读者信息
  • 总代码
  • 总结

1.用户登入、注册界面

代码

//界面
void first_menu()
{cout<<"********************************"<<endl;cout<<"*****欢迎来到图书馆管理系统*****"<<endl;cout<<"********************************"<<endl;cout<<"***********1.注册***************"<<endl;cout<<"***********2.登录***************"<<endl;cout<<"***********0.退出系统***********"<<endl;cout<<"********************************"<<endl;
}//实现逻辑
while(1){first_menu();cout<<"请选择功能(0-2):";x=Secure();switch(x){case 1://注册SignIn();system("pause");system("cls");break;case 2://登录Login();system("pause");system("cls");break;case 0:cout << "欢迎下次使用" << endl;return 0;default:cout<<"输入错误,请重新输入"<<endl;system("pause");system("cls");}}//注册
void SignIn()
{int flag=0;string name,key1,key2;while(1){flag=0;cout<<"请输入用户名:";cin>>name;for(int i=0;i<users.size();i++)if(users[i].Getname()==name){cout<<"用户名已存在"<<endl;flag=1;break;}if(flag==0) break;}while(1){cout<<"请输入密码:";cin>>key1;cout<<"再次输入密码:";cin>>key2;if(key1==key2) break;cout<<"两次密码不一致,请重新输入."<<endl;}User t_user(name,key1);char a;cout<<"是否为图书馆管理员(y or n):";cin>>a;if(a=='y'||a=='Y'){t_user.Setlibrarian();t_user.Setrep_Librarian(librarians.size());//表示在librarian中下标为多少Librarian t_lib(name,key1);librarians.push_back(t_lib);}else{t_user.Setrep_Reader(readers.size());//表示在readers中下标为多少Reader t_re(name,key1);readers.push_back(t_re);}users.push_back(t_user);cout<<"注册成功"<<endl;
}//登录
void Login()
{int i;string name,key;int n_flag=0,k_flag=0;while(1){cout<<"请输入账号:";cin>>name;cout<<"请输入密码:";cin>>key;for(i=0;i<users.size();i++)if(users[i].Getname()==name){n_flag=1;//存在该账号if(users[i].Getkey()==key)k_flag=1;//密码正确break;}if(n_flag==0)    cout<<"账号不存在"<<endl;else{if(k_flag==0) cout<<"密码错误"<<endl;else{system("pause");system("cls");if(users[i].Islibrarian()!=0){current_i=i;current_l=users[i].Getrep_Librarian();librarian();break;}else{current_i=i;current_r=users[i].Getrep_Reader();reader();break;}}}}
}

页面

2.用户

2.1用户类

代码

class User
{private:string name;string key;bool Is_Librarian,Is_Reader;//什么用户类型int rep_Librarian,rep_Reader;//在librarian和reader中下标是多少
public:User(string n,string k) {/*Is_Librarian=false;Is_Reader=true;*/name=n;key=k;}//默认为读者void Setname(string n){  name=n;    }void Setkey(string k){ key=k; }void Setrep_Librarian(int n){  rep_Librarian=n;   }void Setrep_Reader(int n){ rep_Reader=n;  }string Getname(){  return name;    }string Getkey(){   return key; }int Getrep_Librarian(){    return rep_Librarian;   }int Getrep_Reader(){   return rep_Reader;  }void Setlibrarian() { Is_Librarian=true; Is_Reader=false;    }bool Islibrarian(){    return Is_Librarian;    }bool Isreader(){   return Is_Reader;   }void ShowBooks();//查看所有藏书void CheckBook();//查找书名 void ChangeKey();//修改密码
};
vector<User> users;

2.2查看所有藏书

代码

void User::ShowBooks()
{if(books.size()==0)  cout<<"书架为空"<<endl;else {for(int i=0;i<books.size();i++){cout<<"书籍名称:"<<books[i].name<<"\t";cout<<"作者:"<<books[i].writer<<"\t";cout<<"价格:"<<books[i].price<<"\t";cout<<"编号:"<<books[i].number<<"\t";cout<<"在馆状态:"<<books[i].Is_exist<<endl;}}
}

2.3查找图书

代码

//界面
void Check_menu()
{cout<<"********************************"<<endl;cout<<"*********欢迎来到查询页面*******"<<endl;cout<<"********************************"<<endl;cout<<"**********1.按书名查询**********"<<endl;cout<<"**********2.按作者查询**********"<<endl;cout<<"**********3.按编号查询**********"<<endl;cout<<"**********4.按价格区间查询******"<<endl;cout<<"**********0.退出查询页面********"<<endl;cout<<"********************************"<<endl;
}//逻辑实现
void User::CheckBook()
{int x;system("cls");while(true){Check_menu();cout<<"请选择功能(0-4):";x=Secure();string a;switch(x){case 0:return;case 1:cout<<"请输入要查找的书名:";cin>>a;isExist(a,1);system("pause");system("cls");break;case 2:cout<<"请输入要查找的作者:";cin>>a;isExist(a,2);system("pause");system("cls");break;case 3:cout<<"请输入要查找的编号:";cin>>a;isExist(a,3);system("pause");system("cls");break;case 4:cout<<"请输入要查找的价格区间(低到高):";float l_price,h_price;cin>>l_price>>h_price;isExistRange(l_price,h_price);system("pause");system("cls");break;default:cout<<"输入错误,请重新输入"<<endl;system("pause");system("cls");}}
}

2.4修改密码

代码

void User::ChangeKey()
{string key1,key2;cout<<"请输入原密码:";cin>>key1;if(Getkey()==key1){cout<<"请输入新密码:";cin>>key1;cout<<"请再次输入新密码:";cin>>key2;if(key2!=key1)  cout<<"两次密码不相同"<<endl;else{users[current_i].Setkey(key2);if(users[current_i].Islibrarian())librarians[users[current_i].Getrep_Librarian()].Setkey(key2);elsereaders[users[current_i].Getrep_Reader()].Setkey(key2);cout<<"修改成功"<<endl;}}else{cout<<"密码错误"<<endl;}
}

3.读者

3.1首页

代码

//界面
void re_menu()
{cout<<"********************************"<<endl;cout<<"*****欢迎来到图书馆管理系统*****"<<endl;cout<<"********************************"<<endl;cout<<"**********1.查找图书************"<<endl;cout<<"**********2.借书****************"<<endl;cout<<"**********3.还书****************"<<endl;cout<<"**********4.已借书目************"<<endl;cout<<"**********5.修改密码************"<<endl;cout<<"**********6.所有藏书************"<<endl;cout<<"**********0.退出系统************"<<endl;cout<<"********************************"<<endl;
}//实现逻辑
void reader()
{int x;while(1){re_menu();cout<<"请选择功能(0-4):";x=Secure();switch(x){case 1://查找readers[current_r].CheckBook();system("pause");system("cls");break;case 2://借书if(readers[current_r].bor_books_num>=3)cout<<"借阅数量已达上限"<<endl;elsereaders[current_r].BorrowBook();system("pause");system("cls");break;case 3://还书if(readers[current_r].bor_books_num<=0)cout<<"您还未借书"<<endl;elsereaders[current_r].ReturnBook();system("pause");system("cls");break;case 4://已借书名readers[current_r].ShowBorrowBooks();system("pause");system("cls");break;case 5://修改密码readers[current_r].ChangeKey();system("pause");system("cls");break;case 6://显示全部书籍readers[current_r].ShowBooks();system("pause");system("cls");break;case 0:cout<<"欢迎下次使用"<<endl;return;default:cout<<"输入错误,请重新输入"<<endl;system("pause");system("cls");}}
}

效果

3.2读者类

代码

class Reader:public User
{public:Reader(string n,string k):User(n,k){bor_books_num=0;}int bor_books_num;void BorrowBook();void ReturnBook();void ShowBorrowBooks();//查看已借书籍
private:string bor_books[3]={"0","0","0"};//借阅的书最多为3本
};
vector<Reader> readers;

3.3借书操作

代码

void Reader::BorrowBook()
{cout<<"请输入要借阅的书籍名称:";string name;cin>>name;int t=(isExist(name));if(t!=-1){if(books[t].Is_exist==true){books[t].Is_exist=false;bor_books[bor_books_num++]=name;cout<<"借阅成功"<<endl;}elsecout<<"此书已被借走"<<endl;}else    cout << "查无此书" << endl;
}

3.4还书操作

代码

void Reader::ReturnBook()
{cout<<"请输入要归还的书籍名称:";string name;cin>>name;int t=(isExist(name));if(t!=-1){for(int i=0;i<MAX;i++){if(bor_books[i]==name){bor_books[i]="0";int t=isExist(name);books[t].Is_exist=true;cout<<"归还成功"<<endl;return;}}cout<<"您未借此书"<<endl;}else    cout << "查无此书" << endl;
}

3.5查看借阅的书

代码

void Reader::ShowBorrowBooks()
{cout<<"已借书名:";for(int i=0;i<MAX;i++){if(bor_books[i]!="0")cout<<bor_books[i]<<" ";}cout<<endl;
}

4.管理员界面

相较于v1.0,管理员页面新增了“显示读者信息”
代码

//界面
void lib_menu()
{cout<<"********************************"<<endl;cout<<"*****欢迎来到图书馆管理系统*****"<<endl;cout<<"********************************"<<endl;cout<<"**********1.加入图书************"<<endl;cout<<"**********2.删除图书************"<<endl;cout<<"**********3.查找图书************"<<endl;cout<<"**********4.清空书架************"<<endl;cout<<"**********5.修改图书************"<<endl;cout<<"**********6.显示图书信息********"<<endl;cout<<"**********7.显示读者信息********"<<endl;cout<<"**********0.退出系统************"<<endl;cout<<"********************************"<<endl;
}//逻辑实现
void librarian()
{int x;while(1){lib_menu();cout<<"请选择功能(0-6):";x=Secure();switch(x){case 1://增librarians[current_l].AddBook();system("pause");system("cls");break;case 2://删librarians[current_l].DeleteBook();system("pause");system("cls");break;case 3://查找librarians[current_l].CheckBook();system("pause");system("cls");break;case 4://清空librarians[current_l].CleanBooks();system("pause");system("cls");break;case 5://修改librarians[current_l].ChangeBook();system("pause");system("cls");break;case 6://显示全部书籍librarians[current_l].ShowBooks();system("pause");system("cls");break;case 7://显示读者信息librarians[current_l].ShowUsers();system("pause");system("cls");break;case 0:cout << "欢迎下次使用" << endl;return;default:cout<<"输入错误,请重新输入"<<endl;system("pause");system("cls");}}
}

效果

4.1管理员类

代码

class Librarian:public User
{public:Librarian(string n,string k):User(n,k){}void AddBook();void DeleteBook();void CleanBooks();void ChangeBook();void ShowBooks(); void ShowUsers();
};
vector<Librarian> librarians;

4.2增加图书

代码

void Librarian::AddBook()
{if(books.size()==books.max_size())   cout<<"书架已满"<<endl;else{string name,number,writer;float price;cout<<"请输入书名、作者、价格、编号(用空格隔开):"<<endl;cin>>name>>writer>>price>>number;//保证书名唯一int t=isExist(name);if(t!=-1){cout<<"书名存在"<<endl; return;}Book n_book;n_book.name=name;n_book.writer=writer;n_book.price=price;n_book.number=number;books.push_back(n_book);sort(books.begin(),books.end(),cmp);cout<<"添加成功"<<endl;}
}

4.3删除图书

代码

void Librarian::DeleteBook()
{cout<<"请输入要删除的书籍名称:";string name;cin>>name;int t=(isExist(name));if(t!=-1){swap(books[t],books[books.size()-1]);books.pop_back();sort(books.begin(),books.end(),cmp);cout<<"删除成功"<<endl;}else    cout << "查无此书" << endl;
}

4.4清空书架

代码

void Librarian::CleanBooks()
{books.clear();cout<<"清理完成"<<endl;
}

4.5修改图书信息

代码

void Librarian::ChangeBook()
{cout<<"输入要修改的书名:";string name;cin>>name;int t=isExist(name);if(t!=-1){cout<<"请输入新名字:";string name;cin>>name;books[t].name = name;cout<<"请输入新作者:";string writer;cin>>writer;books[t].writer = writer;cout<<"请输入新价格:";int price;cin>>price;books[t].price = price;cout<<"请输入新编号:";string num;cin>>num;books[t].number = num;}else    cout<<"查无此书"<<endl;
}

4.6查看读者信息

代码

void Librarian::ShowUsers()
{int flag=0;for(int i=0;i<readers.size();i++){flag=1;cout<<"账号:"<<readers[i].Getname()<<"\t";cout<<"密码:"<<readers[i].Getkey()<<"\t";readers[i].ShowBorrowBooks();}if(flag==0)   cout<<"没有用户"<<endl;
}

总代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;const int MAX=3;//最多借三本 int current_i;
int current_l;
int current_r;struct Book{string name;float price;string number;string writer;bool Is_exist=true;//是否借出
};
vector<Book> books;int Secure()
{string a;cin>>a;if(a=="0") return 0;else if (a=="1") return 1;else if (a=="2") return 2;else if (a=="3") return 3;else if (a=="4") return 4;else if (a=="5") return 5;else if (a=="6") return 6;else if (a=="7") return 7;else if (a=="8") return 8;elsereturn 9;
}void isExist(string a,int type)
{int flag=0;for(int i=0;i<books.size();i++)if(type==1&&books[i].name==a||type==2&&books[i].writer==a||type==3&&books[i].number==a) {flag=1;cout<<"书名为:"<<books[i].name<<"\t";cout<<"作者是:"<<books[i].writer<<"\t";cout<<"书价格为:"<<books[i].price<<"\t";cout<<"书编号为:"<<books[i].number<<"\t";cout<<"在馆状态:"<<books[i].Is_exist<<endl;}if(flag==0)cout<<"无记录"<<endl;
}void isExistRange(float l_price,float h_price)
{int flag=0;for(int i=0;i<books.size();i++)if(books[i].price>=l_price&&books[i].price<=h_price){flag=1;cout<<"书名为:"<<books[i].name<<"\t";cout<<"作者是:"<<books[i].writer<<"\t";cout<<"书价格为:"<<books[i].price<<"\t";cout<<"书编号为:"<<books[i].number<<"\t";cout<<"在馆状态:"<<books[i].Is_exist<<endl;}if(flag==0)cout<<"无记录"<<endl;
}int isExist(string name)
{for(int i=0;i<books.size();i++)if(books[i].name==name) return i;return -1;
}void lib_menu()
{cout<<"********************************"<<endl;cout<<"*****欢迎来到图书馆管理系统*****"<<endl;cout<<"********************************"<<endl;cout<<"**********1.加入图书************"<<endl;cout<<"**********2.删除图书************"<<endl;cout<<"**********3.查找图书************"<<endl;cout<<"**********4.清空书架************"<<endl;cout<<"**********5.修改图书************"<<endl;cout<<"**********6.显示图书信息********"<<endl;cout<<"**********7.显示读者信息********"<<endl;cout<<"**********0.退出系统************"<<endl;cout<<"********************************"<<endl;
}void re_menu()
{cout<<"********************************"<<endl;cout<<"*****欢迎来到图书馆管理系统*****"<<endl;cout<<"********************************"<<endl;cout<<"**********1.查找图书************"<<endl;cout<<"**********2.借书****************"<<endl;cout<<"**********3.还书****************"<<endl;cout<<"**********4.已借书目************"<<endl;cout<<"**********5.修改密码************"<<endl;cout<<"**********6.所有藏书************"<<endl;cout<<"**********0.退出系统************"<<endl;cout<<"********************************"<<endl;
}void first_menu()
{cout<<"********************************"<<endl;cout<<"*****欢迎来到图书馆管理系统*****"<<endl;cout<<"********************************"<<endl;cout<<"***********1.注册***************"<<endl;cout<<"***********2.登录***************"<<endl;cout<<"***********0.退出系统***********"<<endl;cout<<"********************************"<<endl;
}void Check_menu()
{cout<<"********************************"<<endl;cout<<"*********欢迎来到查询页面*******"<<endl;cout<<"********************************"<<endl;cout<<"**********1.按书名查询**********"<<endl;cout<<"**********2.按作者查询**********"<<endl;cout<<"**********3.按编号查询**********"<<endl;cout<<"**********4.按价格区间查询******"<<endl;cout<<"**********0.退出查询页面********"<<endl;cout<<"********************************"<<endl;}class User
{private:string name;string key;bool Is_Librarian,Is_Reader;//什么用户类型int rep_Librarian,rep_Reader;//在librarian和reader中下标是多少
public:User(string n,string k) {/*Is_Librarian=false;Is_Reader=true;*/name=n;key=k;}//默认为读者void Setname(string n){  name=n;    }void Setkey(string k){ key=k; }void Setrep_Librarian(int n){  rep_Librarian=n;   }void Setrep_Reader(int n){ rep_Reader=n;  }string Getname(){  return name;    }string Getkey(){   return key; }int Getrep_Librarian(){    return rep_Librarian;   }int Getrep_Reader(){   return rep_Reader;  }void Setlibrarian() { Is_Librarian=true; Is_Reader=false;    }bool Islibrarian(){    return Is_Librarian;    }bool Isreader(){   return Is_Reader;   }void ShowBooks();//查看所有藏书void CheckBook();//查找书名 void ChangeKey();//修改密码
};
vector<User> users;void User::ShowBooks()
{if(books.size()==0)  cout<<"书架为空"<<endl;else {for(int i=0;i<books.size();i++){cout<<"书籍名称:"<<books[i].name<<"\t";cout<<"作者:"<<books[i].writer<<"\t";cout<<"价格:"<<books[i].price<<"\t";cout<<"编号:"<<books[i].number<<"\t";cout<<"在馆状态:"<<books[i].Is_exist<<endl;}}
}void User::CheckBook()
{int x;system("cls");while(true){Check_menu();cout<<"请选择功能(0-4):";x=Secure();string a;switch(x){case 0:return;case 1:cout<<"请输入要查找的书名:";cin>>a;isExist(a,1);system("pause");system("cls");break;case 2:cout<<"请输入要查找的作者:";cin>>a;isExist(a,2);system("pause");system("cls");break;case 3:cout<<"请输入要查找的编号:";cin>>a;isExist(a,3);system("pause");system("cls");break;case 4:cout<<"请输入要查找的价格区间(低到高):";float l_price,h_price;cin>>l_price>>h_price;isExistRange(l_price,h_price);system("pause");system("cls");break;default:cout<<"输入错误,请重新输入"<<endl;system("pause");system("cls");}}
}class Reader:public User
{public:Reader(string n,string k):User(n,k){bor_books_num=0;}int bor_books_num;void BorrowBook();void ReturnBook();void ShowBorrowBooks();//查看已借书籍
private:string bor_books[3]={"0","0","0"};//借阅的书最多为3本
};
vector<Reader> readers;void Reader::BorrowBook()
{cout<<"请输入要借阅的书籍名称:";string name;cin>>name;int t=(isExist(name));if(t!=-1){if(books[t].Is_exist==true){books[t].Is_exist=false;bor_books[bor_books_num++]=name;cout<<"借阅成功"<<endl;}elsecout<<"此书已被借走"<<endl;}else    cout << "查无此书" << endl;
}void Reader::ReturnBook()
{cout<<"请输入要归还的书籍名称:";string name;cin>>name;int t=(isExist(name));if(t!=-1){for(int i=0;i<MAX;i++){if(bor_books[i]==name){bor_books[i]="0";int t=isExist(name);books[t].Is_exist=true;cout<<"归还成功"<<endl;return;}}cout<<"您未借此书"<<endl;}else    cout << "查无此书" << endl;
}void Reader::ShowBorrowBooks()
{cout<<"已借书名:";for(int i=0;i<MAX;i++){if(bor_books[i]!="0")cout<<bor_books[i]<<" ";}cout<<endl;
}class Librarian:public User
{public:Librarian(string n,string k):User(n,k){}void AddBook();void DeleteBook();void CleanBooks();void ChangeBook(); void ShowUsers();
};
vector<Librarian> librarians;void User::ChangeKey()
{string key1,key2;cout<<"请输入原密码:";cin>>key1;if(Getkey()==key1){cout<<"请输入新密码:";cin>>key1;cout<<"请再次输入新密码:";cin>>key2;if(key2!=key1)  cout<<"两次密码不相同"<<endl;else{users[current_i].Setkey(key2);if(users[current_i].Islibrarian())librarians[users[current_i].Getrep_Librarian()].Setkey(key2);elsereaders[users[current_i].Getrep_Reader()].Setkey(key2);cout<<"修改成功"<<endl;}}else{cout<<"密码错误"<<endl;}
}bool cmp(Book book1,Book book2)
{return book1.name<book2.name;
}void Librarian::AddBook()
{if(books.size()==books.max_size())   cout<<"书架已满"<<endl;else{string name,number,writer;float price;cout<<"请输入书名、作者、价格、编号(用空格隔开):"<<endl;cin>>name>>writer>>price>>number;//保证书名唯一int t=isExist(name);if(t!=-1){cout<<"书名存在"<<endl; return;}Book n_book;n_book.name=name;n_book.writer=writer;n_book.price=price;n_book.number=number;books.push_back(n_book);sort(books.begin(),books.end(),cmp);cout<<"添加成功"<<endl;}
}void Librarian::DeleteBook()
{cout<<"请输入要删除的书籍名称:";string name;cin>>name;int t=(isExist(name));if(t!=-1){swap(books[t],books[books.size()-1]);books.pop_back();sort(books.begin(),books.end(),cmp);cout<<"删除成功"<<endl;}else    cout << "查无此书" << endl;
}void Librarian::CleanBooks()
{books.clear();cout<<"清理完成"<<endl;
}void Librarian::ChangeBook()
{cout<<"输入要修改的书名:";string name;cin>>name;int t=isExist(name);if(t!=-1){cout<<"请输入新名字:";string name;cin>>name;books[t].name = name;cout<<"请输入新作者:";string writer;cin>>writer;books[t].writer = writer;cout<<"请输入新价格:";int price;cin>>price;books[t].price = price;cout<<"请输入新编号:";string num;cin>>num;books[t].number = num;}else    cout<<"查无此书"<<endl;
}void Librarian::ShowUsers()
{int flag=0;for(int i=0;i<readers.size();i++){flag=1;cout<<"账号:"<<readers[i].Getname()<<"\t";cout<<"密码:"<<readers[i].Getkey()<<"\t";readers[i].ShowBorrowBooks();}if(flag==0)   cout<<"没有用户"<<endl;
}void reader()
{int x;while(1){re_menu();cout<<"请选择功能(0-4):";x=Secure();switch(x){case 1://查找readers[current_r].CheckBook();system("pause");system("cls");break;case 2://借书if(readers[current_r].bor_books_num>=3)cout<<"借阅数量已达上限"<<endl;elsereaders[current_r].BorrowBook();system("pause");system("cls");break;case 3://还书if(readers[current_r].bor_books_num<=0)cout<<"您还未借书"<<endl;elsereaders[current_r].ReturnBook();system("pause");system("cls");break;case 4://已借书名readers[current_r].ShowBorrowBooks();system("pause");system("cls");break;case 5://修改密码readers[current_r].ChangeKey();system("pause");system("cls");break;case 6://显示全部书籍readers[current_r].ShowBooks();system("pause");system("cls");break;case 0:cout<<"欢迎下次使用"<<endl;return;default:cout<<"输入错误,请重新输入"<<endl;system("pause");system("cls");}}
}void librarian()
{int x;while(1){lib_menu();cout<<"请选择功能(0-6):";x=Secure();switch(x){case 1://增librarians[current_l].AddBook();system("pause");system("cls");break;case 2://删librarians[current_l].DeleteBook();system("pause");system("cls");break;case 3://查找librarians[current_l].CheckBook();system("pause");system("cls");break;case 4://清空librarians[current_l].CleanBooks();system("pause");system("cls");break;case 5://修改librarians[current_l].ChangeBook();system("pause");system("cls");break;case 6://显示全部书籍librarians[current_l].ShowBooks();system("pause");system("cls");break;case 7://显示读者信息librarians[current_l].ShowUsers();system("pause");system("cls");break;case 0:cout << "欢迎下次使用" << endl;return;default:cout<<"输入错误,请重新输入"<<endl;system("pause");system("cls");}}
}void SignIn()
{int flag=0;string name,key1,key2;while(1){flag=0;cout<<"请输入用户名:";cin>>name;for(int i=0;i<users.size();i++)if(users[i].Getname()==name){cout<<"用户名已存在"<<endl;flag=1;break;}if(flag==0) break;}while(1){cout<<"请输入密码:";cin>>key1;cout<<"再次输入密码:";cin>>key2;if(key1==key2) break;cout<<"两次密码不一致,请重新输入."<<endl;}User t_user(name,key1);char a;cout<<"是否为图书馆管理员(y or n):";cin>>a;if(a=='y'||a=='Y'){t_user.Setlibrarian();t_user.Setrep_Librarian(librarians.size());//表示在librarian中下标为多少Librarian t_lib(name,key1);librarians.push_back(t_lib);}else{t_user.Setrep_Reader(readers.size());//表示在readers中下标为多少Reader t_re(name,key1);readers.push_back(t_re);}users.push_back(t_user);cout<<"注册成功"<<endl;
}void Login()
{int i;string name,key;int n_flag=0,k_flag=0;while(1){cout<<"请输入账号:";cin>>name;cout<<"请输入密码:";cin>>key;for(i=0;i<users.size();i++)if(users[i].Getname()==name){n_flag=1;//存在该账号if(users[i].Getkey()==key)k_flag=1;//密码正确break;}if(n_flag==0)    cout<<"账号不存在"<<endl;else{if(k_flag==0) cout<<"密码错误"<<endl;else{system("pause");system("cls");if(users[i].Islibrarian()!=0){current_i=i;current_l=users[i].Getrep_Librarian();librarian();break;}else{current_i=i;current_r=users[i].Getrep_Reader();reader();break;}}}}
}int main()
{int x;while(1){first_menu();cout<<"请选择功能(0-2):";x=Secure();switch(x){case 1://注册SignIn();system("pause");system("cls");break;case 2://登录Login();system("pause");system("cls");break;case 0:cout << "欢迎下次使用" << endl;return 0;default:cout<<"输入错误,请重新输入"<<endl;system("pause");system("cls");}}
}

总结

代码中存在许多bug,(例:可以无限还书),将在近期进行优化。如果有其他bug,可以评论或者私信。谢谢

c++实现图书管理系统v2.0相关推荐

  1. 小孔子文章管理系统V2.0发布测试

    小孔子文章管理系统V2.0 [感谢]  本系统是仿照nbArticle开发,在此表示感谢nb联盟的作品. [版权声明]                                          ...

  2. 2022开源PHP留言反馈管理系统 v2.0

    介绍: 开源PHP留言反馈管理系统 v2.0 在线下载 开源PHP留言反馈管理系统是二次开发的一套适用于中小企业及个人网站的留言反馈管理程序系统,基于 PHP + MySQL + Bootstrap ...

  3. QP深加工结转数据管理系统V2.0

    <QP深加工结转数据管理系统V2.0> 电子口岸预录入系统(QuickPass)4.0版(也称为QP)是在原有"报关行版报关申报子系统"的基础上开发设计而成,主要考虑到 ...

  4. 诊所管理软件_药一点诊所管理系统v2.0.0.1

    诊所管理软件_药一点诊所管理系统v2.0.0.1 随着计算机技术和IT业的飞速发展,门诊管理信息系统的建设经过几十年的发展取得了很大的进步.门诊管理信息化是社会和时代发展的需要,门诊能不能在激烈的竞争 ...

  5. 115cms综合内容管理系统 v2.0

    介绍 115cms综合内容管理系统是一款采用当前最流行的ThinkPHP框架开发的高效开源的内容管理系统.本产品完全采用模块化开发,插件主题功能,增加了程序的维护性.可扩展性,使二次开发变得简单.容易 ...

  6. TIMO 后台管理系统 v2.0.1 发布,加入 jwt 身份验证组件,基于 Spring Boot

    TIMO后台管理系统v2.0.1版本已发布(基于SpringBoot),更新日志: 新增:加入JWT TOKEN鉴权机制,实现多端的权限验证! 更新:模块化全局统一异常处理机制及项目配置,降低模块间的 ...

  7. TIMO 后台管理系统 v2.0 发布,带来全新的项目结构,支持前后台模块分离部署!...

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   TIMO后台管理系统v2.0版本已发布(基于SpringBoot),更新日志: 重构项目结构,引入组件及业务组概念,让模块之间的关系更加清晰 ...

  8. 易格售后服务管理系统 v2.0 单机版 绿色

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  9. python django实现的图书管理系统v1.0

    图书管理系统v1.0 middlewares.py from django.utils.deprecation import MiddlewareMixin from django.shortcuts ...

最新文章

  1. 开源中国源码学习笔记
  2. 求解第K个斐波那契质数
  3. maven 如何给web项目添加jar包依赖
  4. 计算机gt的使用方法,旗舰级综合效果器 BOSS GT-1000使用宝典(二) | 基础操作
  5. C++ const与static
  6. windows 搭建HTTP文件服务器(Nginx 方式)
  7. access建立er图_Visio绘制ER图教程
  8. 0基础学习3dmax游戏建模有这4个技巧
  9. 网易相册:停止新用户注册 5月8日停止运营
  10. Hp-socket高性能网络库三--tcp组件pack接收模型
  11. Altium_Designer17-PCB-如何重新定义板子外形
  12. 2018计算机通信网络,2018年1-12月我国计算机、通信和其他电子设备制造业企业数量共计16656个...
  13. Word2019修改背景色失效的解决方法
  14. [SpringBoot的@Async注解和关键字synchronized的使用]
  15. Android 时间轴的实现
  16. opera mini android apk,Download Opera Mini APK Android
  17. Mysql 建立外键出错1822 可能原因之一分析 - Failed to add the foreign key constraint. Missing index for constraint
  18. 万字多图:搞懂分布式系统缓存设计
  19. Docker 安装 Rocket MQ
  20. Windows--UEFI引导安装Win10

热门文章

  1. 95%的受访者计划在未来六个月出游,表现出对“报复性旅行”“消除接触”的渴望 | 美通社头条...
  2. JavaWeb09_Cookie Session
  3. c语言 编程显示图案*,C语言中怎么编程在计算机屏幕上显示如下图案?
  4. 计算机图形学 读书笔记(八) 光线跟踪加速Ray Tracing Acceleration
  5. 计算机主机中负责存储运行中程序的部件,计算机内负责解释执行程序的部件被称为什么_常见问题解析...
  6. Hadoop小兵笔记【六】hadoop2.2.0伪分布式环境搭建疑难-JobHistory显示Job信息为空
  7. Linux系统引导过程及排除启动故障
  8. android十大开源项目
  9. linux系统手柄模拟器下载,Switch Amiibo模拟器(Windows|Linux PC + JoyControl + Bluetooth)...
  10. 佳音图php,PHP5实例教程 简简单单生成条形码