数据结构课程设计——图书借阅管理系统_第1页
数据结构课程设计——图书借阅管理系统_第2页
数据结构课程设计——图书借阅管理系统_第3页
数据结构课程设计——图书借阅管理系统_第4页
数据结构课程设计——图书借阅管理系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图书馆管理系统一、问题描述 :二、系统需求分析:1 功能要求:2 技术要求:3 方案分析:三、概要设计:四、详细设计与程序代码:五、运行结果与测试:六、设计体会与总结18一、问题描述图书借阅管理系统是一个学校不可缺少的部分, 它的内容对于学校的管理者和读者来说都至关重要, 直接关系到图书的借用率,所以开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。编写程序系统主要实现图书馆的增加图书、 查询图书、 删除图书、 借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程。图书管理者只需略懂电脑知识就可以简易的操作该图书借阅管理系统。二、 系统需求分析图书

2、借阅管理系统主要分为两大功能:( 1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书到期书催还);( 2)会员管理(增加会员、查询会员、删除会员、借书信息);要完成这个题目, 主要是建立解决图书和会员的信息的存储, 解决的方法是建立两个带头结点的单链表, 分别用于存储图书和会员。 解决了这个问题后就是如何建立这两个链表的联系了,解决的方法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书。 解决了这两个问题, 剩下的工作就简单了。只需按链表的操作就可以了。1 功能要求在图书借阅管理程序中须实现以下功能:( 1)图书修改功能:能对图书借阅系统存储的信息进行修改。提供两

