图书馆管理系统C代码.doc
《图书馆管理系统C代码.doc》由会员分享,可在线阅读,更多相关《图书馆管理系统C代码.doc(13页珍藏版)》请在咨信网上搜索。
// tushuguanli.cpp : Defines the entry point for the console application. #include <string> #include <fstream> #include <iostream>/ using namespace std; const int BMAX=50; //图书数据库类 class bdatabase { public: book btarray[BMAX]; int top; public: bdatabase() { book b; top=-1; fstream file("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文献中 { fstream file("book.txt",ios::out); for (int i=0;i<=top;i++) { if (btarray[i].b_del==1) file.write((char *)&btarray[i],sizeof(btarray[i])); } file.close(); } void addbooks() //往图书数据库中加图书 { book bk; int no; char bname[20]; cout<<"请输入书号: "; cin>>no; cout<<endl<<"请输入书名: "; cin>>bname; cout<<endl; bk.b_flag=1; bk.addbook(no, bname); top++; btarray[top]=bk; return; } int findbooks(int suffix) //查找图书,这个函数用于借书这书操作,suffix是数组下标 { int no; cout<<"请输入书号: "; cin>>no; for(int i=0; i<=top; i++) { if(btarray[i].no==no && btarray[i].b_del==1) { return i; } } return -1; } int findbooks() //查找图书,这个函数用于图书维护 { int no; char value[6]; cout<<"请输入书号: "; cin>>no; for(int i=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<<endl; return i; } } return -1; } void editbooks() //编辑图书 { int cur; cur = findbooks(); if (cur==-1) { cout<<"没有这本书"<<endl; return; } cout<<"书号: "<<btarray[cur].no<<" 书旳名称: "<<btarray[cur].name<<endl; cout<<"请修改数据:"<<endl; cout<<endl<<"书旳名称: "; cin>>btarray[cur].name; return ; } void delbooks() //删除图书 { int cur; cur = findbooks(); if (cur==-1) { return; } if(btarray[cur].b_flag==2) //删除时判断图书与否借出 { cout<<"该图书已经借出,请在归还后再删除。"<<endl; return; } btarray[cur].b_del=2; return; } void listbooks() //显示所有图书 { char value[6]; for(int i=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<<" 图书状态 :"<<value<<endl; } } return; } } ; class book { public: int no; //图书编号 char name[20]; //图书名称 int b_flag; int b_del; public : book(){} void setno(int n) { no=n; int getno() { return no; //返回图书编号值 } void setname(char na[]) { strcpy(name, na); //字符串复制 } char* getname() { return name; //返回图书名称 } void borbook() { b_flag=2; //借书标志 } void delbook() { b_del=2; //删除标志 } void addbook(int no,char na[]) //增长图书功能 { setno(no); setname(na); b_flag=1; b_del=1; } } ; //读者类 class reader { public: int no; char name[20]; int r_del; //1存在,2删除 int r_bor; //1借过书,2没有借书 book brbook; public: void addreader(int id, char na[])//增长读者 { no = id; strcpy(name, na); r_del=1; } void setbrbook(book bt) //设立借书标记 { brbook = bt; } book getbrbook() { return brbook; //返回借书信息 } }; //读者数据库类 class rdatabase { public: reader rdarray[BMAX]; int top; public: rdatabase() { reader rd; top=-1; fstream file("reader.txt",ios::in); //打开文献 while (1) { file.read((char *)&rd,sizeof(rd)); if (!file) break; top++; rdarray[top]=rd; } file.close(); //关闭文献 } ~rdatabase()//析构函数 { fstream file("reader.txt",ios::out); for (int i=0;i<=top;i++) { if (rdarray[i].r_del==1) file.write((char *)&rdarray[i],sizeof(rdarray[i])); } file.close(); } void addreaders() //添加读者 { reader rd; int no; char rname[20]; cout<<"请输入学号: "; cin>>no; cout<<endl<<"请输入姓名: "; cin>>rname; cout<<endl; rd.addreader(no, rname); rd.r_bor=2; top++; rdarray[top]=rd; return; } int findreaders(int suffix) //查找读者,这个函数用于借书还书操作。 参数suffix是数组下标 { int no; cout<<"请输入学号: "; cin>>no; for(int i=0; i<=top; i++) { if(rdarray[i].no==no && rdarray[i].r_del==1) { return i; } } return -1; } int findreaders() //查找读者,这个函数用于读者维护操作 { int no; char value[3]; cout<<"请输入学号: "; cin>>no; for(int i=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<<endl; return i; } } return -1; } void editreaders() //编辑读者信息 { int cur; cur = findreaders(); if (cur==-1) { cout<<"没有该学生"<<endl; return; } cout<<"请修改数据:"<<endl; cout<<endl<<" 姓名: "; cin>>rdarray[cur].name; return ; } void delreaders() //删除读者,读者如果借书要还书后才干删除 { int cur; cur = findreaders(); if (cur==-1) { return; } if(rdarray[cur].r_bor==1) { cout<<"该顾客借了图书,请还书后再删除"<<endl; return; } rdarray[cur].r_del=2; return; } void listreaders() //显示所有读者 { char value[3]; for(int i=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<<" 姓名: "<<rdarray[i].name<<" 与否借书: "<<value<<endl; } } return; } } ; void bookjiemain() //图书维护子菜单 { cout<<"|---------------------|"<<endl; cout<<"| 图书维护 |"<<endl; cout<<"| (1)增 加 |"<<endl; cout<<"| (2)更 改 |"<<endl; cout<<"| (3)删 除 |"<<endl; cout<<"| (4)查 找 |"<<endl; cout<<"| (5)显 示 |"<<endl; cout<<"| (6)返回上一层 |"<<endl; cout<<"|---------------------|"<<endl; } void readerjiemian() //读者维护子菜单 { cout<<"|---------------------|"<<endl; cout<<"| 读者维护 |"<<endl; cout<<"| (1)增 加 |"<<endl; cout<<"| (2)更 改 |"<<endl; cout<<"| (3)删 除 |"<<endl; cout<<"| (4)查 找 |"<<endl; cout<<"| (5)显 示 |"<<endl; cout<<"| (6)返回上一层 |"<<endl; cout<<"|---------------------|"<<endl; } void mainjiemian() //主界面 { cout<<"***********************************************"<<endl; cout<<"* 图 书 管 理 系 统 *"<<endl; cout<<"* *"<<endl; cout<<"* (1) 借 书 *"<<endl; cout<<"* *"<<endl; cout<<"* (2) 还 书 *"<<endl; cout<<"* *"<<endl; cout<<"* (3) 图书管理 *"<<endl; cout<<"* *"<<endl; cout<<"* (4) 顾客管理 *"<<endl; cout<<"* *"<<endl; cout<<"* (0) 退 出 *"<<endl; cout<<"***********************************************"<<endl; } void borrowtoreturn(char br) //借书还书函数.参数br用来判断是“借书”还是“还书”.1为“借书”,2为“还书” { int rdid=0; int bkid=0; int rsuffix, bsuffix; bdatabase t_bd; rdatabase t_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<<"你已经借过图书,请先归还再借其他图书"<<endl; 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; } } void booksmange() { char in; bdatabase bd; 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; } void readersmange() { char in; rdatabase bd; 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; } int main(int argc, char* argv[]) { char in; 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'); return 0; }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 代码
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文