摘
要
图书管理系统的设计主要运用了二叉树的相关知识,一方面采用二叉树排序作为索引
表的主要原因是为了方便用书序列号为关键字进行查阅,根据日常我们的借书经验来看,
到图书馆借书的人或者到书店买书的人,都可以通过多种查询方式来获取所需要的书的
信息,通过数的序列号能进行更加精确的查找,对于一个实用的管理系统来说缺省查找
是必不可少的;采用二分查找实现精确查找;书籍入库操作应由系统管理员进行,若此
书已有收藏则只增加库存量即可,而否则要按系统设计要求添加相应的节点数据;书籍
销毁的操作同样应由系统管理员进行,只能销毁已存在的、且未出借的书,只需在索引
表中将该节点删除即可完成书籍的销毁工作;本系统中采用字符串的模式匹配算法来实
现信息的缺省检索结点的设计采用标准 c 语言提供的一种叫做结构体的复合数据类型存
储书的信息,然后再采用二杈树的二杈链表存储结构把单本的书关联起来。这样就可对
馆藏的所有书进行统一的管理了。
关键字:图书借阅,图书管理,二叉树
本科学生课程设计任务书
题 目
图书借阅管理系统的设计与实现
1、课程设计的目的
培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培
养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统
软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作等基本技
能和科学作风方面受到比较系统和严格的训练。
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)
设计要求:针对计算机系本科课程,根据课程之间的依赖关系(如离散数学
应在数据结构之前开设)制定课程安排计划,并满足各学期课程数目大致相同。
10. 图书借阅管理系统(1-2 人完成)
主要分为两大功能:
1) 图书管理(增加图书、查询图书、删除图书、图书借阅、还书);
2) 会员管理(增加会员、查询会员、删除会员、借书信息);
3、主要参考文献
[1]《数据结构》(C 语言版),严蔚敏,清华大学出版社,2003.
[2]《数据结构题集》,严蔚敏,清华大学出版社,2005.
[3]《数据结构》(C 语言版),刘大有,高等教育出版社,2004.
[4]《Data Structure with C++》,William Ford.William Topp,清华大学出版社,2003.
4、课程设计工作进度计划
完成方案设计与程序框图
第 1 天
第 2、3 天 编写程序代码
第 4 天
第 5 天
程序调试分析和结果
课程设计报告和总结
指导教师(签字)
教研室意见:
日期
年
月
日
学生(签字):
注:任务书由指导教师填写。
年
月
日
接受任务时间: 2009 年 12 月 14 日
2
课程设计(论文)指导教师成绩评定表
题目名称
图书借阅管理系统的设计与实现
评分项目
01 学习态度
02 科学实践、调研
03 课题工作量
04 综合运用知识的能力
05 应用文献的能力
06 设计(实验)能力,方案
的设计能力
07 计算及计算机应用能力
08
09
对计算或实验结果的分析
能力(综合分析能力、技
术经济分析能力)
插图(或图纸)质量、篇
幅、设计(论文)规范化
程度
分
值
得
分
评价内涵
6
7
7
10
5
5
5
10
5
遵守各项纪律,工作刻苦努力,具有良好的科学
工作态度。
通过实验、试验、查阅文献、深入生产实践等渠
道获取与课程设计有关的材料。
按期圆满完成规定的任务,工作量饱满。
能运用所学知识和技能去发现与解决实际问题,
能正确处理实验数据,能对课题进行理论分析,
得出有价值的结论。
能独立查阅相关文献和从事其他调研;能提出并
较好地论述课题的实施方案;有收集、加工各种
信息及获取新知识的能力。
能正确设计实验方案,独立进行装置安装、调试、
操作等实验工作,数据正确、可靠;研究思路清
晰、完整。
具有较强的数据运算与处理能力;能运用计算机
进行资料搜集、加工、处理和辅助设计等。
具有较强的数据收集、分析、处理、综合的能力。
符合本专业相关规范或规定要求;规范化符合本
文件第五条要求。
10 设计说明书(论文)质量 30
综述简练完整,有见解;立论正确,论述充分,
结论严谨合理;实验正确,分析处理科学。
11 创新
10
对前人工作有改进或突破,或有独特见解。
工
作
表
现
20%
能
力
水
平
35%
成
果
质
量
45%
成绩
指
导
教
师
评
语
指导教师签名:
年 月 日
3
目 录
1 前言 ................................................................................................................................................ 5
1.1 课程设计的目的 .................................................................................................................. 5
1.2 图书借阅管理系统的设计与实现的基本要求 .................................................................5
1.3 数据结构相关知识的阐述...............................................................................................5
2 功能描述 ........................................................................................................................................ 6
3 系统设计 ...................................................................................................................................... 6
3.1 设计思路 ............................................................................................................................. 6
3.2 系统功能模块图................................................................................................................. 7
3.2.1 系统构成................................................................................................................... 7
3.2.2 管理员....................................................................................................................... 7
3.3 管理员功能模块................................................................................................................. 8
4 算法设计 .................................................................................................................................... 10
4.1 节点数据的设计............................................................................................................... 10
4.1.1 图书的存储结构模型............................................................................................10
4.1.1 管理员存储模型....................................................................................................10
4.2 公共参变量说明............................................................................................................... 11
4.2.1 administer *admins,*current_admin=NULL ..........................................................11
4.2.2 libcard *clients,*current_client=NULL; .................................................................11
4.3 二叉排序树的插入模块的设计.......................................................................................11
4.4 二叉排序树的创建模块的设计 ........................................................................................12
4.5 二叉排序树的查找模块设计 ............................................................................................13
4.6 二叉排序树的删除模块设计 ............................................................................................14
4.7 主函数的设计 ................................................................................................................... 16
5 详细设计 .................................................................................................................................... 17
5.1 采用排序二叉树作为存储结构.......................................................................................17
5.2 创建链表的二叉树 ............................................................................................................ 17
5.3 二叉排序树的插入模块,采用递归算法实现...............................................................18
5.4 本模块实现二叉排序树的建立.......................................................................................19
5.5 二叉排序树的查找算法 ...................................................................................................20
5.6 二叉排序树的删除算法 ...................................................................................................21
5.7 显示管理员信息............................................................................................................... 22
6 调试分析 .................................................................................................................................... 29
6.1 进入系统 ........................................................................................................................... 29
6.2 成进入系统之后你就可以进行相关操作了 ....................................................................30
7 课程设计总结 ............................................................................................................................ 34
8 参考文献 .................................................................................................................................... 35
4
1 前言
1.1 课程设计的目的
通过数据结构课程设计能更加熟练的掌握 C 语言以及数据结构的相关知识,
能宏观的把握数据结构的各个相关部分的知识,深入的理解各个分支结构的作用
和运用,特别是通过本此课程设计更能熟练的掌握和运用二叉树的相关知识,如
通过二叉树能实现查找、删除、排序等从而实现对图书借阅管理。因而课程设计
的主要目的就是使同学们能熟练的运用数据结构的相关知识实现各种功能。
1.2 图书借阅管理系统的设计与实现的基本要求
对每种书登记内容包括书号、书名、作者、现存量和库存量;对所有藏书以书
号为关键字建立索引表——排序二杈树,用以方便进行二分查找;
系统主要功能如下:
a) 采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果
表中已有,则只将库存量增加;
b) 借阅:如果一种书的现存量大于 0,则借出一本,登记借阅者的书
证号和归还期限,改变现存量;
c) 归还:注销对借阅者的登记,改变该书的现存量。
输出形式:能按书号、书名、著作者查找库存的书籍信息;能按学生的借书证号
显示学生信息和借阅信息;书籍入库;借书功能实现;还书功能实现。
1.3 数据结构相关知识的阐述
本课程设计运用到得数据结构部分主要在于二叉树的运用,采用二杈树的二杈链
表存储结构把单本的书关联起来,这样就可对馆藏的所有书进行统一的管理;采用
排序二叉树作为索引表的优点是方便按索书号为关键字进行查询;对于一个实用的
管理系统来说缺省查找是必不可少的,本系统中采用字符串的模式匹配算法来实现
信息的缺省检索。采用二分查找实现精确查找;运用二叉树的插入、删除、排序来
实现对图书的添加、删除、排列。
5
2 功能描述
二叉树的排序主要用于对图书管理系统的图书进行排序,采用二杈树的二杈链表存
储结构把单本的书关联起来。这样就可对馆藏的所有书进行统一的管理了。
二叉树的插入用于实现对图书管理系统的图书进行添加,对二叉树的节点插入新
节点,然后从新排列新序列来实现图书的插入。
二叉树的删除主要用来对图书管理系统的图书进行销毁,对二叉树节点的删除,
节点表示一本图书,删除节点就表示销毁不需要的图书信息。
3 系统设计
3.1 设计思路
由于课程设计的要求是用纯的 c 语言实现,不能采用数据库等操作数据,故
节点的设计采用标准 c 语言提供的一种叫做结构体的复合数据类型存储书的信
息,然后再采用二杈树的二杈链表存储结构把单本的书关联起来。这样就可对馆
藏的所有书进行统一的管理了。
根据我们日程经验,客户到图书馆借书或者到书店买书,客户可以通过多种
查询方式获得所需要的书,通过索书号只能进行精确查找,对于一个实用的管理
系统来说缺省查找是必不可少的,本系统中采用字符串的模式匹配算法来实现信
息的缺省检索。采用二分查找实现精确查找。
书籍入库操作应由系统管理员进行,若此书已有收藏则只增加库存量即可,
而否则要按系统设计要求添加相应的节点数据。
书籍销毁的操作同样应由系统管理员进行,只能销毁已存在的、且未出借的
书。只需在索引表中将该节点删除即可完成书籍的销毁工作。
根据业务实际,客户借书、还书的操作都需得管理员上班(即本系统中的登
6
录),而在每一个单位时间内每个管理员只能受理一个客户。客户有权提出借/
还书但是对借/还书的操作则是由系统管理员完成的。
借书功能显然是针对具体客户而言的,所以不管你是谁,要借书就得说明你
是谁(即先登录在借书)。客户每借一本书都应该对客户的借书信息有个详细的
说明,根据业务实际对于客户应该还有借书数目的限制条件。
还书功能与借数功能相似,但业务逻辑是相反的。根据业务逻辑实际当借书
超过一定时间还会对违例客户进行一定的惩罚(通常为罚款)。
3.2 系统功能模块图
3.2.1 系统构成
功能说明: 描述图书管理系统的主体部分。
3.2.2 管理员
功能说明: 描述图书管理员的管理部分。
7
3.3 管理员功能模块
功能说明: 描述图书管理系统管理员的全部功能系统部分。
8