3、种修改方式, 如按照图书编号修改、 按照书名修改。 图书编号是图书记录的自然顺序 编号。( 2)图书删除功能:能对图书借阅系统的图书信息进行删除。删除时以记录为单位,能一次删除一条记录。( 3)借书功能:能对借出的图书作记录信息,能一次借出一本图书。( 4)还书功能:能将被借出的图书信息还原,能一次借出一本图书。( 5) 保存功能: 能将记录保存在任何自定义的文件中, 如保存在: c:books 、 c:lenders。( 6)通信录管理结束后,能够正常退出图书借阅管理程序。( 技术要求( 1)每个借阅者记录至少包括如下信息:姓名、学号、姓别等。每本图书记录至少包括如下信息:编号、书名、作者、

4、价格等。( 2)图书、借阅者信息以磁盘文件的形式存储,存储位置、文件名、文件格式由设计者确定。( 3)对于图书借阅系统功能中数据输入、显示、查询、修改、删除、保存等功能, 要求编写功能独立的函数或主控函数予以实现, 其所属的各项功能尽量 由独立的函数实现。( 4)以菜单方式实现功能选择控制。( 5)本图书借阅管理程序能够实现100 条记录的管理。3 方案分析此题是设计一个图书借阅管理系统,根据需要应包含图书管理和会员管理。其中对图书和会员的增加、 查询和删除都是基本操作。 在图书管理中对图书的借阅和归还是重点, 这两个操作也是整个系统关键。 在会员管理中增加了会员借书信息的查询和对到期书的催还

5、信息。 实现这些操作的关键在于建立的两个带头结点的单链, 分别用于存储图书和会员的基本信息。 在这两个链表之间还应建立起相互的联系,便于查询的操作的实现。另外,在美观方面,需要设计一个操作界面供用户选择使用。三、概要设计登陆系统删除图书查询用户信息修改操作员信息通过需求分析,设计出本程序的总体功能设计框图。分为七个方面:1、选择检查类型;2、编辑图书的信息;3、查询图书的信息;4、编辑读者的信息;5、查询读者的信息;6、 借阅书刊;7、还书。连线之间说明了他们之间的相互联系以及设计时的要求。4.2.2图书管理系统简略功能框图五、详细设计与程序代码:#include#include#includ

6、e#define null 0typedef struct bookinfo / 图书结构 int b_code; / 图书编号 char b_name20; / 名称 int b_total; / 总数 int b_out;/借出数bookinfo* nextbook; / 下一类图书 bookinfo;typedef struct memberinfo/会员结构long m_code; / 会员编号char m_name20; /会员名字int l_codes6; /以借书的编号,最多5memberinfo* nextmember; / 下一会员memberinfo;typedef str

7、uct system / 管理系统结构bookinfo* bi;memberinfo* mi;int booktotal; / 图书类库存量int membertota; / 会员数量system;system* initsystem();/void addbook(system*);/ 增加图书bookinfo* searchbook(system*,int);/ 查询图书信息void delbook(system*);/ 删除图书void brrowbook(system*);/ 借书处理void turnbackbook(system*);/ 还书处理void addmember(sys

8、tem*);/ 添加会员void delmember(system*);/ 删除会员memberinfo* searchmember(system*,int);/ 查询会员信息void storedata(system*);void loaddata(system*);void exitsystem();void main()system* s=initsystem();int sel;docoutntttt 图书管理系统endl;coutttt*endl;coutttt*endl;coutttt 1. 增加图书 .t 2.查询图书 .nttt 3.删除图书 .t 4.借书处理 .nttt 5

9、. 还书处理 .nttt 6.添加 会员.t 7.删除会员.nttt 8.查询会员.t 9.载入数据.nttt10.保存数据.t11.退出程序.n;coutttt*endl;coutttt*endl;coutsel;if(sel=1&sel=11)break;cout 选择错误 !n 重新输入 :bi=(bookinfo*)malloc(sizeof(bookinfo);s-booktotal=0;s-bi-nextbook=null;s-mi=(memberinfo*)malloc(sizeof(memberinfo);s-membertota=0;s-mi-nextmember=null;

10、return s;void addbook(system* s)int tempcode;char sel;bookinfo* p=s-bi;bookinfo* t;bookinfo* m;int num;docouttempcode;if(m=searchbook(s,tempcode)cout这类书以有库存.n输入图书的入库量:num;m-b_total+=num;elset=(bookinfo*)malloc(sizeof(bookinfo);t-b_code=tempcode;coutt-b_name;coutt-b_total;t-b_out=0;t-nextbook=p-nextb

11、ook;p-nextbook=t;s-booktotal+;cout 添加完毕 !endl;coutsel;if(sel=n|sel=n)cout 结束添加 bi-nextbook;int bookcode;if(code=-1)coutbookcode;else bookcode=code;while(bi&bi-b_code!=bookcode)bi=bi-nextbook;if(code=-1)if(!bi)cout没找到你所要的图书 jvvendl;else cout图书编号为:vvbi-b_codevvendl;cout图书名称为:vvbi-b_namevvendl;cout图书库存

12、量为:bi-b_totalendl;cout图书借出量为:vvbi-b_outvvendl;)return bi;)void delbook(system* s)bookinfo* bi;bookinfo* pl=s-bi;memberinfo* memi;char sei;int tempcode;int i;dopl=s-bi;bi=pl-nextbook;memi=s-mi-nextmember;coutvv请输入要删除的图书的编号:;cintempcode;while(bi)if(bi-b_code=tempcode)break;pl=bi;bi=bi-nextbook;)if(bi=

13、0)cout没有找到要删除的图书 endl;elsepl-nextbook=bi-nextbook;s-booktotal-;while(memi)for(i=1;il_codes0;i+)if(memi-l_codesi=tempcode)break;)if(il_codes0)for(;il_codes0;i+)memi-l_codesi=memi-l_codesi+1;memi-l_codes0-;)memi=memi-nextmember;) free(bi);)coutsel;if(sel=n|sel=n)cout 删除图书结束bi-nextbook;bookinfo* p;char

14、 sel;int memcode;memberinfo* mp;int tempcode;docouttempcode;p=searchbook(s,tempcode);if(!p)cout没有找到要借出的图书.endl;elsecout 此书的现存量为 b_total-p-b_out)b_total-p-b_out)cout 没有足够的书了,外借失败.endl;elsecoutmemcode;mp=searchmember(s,memcode);if(!mp)cout 会员编号输入错误,外借失败l_codes0=5)coutb_out+;mp-l_codes+mp-l_codes0=temp

