C语言家谱管理程序,课内资源 - 基于C语言实现的家谱管理系统

一、项目简介

家谱是一种以表谱形式,记载一个以血缘关系为主体的家族世袭繁衍和重要任务事迹的特殊图书体裁。家谱是中国特有的文化遗产,是中华民族的三大文献(国史,地志,族谱)之一,属于珍贵的人文资料,对于历史学,民俗学,人口学,社会学和经济学的深入研究,均有其不可替代的独特功能。本项目兑对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息,插入家族成员,删除家族成员的功能。

二、项目功能要求

本项目的实质是完成兑家谱成员信息的建立,查找,插入,修改,删除等功能,可以首先定义家族成员数据结构,然后将每个功能作为一个成员函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得到运行结果。

三、具体实现

3.1 数据结构:树、链表

438e489e07a2e0b4024ccbbb6e1e5978.png

83b15a83860e43212cbb38f114014d29.png

四、算法分析

本项目要求构造一个家庭树,家庭树需要非常方便地进行插入和删除节点,所以该项目的数据结构用链表来实现,链表可以灵活地操作,如果使用数组来存储这道题的数据会非常难。

当需要添加家庭成员使,先执行搜索函数查找某个人。找到之后将需要添加的链表加在该节点下方。兄弟节点连在brother_Next指针后,孩子则连在child后,添加孩子时需要检测孩子指针是否为空,如果不是空就将操作指针移动到最后一个孩子,然后对brother_Next进行操作,如果没有孩子,直接将该节点接在child节点上。

删除节点比较麻烦,需要使用后缀遍历的方法遍历该节点的子树,然后将所有的子树全部都删除掉并将空间释放掉。

五、程序截图

开始界面

91285c06fff9374e9633eb4503310a78.png

完善家庭

a0ecc338f065199be30cab4c32b0cdba.png

添加家庭成员

ddb9952dd9cd7e2ff7d11bd8810f8e8d.png

删除家庭成员

427089ed9bc760fc146c68fb3de2a3a2.png

更改家庭成员姓名

f7be1c9c520a996e397cda6daeda9331.png

查看成员信息

e1bdbef1aace2d8bb23d706437179cdf.png

六、程序优点这个程序我自定义地增加了查看成员信息的功能,能够在输入姓名之后给出该节点的信息,包括父节点、兄弟节点、第一代子节点

搜索函数对于查找失败有很好的容错性,不会因为查找失败导致程序崩溃,以上程序运行图已经给出相应的展示

七、体会

这个项目让我更好地认识了树这个数据结构。这个项目中的树是一种普通的树,不是二叉树等特殊的树。这种树中每个节点可以有任意个子节点,更加复杂,特别是在节点的删除上。树是一种非常有用的数据结构,树使得很多数据有了条理,二分搜索树等更是给搜索提供了非常方便的方法。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值