代码.docx
- 文档编号:17988111
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:17
- 大小:17.01KB
代码.docx
《代码.docx》由会员分享,可在线阅读,更多相关《代码.docx(17页珍藏版)》请在冰点文库上搜索。
代码
1.book.h(图书类)
#ifndef_book_h_
#define_book_h_
#include
usingnamespacestd;
classBook//图书类
{private:
intnote;//删除标记(1:
已删,0:
未删)
intnumber;//图书编号
charname[10];//书名
intonshelf;//上架标志
public:
Book(){}
char*getname();//获得书名
intgetnote();//获得删除标记
intgetnumber();//获得图书编号
voidsetname(charna[]);//设置书名
voiddelbook();//删除图书
voidaddbook(intn,char*na);//添加图书
intborrowbook();//借书操作
voidretbook();//还书操作
voidlist();//输出图书
};
2.book.CPP(图书类实现)
#include
#include"stdafx.h"
#include"book.h"
char*Book:
:
getname()
{returnname;}
intBook:
:
getnote()
{returnnote;}
intBook:
:
getnumber()
{returnnumber;}
voidBook:
:
setname(charna[])
{strcpy(name,na);}
voidBook:
:
addbook(intn,char*na)
{note=0;
number=n;
strcpy(name,na);
onshelf=1;}
voidBook:
:
delbook()
{note=1;}
intBook:
:
borrowbook()
{returnonshelf;}
voidBook:
:
retbook()
{onshelf=1;}
voidBook:
:
list()
{cout< 3.reader.h(读者类) #ifndef_reader_h_ #define_reader_h_ #include usingnamespacestd; constintMaxbor=5;//最大借阅量 classReader//读者类 { private: intnote;//删除标记(1: 已删,0: 未删) intnumber;//读者编号 charname[10];//读者姓名 intborbook[Maxbor];//所借图书 public: Reader(){} char*getname();//获得姓名 intgetnote();//获得删除标记 intgetnumber();//获得读者编号 voidsetname(charna[]);//设置姓名 voiddelbook();//设置删除标记 voidaddreader(intn,char*na);//添加读者 voidborrowbook(intbookid);//借书操作 intretbook(intbookid);//还书操作 voidlist();//输出读者信息 }; #endif 4.reader.cpp(读者类实现) #include #include"stdafx.h" #include"reader.h" constintMaxbor=5; #include char*Reader: : getname() {returnname;} intReader: : getnote() {returnnote;} intReader: : getnumber() {returnnumber;} voidReader: : setname(charna[]) {strcpy(name,na); } voidReader: : addreader(intn,char*na) { note=0; number=n; strcpy(name,na); for(inti=0;i borbook[i]=0;} voidReader: : delbook() {note=1;} voidReader: : borrowbook(intbookid) {for(inti=0;i { if(borbook[i]==0){borbook[i]=bookid;return;} } } intReader: : retbook(intbookid) { for(inti=0;i { if(borbook[i]==bookid){borbook[i]=0;return1;} } return0; } voidReader: : list() { cout< ["; for(inti=0;i if(borbook[i]==0)cout< cout<<"]"< 5.bdatabase.h(图书信息库类) #ifndef_bdatadase_h_ #define_bdatabase_h_ #include"book.h" #include usingnamespacestd; constintMaxb=100;//最大图书数量 classBDatabase//图书库类 { private: inttop;//图书记录指针 Bookbook[Maxb];//图书记录 public: BDatabase();//构造函数初始化: 读文件 voidclear();//全部删除 intaddbook(intn,char*na);//添加图书 Book*query(intbookid);//查找图书 voidlist();//输出图书信息 voidbookdata();//图书库维护 ~BDatabase();//析构函数: 写文件 }; #endif 6.bdatabase.cpp(图书信息库类实现) #include"stdafx.h" #include #include #include"bdatabase.h" usingnamespacestd; BDatabase: : BDatabase() { Books; top=-1; fstreamfile; file.open("book.dat",ios: : in|ios: : binary); while (1) { file.read((char*)&s,sizeof(s)); if(! file)break; top++; book[top]=s; } file.close();} voidBDatabase: : clear() {top=-1;} Book*BDatabase: : query(intbookid) { for(inti=0;i<=top;i++) if(book[i].getnumber()==bookid&&book[i].getnote()==0) return&book[i]; returnNULL;} intBDatabase: : addbook(intn,char*na) { Book*p=query(n); if(p==NULL) { top++; book[top].addbook(n,na); return1; } return0;} voidBDatabase: : list() {for(inti=0;i<=top;i++) book[i].list(); } BDatabase: : ~BDatabase() { fstreamfile; file.open("book.dat",ios: : out|ios: : binary); for(inti=0;i<=top;i++) if(book[i].getnote()==0) file.write((char*)&book[i],sizeof(book[i])); file.close(); } voidBDatabase: : bookdata() { intchoice=1; charbookname[20]; intbookid; Book*b; while(choice! =0) { cout<<"图书维护: "< cout<<"---------------------------------------------"< cout<<"1: 新增2: 更改3: 删除4: 查找5: 显示6: 全删0: 退出"< cin>>choice; cout<<"----------------------------------------"< switch(choice) { case1: cout<<"输入图书编号: "; cin>>bookid; cout<<"输入图书名: "; cin>>bookname; addbook(bookid,bookname);break; case2: cout<<"输入图书编号: "; cin>>bookid; b=query(bookid); if(b==NULL) {cout<<"该图书不存在! "< break;} cout<<"输入新的图书名: "; cin>>bookname; b->setname(bookname);break; case3: cout<<"输入图书编号: "; cin>>bookid; b=query(bookid); if(b==NULL) {cout<<"该图书不存在! "< break;} case4: cout<<"输入图书编号: "; cin>>bookid; b=query(bookid); if(b==NULL) {cout<<"该图书不存在! "< break;} b->list();break; case5: list();break; case6: break; }//endswitch }//endwhile } 7.rdatabase.h(读者信息库类) #ifndef_rdatadase_h_ #define_rdatabase_h_ #include"reader.h" #include usingnamespacestd; constintMaxr=100;//最大读者数 classRDatabase//读者库类 { private: inttop;//读者记录指针 Readerread[Maxr];//读者记录 public: RDatabase();//构造函数初始化: 读文件 voidclear();//删除所有读者信息 intaddreader(intn,char*na);//添加读者记录时,先确定他//是否已经存在 Reader*query(intreaderid);//按编号查找 voidlist();//输出所有读者信息 voidreaderdata();//读者库维护 ~RDatabase();//析构函数: 写文件 }; #endif 8.rdatabase.cpp(读者信息库类实现) #include"stdafx.h" #include #include #include"rdatabase.h" usingnamespacestd; RDatabase: : RDatabase() { Readers; top=-1; ifstreamfile; file.open("reader.dat",ios: : in|ios: : binary); while (1) {file.read((char*)&s,sizeof(s)); if(! file)break; top++; read[top]=s;} file.close(); } voidRDatabase: : clear() {top=-1;} Reader*RDatabase: : query(intreaderid) { for(inti=0;i<=top;i++) if(read[i].getnumber()==readerid&&read[i].getnote()==0)return&read[i]; returnNULL;} intRDatabase: : addreader(intn,char*na) { Reader*p=query(n); if(p==NULL) { top++; read[top].addreader(n,na); return1; } return0;} voidRDatabase: : list() {for(inti=0;i<=top;i++) read[i].list(); } RDatabase: : ~RDatabase() {fstreamfile; file.open("reader.dat",ios: : out|ios: : binary); for(inti=0;i<=top;i++) if(read[i].getnote()==0) file.write((char*)&read[i],sizeof(read[i])); file.close();} voidRDatabase: : readerdata() {intchoice=1; charreadername[20]; intreaderid; Reader*r; while(choice! =0) { cout<<"读者维护: "< cout<<"----------------------------------------------"< cout<<"1: 新增2: 更改3: 删除4: 查找5: 显示6: 全删0: 退出"< cin>>choice; cout<<"--------------------------------------------"< switch(choice) { case1: cout<<"输入读者编号: "; cin>>readerid; cout<<"输入读者姓名: "; cin>>readername; addreader(readerid,readername);break; case2: cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL) {cout<<"该读者不存在! "< break;} cout<<"输入新的姓名: "; cin>>readername; r->setname(readername);break; case3: cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL) {cout<<"该读者不存在! "< break;} case4: cout<<"输入读者编号: "; cin>>readerid; r=query(readerid); if(r==NULL) {cout<<"该读者不存在! "< break;} r->list();break; case5: list();break; case6: break; }//endswitch }//endwhile } 9.library.cpp(主函数实现) #include"stdafx.h" #include"reader.h" #include"rdatabase.h" #include"book.h" #include"bdatabase.h" #include usingnamespacestd; intmain(intargc,char*argv[]) {intchoice=1,bookid,readerid; RDatabaseReaderDB; BDatabaseBookDB; Reader*r; Book*b; cout<<"欢迎进入“小小图书馆”管理软件"< cout<<"------------------------------"< while(choice! =0) {cout<<"--------------------------------------"< cout<<"1: 借书2还书3: 图书维护4: 读者维护0: 离开"; cin>>choice; cout<<"----------------------------------------------"< switch(choice) {case1: cout<<"输入借书读者编号"; cin>>readerid; cout<<"输入图书编号"; cin>>bookid; r=ReaderDB.query(readerid); if(r==NULL) {cout<<"该读者不存在,不能借书! "< break;} b=BookDB.query(bookid); if(b=NULL) {cout<<"该图书不存在,不能借书! "< break;} if(b->borrowbook()==0) {cout<<"该图书已借出,不能借书! "< break;} r->borrowbook(b->getnumber());break; case2: cout<<"输入还书读者编号"; cin>>readerid; cout<<"输入图书编号"; cin>>bookid; r=ReaderDB.query(readerid); if(r==NULL) {cout<<"该读者不存在,不能还书! "< break;} b=BookDB.query(bookid); if(b=NULL) {cout<<"该图书不存在,不能还书! "< break;} b->retbook(); r->retbook(b->getnumber());break; case3: BookDB.bookdata();break; case4: ReaderDB.readerdata();break; }//endswitch }//endwhile return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代码
![提示](https://static.bingdoc.com/images/bang_tan.gif)