课程设计——图书借阅管理系统.doc_第1页
课程设计——图书借阅管理系统.doc_第2页
课程设计——图书借阅管理系统.doc_第3页
课程设计——图书借阅管理系统.doc_第4页
课程设计——图书借阅管理系统.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

精品文档课程设计说明书 课程名称: 软件工程课程设计题目:图书借阅管理系统院 系: 理学院 专业班级:数学与应用数学08-2学 号:2008303574学生姓名:赵梦指导教师: 2011年 12 月 26 日安徽理工大学课程设计(论文)任务书 理学院 院系 信计 教研室学 号2008303574学生姓名赵梦专业(班级)数学与应用数学2 设计题目 图书借阅管理系统设计技术参数C语言C+设计要求 实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程。工作量项目源文件设计说明书 工作计划 12.19接收计划 12.20模块分析 12.26 结构设计 12.26 整合运行参考资料1 闵联营,何克右.C+程序设计教程.武汉理工大学出版社; 2 严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社; 3 张文祥, 肖四友.C+实验与案例分析. 科学出版社; 4 谭浩强.C+程序设计. 清华大学出版社; 5 朱战立.数据结构(C+语言描述)(第二版本).高等教育出版社。 指导教师签字 教研室主任签字 年 月 日 安徽理工大学课程设计(论文)成绩评定表学生姓名: 赵梦 学号: 2008303574 专业班级: 应数08-2 课程设计题目: 软件工程课程设计 指导教师评语: 成绩: 指导教师: 年 月 日目录问题描述1实验目的2设计过程3系统测试4 设计的特点不足收获与体会5参考文献614欢迎下载14欢迎下载14欢迎下载。一、问题描述 图书借阅管理系统是一个学校不可缺少的部分,它的内容对于学校的管理者和读者来说都至关重要,直接关系到图书的借用率,所以开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。 编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程。图书管理者只需略懂电脑知识就可以简易的操作该图书借阅管理系统。 二、实验目的 1强化和巩固理论基础,掌握编程技巧,为后续的专业课学习打下良好的基础; 2要求用C/C+语言及相应开发环境,实现一个小型完整程序的设计与开发; 3巩固深化所学课程的知识,培养学生运用知识,分析和解决实际问题的能力。 三、设计过程 3.1 系统需求分析 图书借阅管理系统主要分为两大功能: (1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书到期书催还); (2)会员管理(增加会员、查询会员、删除会员、借书信息); 要完成这个题目,主要是建立解决图书和会员的信息的存储,解决的方法是建立两个带头结点的单链表,分别用于存储图书和会员。解决了这个问题后就是如何建立这两个链表的联系了,解决的方法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书。解决了这两个问题,剩下的工作就简单了。只需按链表的操作就可以了。 3.1.1 功能要求 在图书借阅管理程序中须实现以下功能: (1)图书修改功能:能对图书借阅系统存储的信息进行修改。提供两种修改方式,如按照图书编号修改、按照书名修改。图书编号是图书记录的自然顺序编号。 (2)图书删除功能:能对图书借阅系统的图书信息进行删除。删除时以记录为单位,能一次删除一条记录。 (3)借书功能:能对借出的图书作记录信息,能一次借出一本图书。 (4)还书功能:能将被借出的图书信息还原,能一次借出一本图书。 (5)保存功能:能将记录保存在任何自定义的文件中,如保存在:c:books 、c:lenders。 (6)通信录管理结束后,能够正常退出图书借阅管理程序。 3.1.2 技术要求 (1)每个借阅者记录至少包括如下信息:姓名、学号、姓别等。每本图书记录至少包括如下信息:编号、书名、作者、价格等。 (2)图书、借阅者信息以磁盘文件的形式存储,存储位置、文件名、文件格式由设计者确定。 (3)对于图书借阅系统功能中数据输入、显示、查询、修改、删除、保存等功能,要求编写功能独立的函数或主控函数予以实现,其所属的各项功能尽量由独立的函数实现。 (4)以菜单方式实现功能选择控制。 (5)本图书借阅管理程序能够实现100条记录的管理。 3.1.3 方案分析 此题是设计一个图书借阅管理系统,根据需要应包含图书管理和会员管理。其中对图书和会员的增加、查询和删除都是基本操作。在图书管理中对图书的借阅和归还是重点,这两个操作也是整个系统关键。在会员管理中增加了会员借书信息的查询和对到期书的催还信息。实现这些操作的关键在于建立的两个带头结点的单链,分别用于存储图书和会员的基本信息。在这两个链表之间还应建立起相互的联系,便于查询的操作的实现。另外,在美观方面,需要设计一个操作界面供用户选择使用。3.2 图书借阅管理功能框图设计 3.2.1 总体功能实现: 图-1.总体功能实现框图 通过需求分析,设计出本程序的总体功能设计框图。分为七个方面:1、选择检查类型;2、编辑图书的信息;3、查询图书的信息;4、编辑读者的信息;5、查询读者的信息;6、借阅书刊;7、还书。连线之间说明了他们之间的相互联系以及设计时的要求。 3.2.2 图书借阅管理简略功能框图 3.3存储结构设计 3.3.1书的结构体 typedef struct book float price; / 图书单价 int membernum; / 借书人编号 char name80; / 图书名 long num; / 图书编号 char writername20; / 作者姓名 char publish30; / 出版社名称 int yes; / 判断书是否存在或者已经借出,1存在,0借出 struct book *next; / 结点指针 Book,*BookList; 3.3.2 借书时间结构体 typedef struct Time int year; int month; int day; data; 3.3.3 会员借的书的结构体 typedef struct BorrowBook long num; /借的书的编号 struct Time time; /借书时间 struct Time borrowtime; /借书期限 BBook; 3.3.4 会员的结构体 typedef struct member char name20; /会员姓名 char sex; /会员性别,男m,女f long num; /会员编号 int style; /会员类型,1:本科生;2:研究生;3:教师;4:管理员; int max; /会员借书数目,初始为0 int yes; /会员是否借书,1是,0否 BBook tMAX; /会员借的书的数组 struct member *next; /结点指针 Member,*MemberList; 3.4设计功能的分析与实现 3.4.1抽象数据类型的定义 建立一个带头结点的单链表来存放图书信息;单链表为BookList ADT BookList 数据对象D:D是具有相同特性的数据元素的集合。各个数据元素均喊有类型相同,可唯一表示数据元素的关键字。 数据关系S:数据元素的同属一个集合。 基 基本操作P: BookSearch(BookList &H) /查询图书 初始条件:接受一个存放图书信息的带头结点的单链表 操作结果:在上述链表中查询指定的图书,并显示出相应图书信息 BookDel(BookList &H) /删除图书 初始条件:接受一个存放图书信息的带头结点的单链表 操作结果:在上述链表中删除指定的图书信息 BookAdd(BookList &H); /增加图书 初始条件:接受一个存放图书信息的带头结点的单链表 操作结果:将新增加的图书信息插入到上述链表中 BookReturn(BookList &H,MemberList &L) /还书 初始条件:接受一个存放图书信息的带头结点的单链表和一个存放会员信息的带头结点的单链表 操作结果:在上述两个链表中分别删除借书信息 BookBorrow(BookList &H,MemberList &L) /图书借阅 初始条件:接受一个存放图书信息的带头结点的单链表和一个存放会员信息的带头结点的单链表 操作结果:在上述两个链表中分别添加借阅图书的信息 建立一个带头结点的单链表来存放会员信息;单链表为MemberList ADT MemberList 数据对象D:D是具有相同特性的数据元素的集合。各个数据元素均喊有类型相同,可唯一表示数据元素的关键字。 数据关系S:数据元素的同属一个集合。 基本操作P: MemberSearch(MemberList &L) /查询会员 初始条件:接受一个存放会员信息的带头结点的单链表 操 操作结果:在上述链表中查询指定的会员,并显示出相应会员信息 MemberAdd(MemberList &L); /增加会员 初始条件:接受一个存放会员信息的带头结点的单链表 操作结果:将新增加的会员信息插入到上述链表中 BorrowInfo(MemberList &L) /借书信息 初始条件:接受一个一个存放会员信息的带头结点的单链表 操作结果:在上述链表中查找相应会员并显示会员借书信息 MemberDel(MemberList &L) /删除会员 初始条件:接受一个存放会员信息的带头结点的单链表 操作结果:在上述链表中删除指定的会员信息 LimitTimeInfo(BookList &H,MemberList &L) /到期书催还 初始条件:接受一个存放图书信息的带头结点的单链表和一个存放会员信息的带头结点的单链表 操作结果:在上述两个链表中分别查找相应借书信息,并显示出会员借书是否到期 3.4.2 逻辑结构与物理结构 图 图书链表和会员链表的存储结构: 任何两个元素的存储位置之间没有固定的联系,每个元素的存储位置都包含在其直接的前驱节点的信息中。就是说指针为数据元素之间的逻辑关系映射,则逻辑上相邻的两个元素其存储位置不要求紧邻。 3.5 功能模块划分 3.5.1 主函数 主 主函数通过用户的选择,通过switch结构,判断该调用哪个函数来实现用户的选择。 3.5.2 其他函数 主函数通过调用这些函数来实现图书借阅管理系统的操作,这些函数包括: 增加会员(MemberAdd(MemberList &L) 用户输入新增加的会员信息,将新增加的会员加入到会员链表中。 查询会员(MemberSearch(MemberList &L)) 用户输入要查询的会员信息,如果找到就显示出相关信息。 删除会员(MemberDel(MemberList &L)) 用户输入要删除的会员编号,然后将指定的会员从会员链表中删除。 图书借阅(BookBorrow(BookList &H,MemberList &L)) 输入会员编号,如果是会员就输入要借阅的图书编号,完成借阅操作,同时在图书和会员链表中添加借书信息;如果不是会员,则不能借书。 归还图书(BookReturn(BookList &H,MemberList &L)) 用户输入要删除的图书编号,完成图书的归还操作。同时在图书和会员链表中删除借书信息。 增加图书(BookAdd(BookList &H)) 用户输入新增加的图书信息,将新增加的图书加入到图书链表中。 查询图书(BookSearch(BookList &H)) 用户输入要查询的图书信息,如果找到就显示出相关信息。 删除图书(BookDel(BookList &H)) 用户输入要删除的图书编号,然后将指定的图书从图书链表中删除。 借书信息(BorrowInfo(MemberList &L)) 输入指定的会员编号,如果该会员已经借了书,就显示出该会员的借书信息;如果没借书就显示出相应的提示信息。 到期书催还(LimitTimeInfo(BookList &H,MemberList &L)) 如果已经借出的书到期,就显示出催还信息;如果没到期,就不显示。 3.6 主要模块设计思想 3.6.1 图书查询模块 输入要查询的方法,选择相应的查询函数,如果选择的是按书名查询则显示所有书名相同的图书信息;如果选择的是按编号进行查询,则一次只显示一本书,因为图书是以编号作为主键的,一个编号对应唯一的一本书;如果选择的是按作者名进行查询,则显示所有作者名相同的图书;如果选择的是按出版社查询,则显示出所有出版社相同的图书;如果选择查询所有图书,则显示出所有图书的信息;如果没有相应的图书,则显示相关信息。(如图-3) 3.6.2 图书借阅模块 先输入会员编号,判断是否为会员。如果是会员,就输入要借的图书编号,在图书链表当中查找这本书,如果找到,再判断这本书是否被借出;如果没有借出,则判断这个会员借的书是否超出了他(她)的最大借阅量,如果没有超出,则在会员借的书的链表中查找适当位置,将借的这本书的书名、编号等信息保存在链表中,完成图书借阅操作。如果不是会员,或者这本书不存在,或者这本书已经被借出,或者会员超出了他(她)的最大借阅量,则借阅都不成功。(如图-4) 3.6.3 还书模块 输入要归还的图书编号。在图书链表当中查找这本书。如过在链表中找到这本书,并且它被借出,则找到借这本书的会员编号,然后再在会员链表当中查找该会员;找到会员后,则再在该会员借了的书的链表当中查找这本书的信息,将这本书从借了的书的链表当中删除,并且将这个会员借的书的数目减1,完成还书。如果这本书不存在或者没借出,则还书不成功。(如图-5) 3.6.4 借书信息模块 输入会员编号,在会员链表中查找相应的会员,如果该会员借了书,则继续查找该会员借的书的链表,在链表中查找该会员借的书的详细信息,如借了的本数、编号、借书时间和到期时间;如果借的书的链表中没有记录,则说明他没有借书,则显示“无借书记录”。(如图-6) 3.6. 5到期书催还 在图书链表中逐个查询,如果书被借出,则进一步判断;获取当前系统的时间,用来与借出的书的到期时间作比较;因为到期时间保存在会员借的书的链表当中,因此,只有找到借这本书的会员编号,然后根据编号再在会员链表中找到改会员,再在他借的书的链表中查找他的书,获取到期时间,那它与当前的系统时间作比较,如果系统的时间超过了到期时间,则显示出催还信息。(如图-7) 3.7 输入/输出设计 通过输入流ifstream/输出流ofstream加载和存储文件,将member.txt、book.txt读取文件或写入文件。 3.8 用户界面设计 3.8.1 主界面 四、系统测试 4.1增加图书和增加会员系统,加入5本书和5个用户作为测试用户。详细内容如下表: 4.2 图书借阅功能:(如图-10) 4.3图书归还功能:(如图-11) 4.4会员借书信息显示:(如图-12) 4.5 过期催还功能:(如图-13) 五、设计的特点、不足、收获与体会 这次基础强化训练的课程设计对于我们来说,有一定的难度。因为他要求我们较完整的去实现一个比较可行的程序。将其应用到实际的生活中去。我被分配到的题目是图书借阅系统的实现与设计。这个题目相对来说贴近生活,比较容易理解。但是设计一个较为完整的程序却不是这么简单的。 首先我分析了相关的题目内容,并由此而进行了相关资料和书籍的查询工作然后才开始正式进行设计。一开始不知从何下手但后来分析了一下题目,并结合这学期所学的知识,再加上相关提示我决定用指针、链表和文件的内容来编写程序。图书管理主要就是有一些操作来完成,这些操作包括:新进图书基本信息的输入、图书基本信息的查询、对撤消图书信息的删除、为借书人办理注册、办理借书手续(非注册会员不能借书)、办理还书手续等等。我想这正好用C+的知识来实现函数:添加图书,图书查询,删除图书,增加会员,会员查询,删除会员,借阅图书,归还图书,借书信息,到期书催还。最后编写退出

温馨提示

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

评论

0/150

提交评论