数据结构家谱管理系统报告书.docx
《数据结构家谱管理系统报告书.docx》由会员分享,可在线阅读,更多相关《数据结构家谱管理系统报告书.docx(9页珍藏版)》请在三一办公上搜索。
1、数据结构大作业说明文档一、题目的选择这次数据结构的大作业,我的选题是家谱管理系统的设计与实现。由于平时 疏于编程一一针对我得个人实际一一我把主要的目标定位在完成家谱管理系统 得基本要求。(基本要求大纲中有,就不浪费版面了)二、设计的思路接到这个题目,我的总体设计思路是先为程序搭建好一个结构框架,再跟据 时间的宽裕程度和其它的要求逐步增强程序的性能。关于IO的设计:考虑到题目要求家谱信息以树形的形式一次读入内存,而个人的各种资料现 在虽然条目不多,但随着程序的升级,以后可能变得越来越大。我把树形结构和 个人信息记录的文档分为两个文件保存在外存中,一个文件串行化地记录家谱树 的结构信息,保存少量个
2、人信息作为识别标志;另一个文件保存完整的个人信息, 所有的个人信息以线性记录的方式记录在其中。当程序运行要读入家谱结构时, 只读入保存少量记录的文件并建立起树形结构。索引时,以树形中的少量信息为 依据在另一个文件中找到全部的各人信息资料。这样的好处主要有两点:1. 由于树形结构是串行化记录于外存,一个节点记录多次,信息大量冗余, 如果树形节点中保留全部信息,必将造成大量的空间浪费;只保存作为索引的少 量信息在树形结构中,节约了空间。2. 由于结构的精简,在家谱初始化时读入内存需要的时间相应减少,节约了 装载时间。这样做存在的问题:每次执行修改,添加,删除,查询时都要直接访问外存来取得或写入数据
3、。 内外存访问上的巨大时间差的存在,使得进行这些操作相对来说并不显得很高 效。关于树形的结构:在树形结构的选择上,根据实际中多子女的现象选择一般树,考虑到家谱中 成员可能存在的不定成员数问题,抛弃了以数组为基础的一般树方案,决定用链 表来实现。树形结构的外存保存。为了提高效率,树形结构在程序初始化时由外存文件 一次读入内存,此后不管插入还是修改,删除都不再对外存的树结构保存文件进 行操作,只在内存中处理,程序退出时对外存树结构文件进行一次更新。也就是 说,不管在程序运行中中对家谱结构进行多少种,多少次的操作,外存的树结构 文件始终只会被程序访问两次。关于功能的设计(以基本要求为准):1. 插入
4、:用户按提示输入资料,在树形中插入节点,在个人完整记录文 件中添加插入人的所有信息并保存。2. 删除:用户输入被删除人的识别关键字(即名字),在树形结构中删 除此人,在个人记录文件中不处理。3. 修改:用户输入被删除任的识别关键字(即名字),从个人完整记录 文件中读出该人所有信息供用户进行修改,然后写回。4. 查询:完成了关键字查找部分和关系查找部分,读出个人全部信息并 显示。关于个人资料单元:由于树形节点要涉及到大量的逻辑操作,要用到一些运算符的重载,个人资 料在树形单元定义为class类,而写入文件的单元存萃是数据,定义为简单的struct 类。定义为struct和class类,使得不管是
5、树形结构插入删除还是IO都是对整个 结构体进行的操作,这样,如果要往结构体中添加若十个新信息条目或取消一些 不必要的信息条目,需要修改的代码非常之少,方便了以后的升级。三、程序源/头文件及主要类的说明程序包含六个文件。一个源文件:test.cpp ;五个头文件:GTNode.h、 GTree.h、IOMan.h、 LList.h Link.h。GTNode.h头文件的说明:文件中有GTNode模板类的定义和说明,GTNode类是一般树的节点类,类 中的私有变量包含一个待定义的数据变量,一个最左孩子指针,一个右兄弟指针, 一个父指针。类中公有成员函数的作用主要是对四个私有成员进行返值和置值, 此
6、外还包括一个叶子节点的判断函数。GTree.h头文件的说明:文件中有GTree模板类的定义和说明,GTree类是一般树类,以GTNode 类为基础进行操作。一般树类的私有部分包括两个私有变量:树的根指针和整型的当前树的节点 个数记录。另外还有三个私有辅助函数:析构辅助函数,打印辅助函数和查找辅 助函数。这三个函数都是用递归的方式访问整棵树来完成打印,查找和树的析构。一般树的公有部分重定义了构造和析构函数,定义了以私有的辅助查找函数 为基础的对外的查找函数,定义了节点插入函数,节点删除函数和返回值节点个 数记录的求树节点个数的函数。List.h头文件的说明:文件中定义并说明了模板类List类,这
7、是程序中最简单的一个类,类中只 有公有部分,包含一个待定义的数据变量,一个指向下一个节点的指针,和两个 构造函数。LList.h头文件的说明:文件中定义并说明了模板类LList类,这是一个但链表类,这个类主要是我 以数据结构教材中了 LList类为范本,进行一些细部的修改,并添加了一些成员函数后形成。LList类的私有部分包含了一个待定义的数据,头、尾和“栅栏”三个指, 两个分别辅助构造与析构的函数。LList类的公有部分我根据需要添加了一个删除最后一个节点的函数,其它 部分与教材中基本一致。IOMan.h头文件的说明:lOMan.h头文件是本程序中最大的一个头文件,其它四个头文件都是这个文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 家谱 管理 系统 报告书
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5306644.html