还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
图书馆管理系统目录
一、问题描述
二、系统需求分析1功能要求2技术要求3方案分析
三、概要设计
四、详细设计与程序代码
五、运行结果与测试
六、设计体会与总结
一、问题描述图书借阅管理系统是一个学校不可缺少的部分它的内容对于学校的管理者和读者来说都至关重要直接关系到图书的借用率,所以__图书管理系统能够为___和读者提供充足的信息和快捷的查询手段编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程图书管理者只需略懂电脑知识就可以简易的操作该图书借阅管理系统
二、系统需求分析图书借阅管理系统主要分为两大功能
(1)图书管理增加图书、查询图书、删除图书、图书借阅、还书到期书催还;
(2)会员管理增加会员、查询会员、删除会员、借书信息;要完成这个题目,主要是建立解决图书和会员的信息的存储,解决的方法是建立两个带头结点的单链表,分别用于存储图书和会员解决了这个问题后就是如何建立这两个链表的__了,解决的方法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书解决了这两个问题,剩下的工作就简单了只需按链表的操作就可以了1功能要求在图书借阅管理程序中须实现以下功能
(1)图书修改功能能对图书借阅系统存储的信息进行修改提供两种修改方式,如按照图书编号修改、按照书名修改图书编号是图书记录的自然顺序编号
(2)图书删除功能能对图书借阅系统的图书信息进行删除删除时以记录为单位,能一次删除一条记录
(3)借书功能能对借出的图书作记录信息,能一次借出一本图书
(4)还书功能能将被借出的图书信息还原,能一次借出一本图书
(5)保存功能能将记录保存在任何自定义的文件中,如保存在c:\books、c:\lenders
(6)通信录管理结束后,能够正常退出图书借阅管理程序2技术要求
(1)每个借阅者记录至少包括如下信息姓名、学号、姓别等每本图书记录至少包括如下信息编号、书名、__、__等
(2)图书、借阅者信息以磁盘文件的形式存储,存储位置、文件名、文件格式由设计者确定
(3)对于图书借阅系统功能中数据输入、显示、查询、修改、删除、保存等功能,要求编写功能__的函数或主控函数予以实现,其所属的各项功能尽量由__的函数实现
(4)以菜单方式实现功能选择控制
(5)本图书借阅管理程序能够实现100条记录的管理3方案分析此题是设计一个图书借阅管理系统,根据需要应包含图书管理和会员管理其中对图书和会员的增加、查询和删除都是基本操作在图书管理中对图书的借阅和归还是重点,这两个操作也是整个系统关键在会员管理中增加了会员借书信息的查询和对到期书的催还信息实现这些操作的关键在于建立的两个带头结点的单链,分别用于存储图书和会员的基本信息在这两个链表之间还应建立起相互的__,便于查询的操作的实现另外,在美观方面,需要设计一个操作界面供用户选择使用
三、概要设计通过需求分析,设计出本程序的总体功能设计框图分为七个方面
1、选择检查类型;
2、编辑图书的信息;
3、查询图书的信息;
4、编辑读者的信息;
5、查询读者的信息;
6、借阅书刊;
7、还书连线之间说明了他们之间的相互__以及设计时的要求图书管理系统简略功能框图
五、详细设计与程序代码#includestdlib.h#includestdio.h#includeiostream.h#defineNULL0typedefstructBookInfo{/////图书结构intb_Code;////图书编号charb_Name
[20];/////名称intb_Total;/////总数intb_Out;///借出数BookInfo*nextbook;//////下一类图书}BookInfo;typedefstructMemberInfo{///会员结构longm_Code;/////会员编号charm_Name
[20];////会员名字intl_Codes
[6];/////以借书的编号最多5MemberInfo*nextmember;////下一会员}MemberInfo;typedefstructSystem{///管理系统结构BookInfo*BI;MemberInfo*MI;intBookTotal;////图书类库存量intMemberTota;/////会员数量}System;System*InitSystem;/////voidAddBookSystem*;////增加图书BookInfo*SearchBookSystem*int;////查询图书信息voidDelBookSystem*;/////删除图书voidBrrowBookSystem*;///////借书处理voidTurnBackBookSystem*;////还书处理voidAddMemberSystem*;/////添加会员voidDelMemberSystem*;////删除会员MemberInfo*SearchMemberSystem*int;/////查询会员信息voidStoreDataSystem*;voidLoadDataSystem*;voidExitSystem;void__in{System*S=InitSystem;intsel;do{cout\n\t\t\t\t图书管理系统endl;cout\t\t\t******************************endl;cout\t\t\t******************************endl;cout\t\t\t
1.增加图书.\t
2.查询图书.\n\t\t\t
3.删除图书.\t
4.借书处理.\n\t\t\t
5.还书处理.\n\t\t\t
6.添加会员.\t
7.删除会员.\n\t\t\t
8.查询会员.\t
9.载入数据.\n\t\t\t
10.保存数据.\t
11.退出程序.\n;cout\t\t\t******************************endl;cout\t\t\t******************************endl;cout请选择:;do{cinsel;ifsel=1sel=11break;cout选择错误!\n重新输入:endl;}while1;switchsel{case1:AddBookS;break;case2:SearchBookS-1;break;case3:DelBookS;break;case4:BrrowBookS;;break;case5:TurnBackBookS;break;case6:AddMemberS;break;case7:DelMemberS;break;case8:SearchMemberS-1;break;case9:LoadDataS;break;case10:StoreDataS;break;default:ExitSystem;}}while1;}System*InitSystem{System*S=System*__llocsizeofSystem;S-BI=BookInfo*__llocsizeofBookInfo;S-BookTotal=0;S-BI-nextbook=NULL;S-MI=MemberInfo*__llocsizeofMemberInfo;S-MemberTota=0;S-MI-nextmember=NULL;returnS;}voidAddBookSystem*S{intTempcode;charsel;BookInfo*p=S-BI;BookInfo*t;BookInfo*m;intnum;do{cout输入图书编号:;cinTempcode;ifm=SearchBookSTempcode{cout这类书以有库存.\n输入图书的入库量:endl;cinnum;m-b_Total+=num;}else{t=BookInfo*__llocsizeofBookInfo;t-b_Code=Tempcode;cout输入图书的名称:;cint-b_Name;cout输入图书的入库量:;cint-b_Total;t-b_Out=0;t-nextbook=p-nextbook;p-nextbook=t;S-BookTotal++;}cout添加完毕!endl;cout还要添加吗Y/N;cinsel;ifsel==n||sel==N{cout结束添加endl;return;}}while1;}BookInfo*SearchBookSystem*Sintcode{BookInfo*bi=S-BI-nextbook;intbookcode;ifcode==-1{cout请输入要查询的图书编号:;cinbookcode;}elsebookcode=code;whilebibi-b_Code!=bookcodebi=bi-nextbook;ifcode==-1{if!bicout没找到你所要的图书.endl;else{cout图书编号为:bi-b_Codeendl;cout图书名称为:bi-b_Nameendl;cout图书库存量为:bi-b_Totalendl;cout图书借出量为:bi-b_Outendl;}}returnbi;}voidDelBookSystem*S{BookInfo*bi;BookInfo*pl=S-BI;MemberInfo*memi;charsel;inttempcode;inti;do{pl=S-BI;bi=pl-nextbook;memi=S-MI-nextmember;cout请输入要删除的图书的编号:;cintempcode;whilebi{ifbi-b_Code==tempcodebreak;pl=bi;bi=bi-nextbook;}ifbi==0cout没有找到要删除的图书endl;else{pl-nextbook=bi-nextbook;S-BookTotal--;whilememi{fori=1;i=memi-l_Codes
[0];i++{ifmemi-l_Codes[i]==tempcodebreak;}ifi=memi-l_Codes
[0]{for;imemi-l_Codes
[0];i++memi-l_Codes[i]=memi-l_Codes[i+1];memi-l_Codes
[0]--;}memi=memi-nextmember;}freebi;}cout还有图书要删除吗Y/N;cinsel;ifsel==N||sel==n{cout删除图书结束endl;return;}}while1;}voidBrrowBookSystem*S{BookInfo*bi=S-BI-nextbook;BookInfo*p;charsel;intmemcode;MemberInfo*mp;inttempcode;do{cout输入要借出的书号:;cintempcode;p=SearchBookStempcode;if!p{cout没有找到要借出的图书.endl;}else{cout此书的现存量为p-b_Total-p-b_Outendl;if!p-b_Total-p-b_Outcout没有足够的书了外借失败.endl;else{cout请输入会员编号:;cinmemcode;mp=SearchMemberSmemcode;if!mpcout会员编号输入错误外借失败endl;else{ifmp-l_Codes
[0]==5cout借书量不能超过5本;else{p-b_Out++;mp-l_Codes[++mp-l_Codes
[0]]=tempcode;cout外借成功.endl;}}}}cout\n还有图书要借出吗Y/N;cinsel;ifsel==N||sel==n{cout外借操作结束.endl;return;}}while1;}voidTurnBackBookSystem*S{BookInfo*bi=S-BI-nextbook;BookInfo*p;MemberInfo*mp;intmembercode;inttempcode;inti;charsel;do{cout输入归还书号:;cintempcode;p=SearchBookStempcode;if!p{cout书号输入错误.endl;}else{cout此书的现存量为p-b_Total-p-b_Outendl;cout请输入会员编号:;cinmembercode;if!mp=SearchMemberSmembercodecout会员编号输入错误归还失败endl;else{p-b_Out--;fori=1;i=mp-l_Codes
[0];i++{ifmp-l_Codes[i]==tempcodebreak;}whileimp-l_Codes
[0]{mp-l_Codes[i]=mp-l_Codes[i+1];i++;}mp-l_Codes
[0]--;cout归还成功.endl;}}cout还有要归还的图书吗Y/N;cinsel;ifsel==N||sel==n{cout归还结束.endl;return;}}while1;}voidAddMemberSystem*S{intTempcode;charsel;MemberInfo*p=S-MI;MemberInfo*t;do{cout输入会员编号:;cinTempcode;t=MemberInfo*__llocsizeofMemberInfo;t-m_Code=Tempcode;cout输入会员姓名:;cint-m_Name;t-l_Codes
[0]=0;t-nextmember=p-nextmember;p-nextmember=t;S-MemberTota++;cout添加完毕!endl;cout还要添加吗Y/N;cinsel;ifsel==n||sel==N{cout结束添加endl;return;}}while1;}MemberInfo*SearchMemberSystem*Sintcode{MemberInfo*bi=S-MI-nextmember;intmembercode;inti;ifcode==-1{cout请输入要查询的会员编号:;cinmembercode;}elsemembercode=code;whilebibi-m_Code!=membercodebi=bi-nextmember;ifcode==-1{if!bicout没找到指定会员.endl;else{cout会员编号为:bi-m_Codeendl;cout名称为:bi-m_Nameendl;cout已借的图书有:bi-l_Codes
[0]本.endl;fori=1;i=bi-l_Codes
[0];i++coutbi-l_Codes[i];coutendl;}}returnbi;}voidDelMemberSystem*S{MemberInfo*bi;MemberInfo*pl;BookInfo*book;charsel;inti;inttempcode;do{bi=S-MI-nextmember;pl=S-MI;cout请输入要删除的会员的编号:;cintempcode;whilebi{ifbi-m_Code==tempcodebreak;pl=bi;bi=bi-nextmember;}if!bicout没有找到要删除的会员编号.;else{pl-nextmember=bi-nextmember;S-MemberTota--;fori=1;i=bi-l_Codes
[0];i++{if!book=SearchBookSbi-l_Codes[i]{cout删除会员出错!endl;}else{book-b_Out--;book-b_Total--;}}freebi;}cout还有会员要删除吗Y/N;cinsel;ifsel==N||sel==n{cout删除会员结束endl;return;}}while1;}voidStoreDataSystem*S{FILE*fp;BookInfo*bi=S-BI-nextbook;if!fp=fopenBookSyswb{cout打开文件BookSys失败!endl;exit0;}fwriteS-BookTotalsizeofint1fp;whilebi{fwritebisizeofBookInfo1fp;bi=bi-nextbook;}MemberInfo*mi=S-MI-nextmember;fwriteS-MemberTotasizeofint1fp;whilemi{fwritemisizeofMemberInfo1fp;mi=mi-nextmember;}fclosefp;}voidLoadDataSystem*S{FILE*fp;if!fp=fopenBookSysrb{cout打开文件BookSys失败endl;exit0;}BookInfo*bi=S-BI;BookInfo*tempbi;freadS-BookTotalsizeofint1fp;forinti=1;i=S-BookTotal;i++{tempbi=BookInfo*__llocsizeofBookInfo;freadtempbisizeofBookInfo1fp;bi-nextbook=tempbi;bi=tempbi;}bi-nextbook=NULL;MemberInfo*mi=S-MI;MemberInfo*tempmi;freadS-MemberTotasizeofint1fp;fori=1;i=S-MemberTota;i++{tempmi=MemberInfo*__llocsizeofMemberInfo;freadtempmisizeofMemberInfo1fp;mi-nextmember=tempmi;mi=tempmi;}mi-nextmember=NULL;fclosefp;}voidExitSystem{charselect;cout警告:程序结束后未存储的数据将消失.endl;cout确定要退出吗Y/N;cinselect;ifselect==y||select==Yexit0;ifselect==n||select==Nreturn;}
五、运行结果与测试
六、设计体会与总结这次基础强化训练的课程设计对于我们来说,有一定的难度因为他要求我们较完整的去实现一个比较可行的程序将其应用到实际的生活中去我被分配到的题目是图书借阅系统的实现与设计这个题目相对来说贴近生活,比较容易理解但是设计一个较为完整的程序却不是这么简单的首先我分析了相关的题目内容,并由此而进行了相关资料和书籍的查询工作然后才开始正式进行设计一开始不知从何下手但后来分析了一下题目,并结合这学期所学的知识,再加上相关提示我决定用指针、链表和文件的内容来编写程序图书管理主要就是有一些操作来完成,这些操作包括新进图书基本信息的输入、图书基本信息的查询、对撤消图书信息的删除、为借书人__注册、__借书手续(非注册会员不能借书)、__还书手续等等我想这正好用C++的知识来实现函数添加图书图书查询删除图书增加会员会员查询删除会员借阅图书归还图书,借书信息,到期书催还最后编写退出系统的函数在具体编写程序时考虑到图书的相关操作与会员基本相同,所以实际上只要编写前三个函数,后面的函数把相应变量改变就可以了添加图书考虑到图书的信息较多,所以用结构体对其定义又考虑到图书量大,所以添加后要保存到文件中去图书查询用所学过的顺序查找法来写删除图书把保存到文件中的内容写到链表中去,用链表删除结点的方法来删除图书我们所学过的指针这时正好用上最后把各函数同主函数相连,用主函数调用它们,编写好好看的界面就可以了同时通过这几天的程序及报告编写,我也发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论__实际的能力还是比较脆弱尤其是编写大型的程序所要拥有的知识和技能比较缺乏程序编好了,还要经过调试和修改,这步也很关键,好的程序是经过了无数次的修改和调试才产生的我的程序基本上能够满足要求,但还有一些地方需要改进,在今后我应该在多看书的同时还要加强实践的练习才能进一步提高自己的编程能力登陆系统新书入库借书还书修改用户信息删除图书删除用户信息添加用户信息查询修改图书___用户用户信息修改操作员信息添加操作员信息删除操作员信息查询操作员信息操作员信息图书信息借出信息查询用户信息图书管理系统登陆模块图书馆___模块图书借阅/归还模块图书管理模块图书查询模块用户登陆___登陆超期提示新书入库操作员登陆添加操作员删除操作员修改操作员查询操作员读者借阅信息读者归还信息___登陆___登陆查询图书信息删除图书信息修改图书信息。