admin 管理员组文章数量: 1086019
2024年4月25日发(作者:git从远程获取代码库)
家谱管理系统——©语言(数据结构)
目的和要求:树形结构是一种非常重要的非线性结构,它用于描述数据元素之间的
层次关系,人类家谱是树形结构的典型体现,通过此项训练让学生掌握树形结构的
知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历,和二叉树相关的
一些运算;要求完成家谱信息的录入和保存,任意成员的查找及某一成员祖先、子
孙、兄弟、堂兄弟的查找。
排答疑和辅导。
完整代码:
#include
#include
intMATEFLAG=0;
//是否入赘或嫁入这家的,
1
表示为是,
0
表示否
typedefstructTreeNode//
树节点定义
{
intNum;
//保存此人儿女个数
charName[20];
//保存此人姓名
charKind;//
保存此人性别,男
M,
女
F
structTreeNode*NextNode[20];
〃保存此人的儿女,
NextNode[0]
里存放配偶
的地址
structTreeNode*Parent;
//保存此节点的父节点
}TreeNode;
voidCreatTree(TreeNode*Tree);//
创建树
voidOutPutAll(TreeNode
*升
66);//
输出树
TreeNode*SearchTree(TreeNode*Tree,charname[],intlength);
voidMainMenu(TreeNode*Tree);
voidSubMenue1(TreeNode*Tree);
voidSubMenue2(TreeNode*Tree);
voidChange(TreeNode*Tree);
voidAddNew(TreeNode*Tree);
voidOutPutMessage(TreeNode*Tree,charname[],intlength);
//主函数
voidmain()
{
TreeNode*Tree;//
产生根节点
Tree=(TreeNode*)malloc(sizeof(TreeNode));
Tree->Parent=NULL;
strcpy(Tree->Name,"0");
MainMenu(Tree);//
显示主菜单
}
//添加新的成员
voidAddNew(TreeNode*Tree)
{
SubMenue2(Tree);//
添加新成员界面
}
//显示添加家庭信息的界面
voidSubMenue2(TreeNode*Tree){charc;
intnum;
charname[20];
TreeNode*NewNode;
getchar();
while(1){system("cls");
printf
("请选择你的操作%");
printf("A:
添加某个人的子女的信息
n");
printf("B:
添加某个人配偶的信息
n");
printf("C:
退出
n");
printf
("请选择相应功能:
n");
c=getchar();switch(c){
case'A':
//添加子女信息
printf
("请输入那个人的名字:
3");
scanf("%s",name);
Tree
二
SearchTree(Tree,name,20);//
在家谱里查找这个人
if(Tree==NULL){
printf
("该家谱图中没有
%s
这个人的信息请确认是否输入错误
n",name);break;
}
if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree->Parent!=NULL
&&Tree->Name!=Tree->Parent->NextNode[0]->Name)
{
版权声明:本文标题:家谱管理系统(含源代码) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1714045466a663035.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论