图书馆管理系统C代码.docx

上传人:b****5 文档编号:28274198 上传时间:2023-07-10 格式:DOCX 页数:20 大小:17.88KB
下载 相关 举报
图书馆管理系统C代码.docx_第1页
第1页 / 共20页
图书馆管理系统C代码.docx_第2页
第2页 / 共20页
图书馆管理系统C代码.docx_第3页
第3页 / 共20页
图书馆管理系统C代码.docx_第4页
第4页 / 共20页
图书馆管理系统C代码.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

图书馆管理系统C代码.docx

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

图书馆管理系统C代码.docx

图书馆管理系统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<

";

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

"<

"<

"<

returni;

}

}

return-1;

}

voideditbooks()//编辑图书

{

intcur;

cur=findbooks();

if(cur==-1)

{cout<<"没有这本书"<

return;

}

cout<<"书号:

"<

"<

cout<<"请修改数据:

"<

cout<

";

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

"<

"<

"<

}

}

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<

";

cin>>rname;

cout<

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

"<

"<

"<

returni;

}

}

return-1;

}

voideditreaders()//编辑读者信息

{

intcur;

cur=findreaders();

if(cur==-1)

{cout<<"没有该学生"<

return;

}

cout<<"请修改数据:

"<

cout<

";

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

"<

"<

"<

}

}

return;

}

}

;

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

{

cout<<"|---------------------|"<

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

cout<<"|

(1)增加|"<

cout<<"|

(2)更改|"<

cout<<"|(3)删除|"<

cout<<"|(4)查找|"<

cout<<"|(5)显示|"<

cout<<"|(6)返回上一层|"<

cout<<"|---------------------|"<

}

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

{

cout<<"|---------------------|"<

cout<<"|读者维护|"<

cout<<"|

(1)增加|"<

cout<<"|

(2)更改|"<

cout<<"|(3)删除|"<

cout<<"|(4)查找|"<

cout<<"|(5)显示|"<

cout<<"|(6)返回上一层|"<

cout<<"|---------------------|"<

}

voidmainjiemian()//主界面

{

cout<<"***********************************************"<

cout<<"*图书管理系统*"<

cout<<"**"<

cout<<"*

(1)借书*"<

cout<<"**"<

cout<<"*

(2)还书*"<

cout<<"**"<

cout<<"*(3)图书管理*"<

cout<<"**"<

cout<<"*(4)用户管理*"<

cout<<"**"<

cout<<"*(0)退出*"<

cout<<"***********************************************"<

}

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

"<

}

}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;

}

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

当前位置:首页 > 总结汇报 > 其它

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

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