1、void delbook()设置删除标记void borrowbook(int bookid)借书操作int retbook(int bookid)还书操作void disp()读出读者信息BDatabase()构造函数,将book.txt读到book中int addbook(int n,char *na)增加图书Book *query(int bookid)查找图书void bookdata()图书库维护BDatabase()析构函数,将book写到book.txt文件(2)用类的成员函数对链表的数据进行操作,其功能如上表所列。(3)设计菜单来实现功能设计 1、 借 书 2、 还 书 3、
2、图 书 维 护 4 、读 者 维 护 0 、离 开3设计类及对象(1) 本程序定义了三个类,定义如下:class Reader private: char *getname() return name; /获取姓名 int gettag() return tag; /获取删除标记 int getno() return no; /获取读者编号 void setname(char na) /设置姓名 void delbook() tag=1; /设置删除标记 1:已删 0:未删 void addreader(int n,char *na)/增加读者 int retbook(int bookid)/
3、还书操作void disp()/读出读者信息;class RDatabase int top; /读者记录指针 Reader readMaxr;/读者记录 public:RDatabase() /构造函数,将reader.txt读到read中void clear()/删除所有读者信息int addreader(int n,char *na)/添加读者时先查找是否存在 Reader *query(int readerid)/按编号查找void disp() /输出所有读者信息void readerdata();/读者库维护RDatabase() /析构函数,将read写到reader.txt文件
4、中class Book char *getname() return name; /获取姓名 int getno() return no; /获取图书编号 int gettag() return tag; /获取删除标记 void setname(char na)/设置书名 /删除图书 void addbook(int n,char *na)/增加图书int borrowbook()/借书操作 void retbook()/还书操作 void disp()/输出图书class BDatabase BDatabase()/构造函数,将book.txt读到book中 void clear()/全删
5、 int addbook(int n,char *na)/增加图书 Book *query(int bookid)/查找图书 void bookdata();/图书库维护 BDatabase()/析构函数,将book写到book.txt文件中;(2)分别利用类class Reader 、class RDatabase、class Book 、class BDatabase 定义了各自的对象Book bookMaxb、RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b;对其函数进行调用实现各种功能。(3)主函数实现,调用各种函数。4程
6、序源代码#include iomanipstringfstream/输入/输出文件流类 using namespace std;const int Maxr=100;/最多的读者 const int Maxb=100;/最多的图书 const int Maxbor=5;/每位读者最多借五本书 /读者类,实现对读者的信息的描述 int tag; /删除标记 1:int no; /读者编号 char name10; /读者姓名 int borbookMaxbor;/所借图书 Reader() char *getname() return name;strcpy(name,na); tag=0;no
7、=n;for(int i=0;iMaxbor;i+) borbooki=0;void borrowbook(int bookid)/借书操作 if (borbooki=0) borbooki=bookid;return;int retbook(int bookid)/还书操作 if(borbooki=bookid) return 1;return 0;void disp()/读出读者信息 cout setw(5) no setw(10) name借书编号:;if(borbooki!=0) borbooki choice;switch (choice) case 1输入读者编号: readeri
8、d;输入读者姓名: rname;addreader (readerid,rname);break;2r=query(readerid);if (r=NULL) 该读者不存在 输入新的姓名:r-setname(rname);3 输入读者编号: 该读者不存在 endl;delbook();4读入读者编号:该读者不存在disp();56clear();default:cout输入错误,请从新输入:/图书类,实现对图书的描述,图书的编号,书名,借出,还入等 /删除标记 1:/图书编号 char name20;/书名 int onshelf;/是否再架 1:再架 2:已借 Book() char *ge
9、tname() return name;void addbook(int n,char *na)/增加图书 onshelf=1;if (onshelf=1) onshelf=0;void disp()/输出图书 setw(6) setw(18) name setw(10) (onshelf=1?在架已借) /图书库类,实现对图书的维护,查找,删除等 /图书记录指针 Book bookMaxb; /图书记录 BDatabase()/构造函数,将book.txt读到book中 Book b;book.txtb,sizeof(b);file) break;booktop=b;void clear()
10、/全删 int addbook(int n,char *na)/增加图书 Book *p=query(n);if (NULL=p) booktop.addbook(n,na);Book *query(int bookid)/查找图书 if (booki.getno()=bookid &booki.gettag()=0) booki;void bookdata();void disp() if (booki.gettag()=0) booki.disp();BDatabase()/析构函数,将book写到book.txt文件中 booki,sizeof(booki);void BDatabase
11、:bookdata() char bname40;int bookid;Book *b;nnnttt图 书 维 护 endlsetname(bname); 读入图书编号: 该图书不存在输入错误,请从新输入:/main() 函数的实现,程序的主界面的引导 void main() int bookid,readerid;RDatabase ReaderDB;BDatabase BookDB;while(choice!ttt 图 书 管 理 系 统nnnttt1 借 书nnttt2 还 书 nnttt3 图 书 维护nnttt4 读 者 维 护nnttt0 离 开 借书 读者编号:readerid;
12、 图书编号:bookid;r=ReaderDB.query(readerid);/按编号查找 if (NULL=r) 不存在该读者,不能借书b=BookDB.query(bookid); 不存在该图书,不能借书if (b-borrowbook()=0) 该图书已借出,不能借书borrowbook(b-getno();还书n 读者编号: 图书编号: 不存在该读者,不能还书 不存在该图书,不能还书retbook();retbook(b-BookDB.bookdata();ReaderDB.readerdata();5.调试纪录 1、读者维护界面,新增读者功能2、程序的主界面以及图书维护界面 3、查找读者功能界面6总结 通过这次课程设计,让我了解了更多关于设计时容易出现的错误,而且进一步的认识到平时学习积累的重要性。在刚进行编译的时候发现了很多的错误,都是平
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1