图书馆管理系统C++代码.docx
- 文档编号:29838806
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:21
- 大小:20KB
图书馆管理系统C++代码.docx
《图书馆管理系统C++代码.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统C++代码.docx(21页珍藏版)》请在冰豆网上搜索。
图书馆管理系统C++代码
//tushuguanli。
cpp:
Definestheentrypointfortheconsoleapplication.
#include〈string>
#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〈〈endl; 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〈<”书的名称: "〈 name〈 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〈<”书号: ”〈〈btarray[i]。 no〈〈"书的名称: "〈〈btarray[i].name〈〈"图书状态: ”< } } 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<〈"学号: "〈〈rdarray[i].no〈〈”姓名: "〈〈rdarray[i]。 name〈<"是否借书: ”< 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〈〈”该用户借了图书,请还书后再删除"<〈endl; 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<<”姓名: "〈 name<〈”是否借书: ”< } } return; } } ; voidbookjiemain()//图书维护子菜单 { cout〈<"|-—-———---———————-----|"<〈endl; cout〈〈"|图书维护|"< cout<〈"| (1)增加|”〈 cout〈〈"| (2)更改|”<〈endl; cout<<"|(3)删除|"〈 cout<<"|(4)查找|"〈〈endl; cout〈<”|(5)显示|"<〈endl; cout〈〈”|(6)返回上一层|”〈 cout〈〈”|—-——-——--—--——----——-|"〈〈endl; } voidreaderjiemian()//读者维护子菜单 { cout<〈"|——----—-—-----—---———|”< cout<〈”|读者维护|"〈 cout〈<”| (1)增加|"〈 cout<<"| (2)更改|”〈〈endl; cout〈<"|(3)删除|"<〈endl; cout〈〈”|(4)查找|"〈〈endl; cout<〈”|(5)显示|"<〈endl; cout<<”|(6)返回上一层|”< cout<〈"|——----—-——---————--—-|"< } voidmainjiemian()//主界面 { cout〈〈"***********************************************"< cout<〈”*图书管理系统*"< cout<<”**”〈〈endl; cout<〈”* (1)借书*”〈 cout〈<"**”<〈endl; cout〈〈”* (2)还书*"〈〈endl; cout〈<”**”〈 cout<〈"*(3)图书管理*"〈 cout<<”**"< cout<〈”*(4)用户管理*"〈〈endl; cout〈<”**”<〈endl; cout<<”*(0)退出*”< 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〈〈”你已经借过图书,请先归还再借其它图书"< 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; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 C+ 代码