图书管理系统代码.docx
- 文档编号:4096237
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:18
- 大小:19.83KB
图书管理系统代码.docx
《图书管理系统代码.docx》由会员分享,可在线阅读,更多相关《图书管理系统代码.docx(18页珍藏版)》请在冰豆网上搜索。
图书管理系统代码
#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〈<”书号: "〈 no〈<”书的名称: ”<〈btarray[i]。 name<<"图书状态: ”<〈value< returni; } } return—1; } voideditbooks()//编辑图书 { intcur; cur=findbooks(); if(cur==-1) { cout<<"没有这本书”〈 return; } cout<〈"书号: ”< 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〈<”书号: ”〈 ”〈〈btarry[i]。 name〈〈"图书状态: "<〈value〈〈endl; } } 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〈 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〈<"请修改数据: "〈〈endl; cout< ”; cin>〉rdarray[cur]。 name; return; } voiddelreaders()//删除读者,读者如果借书要还书后才能删除 { intcur; cur=findreaders(); if(cur==—1) { return; } if(rdarray[cur]。 r_del==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<<"学号: ”<〈rdarray[i].no〈〈”姓名: ”< name〈〈”是否借书: ”<〈value< } } return; } }; voidbookjiemian()//图书维护子菜单 { cout〈<”|—-——-----—-———--——|"〈〈endl; cout<〈”|图书维护|”〈〈endl; cout<<”| (1)增加|"<〈endl; cout<〈”| (2)更改|”<〈endl; cout〈<”|(3)删除|”< cout〈<"|(4)查找|"<〈endl; cout〈〈"|(5)显示|”<〈endl; cout<〈"|(6)返回上一层|"〈〈endl; cout〈<”|——-——--—--———-—-—-|”<〈endl; } voidreaderjiemian()//读者维护子菜单 { cout<<"|———--———--—-—-—-——|"< cout<<”|读者维护|”〈〈endl; cout〈<”| (1)增加|"<〈endl; cout〈〈"| (2)更改|"〈〈endl; cout<〈"|(3)删除|"< cout〈<"|(4)查找|"〈〈endl; cout<〈”|(5)显示|”〈〈endl; cout〈〈"|(6)返回上一层|"< cout〈<"|---——-----———-————|"< } void//主界面 { cout<<"*********************”<〈endl; cout〈<"*图书管理系统*”〈 cout<〈”**"〈 cout<<"* (1)借书*"〈 cout<〈”**”< cout〈〈"* (2)还书*”<〈endl; cout〈<”**”〈〈endl; cout〈<"*(3)图书管理*"<〈endl; cout〈<"**"〈 cout<〈”*(4)用户管理*”<〈endl; cout〈<"**"<〈endl; cout〈<”*(0)退出*”<〈endl; 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<<”请重新输入,读者借的图书号不正确”〈〈endl; return; } return; } } voidbooksmange() { charin; bdatabasebd; do { bookjiemian(); 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〈〈"输入错误,请重新输入”〈〈endl; } } 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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 代码