《2022年图书管理系统C++程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年图书管理系统C++程序设计 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、#include iostream#include iomanip#include string#include fstream 输入输出文件流类using namespace std;const int Maxr=100;最多的读者const int Maxb=100;最多的图书const int Maxbor=5;每位读者最多借五本书读者类,实现对读者的信息的描述class Reader private int tag;删除标记1 已删0 未删int no;读者编号char name10;读者姓名int borbookMaxbor;所借图书public Reader()char getna
2、me()return name;获取姓名int gettag()return tag;获取删除标记int getno()return no;获取读者编号void setname(char na)设置姓名 strcpy(name,na);void delbook()tag=1;设置删除标记1 已删0 未删void addreader(int n,char na)增加读者 tag=0;no=n;strcpy(name,na);for(int i=0;iMaxbor;i+)borbooki=0;void borrowbook(int bookid)借书操作 for(int i=0;iMaxbor;i
3、+)if(borbooki=0)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -borbooki=bookid;return;int retbook(int bookid)还书操作 for(int i=0;iMaxbor;i+)if(borbooki=bookid)borbooki=0;return 1;return 0;void disp()读出读者信息 cout setw(5)no setw(10)name 借书编号:;for(int i=0;iMaxbor;i+)if(borbooki!=0)cout borbooki;cout endl;读者类库,实现建立读者
4、的个人资料class RDatabase private int top;读者记录指针Reader readMaxr;读者记录public RDatabase()构造函数,将reader.txt 读到 read中 Reader s;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 11 页 -top=-1;fstream file(reader.txt,iosin);打开一个输入文件while(1)file.read(char)&s,sizeof(s);if(!file)break;top+;readtop=s;file.close();关闭reader.txt void clea
5、r()删除所有读者信息 top=-1;int addreader(int n,char na)添加读者时先查找是否存在 Reader p=query(n);if(p=NULL)top+;readtop.addreader(n,na);return 1;return 0;Reader query(int readerid)按编号查找 for(int i=0;i=top;i+)if(readi.getno()=readerid&readi.gettag()=0)return&readi;return NULL;void disp()输出所有读者信息 for(int i=0;i=top;i+)rea
6、di.disp();void readerdata();读者库维护RDatabase()析构函数,将read写到 reader.txt 文件中名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 11 页 -fstream file(reader.txt,iosout);for(int i=0;i=top;i+)if(readi.gettag()=0)file.write(char)&readi,sizeof(readi);file.close();void RDatabasereaderdata()char choice;char rname20;int readerid;Reade
7、r r;while(choice!=0)cout nnttt 读者维护 nnntt 1 新增 nntt 2 更改 nntt 3 删除 nntt 4 查找 nntt 5 显示 nntt 6 全删 nntt 0 退出 endl;cin choice;switch(choice)case 1 cout 输入读者编号;cin readerid;cout 输入读者姓名;cin rname;addreader(readerid,rname);break;case 2 cout 输入读者编号;cin readerid;r=query(readerid);if(r=NULL)cout 该读者不存在endl;b
8、reak;cout 输入新的姓名;cin rname;r-setname(rname);break;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 11 页 -case 3 cout 输入读者编号;cin readerid;r=query(readerid);if(r=NULL)cout 该读者不存在endl;break;r-delbook();break;case 4 cout 读入读者编号;cin readerid;r=query(readerid);if(r=NULL)cout 该读者不存在endl;break;r-disp();break;case 5 disp();br
9、eak;case 6 clear();break;defaultcout 输入错误,请从新输入:;break;图书类,实现对图书的描述,图书的编号,书名,借出,还入等class Book private int tag;删除标记1 已删0 未删int no;图书编号名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 11 页 -char name20;书名int onshelf;是否再架1 再架2 已借public Book()char getname()return name;获取姓名int getno()return no;获取图书编号int gettag()return tag
10、;获取删除标记void setname(char na)设置书名 strcpy(name,na);void delbook()tag=1;删除图书void addbook(int n,char na)增加图书 tag=0;no=n;strcpy(name,na);onshelf=1;int borrowbook()借书操作 if(onshelf=1)onshelf=0;return 1;return 0;void retbook()还书操作 onshelf=1;void disp()输出图书 cout setw(6)no setw(18)name setw(10)(onshelf=1 在架已借
11、)endl;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 11 页 -图书库类,实现对图书的维护,查找,删除等class BDatabase private int top;图书记录指针Book bookMaxb;图书记录public BDatabase()构造函数,将book.txt 读到 book 中 Book b;top=-1;fstream file(book.txt,iosin);while(1)file.read(char)&b,sizeof(b);if(!file)break;top+;booktop=b;file.close();void clear()全删 t
12、op=-1;int addbook(int n,char na)增加图书 Book p=query(n);if(NULL=p)top+;booktop.addbook(n,na);return 1;return 0;Book query(int bookid)查找图书 for(int i=0;i=top;i+)if(booki.getno()=bookid&booki.gettag()=0)return&booki;return NULL;名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 11 页 -void bookdata();图书库维护void disp()for(int i
13、=0;i=top;i+)if(booki.gettag()=0)booki.disp();BDatabase()析构函数,将book 写到 book.txt 文件中 fstream file(book.txt,iosout);for(int i=0;i=top;i+)if(booki.gettag()=0)file.write(char)&booki,sizeof(booki);file.close();void BDatabasebookdata()char choice;char bname40;int bookid;Book b;while(choice!=0)cout nnnttt 图
14、书维护 endlendl;couttt1 新增 n tt2 更改 ntt3 删除 ntt4 查找 ntt5 显示 ntt6 全删 ntt0 退出 endl;cin choice;switch(choice)case 1 cout 输入图书编号endl;cin bookid;cout 输入图书书名endl;cin bname;addbook(bookid,bname);break;case 2 cout 输入图书编号endl;cin bookid;b=query(bookid);if(b=NULL)名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 11 页 -cout 该图书不存在e
15、ndl;break;cout 输入新的书名endl;cin bname;b-setname(bname);break;case 3 cout 读入图书编号endl;cin bookid;b=query(bookid);if(b=NULL)cout 该图书不存在endl;break;b-delbook();break;case 4 cout 读入图书编号endl;cin bookid;b=query(bookid);if(b=NULL)cout 该图书不存在endl;break;b-disp();break;case 5 disp();break;case 6 clear();break;def
16、aultcout 输入错误,请从新输入;main()函数的实现,程序的主界面的引导名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 11 页 -void main()char choice;int bookid,readerid;RDatabase ReaderDB;Reader r;BDatabase BookDB;Book b;while(choice!=0)cout endlendlttt 图书管理系统 nnn;cout ttt1 借书 nnttt2 还书nnttt3 图书维护nnttt4 读 者 维 护 nnttt0 离开 endl;cin choice;switch(ch
17、oice)case 1 cout 借书读者编号;cin readerid;cout 图书编号:;cin bookid;r=ReaderDB.query(readerid);按编号查找if(NULL=r)cout 不存在该读者,不能借书endl;break;b=BookDB.query(bookid);if(b=NULL)cout 不存在该图书,不能借书endl;break;if(b-borrowbook()=0)cout 该图书已借出,不能借书endl;break;r-borrowbook(b-getno();break;case 2 cout 还书 n 读者编号;名师资料总结-精品资料欢迎下
18、载-名师精心整理-第 10 页,共 11 页 -cin readerid;cout 图书编号;cin bookid;r=ReaderDB.query(readerid);if(r=NULL)cout 不存在该读者,不能还书endl;break;b=BookDB.query(bookid);if(b=NULL)cout 不存在该图书,不能还书endl;break;b-retbook();r-retbook(b-getno();break;case 3 BookDB.bookdata();break;case 4 ReaderDB.readerdata();break;defaultcout 输入错误,请从新输入:;名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 11 页 -