第七题西文图书管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七题:西文图书管理系统
1.问题描述:
(1.1)图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。
1.2)输入形式:根据程序的提示先在主菜单的界面上输入你需要的服务(1~6),由于此道程序题目要求不能从文本中读入,因此,第一步应该是输入‘1’,执行新图书的采编入库的操作,既是给图书馆进新书(若不先执行这一步,后面的步骤没法展开),输入‘1’后,根据提示分别输入新书的ID,书名,书的作者,还有就是书的现存数量,总库存量(即是你进了多少本这种类型的书)等等……..
输出形式:根据题目的要求最后要能显示出图书管里所有书的各类信息,并用凹入打印的方法显示到屏幕上
2.基本要求
(2.1)每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。
(2.2)作为演示系统,不必使用文件,全部数据可以都在内存存放。要用B-树(3-4树)对书号建立索引,以获得高效率。
(2.3)系统应有以下功能:
采编入库、清除库存、借阅、归还、显示(以凹入表的形式显示)等。
3.需求分析
该题实际山可以理解为是对现实中的图书管的管理系统的一种简单的模拟(当然现实中的图书管理系统的功能更强大,复杂很多)但是,这组题目的前一题电梯模拟不同的是,现在的这题考察的主要是用相应的算法来实现这些,采编入库、清除库存、借阅、归还、显示(以凹入表的形式显示)等的功能此为其一,其二题目还特别的提出要使用B_树对书号进行索引,以获得高效率,这就需要我们首先解决B_树的相关操作函数,解决这些这题自然就迎刃而解了,其三,题目中提到了不能使用文件,所以需要程序中的数据都是现时输入进出然后保存在内存中的,其四,此题要求的是4阶B_树………..
4.概要设计
本程序中所有的抽象数据类型的定义及其相应的操作函数的定义如下:
书本类Book的定义
/*其中Book中定义了题目要求的书本的各类必须的信息,如ID,书名,作者等,此外也定义了类的相关操作函数如得到书的名字,ID,作者的函数*/
B_树的树结点B_Tree_Node的定义
/*这当中定义了B_树的应该有的各种成员信息,如关键字数,关键字,还有孩子接点指针等等,都是为了下面程序的实现*/
定义一个B_树的类
/*定义一个这个类是为了方便的将对树的各种操作函数统一的放在一起管理,*/
以下几个函数为Book中的几个操作函数,具体如下:
void CreatBook()
/*创建一本新书功能,并赋予书中各种成员相应的初值*/
int GetID()
/*用来返回书本的ID(阿拉伯数字)*/
string Getname()
/*用来返回书本的名字(可以为任意字符串)的函数*/
string Getwriter()
/*用来返回书本的作者的姓名(可以为任意字符串)的函数*/
int Getleft_num()
/*用来返回得到该类书本的现有库存量(不包含借出的数量)*/
int Gettotal_num()
/*用来返回该类书本的总库存量(包含借出的数量)*/
int Borrow()
/*当需要借阅书籍时,通过该函数改变相应的书的信息*/
int Return()
/*当需要归还书籍时,通过该函数改变相应的书的信息*/
以下为B_树类中的相应的操作函数:
B_Tree_Node* Search(int key,int &weizhi)
/*根据输入的需要查找的书的书号(ID)作为B_树结中的关键字进行查找,并返回查找到的树的所在结点和相应的位置*/
B_Tree_Node* Search(B_Tree_Node** node,int key,int &weizhi)
/*此函数为真正的递归调用查找函数,根据上面的查找函数返回的结点和位置最终来实现对根据书的ID查找书的功能*/
void dispose(B_Tree_Node *node)
/*撤消结点*/
void insert(int key, Book p)
/*根据输入的需要查找的书的书号(ID)作为B_树结中的关键字进行插入到树的相应结点的相应位置*/
V oid insert(B_Tree_Node *node, int key, Book p, B_Tree_Node *lchild, B_Tree_Node *rchild) /*递归插入函数*/
void print()
/*通过调用下面的递归打印函数来打印B_树*/
void print(B_Tree_Node *node,int k)
/*递归调用的打印函数*/
Void delbook(int key)
/*根据输入的书号为关键字在B_树中删除相信的结点*/
void CB_Tree::regulate(B_Tree_Node *node, int stack[], int top)
/*根据B_树的定义对删除结点后的树调整位置的函数*/
以下几个函数为主菜单中调用的函数
void Books_Store()
/*采编入库新书*/
void Clear_Stock()
/*清除库存函数*/
void BorrowBook()
/*借阅书籍所调用的函数*/
void ReturnBook()
/*归还书籍所调用的函数*/
void Print()
/*显示库存所有藏书调用的函数*/
void menu()
/*主菜单函数*/
注释:上述各种抽象数据结构类型以及相关操作函数统一放在头文件‘Library.h’中
Int main()
/*主函数*/
=
=