图书馆管理系统C++代码.docx
- 文档编号:26236386
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:21
- 大小:19.34KB
图书馆管理系统C++代码.docx
《图书馆管理系统C++代码.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统C++代码.docx(21页珍藏版)》请在冰豆网上搜索。
图书馆管理系统C++代码
图书馆管理系统C++代码
#include
#include
#include
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< "; 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; } } ; //读者管理模块 //读者类 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; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 C+ 代码