# 广东工业大学数据结构课程设计-基于B树为索引的图书管理系统
具体设计见课程设计报告
**题目 16 图书管理**(难度系数:1.3)
**[问题描述]**
图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。
**[基本要求]**
(1)每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。
(2)作为演示系统,不必使用文件,全部数据可以都在内存存放。但是由于上述四项基本业务活动都是通过书号(即关键字)进行的,所以要用B树(2-3树)对书号建立索引,以获得高效率。
(3)系统应实现的操作及其功能定义如下:
①采编入库:新购入一种书,经分类和确定书号之后登记到图书账目中去。如果这种书在帐中已有,则只将总库存量增加。
②清除库存:某种书已无保留价值,将它从图书账目中注销。
③借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。
④归还:注销对借阅者的登记,改变该书的现存量。
⑤显示:以凹入表的形式显示B树。这个操作是为了调试和维护的目的而设置的。下列B树的打印格式如下所示:
![image-20220102110556674](https://gitee.com/Makonike/pic-md/raw/master/image-20220102110556674-1641656650842.png)
**[测试数据]**
入库书号:35, 16, 18, 70, 5, 50, 22, 60, 13, 17, 12 , 45, 25, 42, 15, 90, 30, 7
然后清除:45, 90, 50, 22, 42
其余数据自行设计。由空树开始,每插入删除一个关键字后就显示B树的状态。
**[实现提示]**
(1) 2-3树的查找算法是基础,入库和清除操作都要调用。难点在于删除关键字的算法,因而只要算法对2-3树适用就可以了,暂时不必追求高阶B树也适用的删除算法。
(2) 每种书的记录可以用动(或静)态链式结构。
借阅登记信息可以链接在相应的那种书的记录之后。
**[选做内容]**
(1) 将一次会话过程(即程序一次运行)中的全部人机对话记入一个日志文件“log”中去。
(2) 增加列出某著者全部著作名的操作。思考如何提高这一操作的效率。
(3) 增加列出某种书状态的操作。状态信息除了包括这种书记录的全部信息外还包括最早到期(包括已逾期)的借阅者证号,日期可用整数实现,以求简化。
(4) 增加预约借书功能。
- [推荐使用的B树可视化工具](https://www.cs.usfca.edu/~galles/visualization/BTree.html)
- 1
- 2
前往页