图书管理系统(c++实现)
1 图书管理员继承了Book类,系统管理员继承了User类和Book类。
2 图书管理员可以增加,删除,修改,查询,统计图书等,系统管理员可以对读者及图书管理员进行增加及删除
3读者可以进行借书还书操作,若书已借出会有提示
4教师可以进行借书还书操作,若书已借出会有提示
5有超过借书数目的异常处理,读者最多借书5本,教师最多借书10本
6可以实现注册登录的操作
7 数据存入数组
8 读者借的书会有记录在数组中
实验源码
#include
#include
using namespace std;
int k=0;//记录读者人数
int k2=0;//记录学生图书数
int k9=0;//记录教师图书数
int k4=0;
int k7=0;//记录图书管理员人数;
int k8=0;
class Book
{
protected:
string number,title,author,publish,price;
int tag;//判断图书是否已被借出
public:
int gettag()
{
return tag;
}
void settag()
{
tag=1;
}
void settag0()
{
tag=0;
}
void setnumber()
{
cin>>number;
}
void settitle()
{
cin>>title;
}
void setauthor()
{
cin>>author;
}
void setpublish()
{
cin>>publish;
}
void setprice()
{
cin>>price;
}
void inputnumber()
{
cout<<number<<endl;
}
void inputtitle()
{
cout<<title<<endl;
}
void inputauthor()
{
cout<<author<<endl;
}
void inputpublish()
{
cout<<publish<<endl;
}
void inputprice()
{
cout<<price<<endl;
}
string gettitle()
{
return title;
}
string getnumber()
{
return number;
}
string getauthor()
{
return author;
}
string getpublish()
{
return publish;
}
string getprice()
{
return price;
}
};
Book b[10];
class User
{
protected:
string name;
string mima;
string title;
Book b1[10];
int y[10];//记录读者所借书的位置
int u,u1;//记录读者借书数量
public:
string getname()
{
return name;
}
string getmima()
{
return mima;
}
void setname()
{
cin>>name;
}
void setmima()
{
cin>>mima;
}
void addreader();
int enter();
int borrowbook();
int returnbook();
};
User a[10];
void User::addreader()//读者注册
{
cout<<"请输入姓名: ";
a[k].setname();
cout<<"请输入密码: ";
a[k].setmima();
k=k+1;
k4=k4+1;
u=0;
u1=0;
}
int User::enter()//读者登录
{
int k1=0;//用于验证是否能够登录
cout<<"请输入姓名: ";
cin>>this->name;
cout<<"请输入密码: ";
cin>>this->mima;
for(int i=0;i<10;i++)
{
if(a[i].getname()==this->name&&a[i].getmima()==this->mima)
{
k1=1;
break;
}
}
return k1;
}
int User::borrowbook()//读者实现借书操作
{
try
{
if(u==5)
throw u;
}
catch(int)
{
cout<<“达到借书上限”<<endl;
}//对超出借书数目的异常处理
int i,j,m=0;//判断图书馆是否存在此书
cout<<"请输入所借书名: ";
cin>>title;
for(i=0;i<k2;i++)
{
if(b[i].gettitle()==title)
{
m=1;
j=i;
}
}
switch(m)
{
case 0:
cout<<“图书馆查无此书”;
break;
case 1:
if(b[j].gettag()==0)
{
b1[u]=b[j];
y[u]=j;
b[j].settag();
u=u+1;
u1=u1+1;
cout<<“借书成功”;
}
else
cout<<“此书已被借出”;
}
return 0;
}
int User::returnbook()//读者进行还书操作
{
int m1=0;//记录是否还书成功
cout<<“请输入所还书名”;
cin>>title;
for(int i=0;i<u;i++)
{
if(b1[i].gettitle()==title)
{
for(int j=0;j<k2;j++)
{
if(b[j].gettitle()==title)
b[j].settag0();
}
u1=u1-1;
m1=1;
break;
}
}
if(m1==0)
cout<<“还书失败”;
else
cout<<“还书成功”;
return 0;
}
class tushuAdministrators:public Book
{
protected:
string name1;
string mima1;
public:
string getmima1()
{
return mima1;
}
string getname1()
{
return name1;
}
void setname1()
{
cin>>name1;
}
void setmima1()
{
cin>>mima1;
}
void addguanli();
void addbook();
int deletebook();
int alterbook();
int findbook();
void statisticbook();
int enterguanli();
};
tushuAdministrators t[10];
void tushuAdministrators::addguanli()//管理员进行注册
{
cout<<"请输入管理员姓名: ";
t[k7].setname1();
cout<<"请输入管理员密码: ";
t[k7].setmima1();
cout<<“注册成功”;
k7=k7+1;
k8=k8+1;
}
int tushuAdministrators::enterguanli()//管理员进行登录
{
int k1=0;//用于验证是否能够登录
cout<<"请输入管理员姓名: ";
cin>>this->name1;
cout<<"请输入管理员密码: ";
cin>>this->mima1;
for(int i=0;i<10;i++)
{
if(t[i].getname1()==this->name1&&t[i].getmima1()==this->mima1)
{
k1=1;
break;
}
}
switch(k1)
{
case 0:
cout<<“登录失败”;
break;
case 1:
cout<<“登陆成功”;
}
return 0;
}
void tushuAdministrators::addbook()//管理员进行增加图书的操作
{
cout<<"请输入图书编号: ";
b[k2].setnumber();
cout<<"请输入书名: ";
b[k2].settitle();
cout<<"请输入作者: ";
b[k2].setauthor();
cout<<"请输入出版社: ";
b[k2].setpublish();
cout<<"请输入单价: ";
b[k2].setprice();
k2=k2+1;
Book::settag0();
}
int tushuAdministrators::deletebook()//管理员进行删除图书的操作
{
cout<<“请选择您要删除图书的方式:\n 1 图书编号\n 2 作者姓名\n”;
int k3=0;
int choice;
cout<<“请输入你的选择:”;
cin>>choice;
int i,j;
switch(choice)
{
case 1:
cout<<"请输入图书编号: ";
cin>>number;
for(i=0;i<k2;i++)
{
if(b[i].getnumber()==number)
{
for(j=i;j<k2+1;j++)
b[j]=b[j+1];
k3=1;
k2=k2-1;
break;
}
}
break;
case 2:
cout<<"请输入作者姓名: ";
cin>>this->author;
for(i=0;i<k2;i++)
{
if(b[i].gettitle()==this->title)
{
for(int j=i;j<k2+1;j++)
b[j]=b[j+1];
k3=1;
k2=k2-1;
break;
}
}
break;
}
return k3;
}
int tushuAdministrators::alterbook()//管理员进行修改图书的操作
{
int k4=0;
cout<<“请选择您要修改图书的方式:\n 1 图书编号\n 2 作者姓名\n”;
int choice;
cout<<“请输入你的选择:”;
cin>>choice;
int i;
switch(choice)
{
case 1:
cout<<"请输入图书编号: ";
cin>>this->number;
for(i=0;i<k2;i++)
{
if(b[i].getnumber()==this->number)
{
cout<<"请输入图书编号: ";
b[i].setnumber();
cout<<"请输入书名: ";
b[i].settitle();
cout<<"请输入作者: ";
b[i].setauthor();
cout<<"请输入出版社: ";
b[i].setpublish();
cout<<"请输入单价: ";
b[i].setprice();
k4=1;
}
}
}
return k4;
}
int tushuAdministrators::findbook()//管理员进行查询图书的操作
{
int k5=0;
cout<<“请选择您要查询图书的方式:\n 1 书名\n 2 作者\n 3 编号\n”;
cout<<"请输入你的选择: ";
int choice,i;
cin>>choice;
switch(choice)
{
case 1:
cout<<"请输入所查书名: ";
cin>>this->title;
for(i=0;i<k2;i++)
{
if(b[i].gettitle()==this->title)
{
cout<<"图书编号: ";
b[i].inputnumber();
cout<<"书名 : ";
b[i].inputtitle();
cout<<"作者 : ";
b[i].inputauthor();
cout<<"出版社 : ";
b[i].inputpublish();
cout<<"图书单价: ";
b[i].inputprice();
k5=1;
}
}
break;
case 2:
cout<<"请输入所查书名: ";
cin>>this->author;
for(i=0;i<k2;i++)
{
if(b[i].getauthor()==this->author)
{
cout<<"图书编号: ";
b[i].inputnumber();
cout<<"书名 : ";
b[i].inputtitle();
cout<<"作者 : ";
b[i].inputauthor();
cout<<"出版社 : ";
b[i].inputpublish();
cout<<"图书单价: ";
b[i].inputprice();
k5=1;
}
}
break;
case 3:
cout<<"请输入所查书名: ";
cin>>this->number;
for(i=0;i<k2;i++)
{
if(b[i].getnumber()==this->number)
{
cout<<"图书编号: ";
b[i].inputnumber();
cout<<"书名 : ";
b[i].inputtitle();
cout<<"作者 : ";
b[i].inputauthor();
cout<<"出版社 : ";
b[i].inputpublish();
cout<<"图书单价: ";
b[i].inputprice();
k5=1;
}
}
break;
}
return k5;
}
void tushuAdministrators::statisticbook()//管理员进行统计图书的操作
{
int i;
for(i=0;i<k2;i++)
{
cout<<"图书编号: ";
b[i].inputnumber();
cout<<"书名 : ";
b[i].inputtitle();
cout<<"作者 : ";
b[i].inputauthor();
cout<<"出版社 : ";
b[i].inputpublish();
cout<<"图书单价: ";
b[i].inputprice();
}
}
User p;
tushuAdministrators v;
class xitongAdministrators:public User,public Book
{
protected:
string name2;
string mima2;
public:
void shanjianyonghu();
string getmima2()
{
return mima2;
}
string getname2()
{
return name2;
}
void setmima2()
{
cin>>mima2;
}
void setname2()
{
cin>>name2;
}
void add();
void enter();
void zengjia();
};
xitongAdministrators v1;
xitongAdministrators r;
void xitongAdministrators::add()//系统管理员进行注册
{
cout<<"请输入系统管理员姓名: ";
r.setname2();
cout<<"请输入系统管理员密码: ";
r.setmima2();
cout<<“注册成功”;
}
void xitongAdministrators::enter()//系统管理员进行登录
{
int r1=0;
cout<<"请输入系统管理员姓名: ";
cin>>name2;
cout<<"请输入系统管理员密码: ";
cin>>mima2;
if(name2r.getname2()&&mima2r.getmima2())
r1=1;
switch(r1)
{
case 1:
cout<<“登陆成功”;
break;
case 0:
cout<<“登录失败”;
break;
}
}
void xitongAdministrators::zengjia()//系统管理员进行增加读者或图书管理员的操作
{
int q2=0;
cout<<“请选择你要对谁进行权限管理\n 1 读者\n 2 图书管理员 \n”;
int choice;
cin>>choice;
switch(choice)
{
case 1:
cout<<“请输入你要增加的读者姓名”;
a[k4+1].setname();
cout<<“请输入你要增加的读者密码”;
a[k4+1].setmima();
cout<<“增加成功”;
break;
case 2:
cout<<“请输入你要增加的图书管理员姓名”;
t[k8+1].setname1();
cout<<“请输入你要增加的图书管理员密码”;
t[k8+1].setmima1();
cout<<“增加成功”;
break;
}
}
void xitongAdministrators::shanjianyonghu()//系统管理员进行删除读者或图书管理员的操作
{
int i,j;
int q=0;//判断读者是否已经删除
cout<<“请选择你要对谁进行权限管理\n 1 读者\n 2 图书管理员 \n”;
int choice;
cin>>choice;
switch(choice)
{
case 1:
cout<<“请输入你要删除的读者姓名”;
cin>>name2;
for(i=0;i<k;i++)
{
if(a[i].getname()==name2)
{
for(j=i;j<k+1;j++)
a[j]=a[j+1];
q=1;
k4=k4-1;
}
}
break;
case 2:
cout<<"请输入你要删除的图书管理员姓名: ";
cin>>name2;
for(i=0;i<k;i++)
{
if(t[i].getname1()==name2)
{
for(j=i;j<k+1;j++)
t[j]=t[j+1];
q=1;
k8=k8-1;
}
}
break;
}
switch(q)
{
case 0:
cout<<“删除失败”;
case 1:
cout<<“删除成功”;
}
}
class teacher
{
protected:
string name;
string mima;
string title;
Book b1[10];
int y[10];//记录读者所借书的位置
int u,u1;//记录读者借书数量
public:
string getname()
{
return name;
}
string getmima()
{
return mima;
}
void setname()
{
cin>>name;
}
void setmima()
{
cin>>mima;
}
void addreader();
int enter();
int borrowbook();
int returnbook();
};
void teacher::addreader()//读者注册
{
cout<<"请输入姓名: ";
a[k].setname();
cout<<"请输入密码: ";
a[k].setmima();
k=k+1;
k4=k4+1;
u=0;
u1=0;
}
int teacher::enter()//读者登录
{
int k1=0;//用于验证是否能够登录
cout<<"请输入姓名: ";
cin>>this->name;
cout<<"请输入密码: ";
cin>>this->mima;
for(int i=0;i<10;i++)
{
if(a[i].getname()==this->name&&a[i].getmima()==this->mima)
{
k1=1;
break;
}
}
return k1;
}
int teacher::borrowbook()//读者实现借书操作
{
try
{
if(u==10)
throw u;
}
catch(int)
{
cout<<“达到借书上限”<<endl;
}//对超出借书数目的异常处理
int i,j,m=0;//判断图书馆是否存在此书
cout<<"请输入所借书名: ";
cin>>title;
for(i=0;i<k9;i++)
{
if(b[i].gettitle()==title)
{
m=1;
j=i;
}
}
switch(m)
{
case 0:
cout<<“图书馆查无此书”;
break;
case 1:
if(b[j].gettag()==0)
{
b1[u]=b[j];
y[u]=j;
b[j].settag();
u=u+1;
u1=u1+1;
cout<<“借书成功”;
}
else
cout<<“此书已被借出”;
}
return 0;
}
int teacher::returnbook()//读者进行还书操作
{
if(k9==10)
cout<<“达到借书上限”;
int m1=0;//记录是否还书成功
cout<<“请输入所还书名”;
cin>>title;
for(int i=0;i<u;i++)
{
if(b1[i].gettitle()==title)
{
for(int j=0;j<k9;j++)
{
if(b[j].gettitle()==title)
b[j].settag0();
}
u1=u1-1;
m1=1;
break;
}
}
if(m1==0)
cout<<“还书失败”;
else
cout<<“还书成功”;
return 0;
}
int main()
{
int n=1,m,l3,l4,l5;
int choice,choice1,choice2,choice3,choice4;
while(choice!=0)
{
cout<<"\t\t\t请选择你的身份\n\n\t\t\t 1 读者\n\n\t\t\t 2 图书管理员 \n\n\t\t\t 3 系统管理员\n\n\t\t\t 4 教师\n\n";
cin>>choice;
switch(choice)
{
case 1:
cout<<“请随意输入一个非零数字”;
cin>>choice1;
while(choice1!=0)
{
cout <<endl<<endl<<"\t\t\t 图 书 管 理 系 统\n\n\n";
cout<<"\t\t\t 1 注册\n\n\t\t\t 2 登陆\n\n\t\t\t 3 借书\n\n\t\t\t 4 还书\n\n\t\t\t 5 退出系统\n\n\t\t\t 0 重新选择\n\n";
cout<<“最大借书数:5,最长借书时间 15天”;
cin>>choice1;
switch(choice1)
{
case 1:
system(“cls”);
p.addreader();
cout<<“您已注册成功”;
break;
case 2:
system(“cls”);
m=p.enter();
if(m==1)
cout<<“登陆成功”<<endl;
else
cout<<“登录失败”<<endl;
break;
case 3:
system(“cls”);
p.borrowbook();
break;
case 4:
system(“cls”);
p.returnbook();
break;
case 5:
n=0;
break;
case 0:
system(“cls”);
break;
}
}
break;
case 2:
cout<<“请随意输入一个非零数字”;
cin>>choice2;
while(choice2!=0)
{
cout <<endl<<endl<<"\t\t\t 图 书 管 理 系 统\n\n\n";
cout<<"\t\t\t 1 注册\n\n\t\t\t 2 登陆\n\n\t\t\t 3 增加图书\n\n\t\t\t 4 删除图书\n\n\t\t\t 5 修改图书\n\n\t\t\t 6 查询图书\n\n\t\t\t 7 统计图书\n\n\t\t\t 8退出系统\n\n\t\t\t 0 重新选择\n\n";
cout<<“请选择您需要的服务:”;
cin>>choice2;
switch(choice2)
{
case 1:
system(“cls”);
v.addguanli();
cout<<“你已注册成功”;
break;
case 2:
system(“cls”);
v.enterguanli();
break;
case 3:
system(“cls”);
v.addbook();
break;
case 4:
system(“cls”);
l3=v.deletebook();
if(l3==1)
cout<<“删除成功”;
else
cout<<“删除失败”;
break;
case 5:
system(“cls”);
l4=v.alterbook();
if(l4==1)
cout<<“修改成功”;
else
cout<<“修改失败”;
break;
case 6:
system(“cls”);
l5=v.findbook();
if(l5==0)
cout<<“查无此书”;
break;
case 7:
system(“cls”);
v.statisticbook();
break;
case 8:
n=0;
break;
case 0:
system(“cls”);
break;
}
}
break;
case 3:
cout<<“请随意输入一个非零数字”;
cin>>choice3;
while(choice3!=0)
{
cout <<endl<<endl<<"\t\t\t 图 书 管 理 系 统\n\n\n";
cout<<"\t\t\t 1 注册\n\n\t\t\t 2 登陆\n\n\t\t\t 3 删除人员\n\n\t\t\t 4 增加人员\n\n\t\t\t 5 退出系统\n\n\t\t\t 0 重新选择\n\n";
cout<<“请选择您需要的服务:”;
cin>>choice3;
switch(choice3)
{
case 1:
system(“cls”);
v1.add();
break;
case 2:
system(“cls”);
v1.enter();
break;
case 3:
system(“cls”);
v1.shanjianyonghu();
break;
case 4:
system(“cls”);
v1.zengjia();
break;
case 5:
n=0;
break;
case 0:
system(“cls”);
break;
}
}
break;
case 4:
cout<<“请随意输入一个非零数字”;
cin>>choice4;
while(choice4!=0)
{
cout <<endl<<endl<<"\t\t\t 图 书 管 理 系 统\n\n\n";
cout<<"\t\t\t 1 注册\n\n\t\t\t 2 登陆\n\n\t\t\t 3 借书\n\n\t\t\t 4 还书\n\n\t\t\t 5 退出系统\n\n\t\t\t 0 重新选择\n\n";
cout<<“最大借书数:10,最长借书时间 30天”;
cin>>choice4;
switch(choice4)
{
case 1:
system(“cls”);
p.addreader();
cout<<“您已注册成功”;
break;
case 2:
system(“cls”);
m=p.enter();
if(m==1)
cout<<“登陆成功”<<endl;
else
cout<<“登录失败”<<endl;
break;
case 3:
system(“cls”);
p.borrowbook();
break;
case 4:
system(“cls”);
p.returnbook();
break;
case 5:
n=0;
break;
case 0:
system(“cls”);
break;
}
}
break;
}
}
return 0;
}