【源码+文档】家谱管理系统

1.2 功能要求

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

二、设计

2.1 Node 类设计

Node 类是一个模板类,存储一个 T 类型的值和两个指针,分别是代表指向兄弟节点的 next 指针和指向自己子节点的 link 指针。

2.2 LinkedList 类设计

首先,LinkedList 依旧是模板类,它存储了两个成员变量,分别是代表家谱祖先的 root 节点,以及将来用于代表所操作的人物的 curFind。主要有六个 public 函数,分别是:

  • add(T familyRoot) 传入的是祖先名字,创建家谱中第一个元素。
  • void add(T familyName,T childName) 给家谱中的某个人添加子女。
  • void deleteFromTree(T fatherName) 删除家谱中的某个人,连带子女一起从家谱中删除。
  • void update(T fatherName,T updateName)更改家谱中某个人的姓名
  • void show(T familyName)展示家谱中某个人的子女
  • bool findFromTree(T familyName)找出在家谱中这个人是否存在

还有一个 private 函数:

void findFromTree(Node<T> * x,T familyName) 从家谱中找到某个人,并将它存在curFind中,供其他函数使用

2.3 主程序设计

首先需要打印出提示信息,让用户知道如何建立家谱树。接着,首先让用户输入家谱中祖先的姓名并展示。之后让用户通过指令自由选择对家谱的操作,完成增删改查等对家谱的基本操作,并且操作完能妥善退出。

三、实现

3.1 Node 类实现

其实就是在以前的 Node 类基础上添加了一个指向自己子类的指针 link。

template <class T> class Node
{
public:
    T value;
    Node<T> *next;
    Node<T> *link;

    Node(T value) : value(value), next(nullptr), link(nullptr) {}
};

 

 源码和文档都托管在了【WRITE-BUG数字空间】上面了,有需要的可自取~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值