图书馆管理系统代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <iostream.h>//头文件
#include <string.h>
int readerid=0;//读者号
int bookid=0;//书号
class CBook //图书馆存书类
{
private:
int totalnum;//
public:
char bookname[20];//
int currentnum;//
CBook(char *na="nobook",int num=0)//
{
strcpy(bookname,na);
totalnum=num;
currentnum=num;
}
void displayname()//显示书名
{
cout<<"书名:"<<bookname;
cout<<" 可借数量:"<<currentnum<<endl;
}
};
class CReader//借阅人类
{
private:
char name[20];//
int id;//
int books; //
public:
char bookname[5][20];//
int borrowed;//已借数
//book,可借数;books,总可借数
CReader(char *nam="noname",int book=5):borrowed(5-book),books(book),id(readerid+1) { //
strcpy(name,nam);
for(int i=0;i<5;i++)
strcpy(bookname[i],"nobook");
}
void displayname()
{
cout<<"名字:"<<name<<",借书证号:"<<id<<"号"<<endl;
}
void display()//
{
char *bookname1;
cout<<"您的名字为:"<<name<<endl;
cout<<"您的借书证号为:"<<id<<"号"<<endl;
cout<<"您的借阅情况:"<<endl;
if (borrowed>0)
for(int i=0;i<borrowed;i++)
{
bookname1=bookname[i];
cout<<"已借书籍:"<<bookname1<<endl;
};
cout<<"已借:"<<borrowed<<"本书";
cout<<" 可借:"<<books-borrowed<<"本书"<<endl;
}
};
CBook *libbook[5];//本馆最多存5种书(可调)
CReader *libperson[5];//本馆最多注册5人(可调)
CReader accout();
CBook newbook();
void hello();//
int borrow();//
int back();//
int bookinformation();//
int readerinformation();//
void main()//
{ char option[100];
hello();//
while(1)
{
cout<<"------------------------系统首页-----------------------"<<endl<<endl;
cout<<" 0、入库新书1、开户2、借书3、还书4、库存查询5、用户查询6、退出"<<endl;
cout<<"-----------------------------------------------------------------"<<endl<<endl;
cout<<" 请选序号后回车:"<<endl<<endl;
cin>>option;
switch (option[0])
{
case '0'://
if (bookid>4)
{
cout<<"书库已满!通知管理员"<<endl;
break;}
libbook[bookid]=new CBook;
*libbook[bookid]=newbook();
bookid++;
break;
case '1': //
if (readerid>4)
{
cout<<"用户已满!通知管理员"<<endl;
break;
}
libperson[readerid]=new CReader;
*libperson[readerid]=accout();
readerid++;
break;
case '2'://
borrow();
break;
case '3'://
back();
break;
case '4'://
bookinformation();
break;
case '5'://
readerinformation();
break;
case '6'://
cout<<"谢谢使用!"<<endl;
return;
default://
cout<<"输入错误,请重新选择序号!"<<endl;
break;};
};
}
void hello()//
{
cout<<" **************************************"<<endl;
cout<<" ** **"<<endl;
cout<<" ** 欢迎进入图书馆管理系统**"<<endl;
cout<<" ** **"<<endl;
cout<<" **************************************"<<endl<<endl;
cout<<" Copyright@EEI,UJS"<<endl;
cout<<" 测试版:2012-10-16"<<endl<<endl<<endl<<endl; }
CReader accout()//开户
{
char xinming[20];
cout<<"请输入姓名:"<<endl;
cin>>xinming;
CReader someone(xinming);
cout<<"欢迎您"<<xinming<<" 同学!"<<endl;
someone.display();
return someone;
};
CBook newbook()//进新书
{ char abookname[20];//
int abooknum;//
cout<<"输入新书名:";
cin>>abookname;
cout<<"输入新书数量:";
cin>>abooknum;//
CBook ABook(abookname,abooknum);//
ABook.displayname();//
cout<<" --新书入库成功!--"<<endl<<endl;
return ABook;
}
int borrow()//借书
{
int ReaderInd;//
cout<<"请输入借书证号:"<<endl;
cin>>ReaderInd;//
if(ReaderInd>5||ReaderInd<1) {cout<<"用户不存在,请重新输入!"<<endl;return 1;}//
ReaderInd--;//
cout<<"用户信息:"<<endl;
/*指针数组的调用格式*/
(*libperson[ReaderInd]).display();//
cout<<"本馆可借的书有:"<<endl;
for (int BookInd=0;BookInd<bookid;BookInd++)
(*libbook[BookInd]).displayname();
if ((*libperson[ReaderInd]).borrowed==5)//超出5本
{
cout<<"您的借书限额已到,借阅不成功"<<endl;
return 1;
}
char borrowbookname[20];//输入书名
cout<<"您要借的书是:"<<endl;
cin>>borrowbookname;
int i=0,j=0,k=0;
for (i=0;i<bookid;i++)//找到该书(不可重名)
{if (strcmp(borrowbookname,(*libbook[i]).bookname)==0)
{j=i;k=1;
break;}
}
if ((*libbook[j]).currentnum==0)//无书可借
{
cout<<"书均已借出,借阅不成功"<<endl;
return 1;
}
if (k==0)//此书不存在
{
cout<<"找不到此书,借阅不成功"<<endl;
return 1;
//借书成功,数量减一
(*libbook[j]).currentnum--;
cout<<"借阅一本已成功"<<endl;
// (*libbook[j]).displayname();
bookinformation();///
/*读者信息处理*/
int borrowed1=(*libperson[ReaderInd]).borrowed;//borrowed1已借书
strcpy((*libperson[ReaderInd]).bookname[borrowed1],borrowbookname);
++(*libperson[ReaderInd]).borrowed;
return 0;
};
int back() //还书
{
int ReaderInd;
cout<<"请输入借书证号:"<<endl;
cin>>ReaderInd;
if(ReaderInd>5||ReaderInd<1) {cout<<"用户不存在,请重新输入!"<<endl;return 1;}//
if((*libperson[ReaderInd-1]).borrowed==0) {cout<<"用户还未借书,请重新输入!"<<endl;return 1;}
ReaderInd--;
cout<<"用户信息:"<<endl; //显示用户信息
(*libperson[ReaderInd]).display();
cout<<"本馆可借的书有:"<<endl;
for (int BookInd=0;BookInd<bookid;BookInd++)
(*libbook[BookInd]).displayname();
char backbookname[20]; //输入书名
cout<<"您要还的书是:"<<endl;
cin>>backbookname;
int i=0,n=0,flag=0,j=0,k=0,t=0,fg=0;
for (i=0;i<bookid;i++) //书库里找到该书
if (strcmp(backbookname,(*libbook[i]).bookname)==0) { flag=1;break; }
if(flag==1)
for (n=0;n<(*libperson[ReaderInd]).borrowed;n++)//判断有没有借这本书
if (strcmp((*libperson[ReaderInd]).bookname[n],backbookname)==0)
{k=1;fg=n;j=i;break;}
if (k==0)
{cout<<"没有借阅此书,重新输入,谢谢"<<endl;
return 1;}
if (k==1)
{(*libbook[j]).currentnum++;//
cout<<"您已成功归还一本"<<endl;
for( t=fg;t<(*libperson[ReaderInd]).borrowed-1;t++)
strcpy((*libperson[ReaderInd]).bookname[t],(*libperson[ReaderInd]).bookname[t+1]);
//(*libbook[j]).displayname();//
bookinformation();///
--(*libperson[ReaderInd]).borrowed;//
}
return 1;
}
int bookinformation() //书库信息
{
cout<<"本馆可借的书有:"<<endl;
for(int i=0;i<bookid;i++)
(*libbook[i]).displayname();//
return 1;
}
int readerinformation() //读者信息
{ int ReaderInd;
cout<<"本馆共有"<<readerid<<"位读者:"<<endl;
cout<<"请输入您要查询读者的借书证号码<1-5>:"<<endl;
cin>>ReaderInd;
if(ReaderInd>5||ReaderInd<1) {cout<<"用户不存在,请重新输入!"<<endl;return 1;}
cout<<"用户信息:"<<endl;
if(ReaderInd>readerid)
{cout<<"输入有误,无此读者,请重新输入!"<<endl;
readerinformation();//
}
(*libperson[ReaderInd-1]).display(); //
return 1;
}。