家谱二叉树c语言程序,家谱管理系统二叉树代码求大神们帮我标下注释!我网上复制的!...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//修改某个人的信息

void Change(TreeNode * Tree)

{

char name[20];

TreeNode * NewNode;

printf("\n\t请输入你要修改的人的信息:\n\t");

scanf("%s",name);

NewNode=SearchTree(Tree,name,20);

if(NewNode==NULL)

{

printf("\n\n\t****该家谱图中没有%s这个人的信息请确认是否输入错误*****\n",name);

return;

}

else

{

SubMenue1(NewNode);

}

}

//输出副菜单

void SubMenue1(TreeNode * Tree)

{

char c;

int flag,i;

char name[20];

char Parent[2][20];

TreeNode * NewNode;

getchar();

while(1)

{

system("cls");

printf("\t");

printf("\n\n\t ---*****---请选择你的操作---****--- ");

printf("\n\t---*---*---*---A:修改个人的信息---*---*---*---*---*---*---- ");

printf("\n\t---*---*---*---B:修改父母的信息---*---*---*---*---*---*---- ");

printf("\n\t---*---*---*---C:修改兄弟姐妹的信息---*---*---*---*---*---- ");

printf("\n\t---*---*---*---D:修改子女的信息---*---*---*---*---*---*---- ");

printf("\n\t---*---*---*---E:修改配偶的信息---*---*---*---*---*---*---- ");

printf("\n\t---*---*---*---F:退出-*---*---*---*---*---*---*---*---*----\n\t");

c=getchar();

switch(c)

{

case 'A':

printf("\n\n\t请输入修改的姓名:如果不需要修改就输入'0'然后按Enter键继续\n\t");

scanf("%s",name);

if(strcmp(name,"0")!=0)

strcpy(Tree->Name,name);

printf("\n\n\t是否要修改性别:如果需要就输入'1'不需要修改就输入'0'然后按Enter键继续\n\t");

scanf("%d",&flag);

if (flag==1)

{

if(Tree->Kind=='G'||Tree->Kind=='g')

Tree->Kind='B';

else Tree->Kind='G';

}

printf("\n\n\t个人信息修改成功");

break;

case 'B':

if(Tree->Parent==NULL) //判断是不是头节点

{

printf("\n\t是这个家谱图里最顶端的人没有父母信息!",name);

break;

}

if (MATEFLAG==1) //判断是不是入赘或加入此间的

{

if(Tree->Kind=='G'||Tree->Kind=='g')

{

printf("\n\n\t她是嫁入此间的所以父母信息不在家谱内包括");

}

else

{

printf("\n\n\t他是入赘此间的所以父母信息不在家谱内包括");

}

break;

}

if(Tree->Parent->Kind=='G'||Tree->Parent->Kind=='g')

{

strcpy(Parent[0],"母亲");

strcpy(Parent[1],"父亲");

}

else

{

strcpy(Parent[0],"父亲");

strcpy(Parent[1],"母亲");

}

printf("\n\n\t请输入%s要修改的姓名:如果不需要修改就输入'0'然后按Enter键继续\n\t",Parent[0]);

scanf("%s",name);

if(strcmp(name,"0")!=0)

strcpy(Tree->Parent->Name,name);

printf("\n\n\t请输入%s要修改的姓名:如果不需要修改就输入'0'然后按Enter键继续\n\t",Parent[1]);

scanf("%s",name);

if(strcmp(name,"0")!=0)

strcpy(Tree->Parent->NextNode[0]->Name,name);

printf("\n\n\t-------------父母的信息修改成功----------------");

break;

case 'C':

NewNode=Tree->Parent;

if(NewNode==NULL) //判断是不是头节点

{

printf("\n\t是这个家谱图里最顶端的人没有兄弟姐妹信息!",name);

break;

}

if (MATEFLAG==1) //判断是不是入赘或加入此间的

{

if(Tree->Kind=='G'||Tree->Kind=='g')

{

printf("\n\n\t她是嫁入此间的所以兄弟姐妹信息不在家谱内包括");

}

else

{

printf("\n\n\t他是入赘此间的所以兄弟姐妹信息不在家谱内包括");

}

break;

}

if(NewNode->Num==1)

{

printf("\n\n\t没有兄弟姐妹");

break;

}

else

{

for(i=1;i<=NewNode->Num;i++)

{

if(NewNode->NextNode[i]->Name!=Tree->Name)

{

printf("\n\n\t请输入%s修改的姓名:如果不需要修改就输入'0'然后按Enter键继续\n\t",NewNode->NextNode[i]->Name);

scanf("%s",name);

if(strcmp(name,"0")!=0)

strcpy(NewNode->NextNode[i]->Name,name);

printf("\n\n\t是否要修改性别:如果需要就输入'1'不需要修改就输入'0'然后按Enter键继续\n\t");

scanf("%d",&flag);

if (flag==1)

{

if(NewNode->NextNode[i]->Kind=='G'||NewNode->NextNode[i]->Kind=='g')

NewNode->NextNode[i]->Kind='B';

else NewNode->NextNode[i]->Kind='G';

}

}

}

}

printf("\n\n\t------------兄弟姐妹的信息修改成功-------------");

break;

case 'D':

if(Tree->Num==0)

{

printf("\n\n\t至今还没有子女");

break;

}

if (Tree->Parent !=NULL)

if (strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0) //如果他是入赘或者是嫁入的就需用配偶节点完成修改

{

Tree=Tree->Parent;

}

for(i=1;i<=Tree->Num;i++)

{

printf("\n\n\t请输入%s修改的姓名:如果不需要修改就输入'0'然后按Enter键继续\n\t",Tree->NextNode[i]->Name);

scanf("%s",name);

if(strcmp(name,"0")!=0)

strcpy(Tree->NextNode[i]->Name,name);

printf("\n\n\t是否要修改性别:如果需要就输入'1'不需要修改就输入'0'然后按Enter键继续\n\t");

scanf("%d",&flag);

if (flag==1)

{

if(Tree->NextNode[i]->Kind=='G'||Tree->NextNode[i]->Kind=='g')

Tree->NextNode[i]->Kind='B';

else Tree->NextNode[i]->Kind='G';

}

}

printf("\n\n\t---------------子女的信息修改成功----------------");

break;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值