图书馆管理系统C++代码呕心沥血整理版.docx

上传人:b****5 文档编号:8128073 上传时间:2023-01-29 格式:DOCX 页数:19 大小:20.36KB
下载 相关 举报
图书馆管理系统C++代码呕心沥血整理版.docx_第1页
第1页 / 共19页
图书馆管理系统C++代码呕心沥血整理版.docx_第2页
第2页 / 共19页
图书馆管理系统C++代码呕心沥血整理版.docx_第3页
第3页 / 共19页
图书馆管理系统C++代码呕心沥血整理版.docx_第4页
第4页 / 共19页
图书馆管理系统C++代码呕心沥血整理版.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

图书馆管理系统C++代码呕心沥血整理版.docx

《图书馆管理系统C++代码呕心沥血整理版.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统C++代码呕心沥血整理版.docx(19页珍藏版)》请在冰豆网上搜索。

图书馆管理系统C++代码呕心沥血整理版.docx

图书馆管理系统C++代码呕心沥血整理版

//tushuguanli。

cpp:

Definestheentrypointfortheconsoleapplication.

//

#include

#include//文件头文件

#include〈iostream〉//是指标准库中输入输出流的头文件,cout就定义在这个头文件里

usingnamespacestd;//使用名字空间std

constintBMAX=50;//书最多个数

//图书管理模块

//图书类

classbook

public:

intno;//图书编号

charname[20];//图书名称

intb_flag;//1为在架,2为借出

intb_del;//1为存在,2为删除

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;

;

//图书数据库类

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<〈”书号:

"〈〈btarray[i].no<〈”书的名称:

”〈〈btarray[i]。

name<〈"图书状态:

"〈〈value〈

returni;

}

return—1;

voideditbooks()//编辑图书

intcur;

cur=findbooks();

if(cur==—1)

{cout<<”没有这本书"〈〈endl;

return;

cout〈〈"书号:

”〈〈btarray[cur]。

no〈〈”书的名称:

”〈〈btarray[cur].name〈〈endl;

cout<〈"请修改数据:

”<〈endl;

cout〈〈endl<<”书的名称:

”;

cin>〉btarray[cur].name;

return;

}

voiddelbooks()//删除图书

intcur;

cur=findbooks();

if(cur==-1)

return;

if(btarray[cur].b_flag==2)//删除时判断图书是否借出

cout〈〈"该图书已经借出,请在归还后再删除。

"〈

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〈〈"书号:

"〈

no<<"书的名称:

"〈〈btarray[i].name<〈”图书状态:

"<

return;

;

//读者管理模块

//读者类

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〈

";

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〈〈”学号:

"〈〈rdarray[i]。

no〈<"姓名:

"〈

name〈〈”是否借书:

"〈

returni;

return—1;

}

voideditreaders()//编辑读者信息

intcur;

cur=findreaders();

if(cur==—1)

{cout〈〈”没有该学生”<〈endl;

return;

cout〈〈”请修改数据:

”〈〈endl;

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〈<"学号:

"〈

no〈〈”姓名:

”<〈rdarray[i]。

name〈<”是否借书:

"<

}

return;

voidbookjiemain()//图书维护子菜单

{

cout〈〈”|-————-———-———-——--——-|"〈〈endl;

cout〈<”|图书维护|"〈

cout〈<"|

(1)增加|”<

cout〈〈”|

(2)更改|”<〈endl;

cout〈<”|(3)删除|”〈〈endl;

cout<〈”|(4)查找|”<

cout<〈”|(5)显示|"<〈endl;

cout〈<”|(6)返回上一层|”〈〈endl;

cout〈〈”|—————-----——-—-—-—-——|"〈〈endl;

voidreaderjiemian()//读者维护子菜单

{

cout<〈”|—-—-—————-———-——-——-—|”〈〈endl;

cout<〈”|读者维护|”〈〈endl;

cout〈〈"|

(1)增加|”〈〈endl;

cout<〈”|

(2)更改|"〈〈endl;

cout〈<”|(3)删除|”〈〈endl;

cout〈<”|(4)查找|”<

cout<〈”|(5)显示|”〈

cout〈〈"|(6)返回上一层|”<〈endl;

cout〈〈”|—-—————-——————--—-———|”<

voidmainjiemian()//主界面

cout〈<”***********************************************”〈〈endl;

cout<<”*图书管理系统*"〈〈endl;

cout〈<"**"〈〈endl;

cout<〈”*

(1)借书*”<〈endl;

cout〈<”**”〈〈endl;

cout〈<"*

(2)还书*"<

cout〈〈"**"<〈endl;

cout〈〈"*(3)图书管理*”〈

cout〈<”**”<〈endl;

cout〈<”*(4)用户管理*”〈〈endl;

cout<〈"**"<

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<〈”图书已经借出,请选择其它图书”<〈endl;

return;

}

if(t_rd。

rdarray[rsuffix]。

r_bor==1)

cout〈<"你已经借过图书,请先归还再借其它图书"<〈endl;

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〈<”输入错误,请从新输入。

”〈

}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〈<”输入错误,请从新输入。

”〈〈endl;

}while(in!

=’0’);

return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1