C++图书管理系统代码.docx
- 文档编号:5150736
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:24
- 大小:18.31KB
C++图书管理系统代码.docx
《C++图书管理系统代码.docx》由会员分享,可在线阅读,更多相关《C++图书管理系统代码.docx(24页珍藏版)》请在冰豆网上搜索。
C++图书管理系统代码
C++图书管理系统代码
#include"iostream.h"
#include"conio.h"
#include"fstream.h"
#include"iomanip.h"
#include"string.h"
constintMaxr=100;//最多的读者数
constintMaxb=100;//最多的图书数
constintMaxbor=5;//每位读者最多借的书
classBook
{//图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能
private:
inttag;//删除标记1:
已删0:
未删
intno;//图书编号
charname[20];//书名
charauthor[20];//作者
charcbs[20];//出版社
intonshelf;//是否再架1:
再架2:
已借
public:
Book(){;}
char*getname()
{//获取书名
returnname;
}
char*getauthorname()
{//获取作者名
returnauthor;
}
char*getcbsname()
{//获取出版社名
returncbs;
}
intgetno()
{//获取图书编号
returnno;
}
intgettag()
{//获取删除标记
returntag;
}
voidsetname(charna[])
{//设置书名
strcpy(name,na);
}
voidsetonshelf(intoa)
{
onshelf=oa;
}
voiddelbook()
{//删除图书
tag=1;
}
voidaddbook(intn,char*na,char*aa,char*ca,intoa)
{//增加图书
tag=0;
no=n;
strcpy(name,na);
strcpy(author,aa);
strcpy(cbs,ca);
onshelf=oa;
}
intborrowbook()
{//借书操作
if(onshelf>0)
{
onshelf--;
return1;
}
return0;
}
voidretbook()
{//还书操作
onshelf++;
}
voiddisp()
{//输出图书
cout< < } }; classBDatabase {//图书库类,实现对图书的维护,查找,删除等 private: inttop;//图书记录指针 Bookbook[Maxb];//图书记录 public: BDatabase() {//构造函数,将book.txt读到book[]中 Bookb; top=-1; fstreamfile("book.txt",ios: : in); while (1) { file.read((char*)&b,sizeof(b)); if(! file) break; top++; book[top]=b; } file.close(); } voidclear() {//全删 top=-1; } intaddbook(intn,char*na,char*aa,char*ca,intoa) {//增加图书 Book*p=query1(n); if(NULL==p) { top++; book[top].addbook(n,na,aa,ca,oa); return1; } return0; } Book*query1(intbookid) {//按编号查找图书 for(inti=0;i<=top;i++) if(book[i].getno()==bookid&&book[i].gettag()==0) { return&book[i]; } returnNULL; } Book*query2(chara[]) {//按书名查找图书 Book*e; intr=0; for(inti=0;i<=top;i++) if(strcmp(book[i].getname(),a)==0&&book[i].gettag()==0) { if(r==0) cout< 出版社"< e=&book[i]; e->disp(); r++; } if(r==0) cout<<"找不到该书! "< returnNULL; } Book*query3(chara[]) {//按作者查找图书 Book*e; intr=0; for(inti=0;i<=top;i++) if(strcmp(book[i].getauthorname(),a)==0&&book[i].gettag()==0) { if(r==0) cout< 出版社"< e=&book[i]; e->disp(); r++; } if(r==0) cout<<"找不到该书! "< returnNULL; } Book*query4(chara[]) {//按出版社查找图书 Book*e; intr=0; for(inti=0;i<=top;i++) if(strcmp(book[i].getcbsname(),a)==0&&book[i].gettag()==0) { if(r==0)cout< e=&book[i]; e->disp(); r++; } if(r==0) cout<<"找不到该书! "< returnNULL; } voidbookdata();//图书库信息 voiddisp() { for(inti=0;i<=top;i++) if(book[i].gettag()==0) book[i].disp(); } ~BDatabase() {//析构函数,将book[]写到book.txt文件中 fstreamfile("book.txt",ios: : out); for(inti=0;i<=top;i++) if(book[i].gettag()==0) file.write((char*)&book[i],sizeof(book[i])); file.close(); } }; voidBDatabase: : bookdata() { charchoice3; charbname[40]; charauname[40]; charcname[40]; charch; intchoice4; intbookid; intbookod; Book*b; while(choice3! ='0') { cout<<"\n\t\t\t**图书信息**\n"< cout<<"\t\t\t**1.新增**"< cout<<"\t\t\t**2.更改**"< cout<<"\t\t\t**3.删除**"< cout<<"\t\t\t**4.查找**"< cout<<"\t\t\t**5.显示**"< cout<<"\t\t\t**6.全删**"< cout<<"\t\t\t**0.返回**"< cout<<"\t\t\t请选择: "; cin>>choice3; switch(choice3) { case'1': cout<<"请输入新书编号: "; cin>>bookid; b=query1(bookid); if(b! =NULL) { cout<<"该编号已经存在,不能添加! "< break; } cout<<"请输入新书书名: "; cin>>bname; cout<<"请输入新书作者名: "; cin>>auname; cout<<"请输入新书出版社: "; cin>>cname; cout<<"请输入新书数量: "; cin>>bookod; addbook(bookid,bname,auname,cname,bookod); cout<<"添加图书成功! "; getch(); break; case'2': cout<<"请输入图书编号: "; cin>>bookid; b=query1(bookid); if(b==NULL) { cout<<"该图书不存在! "< break; } cout<<"该图书的信息是: "< cout< 版社"< b->disp(); cout<<"是否修改? (y/n): "; cin>>ch; if(ch=='y') { cout<<"请输入新的书名: "; cin>>bname; cout<<"请输入新的作者: "; cin>>auname; cout<<"请输入新书出版社: "; cin>>cname; cout<<"请输入新的存量: "; cin>>bookod; b->setname(bname); b->setonshelf(bookod); } cout<<"修改图书成功! "; getch(); break; case'3': cout<<"请输入图书编号: "; cin>>bookid; b=query1(bookid); if(b==NULL) { cout<<"该图书不存在,无法删除! "< break; } b->delbook(); cout<<"删除成功! "; getch(); break; case'4': cout<<"\t\t\t**1.按图书编号查找**"< cout<<"\t\t\t**2.按图书书名查找**"< cout<<"\t\t\t**3.按图书作者查找**"< cout<<"\t\t\t**4.按图书出版社查找**"< cout<<"\t\t\t**0.返回**"< cout<<"\t\t\t请选择: "; cin>>choice4; switch(choice4) { case1: cout<<"请输入图书编号: "; cin>>bookid; b=query1(bookid); if(b==NULL) { cout<<"该图书不存在! "; break; } cout< 出版社"< b->disp(); break; case2: cout<<"请输入图书书名: "; cin>>bname; b=query2(bname); break; case3: cout<<"请输入图书作者: "; cin>>auname; b=query3(auname); break; case4: cout<<"请输入图书出版社: "; cin>>cname; b=query4(cname); break; case0: break; } break; case'5': cout< 出版社"< disp(); getch(); break; case'6': clear(); break; default: break; } } } classReader {//读者的信息描述 private: inttag;//删除标记1表示已删0表示未删 intno;//读者编号 charname[10];//读者姓名 intborbook[Maxbor];//所借图书 public: Reader() {;} char*getname() {//获取姓名 returnname; } intgettag() {//获取删除标记 returntag; } intgetno() {//获取读者编号 returnno; } voidsetname(charna[]) {//设置姓名 strcpy(name,na); } voiddelbook() {//设置删除标记1: 已删0: 未删 tag=1; } voidaddreader(intn,char*na) {//增加读者 tag=0; no=n; strcpy(name,na); for(inti=0;i borbook[i]=0; } voidborrowbook(intbookid) {//借书操作 for(inti=0;i { if(borbook[i]==0) { borbook[i]=bookid; return; } } } intretbook(intbookid) {//还书操作 for(inti=0;i { if(borbook[i]==bookid) { borbook[i]=0; cout<<"还书成功! "< return1; } } cout<<"未借该书,还书失败! "< return0; } voiddisp() {//读出读者信息 inthave=0; intbz=0; cout< for(inti=0;i if(borbook[i]! =0) { if(bz==0) { have=1; cout<<"["< bz++; } else { cout<<"\r\t\t\t\t\t""["< } } if(have==0) cout<<"\t还未借书"< } }; classRDatabase {//读者类库,实现建立读者的个人资料 private: inttop;//读者记录指针 Readerread[Maxr];//读者记录 public: RDatabase() {//构造函数,将reader.txt读到read[]中 Readers; top=-1; fstreamfile("reader.txt",ios: : in);//打开一个输入文件 while (1) { file.read((char*)&s,sizeof(s)); if(! file) break; top++; read[top]=s; } file.close();//关闭reader.txt文件 } voidclear() {//删除所有读者信息 top=-1; } intaddreader(intn,char*na) {//添加读者时先查找是否存在 Reader*p=queryid(n); if(p==NULL) { top++; read[top].addreader(n,na); return1; } else cout<<"该编号已经存在! "; return0; } Reader*queryid(intreaderid) {//按读者编号查找 for(inti=0;i<=top;i++) if(read[i].getno()==readerid&&read[i].gettag()==0) { return&read[i]; } returnNULL; } Reader*queryname(charreadername[10]) {//按读者姓名查找 for(inti=0;i<=top;i++) if(strcmp(read[i].getname(),readername)==0&&read[i].gettag()==0) { return&read[i]; } returnNULL; } voiddisp() {//输出所有读者信息 for(inti=0;i<=top;i++) read[i].disp(); } voidreaderdata();//读者库信息 ~RDatabase() {//析构函数,将read[]写到reader.txt文件中 fstreamfile("reader.txt",ios: : out); for(inti=0;i<=top;i++) if(read[i].gettag()==0) file.write((char*)&read[i],sizeof(read[i])); file.close(); } }; voidRDatabase: : readerdata() { charchoice1; charrname[20]; intreaderid; charreadername[10]; intchoice2; Reader*r; while(choice1! ='0') { cout<<"\n\t\t\t**读者信息**\n"< cout<<"\t\t\t**1.新增**"< cout<<"\t\t\t**2.更改**"< cout<<"\t\t\t**3.删除**"< cout<<"\t\t\t**4.查找**"< cout<<"\t\t\t**5.显示**"< cout<<"\t\t\t**6.全删**"< cout<<"\t\t\t**0.返回**"< cout<<"\t\t\t请选择: "; cin>>choice1; switch(choice1) { case'1': cout<<"请输入读者编号: "; cin>>readerid; cout<<"请输入读者姓名: "; cin>>rname; addreader(readerid,rname); cout<<"添加读者成功! "< getch(); break; case'2': cout<<"请输入读者编号: "; cin>>readerid; r=queryid(readerid); if(r==NULL) { cout<<"该读者不存在! "< break; } cout<<"请输入新的姓名: "; cin>>rname; r->setname(rname); cout<<"修改读者成功! "< getch(); break; case'3': cout<<"请输入读者编号: "; cin>>readerid; r=queryid(readerid); if(r==NULL) { cout<<"该读者不存在! "< break; } r->delbook(); cout<<"删除成功! "< getch(); break; case'4': cout<<"\t\t\t**1.按读者编号查找**"< cout<<"\t\t\t**2.按读者姓名查找**"< cout<<"\t\t\t**0.返回**"< cout<<"\t\t\t请选择: "; cin>>choice2; switch(choice2) { case1: cout<<"请输入读者编号: "; cin>>readerid; r=queryid(readerid); if(r==NULL) { cout<<"该读者不存在! "< break; } cout< 号"< r->disp(); break; case2: cout<<"请输入读者姓名: "; cin>>readername;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 图书 管理 系统 代码