♻️ 资源
大小:1.03MB
➡️资源下载:https://download.csdn.net/download/s1t16/87453194
家谱管理系统项目文档
项目简介:
家谱是一种以表谱形式,记载一个以血缘关系为主体的家族世袭繁衍和重要任务事迹的特殊图书体裁。家谱是中国特有的文化遗产,是中华民族的三大文献(国史,地志,族谱)之一,属于珍贵的人文资料,对于历史学,民俗学,人口学,社会学和经济学的深入研究,均有其不可替代的独特功能。本项目兑对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息,插入家族成员,删除家族成员的功能。
具体实现
数据结构:树、链表
算法分析
本项目要求构造一个家庭树,家庭树需要非常方便地进行插入和删除节点,所以该项目的数据结构用链表来实现,链表可以灵活地操作,如果使用数组来存储这道题的数据会非常难。
当需要添加家庭成员使,先执行搜索函数 findMember(name,ancestor);查找某个人。找到之后将需要添加的链表加在该节点下方 member*memeberCreate()。兄弟节点连在 brother_Next 指针后,孩子则连在 child 后,添加孩子时需要检测孩子指针是否为空,如果不是空就将操作指针移动到最后一个孩子,然后对 brother_Next 进行操作,如果没有孩子,直接将该节点接在 child 节点上。
删除节点比较麻烦,需要使用后缀遍历(左右根)的方法遍历该节点的子树,然后将所有的子树全部都删除掉并将空间释放掉。
工程分析实例:红楼梦家族
程序截图
程序优点
这个程序我自定义地增加了查看成员信息的功能,能够在输入姓名之后给出该节点的信息,包括父节点、兄弟节点、第一代子节点。
搜索函数对于查找失败有很好的容错性,不会因为查找失败导致程序崩溃,以上程序运行图已经给出相应的展示。
体会
这个项目让我更好地认识了树这个数据结构。这个项目中的树是一种普通的树,不是二叉树等特殊的树。这种树中每个节点可以有任意个子节点,更加复杂,特别是在节点的删除上。树是一种非常有用的数据结构,树使得很多数据有了条理,二分搜索树等更是给搜索提供了非常方便的方法。
树的遍历也很有讲究,对于不同的需求,有不同的遍历方法,如前序遍历、中序遍历、后序遍历。需要学习的地方还有很多,希望可以在后序的学习中对树这种数据结构能有更深的认识。