该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//修改某个人的信息
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;