图书管理系统课程设计及代码Word文档下载推荐.docx
《图书管理系统课程设计及代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《图书管理系统课程设计及代码Word文档下载推荐.docx(27页珍藏版)》请在冰点文库上搜索。
{//获取作者名
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(author,aa);
strcpy(cbs,ca);
intborrowbook()
{//借书操作
if(onshelf>
0)
{
onshelf--;
return1;
}
return0;
voidretbook()
{//还书操作
onshelf++;
voiddisp()
{//输出图书
cout<
<
setw(6)<
no<
setw(18)<
name<
setw(10)<
author<
cbs<
onshelf<
endl;
};
classBDatabase
{//图书库类,实现对图书的维护,查找,删除等
inttop;
//图书记录指针
Bookbook[Maxb];
//图书记录
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()
{//全删
intaddbook(intn,char*na,char*aa,char*ca,intoa)
Book*p=query1(n);
if(NULL==p)
book[top].addbook(n,na,aa,ca,oa);
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;
i++)
if(strcmp(book[i].getname(),a)==0&
if(r==0)
"
编号"
书名"
作者"
出版社"
存量"
e=&
e->
disp();
r++;
找不到该书!
Book*query3(chara[])
{//按作者查找图书
if(strcmp(book[i].getauthorname(),a)==0&
setw(10)<
Book*query4(chara[])
{//按出版社查找图书
for(inti=0;
if(strcmp(book[i].getcbsname(),a)==0&
if(r==0)cout<
}
voidbookdata();
//图书库信息
{
if(book[i].gettag()==0)
book[i].disp();
~BDatabase()
{//析构函数,将book[]写到book.txt文件中
out);
if(book[i].gettag()==0)
file.write((char*)&
book[i],sizeof(book[i]));
voidBDatabase:
bookdata()
charchoice3;
charbname[40];
charauname[40];
charcname[40];
charch;
intchoice4;
intbookid;
intbookod;
Book*b;
while(choice3!
='
0'
)
\n*******图书信息*******"
*1.新增"
4.查找*"
*2.更改"
5.显示*"
*3.删除"
0.返回*"
*************************"
请选择:
;
cin>
>
choice3;
switch(choice3)
case'
1'
请输入新书编号:
bookid;
b=query1(bookid);
if(b!
=NULL)
该编号已经存在,不能添加!
请输入新书书名:
bname;
请输入新书作者名:
auname;
请输入新书出版社:
cname;
请输入新书数量:
bookod;
addbook(bookid,bname,auname,cname,bookod);
添加图书成功!
getch();
2'
请输入图书编号:
if(b==NULL)
该图书不存在!
"
该图书的信息是:
b->
是否修改?
(y/n):
ch;
if(ch=='
y'
)
{
请输入新的书名:
请输入新的作者:
请输入新的存量:
setname(bname);
setonshelf(bookod);
修改图书成功!
3'
该图书不存在,无法删除!
delbook();
删除成功!
4'
\n******查找图书*******"
*1.按图书编号查找*"
*2.按图书书名查找*"
*3.按图书作者查找*"
*4.按图书出版社查找*"
*0.返回*"
*********************"
请选择:
choice4;
switch(choice4)
case1:
case2:
请输入图书书名:
b=query2(bname);
case3:
请输入图书作者:
b=query3(auname);
case4:
请输入图书出版社:
b=query4(cname);
case0:
5'
disp();
6'
clear();
default:
classReader
{//读者的信息描述
//删除标记1表示已删0表示未删
//读者编号
charname[10];
//读者姓名
intborbook[Maxbor];
//所借图书
Reader()
{;
char*getname()
{//获取姓名
intgettag()
intgetno()
{//获取读者编号
{//设置姓名
voiddelbook()
{//设置删除标记1:
未删
voidaddreader(intn,char*na)
{//增加读者
Maxbor;
borbook[i]=0;
voidborrowbook(intbookid)
if(borbook[i]==0)
borbook[i]=bookid;
return;
intretbook(intbookid)
{//还书操作
if(borbook[i]==bookid)
还书成功!
未借该书,还书失败!
{//读出读者信息
inthave=0;
intbz=0;
setw(5)<
setw(21)<
setw(15);
if(borbook[i]!
=0)
if(bz==0)
have=1;
["
borbook[i]<
]\t\t"
bz++;
else
\r\t\t\t\t\t"
setw(15)<
if(have==0)
\t还未借书"
classRDatabase
{//读者类库,实现建立读者的个人资料
//读者记录指针
Readerread[Maxr];
//读者记录
RDatabase()
{//构造函数,将reader.txt读到read[]中
Readers;
reader.txt"
//打开一个输入文件
s,sizeof(s));
file)
read[top]=s;
//关闭reader.txt文件
{//删除所有读者信息
intaddreader(intn,char*na)
{//添加读者时先查找是否存在
Reader*p=queryid(n);
if(p==NULL)
read[top].addreader(n,na);
该编号已经存在!
Reader*queryid(intreaderid)
{//按读者编号查找
if(read[i].getno()==readerid&
read[i].gettag()==0)
read[i];
Reader*queryname(charreadername[10])
{//按读者姓名查找
if(strcmp(read[i].getname(),readername)==0&
read[i].gettag()==0)
{//输出所有读者信息
read[i].disp();
voidreaderdata();
//读者库信息
~RDatabase()
{//析构函数,将read[]写到reader.txt文件中
if(read[i].gettag()==0)
read[i],sizeof(read[i]));
voidRDatabase:
readerdata()
charchoice1;
charrname[20];
intreaderid;
charreadername[10];
intchoice2;
Reader*r;
while(choice1!
\n*******读者信息******"
choice1;
switch(choice1)
请输入读者编号:
readerid;
请输入读者姓名:
rname;
addreader(readerid,rname);
添加读者成功!
r=queryid(readerid);
if(r==NULL)
该读者不存在!
请输入新的姓名:
r->
setname(rname);
修改读者成功!
<
endl;
\n********************"
*1.按读者编号查找*"
*2.按读者姓名查找*"
*0.返回*"
********************"
choice2;
switch(choice2)
读者编号"
setw(17)<
读者姓名"
setw(20)<
已借书编号"
cou