- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
新版家谱管理系统(含源代码).doc
天天快乐
家谱管理系统——C语言(数据结构)
目的和要求:树形结构是一种非常重要的非线性结构,它用于描述数据元素之间
的层次关系,人类家谱是树形结构的典型体现,通过此项训练让学生掌握树形结
构的知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历,和二叉树
相关的一些运算;要求完成家谱信息的录入和保存,任意成员的查找及某一成员
祖先、子孙、兄弟、堂兄弟的查找。
排答疑和辅导。
完整代码:
#include stdio.h
#include stdlib.h
#include string.h
int MATEFLAG=0; //是否入赘或嫁入这家的,1表示为是,0表示否
typedef struct TreeNode//树节点定义
{
int Num; //保存此人儿女个数
char Name[20]; //保存此人姓名
char Kind; //保存此人性别,男M,女F
struct TreeNode * NextNode[20]; //保存此人的儿女,NextNode[0]里存放配偶的地址
struct TreeNode * Parent; //保存此节点的父节点
}TreeNode;
void CreatTree(TreeNode *Tree);//创建树
void OutPutAll(TreeNode *Tree);//输出树
TreeNode * SearchTree(TreeNode *Tree,char name[],int length);
void MainMenu(TreeNode *Tree);
void SubMenue1(TreeNode * Tree);
void SubMenue2(TreeNode *Tree);
void Change(TreeNode * Tree);
void AddNew(TreeNode * Tree);
void OutPutMessage(TreeNode * Tree,char name[],int length);
//主函数
void main()
{
TreeNode *Tree;//产生根节点
Tree=(TreeNode *)malloc(sizeof(TreeNode));
Tree-Parent =NULL;
strcpy(Tree-Name,0);
MainMenu(Tree);//显示主菜单
}
//添加新的成员
void AddNew(TreeNode * Tree)
{
SubMenue2(Tree);//添加新成员界面
}
//显示添加家庭信息的界面
void SubMenue2(TreeNode *Tree)
{
char c;
int num;
char name[20];
TreeNode * NewNode;
getchar();
while(1)
{
system(cls);
printf(请选择你的操作\n);
printf(A:添加某个人的子女的信息\n);
printf(B:添加某个人配偶的信息\n);
printf(C:退出\n);
printf(请选择相应功能:\n);
c=getchar();
switch(c)
{
case A: //添加子女信息
printf(请输入那个人的名字:\n);
scanf(%s,name);
Tree=SearchTree(Tree,name,20);//在家谱里查找这个人
if(Tree==NULL)
{
printf(该家谱图中没有%s这个人的信息请确认是否输入错误\n,name);
break;
}
if(Tree-Parent==NULLTree-NextNode[0]==NULL||Tree-Parent!=NULLTree-N
ame!=Tree-Parent-NextNode[0]-Name)
{
printf(至今还没有配偶请先添加配偶\n,Tree-Name);
break;
}
if(Tree-Parent==NULL(Tree-Num20||Tree-Num0))
Tree-Num=0;
if(MATEFLAG==1)
Tree=Tree-Parent;
NewNode=(TreeNode *)malloc(sizeof(TreeNode));
printf(请输入添加人员姓名:\n);
scanf(%s,NewNode-Name);
printf(请输入添加人员性别女F男M:\n);
scanf(%1s,NewNode-Kind);
num=Tree-Num;
NewNode-NextNode[0]=(TreeNode *)malloc(sizeof(TreeNode));
NewNod
您可能关注的文档
最近下载
- RAPTOR程序设计例题参考答案.docx
- 中国文化概况 Chapter 9 Culinary Culture 饮食茶酒文化 英文介绍 .ppt
- 山东黄金集团招聘笔试真题2023.pdf
- 高中英语教学课件:Unit 2 Mother of Ten thousand babies2.pptx
- 测测基础认证题库咨询师职业道德与守则考试题库答案-测测达人版.docx
- 部编版语文二年级上册第五单元大单元教学设计核心素养目标.pdf VIP
- 宁夏水洞沟电厂焊接专业施工组织设计.pdf VIP
- 园林植物识别与应用全套教学课件.pptx
- 必威体育精装版人教部编版道德与法治五年级上册《班委会的职责》教学课件.ppt
- 外墙保温旁站记录.docx VIP
文档评论(0)