1、家族关系查询系统 1 1 课程设计介绍 1.1 课程设计项目简介 家谱是一种以表谱形式, 记载一个以血缘关系为主体的家族世 系繁衍和重要人物事迹的特殊图书载体。家谱是中国特有的文化 遗产,是中华民族的三大文献之一,属珍贵的人文资料,对于历 史学,民俗学,人口学,社会学和经济学的深入研究,均有不可 替代的重要功能。本项目对家谱管理进行简单的模拟,以实现查 看祖先和子孙个人信息 、插入家族成员等功能。 1.2 课设题目分析 本程序的实质是完成对家谱成员信息的建立、查找、插入等 功能。可以首先定义家族成员的数据结构,然后将每个功能写成 一个函数来完成对数据的操作,最后完成主函数以验证各个函数 功能并
2、得出运行结果。 本程序包含以下几个模块 (1)建立家族关系树。 此模块将构建一个家族关系, 对数据初始 化,构造关系树并录入数据一遍后续程序使用。 (2)添加新成员。 此模块将添加一个新成员, 实现对家族关系的 修改。 (3)家族关系的查询。此模块将实现对家族不同关系的查询 (4)主程序模块。 此模块实现整个程序的进入和进出, 以及各种 初始化处理。 (5) 1.3 课程题目原理与数据结构 因为家族的成员之间存在一个对多个的层次结构关系, 所以不 能用线性表来表示和实现。家谱从形状上看像一颗倒长的树,所 以用树结构来表示比较合适。树形结构是一类非常重要的非线性 数据结构,直观看来树是以分支关系
3、定义的层次结构。 因此本课程设计可以采用的数据结构有树状结构和队列。树状 结构采用三叉链表来实现,队列采用链式队列实现。 家族关系查询系统 2 1.4 功能分析说明图 家族关系查询系统 建 立 一 个 家 族 关 系 打 开 一 个 家 族 关 系 添 加 一 个 家 庭 成 员 按 关 系 查 找 各 个 家 庭 成 退 出 系 统 查 找 一 个 成 员 的 祖 先 查 找 成 员 的 子 孙 后 代 查 找 成 员 祖 先 路 径 查 找 成 员 是 第 几 代 查 找 一 个 成 员 双 亲 查 找 一 个 成 员 的 兄 弟 查 找 成 员 的 堂 兄 弟 查 找 一 个 成 员 的
4、 孩 子 家族关系查询系统 3 2 分析与实现 2.1 2.1 基本数据结构和栈队的操作基本数据结构和栈队的操作 2.1.1 结点基本数据结构和链队的定义 /*家族关系树实现*/ #include #include #include #include #include #include #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR -1 #define INFEASIBLE -1 typedef char DataType; #define MAXNUM 20 typedef struct TriTNode/* 树的三叉链表存储结构*/ DataType dataMAXNUM; struct TriTNode *parent;/* 双亲*/ struct TriTNode *lchild;/* 左孩子*/ struct TriTNode *rchild;/* 右孩子*/ TriTree; typedef struct Node/* 队列的结点结构*/