根据给定的文件信息,我们可以总结出以下关键知识点:
### 1. 需求分析
#### 图书管理系统模块
- **图书类型定义**:图书信息主要包括书号、现存量、总存量、出版时间(整型)、定价(浮点型)、书名、著者名(字符型)以及借阅指针、预约指针(读者类型)。
- **读者类型定义**:读者信息包括证号(整型)、姓名(字符型)。此外,还包括借阅类型和预约类型的共用体类型。
- **B树(2-3树)类型定义**:B树的关键属性包括关键字个数、关键字数组(整型)、指向父节点的指针、指向子树的指针、记录单元指针。
- **B树查找结果类型定义**:包括节点指针、关键字序号和查找标志变量(整型)。
#### 演示程序交互方式
- **用户与计算机交互**:程序通过终端显示“提示信息”,用户据此输入命令及相关数据。演示系统未使用文件存储,数据全部存储在内存中。
- **基本业务操作**:系统采用B树(2-3树)作为索引结构,提高查询效率,支持以下功能:
- **采编入库**:新书入库时更新图书账目信息,若已有该图书则仅增加总库存量。每新增图书显示B树变化。
- **清除库存**:删除特定图书的全部信息,显示B树状态。
- **图书借阅**:库存量大于零时执行借阅操作,记录借阅者信息及借阅时间。
- **图书预约**:库存为零时记录预约信息。
- **图书归还**:取消借阅者记录,增加图书现存量。
- **作者专区**:查询特定作者的所有作品。
- **图书信息查询**:根据书号查询图书的基本信息、借阅及预约信息。
### 2. 概要设计
#### 抽象数据类型B树定义
- **数据对象**:B树中的数据元素具有相同的关键字,用于唯一标识数据。
- **数据关系**:B树是一种m叉树,其中每个节点最多有m棵子树,根节点除外至少有两棵子树;非终端节点至少有m/2棵子树;所有非终端节点包含关键字数组和子树指针数组。
- **基本操作**:
- **SearchBTree(T,key)**:搜索关键字等于key的元素,返回位置或“空”。
- **Insert(T,i,k,P,recptr)**:将k和ap分别插入到指定位置,并插入关键字为k的记录recptr。
- **InsertBTree(&T,e)**:将e插入到B树T中,前提是T中不存在关键字等于e.key的元素。
- **DeleteBTree(&T,key)**:删除关键字等于key的元素。
- **BTreeTraverse(BTreeT,Visit)**:遍历B树T并对每个节点调用Visit函数。
- **ShowBTree(T)**:以凹入表形式显示B树T。
#### 系统时间类型定义
- **数据对象**:表示各种整型类型的系统时间格式。
- **基本操作**:
- **GetDate(tm&tim)**:获取当前系统时间。
- **AddDate(tm&date2,tm date1,int day)**:将date1的日期加上day天赋给date2。
- **Earlier(tm date1,tm date2)**:比较date1与date2日期的先后顺序。
以上内容概述了广工数据结构课程中的图书管理系统的设计思路和实现方法,尤其强调了B树在提高数据检索效率方面的作用。该系统不仅实现了基本的图书管理功能,还充分利用了数据结构和算法优化性能,是一次理论与实践相结合的良好案例。