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

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

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

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

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

}

}

J

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.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<<"请修改数据:

"<

";

cin>>rdarray[cur].name;

return;

}

voiddelreaders()//删除读者,读者如果借书要还书

后才能删除

{

intcur;

cur=findreaders();

if(cur==-1)

{return;

}if(rdarray[cur].r_bor==1)

{

cout<<"该用户借了图书,请还书后再删除"<

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

"<

"<

"<

}

 

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<<"|---

-|"<

void

//主界面

mainjiemian()

cout<<"*

管理系统

*"<

cout<<"*

*"<

cout<<"*

(1)

*"<

cout<<"*

*"<

cout<<"*

(2)

*"<

cout<<"

"<

 

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<<"你已经借过图书,请先归还再借其它图书"<

}

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

{

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