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