图书馆管理系统C++代码Word文档格式.docx
《图书馆管理系统C++代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统C++代码Word文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
![图书馆管理系统C++代码Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/0a82db54-34ed-48f1-9080-87d561800d6f/0a82db54-34ed-48f1-9080-87d561800d6f1.gif)
:
out);
for(inti=0;
i〈=top;
i++)
{
if(btarray[i].b_del==1)
file。
write((char*)&
btarray[i],sizeof(btarray[i]));
}
file.close();
}
voidaddbooks()//往图书数据库中加图书
{
bookbk;
intno;
charbname[20];
cout〈〈”请输入书号:
"
;
cin〉〉no;
cout<
〈endl〈<
”请输入书名:
cin>
〉bname;
<
endl;
bk。
b_flag=1;
addbook(no,bname);
top++;
btarray[top]=bk;
return;
intfindbooks(intsuffix)//查找图书,这个函数用于借书这书操作,suffix是数组下标
〈”请输入书号:
>
no;
for(inti=0;
i〈=top;
i++)
{
if(btarray[i]。
no==no&
&btarray[i].b_del==1)
{
returni;
}
}
return—1;
intfindbooks()//查找图书,这个函数用于图书维护
intno;
charvalue[6];
cout〈〈"
请输入书号:
”;
cin〉>
no;
i〈=top;
if(btarray[i].no==no&&btarray[i].b_del==1)
{
if(btarray[i]。
b_flag==1)strcpy(value,"
在架"
);
if(btarray[i].b_flag==2)strcpy(value,”借出"
);
cout〈<
"
书号:
btarray[i]。
no〈〈"
书的名称:
”〈<
btarray[i].name〈〈”图书状态:
〈value<
〈endl;
returni;
}
voideditbooks()//编辑图书
{
intcur;
cur=findbooks();
if(cur==—1)
{cout〈<
”没有这本书”〈〈endl;
return;
cout〈〈”书号:
”<
〈btarray[cur]。
no〈〈”书的名称:
btarray[cur]。
name〈〈endl;
”请修改数据:
”〈〈endl;
cout〈<
endl〈〈"
书的名称:
cin〉〉btarray[cur]。
name;
return;
}
voiddelbooks()//删除图书
cur=findbooks();
return;
if(btarray[cur]。
b_flag==2)//删除时判断图书是否借出
cout〈〈”该图书已经借出,请在归还后再删除。
”<
btarray[cur]。
b_del=2;
return;
voidlistbooks()//显示全部图书
charvalue[6];
i<
=top;
if(btarray[i].b_del==1)
{
if(btarray[i].b_flag==1)strcpy(value,"
在架”);
if(btarray[i]。
b_flag==2)strcpy(value,”借出”);
书号:
”〈〈btarray[i]。
no<
〈”书的名称:
〈btarray[i].name<
”图书状态:
〈〈value〈〈endl;
}
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
charname[20];
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];
inttop;
rdatabase()
readerrd;
top=—1;
reader。
txt”,ios:
in);
read((char*)&rd,sizeof(rd));
rdarray[top]=rd;
}
//关闭文件
~rdatabase()//析构函数
{
txt”,ios:
i<
if(rdarray[i].r_del==1)
file.write((char*)&
rdarray[i],sizeof(rdarray[i]));
close();
voidaddreaders()//添加读者
readerrd;
charrname[20];
请输入学号:
cout〈〈endl〈<
请输入姓名:
rname;
cout〈〈endl;
rd。
addreader(no,rname);
rd.r_bor=2;
rdarray[top]=rd;
intfindreaders(intsuffix)//查找读者,这个函数用于借书还书操作.参数suffix是数组下标
请输入学号:
〉no;
for(inti=0;
if(rdarray[i]。
no==no&&
rdarray[i].r_del==1)
intfindreaders()//查找读者,这个函数用于读者维护操作
charvalue[3];
if(rdarray[i]。
no==no&&rdarray[i].r_del==1)
if(rdarray[i].r_bor==1)strcpy(value,”借"
if(rdarray[i].r_bor==2)strcpy(value,"
无”);
cout<
学号:
〈<
rdarray[i].no〈〈”姓名:
rdarray[i].name<
〈"
是否借书:
return-1;
voideditreaders()//编辑读者信息
cur=findreaders();
if(cur==-1)
{cout<
〈”没有该学生”<
〈endl;
}
”请修改数据:
〈endl<
姓名:
”;
rdarray[cur]。
name;
voiddelreaders()//删除读者,读者如果借书要还书后才能删除
if(rdarray[cur].r_bor==1)
cout〈<
该用户借了图书,请还书后再删除"
rdarray[cur]。
r_del=2;
voidlistreaders()//显示所有读者
charvalue[3];
=top;
if(rdarray[i]。
r_del==1)
if(rdarray[i]。
r_bor==1)strcpy(value,”借"
if(rdarray[i].r_bor==2)strcpy(value,"
无"
cout〈〈"
学号:
〈rdarray[i]。
no〈〈”姓名:
〈rdarray[i].name<
是否借书:
〈〈value〈〈endl;
}
voidbookjiemain()//图书维护子菜单
cout<
〈”|—-—-———---————--—-—-—|"
endl;
cout〈<
”|图书维护|"
”|
(1)增加|"
〈”|
(2)更改|”〈〈endl;
cout〈〈"
|(3)删除|”<
”|(4)查找|"
|(5)显示|"
〈〈endl;
〈”|(6)返回上一层|"
”|-—-——-————-——————-—-—|”<
}
voidreaderjiemian()//读者维护子菜单
|-—---———-—----——---—-|”〈<
|读者维护|"
”|
(1)增加|”<
”|
(2)更改|”<
|(3)删除|"
|(4)查找|"
”|(5)显示|”〈〈endl;
”|(6)返回上一层|”〈〈endl;
|—-————----—-—-———----|”〈〈endl;
voidmainjiemian()//主界面
{
***********************************************”<
”*图书管理系统*"
**”〈〈endl;
*
(1)借书*"
*
(2)还书*”<
”**"
*(3)图书管理*"
〈〈endl;
**"
*(4)用户管理*"
**"
”*(0)退出*”<
〈”***********************************************”〈〈endl;
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)
cout〈〈”图书已经借出,请选择其它图书"
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;
if(br==’2’)
{
rsuffix=t_rd。
findreaders(rdid);
bsuffix=t_bd.findbooks(bkid);
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
请重新输入,读者借的图书号不正确”<
return;
voidbooksmange()
charin;
bdatabasebd;
do{
bookjiemain();
cin〉>
in;
switch(in)
case’1’:
bd.addbooks();
break;
case’2’:
bd。
editbooks();
break;
case’3’:
bd.delbooks();
case’4'
findbooks();
case’5'
listbooks();
case'
6'
default:
cout<
”输入错误,请从新输入。
}while(in!
=’6’);
return;
voidreadersmange()
charin;
rdatabasebd;
do{
readerjiemian();
cin>
〉in;
case’1’:
bd.addreaders();
case’2'
bd.editreaders();
3’:
delreaders();
bd.findreaders();
5'
bd.listreaders();
case’6'
default:
〈”输入错误,请从新输入.”<
}while(in!
='
intmain(intargc,char*argv[])
{charin;
mainjiemian();
in;
1’:
borrowtoreturn(in);
case’2’:
borrowtoreturn(in);
booksmange();
4'
readersmange();
0’:
输入错误,请从新输入。
}while(in!
0'
return0;