图书管理系统代码.docx
- 文档编号:6214708
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:18
- 大小:19.82KB
图书管理系统代码.docx
《图书管理系统代码.docx》由会员分享,可在线阅读,更多相关《图书管理系统代码.docx(18页珍藏版)》请在冰豆网上搜索。
图书管理系统代码
#include #include #include〈iostream> 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<<"图书状态: "〈 returni; } } return-1; } voideditbooks()//编辑图书 { intcur; cur=findbooks(); if(cur==-1) { cout<<"没有这本书”< return; } cout〈<”书号: "< ”〈 cout<〈"请修改数据: ”< 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〈〈"书的名称: ”〈〈btarry[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〈 ”; 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〈〈"是否借书: ”<〈value< 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_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)增加|”〈 cout〈<"| (2)更改|”〈 cout<<"|(3)删除|"〈〈endl; cout〈〈"|(4)查找|"<〈endl; cout〈<"|(5)显示|"〈 cout<<”|(6)返回上一层|”< cout〈<”|—-—---—----—-———--|”<〈endl; } voidreaderjiemian()//读者维护子菜单 { cout<<”|----—-—-——-—--————|"<〈endl; cout〈〈"|读者维护|"< cout〈〈"| (1)增加|"<〈endl; cout〈〈"| (2)更改|"〈 cout<〈"|(3)删除|"〈 cout〈<"|(4)查找|”<〈endl; cout〈〈"|(5)显示|"〈〈endl; cout<<”|(6)返回上一层|”〈〈endl; cout〈〈"|--—————--—-————-——|”〈〈endl; } void//主界面 { cout〈〈”*********************"<〈endl; cout〈〈”*图书管理系统*”〈〈endl; cout<〈"**"< cout〈<”* (1)借书*”〈 cout<<"**"<〈endl; cout<<"* (2)还书*”〈 cout<<"**"<〈endl; cout〈〈”*(3)图书管理*”〈〈endl; cout〈<"**”< cout<<"*(4)用户管理*”<〈endl; cout〈<"**"< 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<<"图书已经借出,请选择其他图书”< 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 { 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<〈”输入错误,请重新输入.”<〈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<<”输入错误,请重新输入"〈〈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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 代码