文章目录
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);
else
readers[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;
else
readers[current_r].BorrowBook();
system("pause");
system("cls");
break;
case 3://还书
if(readers[current_r].bor_books_num<=0)
cout<<"您还未借书"<<endl;
else
readers[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;
}
else
cout<<"此书已被借走"<<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;
else
return 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;
}
else
cout<<"此书已被借走"<<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);
else
readers[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;
else
readers[current_r].BorrowBook();
system("pause");
system("cls");
break;
case 3://还书
if(readers[current_r].bor_books_num<=0)
cout<<"您还未借书"<<endl;
else
readers[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,可以评论或者私信。谢谢