没有合适的资源?快使用搜索试试~ 我知道了~
数据结构课程设计报告图书管理系统
5星 · 超过95%的资源 需积分: 10 42 下载量 14 浏览量
2010-01-20
20:20:53
上传
评论 1
收藏 160KB DOCX 举报
温馨提示
试读
14页
设计图书管理系统,将图书根据不同的内容进行分类、编号,编号后图书存储在书库中不同书架上。要求在进行查找时先提供图书编号,再根据编号这个索引方便的找到图书。并可以进行新增图书,删除图书,修改图书信息等操作。
资源推荐
资源详情
资源评论
一.需求分析
设计图书管理系统,将图书根据不同的内容进行分类、编号,编号后图书存储在书库
中不同书架上。要求在进行查找时先提供图书编号,再根据编号这个索引方便的找到图书
并可以进行新增图书,删除图书,修改图书信息等操作。
二.概要设计
1.数据结构设计:
采用的基本数据结构为 B 树。
将图书编号看作关键字放到 B 树中的节点上,,对图书进行分类,而它的分类索引就是 B
树的非叶节点。可以进行图书的增删改查运算,并显示到界面上。
具体流程图:
2.算法介绍:
B 树 即二叉搜索树:
1.所有非叶子结点至多拥有两个儿子(Left 和 Right);
2.所有结点存储一个关键字;
3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;
如:
B 树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则 ,
如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;
如果左儿子或右儿子的指针为空,则报告找不到相应的关键字;
如果 B 树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么 B 树
的搜索性能逼近二分查找;但它比连续内存空间的二分查找的优点是,改变 B 树结构(插
入与删除结点)不需要移动大段的内存数据,甚至通常是常数开销;
如:
但 B 树在经过多次插入与删除后,有可能导致不同的结构:
右边也是一个 B 树,但它的搜索性能已经是线性的了;同样的关键字集合有可能导致
不同的树结构索引;所以,使用 B 树还要考虑尽可能让 B 树保持左图的结构,和避免右图
的结构,也就是所谓的“平衡”问题;
实际使用的 B 树都是在原 B 树的基础上加上平衡算法,即“平衡二叉树”;如何保持 B
树结点分布均匀的平衡算法是平衡二叉树的关键;平衡算法是一种在 B 树中插入和删除结
点的策略;
三.详细设计
定义一棵 m+1 的三阶树
#define m 1
采用递归方式遍历 B 树 mball( )
插入新结点 mbinsert( )
删除 mbdel( )
输入相应于该关键字的书信息的函数 InputNode( )
查找并输出书的信息的函数 OutputNode()
10
10
35
9
17
17
39
28
28
9
65
35
39
65
9 17 28
。。
。
87
9 10 17 28
。 。
。
87
删除、插入查找函数:mbsearch()
记录借书和还书日期的结构体类型:
struct data
记录读者信息的结构体类型
struct ReaderNode
记录书的信息的结构体类型:
struct BookNode
B 树的结构体类型:
struct TreeNode
函数返回包含关键字(即书号)x 的结点的储存地址,
指针变量 k 指向的变量存放关键字(即书号)x 在存储结点
中的位置,*ag 的值为时,表示查找失败,为时,表示查找成功:
struct TreeNode *mbsearch(struct TreeNode *bth,int x,int *k,int *ag)
插入图书信息并将其放在 B 树里:
struct TreeNode *mbinsert(struct TreeNode *bth)
删除 B 树中元素的函数,并返回 B 树头指针:
struct TreeNode *mbdel(struct TreeNode *bth)
查找并输出书的信息的函数,无返回值:
void OutputNode(struct TreeNode *bth)
还书函数,无返回值:
void payback(struct TreeNode *bth)
四.调试分析
1.调试程序,错误显示为 fatal error C1083: Cannot open include file: 'iomainp.h': No such
file or directory 上网查询后,用<iomanip>替换<iomanip.h>, 然后加上 using namespace
std;这个是标准的 c++的 stl,完成后,程序正常运行。
2.程序出现了一些警告,经过排查,发现好多是版本问题,不用多做考虑。
五.使用说明和测试结果
运行程序:
首先选择 1.新增图书根据要求输入图书(例计算机网络):
书号 书名 作者 数量
剩余13页未读,继续阅读
资源评论
- lanyu542013-03-20程序可用,不过我修改了一下,然后交给老师的课程设计。。。
erbing123
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功