15、code;cout 外借成功 .endl;coutsel;if(sel=n|sel=n)cout 外借操作结束.bi-nextbook;bookinfo* p;memberinfo* mp;int membercode;int tempcode;int i;char sel;docouttempcode;p=searchbook(s,tempcode);if(!p)cout 书号输入错误.endl;elsecout 此书的现存量为 b_total-p-b_out)endl;coutmembercode;, 归还失败 endl;if(!(mp=searchmember(s,membercode)

16、coutb_out-;for(i=1;il_codes0;i+)if(mp-l_codesi=tempcode)break;while(il_codes0)mp-l_codesi=mp-l_codesi+1;i+;mp-l_codes0-;cout”归还成功.endl;coutsel;if(sel=n|sel=n)cout 归还结束 .mi;memberinfo* t;docouttempcode;t=(memberinfo*)malloc(sizeof(memberinfo);t-m_code=tempcode;coutt-m_name;t-l_codes0=0;t-nextmember=p

17、-nextmember;p-nextmember=t;s-membertota+;cout 添加完毕 !endl;coutsel;if(sel=n|sel=n)cout 结束添加 mi-nextmember;int membercode;int i;if(code=-1)coutmembercode;else membercode=code;while(bi&bi-m_code!=membercode)bi=bi-nextmember;if(code=-1)if(!bi)cout 没找到指定会员 .endl;else cout 会员编号为 :m_codeendl;cout 名称为 :m_nam

18、eendl;cout 已借的图书有:l_codes0 本 .endl;for(i=1;il_codes0;i+)coutl_codesi ;coutmi-nextmember;pl=s-mi;couttempcode;while(bi)if(bi-m_code=tempcode)break;pl=bi;bi=bi-nextmember;if(!bi)coutnextmember=bi-nextmember;s-membertota-;for(i=1;il_codes0;i+)if(!(book=searchbook(s,bi-l_codesi)cout删除会员出错!b_out-;book-b_

19、total-;free(bi);coutsel;if(sel=n|sel=n)cout 删除会员结束bi-nextbook;if(!(fp=fopen(booksys,wb)cout 打开文件 booksys 失败 !booktotal),sizeof(int),1,fp);while(bi)fwrite(bi,sizeof(bookinfo),1,fp);bi=bi-nextbook;memberinfo* mi=s-mi-nextmember;fwrite(&(s-membertota),sizeof(int),1,fp);while(mi)fwrite(mi,sizeof(memberi

20、nfo),1,fp);mi=mi-nextmember;fclose(fp);void loaddata(system* s)file* fp;if(!(fp=fopen(booksys,rb)cout 打开文件 booksys 失败 bi;bookinfo* tempbi;fread(&(s-booktotal),sizeof(int),1,fp);for(int i=1;ibooktotal;i+)tempbi=(bookinfo*)malloc(sizeof(bookinfo);fread(tempbi,sizeof(bookinfo),1,fp);bi-nextbook=tempbi;

21、bi=tempbi;bi-nextbook=null;memberinfo* mi=s-mi;memberinfo* tempmi;fread(&(s-membertota),sizeof(int),1,fp);for(i=1;imembertota;i+)tempmi=(memberinfo*)malloc(sizeof(memberinfo);fread(tempmi,sizeof(memberinfo),1,fp);mi-nextmember=tempmi;mi=tempmi;mi-nextmember=null;fclose(fp);void exitsystem()char sele

22、ct;cout警告:程序结束后未存储的数据将消失.”endl;coutselect;if(select=y|select=y)exit(0);if(select=n|select=n)return;五、运行结果与测试:b c:w ind o wssy 5tem32debugl i .exe 图书管理系统2.查询图书.4.借书处理.苴 mmx苴 mmx苴 mmx苴 mm定理员口辖图图处会a薪加除书加询存增删还奢保6810请选择:si6.a退出爵:8.10.7.9 .rrrc:w i nd owssystc m 3 2口. bugll.exeb.还书处理.j漆加会e.声迫金纪.葆存薮璃.:1i图书

23、管理系统半;xxxxx xxx * x h m m 1m*mx mm mx mm mx mm mx mm: mx mm:苴苴:mm:苴苴:mm:苴苴6.8.10 h忝不 -?j1 . i.s01部二了不起的盖茨比选人人人加莓h|,回2 .查询图中;.4.借书处理.t人闩舞学翩聚5.还书处理i c:w ind o wssy 5tem32debugl i .exeit图书管理系统二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二二工理 一一图处 干询书 一一查借 二 -二 2 4二 二二二 二二 -八羲程一一除入出一一il-二 7 9 1 二1 二 二 二 二 二-二一一定理员口输一一-一图图处会会-sxx一-加除书加询存一一可增删还添查保一一4 135680 *二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二 二请选择:6领入畲员第号号七乜 输入会同姓名;张朝翔 添加完率,保存数据借出吗?h/n图书管理系统保存?出程序新体弱加工0请选择;4输入要借出的t c:wi nd ow5xsystem 52debugl lex六、设计体会与总结:这次基础强化训练的课程设计对于我们来说,有一定的难度。因为他要求我 们较完整的去实现一个比较可行的程序。 将其应用到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论