图书馆管理系统C++代码文档格式.docx
《图书馆管理系统C++代码文档格式.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统C++代码文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
b,sizeof(b));
if(!
file)break;
top++;
btarray[top]=b;
}
file.close();
//关闭文件
}
~bdatabase()//析构函数,将btarray[]写到book.txt文件中
{
out);
for(inti=0;
i<
=top;
i++)
{
if(btarray[i].b_del==1)
file.write((char*)&
btarray[i],sizeof(btarray[i]));
}
}
voidaddbooks()//往图书数据库中加图书
bookbk;
intno;
charbname[20];
cout<
<
"
请输入书号:
"
;
cin>
>
no;
endl<
请输入书名:
bname;
endl;
bk.b_flag=1;
bk.addbook(no,bname);
btarray[top]=bk;
return;
intfindbooks(intsuffix)//查找图书,这个函数用于借书这书操作,suffix是数组下标
for(inti=0;
i<
i++)
if(btarray[i].no==no&
&
btarray[i].b_del==1)
{
returni;
}
return-1;
intfindbooks()//查找图书,这个函数用于图书维护
charvalue[6];
{
if(btarray[i].b_flag==1)strcpy(value,"
在架"
);
if(btarray[i].b_flag==2)strcpy(value,"
借出"
cout<
书号:
btarray[i].no<
书的名称:
btarray[i].name<
图书状态:
value<
voideditbooks()//编辑图书
{
intcur;
cur=findbooks();
if(cur==-1)
{cout<
没有这本书"
return;
btarray[cur].no<
btarray[cur].name<
请修改数据:
书的名称:
btarray[cur].name;
return;
voiddelbooks()//删除图书
if(btarray[cur].b_flag==2)//删除时判断图书是否借出
cout<
该图书已经借出,请在归还后再删除。
btarray[cur].b_del=2;
voidlistbooks()//显示全部图书
if(btarray[i].b_del==1)
if(btarray[i].b_flag==1)strcpy(value,"
}
classbook
public:
intno;
//图书编号
charname[20];
//图书名称
intb_flag;
intb_del;
public:
book(){}
voidsetno(intn)
{
no=n;
intgetno()
returnno;
//返回图书编号值
}
voidsetname(charna[])
strcpy(name,na);
//字符串复制
char*getname()
returnname;
//返回图书名称
voidborbook()
b_flag=2;
//借书标志
voiddelbook()
b_del=2;
//删除标志
voidaddbook(intno,charna[])//增加图书功能
setno(no);
setname(na);
b_flag=1;
b_del=1;
//读者类
classreader
intr_del;
//1存在,2删除
intr_bor;
//1借过书,2没有借书
bookbrbook;
voidaddreader(intid,charna[])//增加读者
{
no=id;
r_del=1;
voidsetbrbook(bookbt)//设置借书标记
brbook=bt;
bookgetbrbook()
returnbrbook;
//返回借书信息
};
//读者数据库类
classrdatabase
readerrdarray[BMAX];
rdatabase()
readerrd;
reader.txt"
rd,sizeof(rd));
rdarray[top]=rd;
//关闭文件
~rdatabase()//析构函数
if(rdarray[i].r_del==1)
rdarray[i],sizeof(rdarray[i]));
voidaddreaders()//添加读者
charrname[20];
请输入学号:
请输入姓名:
rname;
rd.addreader(no,rname);
rd.r_bor=2;
rdarray[top]=rd;
intfindreaders(intsuffix)//查找读者,这个函数用于借书还书操作。
参数suffix是数组下标
if(rdarray[i].no==no&
rdarray[i].r_del==1)
intfindreaders()//查找读者,这个函数用于读者维护操作
charvalue[3];
if(rdarray[i].r_bor==1)strcpy(value,"
借"
if(rdarray[i].r_bor==2)strcpy(value,"
无"
学号:
rdarray[i].no<
姓名:
rdarray[i].name<
是否借书:
voideditreaders()//编辑读者信息
cur=findreaders();
没有该学生"
}
rdarray[cur].name;
voiddelreaders()//删除读者,读者如果借书要还书后才能删除
if(rdarray[cur].r_bor==1)
该用户借了图书,请还书后再删除"
rdarray[cur].r_del=2;
voidlistreaders()//显示所有读者
if(rdarray[i].r_del==1)
}
voidbookjiemain()//图书维护子菜单
cout<
|---------------------|"
|图书维护|"
|
(1)增加|"
|
(2)更改|"
|(3)删除|"
|(4)查找|"
|(5)显示|"
|(6)返回上一层|"
voidreaderjiemian()//读者维护子菜单
|读者维护|"
voidmainjiemian()//主界面
{
***********************************************"
*图书管理系统*"
**"
*
(1)借书*"
*
(2)还书*"
*(3)图书管理*"
*(4)用户管理*"
*(0)退出*"
voidborrowtoreturn(charbr)
//借书还书函数.参数br用来判断是“借书”还是“还书”.1为“借书”,2为“还书”
intrdid=0;
intbkid=0;
intrsuffix,bsuffix;
bdatabaset_bd;
rdatabaset_rd;
if(br=='
1'
)//借书
rsuffix=t_rd.findreaders(rdid);
bsuffix=t_bd.findbooks(bkid);
if(rsuffix==-1||bsuffix==-1)
if(t_bd.btarray[bsuffix].b_flag==2)
图书已经借出,请选择其它图书"
if(t_rd.rdarray[rsuffix].r_bor==1)
你已经借过图书,请先归还再借其它图书"
t_bd.btarray[bsuffix].b_flag=2;
t_rd.rdarray[rsuffix].r_bor=1;
t_rd.rdarray[rsuffix].brbook=t_bd.btarray[bsuffix];
return;
2'
)
{
if(rsuffix==-1||bsuffix==-1)
if(t_rd.rdarray[rsuffix].brbook.no==t_bd.btarray[bsuffix].no)
t_bd.btarray[bsuffix].b_flag=1;
t_rd.rdarray[rsuffix].r_bor=2;
t_rd.rdarray[rsuffix].brbook=t_bd.btarray[bsuffix];
else
请重新输入,读者借的图书号不正确"
voidbooksmange()
charin;
bdatabasebd;
do{
bookjiemain();
cin>
in;
switch(in)
case'
bd.addbooks();
break;
bd.editbooks();
3'
bd.delbooks();
4'
bd.findbooks();
5'
bd.listbooks();
6'
default:
cout<
输入错误,请从新输入。
}while(in!
='
return;
voidreadersmange()
rdatabasebd;
readerjiemian();
bd.addreaders();
bd.editreaders();
bd.delreaders();
bd.findreaders();
bd.listreaders();
intmain(intargc,char*argv[])
{charin;
mainjiemian();
borrowtoreturn(in);
booksmange();
readersmange();
0'
return0;