Skip to content

picone/BookManage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BookManage

图书管理系统

题目 16 图书管理(难度系数:1.3)

[问题描述]

图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。

[基本要求]

(1)每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。

(2)作为演示系统,不必使用文件,全部数据可以都在内存存放。但是由于上述四项基本业务活动都是通过书号(即关键字)进行的,所以要用B树(2-3树)对书号建立索引,以获得高效率。

(3)系统应实现的操作及其功能定义如下:

①采编入库:新购入一种书,经分类和确定书号之后登记到图书账目中去。如果这种书在帐中已有,则只将总库存量增加。

②清除库存:某种书已无保留价值,将它从图书账目中注销。

③借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。

④归还:注销对借阅者的登记,改变该书的现存量。

⑤显示:以凹入表的形式显示B树。这个操作是为了调试和维护的目的而设置的。下列B树的打印格式如下所示:

                                        60
             60                             30
                                                 20
    30                70,72                      50,52
                                            70,72
20      50,52      68    71    100               68
                                                 71
                                                100

[测试数据]

入库书号: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) 增加预约借书功能。