二叉树家谱(3)

2019-04-04 23:01

3.程序代码设计

(1)主菜单模块

1.函数原型:void MainMenue(BinTree T)

2.功能:列出程序功能,利用switch,scanf,gecher按需要进行选择。 3.变量及类型:int c:菜单循环条件

TreeNode F:在新建家谱中判断是否存在父亲

4.说明:system(\清屏

SetConsoleTextAttribute() : 改变字体颜色 (2)判断日期正误模块

1.函数原型:int Inspect(Date D) 2.功能:判断时间的正确性,正确返回1,错误返回0 (3)判断日期前后模块

1.函数模型:int Inspect1(Date B,Date D)

2.功能:利用if函数判断日期的先后 3.说明:B的日期在D之前返回1,否则返回0 (4)创建成员节点模块

1.函数原型:void CreateTree(BinTree &T,BinTree F)

2.功能:利用for循环语句和scanf、strcmp函数完成对结构数组的输入,

存放家谱中一个结点信息(姓名、性别、家庭住址,出生地、职业、辈分、出生日期、死亡日期、孩子个数、父亲姓名) 3.变量及类型:int j:判断日期输入是否正确 (5)辈分增加一模块

1.函数原型:void AddDegress(BinTree &T)

2.功能:利用树的左右节点是否为空来判断循环,每个节点的辈分增加一 (6)队列模块

1.函数原型:void InitQueue(LinkQueue &Q) 2.功能:初始化队列

1.函数原型:void EnQueue(LinkQueue &Q,QElemType e) 2.功能:入队列

3.变量及类型:QueuePtr p:创建一个新队列成员

- - 11 - -

1.函数原型:int DeQueue(LinkQueue &Q,QElemType &e) 2.功能:出队列

3.变量及类型:QueuePtr p:删除队首成员

1.函数原型:int QueueEmpty(LinkQueue Q) 2.功能:判断队列是否为空 (7)查找指定节点模块

1.函数原型:BinTree Value(BinTree T,char Name[len])

2.功能根据输入的名字定位成员节点 (8)增添成员主菜单

1.函数原型:void Add(BinTree &T)

2.功能:列出增添功能,利用if,switch,scanf,getchar函数按需要选择 3.变量及类型:int c:菜单循环条件 int i:用于判断双亲输入次数 char Name[len]:接收输入的父亲姓名

BinTree Tree:用于构建新祖先节点,定位双亲节

BinTree P:用于判断新建节点是否存在父亲 BinTree F:用于存放父亲节点 BinTree C[len]:用于存放孩子节点

4.说明:判断是否存在家谱,若不存在,则直接创建个人信息作为家谱的祖先,若存在家谱则进入添加菜单,添加祖先时,原先所有成员的辈分加一,添加孩子是判断是否为第一个孩子,是则直接添加,不是则是添加为父亲第一个孩子的兄弟

(9)数据存储模块

1.函数原型:void BaoCun(BinTree T) 2.功能:保存整个家谱树的成员信息

3.变量及类型:FILE *fp:文件指针,用于文件打开,访问,关闭操作。 LinkQueue q:申请一个队列 QElemType a:用于队列元素操作 QElemType C[len]:用于保存孩子节点 Int i:判断孩子个数 (10)从文件读取数据模块

1.函数原型:void InPut(BinTree &B,FILE *fp) 2.功能:从文件中读取数据到B中

3.变量及类型:FILE *fp: 文件指针,用于文件打开,访问,关闭操作。

- - 12 - -

BinTree &B:用于存放读取出来的成员数据 (11)数据读取建立孩子-兄弟树模块

1.函数原型:void ReadTree(BinTree &T)

2.功能:从InPut(BinTree &B,FILE *fp)读取节点并构建家谱树 3.变量及类型:FILE *fp: 文件指针,用于文件打开,访问,关闭操作。

int i:判断孩子个数

BinTree B:保存读取到的节点 LinkQueue q,s,h;:新建队列

QElemType a;:用于把所有成员按顺序放入队列 BinTree C[len]:保存孩子节点 BinTree F:保存父亲节点

QElemType p;:用于在新建立的家谱中找到p保存到F中

4.说明:利用队列,用层次遍历建立家谱

(12)显示模块

1.函数原型:void Put(BinTree T) 2.功能:显示某个成员的个人信息

(13)查询模块:

1.函数模块:void MainMenueInquire(BinTree T) 2.功能:提供选择查询方式

3.变量及类型: int c:控制菜单循环

1.函数原型:void InquireName(BinTree T); 2.功能:根据输入的姓名进行定位成员节点 3.变量及类型:int j:定位是否成功判断条件

char name[len]:存放查询人姓名

BinTree Tree:保存需要查询人节点

(14)删除模块

1.函数原型:void DeleteTree(BinTree &T) 2.功能:删除成员及其后代

3.变量及类型:BinTree Tree:用于定位成员节点

char name[len]: 用于接收输入的成员姓名。 BinTree F :保存父亲节点 BinTree P:保存孩子节点

BinTree Q:跟踪保存P的上一个节点

- - 13 - -

1.函数原型:void ShiFang(BinTree T) 2.功能:按后序释放节点空间

(15)修改模块

1.函数原型:void MainMenue1(BinTree T) 2.功能:修改某成员的个人信息

3.变量及类型:int C:控制菜单循环条件

(16)统计操作模块

1.函数原型:void MainMenueTongji(BinTree T) 2.功能:显示功能列表并实现相应功能 3.变量及类型:int c:菜单循环控制条件

int people:用于计算家族总人口

double PHeight=0:用于计算平均身高 double PAge:用于计算平均年龄 int Pfamily:用于计算平均家庭人口 int man=0:用于计算男性人数 int woman:用于计算女性人数

LinkQueue q:申请一个队列

QElemType a:队列元素,用于队列操作 (17)亲属查询模块

1.函数原型:void Menue_5(TreeNode T);

2.功能:列出亲属查询、关系查询等功能,进行操作选择 3.变量及类型:int i: 接收输入的编号 int k:用于菜单循环控制

char name[len_name]:接收输入的成员姓名 TreeNode p:用于定位成员节点

1.函数原型:InquireRoot(BinTree T) 2.功能:显示某个成员的所有直系亲属

3.变量及类型:char name[len]:记录查询人的姓名

int j:控制是否需要重新查询 BinTree Tree:保存查询人节点

1.函数原型:int ValueZhixi(BinTree T,char Name[len]) 2.功能:输出所有直系亲属的个人信息

- - 14 - -

1.函数原型:void InquireZhixi(BinTree T) 2.功能:查找到指定节点

1.函数原型:void RelationShip(BinTree T) 2.功能:查询两个成员之间的关系

3.变量及类型:char name1[len]:用于接收输入的第一个成员姓名 char name2[len]: BinTree Tree1 BinTree Tree2

3.总结 3-1

(1)界面容错 输入:asdf 截屏:

用于接收输入的第二个成员姓名 :存放第一个人的节点 :存放第二个人的节点 - - 15 - -


二叉树家谱(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:1.第二代支付系统报文交换标准(概述) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: