图书馆管理系统C++代码.docx
《图书馆管理系统C++代码.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统C++代码.docx(21页珍藏版)》请在冰点文库上搜索。
图书馆管理系统C++代码
//tushuguanli。
cpp:
Definestheentrypointfortheconsoleapplication.
#include#include#include/
usingnamespacestd;
constintBMAX=50;
//图书数据库类
classbdatabase
{
public:
bookbtarray[BMAX];
inttop;
public:
bdatabase()
{
bookb;
top=-1;
fstreamfile(”book.txt”,ios:
:
in);//打开文件
while
(1)
{
file。
read((char*)&b,sizeof(b));
if(!
file)break;
top++;
btarray[top]=b;
}
file.close();//关闭文件
}
~bdatabase()//析构函数,将btarray[]写到book。
txt文件中
{
fstreamfile("book。
txt”,ios:
:
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;
cout<bk。
b_flag=1;
bk。
addbook(no,bname);
top++;
btarray[top]=bk;
return;
}
intfindbooks(intsuffix)//查找图书,这个函数用于借书这书操作,suffix是数组下标
{
intno;
cout<〈”请输入书号:
";
cin>>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;
for(inti=0;i〈=top;i++)
{
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〈<"书号:
"<no〈〈"书的名称:
”〈"<〈value<〈endl;
returni;
}
}
return—1;
}
voideditbooks()//编辑图书
{
intcur;
cur=findbooks();
if(cur==—1)
{cout〈<”没有这本书”〈〈endl;
return;
}
cout〈〈”书号:
”<〈btarray[cur]。
no〈〈”书的名称:
”〈name〈〈endl;
cout<<”请修改数据:
”〈〈endl;
cout〈";
cin〉〉btarray[cur]。
name;
return;
}
voiddelbooks()//删除图书
{
intcur;
cur=findbooks();
if(cur==—1)
{
return;
}
if(btarray[cur]。
b_flag==2)//删除时判断图书是否借出
{
cout〈〈”该图书已经借出,请在归还后再删除。
”<〈endl;
return;
}
btarray[cur]。
b_del=2;
return;
}
voidlistbooks()//显示全部图书
{
charvalue[6];
for(inti=0;i<=top;i++)
{
if(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;
}
}
return;
}
}
;
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
{
public:
intno;
charname[20];
intr_del;//1存在,2删除
intr_bor;//1借过书,2没有借书
bookbrbook;
public:
voidaddreader(intid,charna[])//增加读者
{
no=id;
strcpy(name,na);
r_del=1;
}
voidsetbrbook(bookbt)//设置借书标记
{
brbook=bt;
}
bookgetbrbook()
{
returnbrbook;//返回借书信息
}
};
//读者数据库类
classrdatabase
{
public:
readerrdarray[BMAX];
inttop;
public:
rdatabase()
{
readerrd;
top=—1;
fstreamfile("reader。
txt”,ios:
:
in);//打开文件
while
(1)
{
file。
read((char*)&rd,sizeof(rd));
if(!
file)break;
top++;
rdarray[top]=rd;
}
file.close();//关闭文件
}
~rdatabase()//析构函数
{
fstreamfile("reader。
txt”,ios:
:
out);
for(inti=0;i<=top;i++)
{
if(rdarray[i].r_del==1)
file.write((char*)&rdarray[i],sizeof(rdarray[i]));
}
file。
close();
}
voidaddreaders()//添加读者
{
readerrd;
intno;
charrname[20];
cout〈〈"请输入学号:
";
cin〉>no;
cout〈〈endl〈<"请输入姓名:
";
cin>>rname;
cout〈〈endl;
rd。
addreader(no,rname);
rd.r_bor=2;
top++;
rdarray[top]=rd;
return;
}
intfindreaders(intsuffix)//查找读者,这个函数用于借书还书操作.参数suffix是数组下标
{
intno;
cout<<"请输入学号:
";
cin>〉no;
for(inti=0;i〈=top;i++)
{
if(rdarray[i]。
no==no&&rdarray[i].r_del==1)
{
returni;
}
}
return—1;
}
intfindreaders()//查找读者,这个函数用于读者维护操作
{
intno;
charvalue[3];
cout〈〈"请输入学号:
”;
cin>>no;
for(inti=0;i〈=top;i++)
{
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<<"学号:
"〈”<”<〈value<〈endl;
returni;
}
}
return-1;
}
voideditreaders()//编辑读者信息
{
intcur;
cur=findreaders();
if(cur==-1)
{cout<〈”没有该学生”<〈endl;
return;
}
cout<<”请修改数据:
"〈cout<〈endl<<"姓名:
”;
cin>>rdarray[cur]。
name;
return;
}
voiddelreaders()//删除读者,读者如果借书要还书后才能删除
{
intcur;
cur=findreaders();
if(cur==-1)
{
return;
}
if(rdarray[cur].r_bor==1)
{
cout〈<"该用户借了图书,请还书后再删除"〈return;
}
rdarray[cur]。
r_del=2;
return;
}
voidlistreaders()//显示所有读者
{
charvalue[3];
for(inti=0;i<=top;i++)
{
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;
}
}
return;
}
}
;
voidbookjiemain()//图书维护子菜单
{
cout<〈”|—-—-———---————--—-—-—|"<cout〈<”|图书维护|"〈cout<<”|
(1)增加|"<〈endl;
cout<〈”|
(2)更改|”〈〈endl;
cout〈〈"|(3)删除|”<cout〈<”|(4)查找|"<cout<<"|(5)显示|"〈〈endl;
cout<〈”|(6)返回上一层|"<〈endl;
cout〈<”|-—-——-————-——————-—-—|”<〈endl;
}
voidreaderjiemian()//读者维护子菜单
{
cout<〈"|-—---———-—----——---—-|”〈cout<<"|读者维护|"<cout〈<”|
(1)增加|”<〈endl;
cout<<”|
(2)更改|”<cout<<"|(3)删除|"<cout<<"|(4)查找|"〈cout<<”|(5)显示|”〈〈endl;
cout<<”|(6)返回上一层|”〈〈endl;
cout<〈"|—-————----—-—-———----|”〈〈endl;
}
voidmainjiemian()//主界面
{
cout〈〈"***********************************************”<〈endl;
cout<<”*图书管理系统*"<cout<<"**”〈〈endl;
cout<<"*
(1)借书*"<cout<〈"**”〈〈endl;
cout〈<"*
(2)还书*”<〈endl;
cout<<”**"<〈endl;
cout〈〈"*(3)图书管理*"〈〈endl;
cout<<"**"<〈endl;
cout〈〈"*(4)用户管理*"〈〈endl;
cout<<"**"<〈endl;
cout〈<”*(0)退出*”<〈endl;
cout<〈”***********************************************”〈〈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)
return;
if(t_bd。
btarray[bsuffix]。
b_flag==2)
{
cout〈〈”图书已经借出,请选择其它图书"〈return;
}
if(t_rd。
rdarray[rsuffix].r_bor==1)
{
cout<〈”你已经借过图书,请先归还再借其它图书"<return;
}
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)
return;
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
{
cout〈<"请重新输入,读者借的图书号不正确”<return;
}
return;
}
}
voidbooksmange()
{
charin;
bdatabasebd;
do{
bookjiemain();
cin〉>in;
switch(in)
{
case’1’:
bd.addbooks();
break;
case’2’:
bd。
editbooks();
break;
case’3’:
bd.delbooks();
break;
case’4':
bd。
findbooks();
break;
case’5':
bd。
listbooks();
break;
case'6':
break;
default:
cout<<”输入错误,请从新输入。
”<〈endl;;
}
}while(in!
=’6’);
return;
}
voidreadersmange()
{
charin;
rdatabasebd;
do{
readerjiemian();
cin>〉in;
switch(in)
{
case’1’:
bd.addreaders();
break;
case’2':
bd.editreaders();
break;
case'3’:
bd。
delreaders();
break;
case’4':
bd.findreaders();
break;
case'5':
bd.listreaders();
break;
case’6':
break;
default:
cout<〈”输入错误,请从新输入.”<}
}while(in!
='6');
return;
}
intmain(intargc,char*argv[])
{charin;
do{
mainjiemian();
cin〉>in;
switch(in)
{
case'1’:
borrowtoreturn(in);
break;
case’2’:
borrowtoreturn(in);
break;
case’3’:
booksmange();
break;
case'4':
readersmange();
break;
case'0’:
break;
default:
cout<〈"输入错误,请从新输入。
”<}
}while(in!
='0');
return0;
}