视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
(完整word版)家谱树
2025-10-07 16:24:14 责编:小OO
文档
家谱树

这是实训时候完全自己写的,输入出生日期的时候一定按要求去输入(以防出错),下面是老师给我们的要求:

●建立输入文件以存放最初家谱中各成员的信息。 

● 成员的信息中均应包含以下内容: 

●姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡) 

●也可附加其它信息、但不是必需的。 

● 能对修改后的家谱存盘以备以后使用。 

●能从文件中读出已有的家谱,形成树状关系。 

●家谱建立好之后,以图形方式显示出来。 

●显示第 n代所有人的信息。 

●按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 

●按照出生日期查询成员名单。 

●输入两人姓名,确定其关系。 

●某人添加孩子。 

●删除某人(若其还有后代,则一并删除)。 

●修改某人信息。 

●按出生日期对家谱中所有人排序。 

●打开一家谱时,若家谱中某人的生日在打开家谱的那一天,应给出提示。

下面是程序代码(用文本过滤一下粘贴到工程中就可用):

#include

#include

#include

#include

#define OK 1

#define FALSE 0

#define ERROR -1

typedef int status;

typedef struct {

    int num;//孩子个数

    char name[20];///姓名

    char sex;//性别

    //bool is_spouse;//配偶是否存在

    char spouse[20];//配偶的姓名,性别取反

}DataType;

typedef struct TNode{

    DataType data;//数据域

    struct TNode* nextstr[10];//指针域,指向孩子

    struct TNode* parent;//指针域,指向父亲

}PedTNode,*PedTree;//家谱树

void OutMenu();//输出家谱菜单

void CreateNewPedTreeNode(PedTree Tree);//创建孩子,递归调用

void CreatePedTree(PedTree Tree);//创建Pedigree树

void OutOneInfor(PedTree Tree);//递归调用实现输出整个家谱树

void OutAllPedTree(PedTree Tree);//输出整个家谱信息

//PedTree SearchPedTree(PedTree Tree,char Name[]);//在树中查找

bool SearchPedTree(PedTree Tree,char Name[],PedTree* DrawTree);//在树中查找

bool SearchPedTree2(PedTree Tree,char Name[],PedTree* DrawTree);//在树中查找配偶是否匹配

void ShowMenu1(PedTree Tree);//显示要查找人的信息

//void ShowSelfInfor(PedTree Tree,char Name[],int Length);//显示个人信息

void ShowMenu2();//显示添加信息的菜单

int AddNewInfor(PedTree Tree);//添加新的家谱信息

void AddChildInfor(PedTree Tree);//添加子女的信息

void AddPouseInfor(PedTree Tree);//添加配偶信息

int ChangeInfor(PedTree Tree);//修改家谱信息

void ShowMenu3();//显示修改信息的菜单

int main()

{

    char choice;

    system("color 1f");

    PedTNode TreeNode;

    PedTree Tree=&TreeNode;

    bool flag=false;//标志是否执行建立家谱

    //PedTree Tree=NULL;

    while(1)

    {

        fflush(stdin);//清除键盘缓冲区

        system("cls");

        OutMenu();

        printf("\\n");

        printf("\\请您选择:");

        choice=getchar();

        switch(choice)

        {

        case '1':

            if(!flag)

            {

                CreatePedTree(Tree);//创建Pedigree树

                flag=true;

            }

            else

            {

                printf("\\n\\家谱不能多次建立\\n");

                printf("\\n\\按任意键继续:");

                fflush(stdin);

                getch();

            }

            break;

        case '2':

            if(flag)

                ShowMenu1(Tree);//显示要查找人的信息

            else

            {

                printf("\\n\\家谱未建立,请您先建立家谱\\n");

                printf("\\n\\按任意键继续:");

                fflush(stdin);

                getch();

            }

            break;

        case '3':

            if(flag)

                AddNewInfor(Tree);//添加新的家谱信息

            else

            {

                printf("\\n\\家谱未建立,请您先建立家谱\\n");

                printf("\\n\\按任意键继续:");

                fflush(stdin);

                getch();

            }

            break;

        case '4':

            if(flag)

                OutAllPedTree(Tree);//输出整个家谱信息

            else

            {

                printf("\\n\\家谱未建立,请您先建立家谱\\n");

                printf("\\n\\按任意键继续:");

                fflush(stdin);

                getch();

            }

            break;

        case '5':

            if(flag)

                ChangeInfor(Tree);//修改家谱信息

            else

            {

                printf("\\n\\家谱未建立,请您先建立家谱\\n");

                printf("\\n\\按任意键继续:");

                fflush(stdin);

                getch();

            }

            break;

        case '6':

            return 0;

        }

    }

    //return 0;

}

void OutMenu()

{

    printf("\\* * * * * * * * * * * * * * * * * * * * * * *\\n");

    printf("\\*                                           *\\n");

    printf("\\*         家谱信息管理菜单                 *\\n");

    printf("\\*                                           *\\n");

    printf("\\*          1:输入家谱信息                  *\\n");

    printf("\\*          2:查找并输出某人信息            *\\n");

    printf("\\*          3:添加新的家庭成员              *\\n");

    printf("\\*          4:输出整个家谱信息              *\\n");

    printf("\\*          5:修改某个人的信息              *\\n");

    printf("\\*          6:退出整个程序                  *\\n");

    printf("\\*                                           *\\n");

    printf("\\* * * * * * * * * * * * * * * * * * * * * * *\\n");

    

}

void CreatePedTree(PedTree Tree)//创建Pedigree树

{

    fflush(stdin);//清除键盘缓冲区

    system("cls");

    /*Tree=(PedTree)malloc(sizeof(PedTNode));

    if(!Tree)

    {

        printf("Insufficient Memory!\\n");

        exit(-1);

    }*/

    printf("\\请输入姓名:");

    scanf("%s",Tree->data.name);

    printf("\\请输入性别(G女B男):");

    //scanf("%c",&(Tree->data.sex));

    fflush(stdin);

(Tree->data.sex)=getchar();

    printf("\\请输入%s子女的个数:",Tree->data.name);

    scanf("%d",&(Tree->data.num));

    printf("\\请输入%s配偶的名字(配偶不存在,请输入):",Tree->data.name);

    scanf("%s",Tree->data.spouse);

    if(strcmp(Tree->data.spouse,"0")==0 && Tree->data.num!=0)

    {

        printf("\\%s的配偶不存在,不能有孩子!\\n",Tree->data.name);

     Tree->data.num=0;

    }

Tree->parent=NULL;

    for(int i=0;idata.num;i++)

    {

        printf("\\n");

        PedTree ChildTree=(PedTree)malloc(sizeof(PedTNode));

        if(!ChildTree)

        {

            printf("Insufficient Memory!\\n");

            exit(-1);

        }

     Tree->nextstr[i]=ChildTree;//指向子女

        printf("\\请输入%s的第%d个子女的姓名:",Tree->data.name,i+1);

        scanf("%s",ChildTree->data.name);

        printf("\\请输入%s的第%d个子女的性别(G女B男):",Tree->data.name,i+1);

        fflush(stdin);//清除键盘缓冲区

        scanf("%c",&(ChildTree->data.sex));

        printf("\\请输入%s的第%d个子女的个数:",Tree->data.name,i+1);

        scanf("%d",&(ChildTree->data.num));

        printf("\\请输入%s的第%d个子女的配偶的姓名(配偶不存在,请输入):",Tree->data.name,i+1);

        scanf("%s",ChildTree->data.spouse);

        if(strcmp(ChildTree->data.spouse,"0")==0 && ChildTree->data.num!=0)

        {

            printf("\\%s的配偶不存在,不能有孩子!\\n",ChildTree->data.name);

         ChildTree->data.num=0;

        }

     ChildTree->parent=Tree;//将孩子指向父母

        CreateNewPedTreeNode(ChildTree);

    }

    fflush(stdin);//清除键盘缓冲区

    printf("\\n\\n\\- - - - 家谱建造成功- - - - - \\n");

    printf("\\n\\按任意键继续:");

    getch();

}

void CreateNewPedTreeNode(PedTree Tree)//创建孩子,递归调用

{

    for(int i=0;idata.num;i++)

    {

        printf("\\n");

        PedTree ChildTree=(PedTree)malloc(sizeof(PedTNode));

        if(!ChildTree)

        {

            printf("\\Insufficient Memory!\\n");

            exit(1);

        }

     Tree->nextstr[i]=ChildTree;//指向子女

        printf("\\请输入%s的第%d个子女的姓名:",Tree->data.name,i+1);

        scanf("%s",ChildTree->data.name);

        printf("\\请输入%s的第%d个子女的性别(G女B男):",Tree->data.name,i+1);

        fflush(stdin);//清除键盘缓冲区

        scanf("%c",&(ChildTree->data.sex));

        printf("\\请输入%s的第%d个子女的个数:",Tree->data.name,i+1);

        scanf("%d",&(ChildTree->data.num));

        printf("\\请输入%s的第%d个子女的配偶的姓名(配偶不存在,请输入):",Tree->data.name,i+1);

        scanf("%s",ChildTree->data.spouse);

        if(strcmp(ChildTree->data.spouse,"0")==0 && ChildTree->data.num!=0)

        {

            printf("\\%s的配偶不存在,不能有孩子!\\n",ChildTree->data.name);

         ChildTree->data.num=0;

        }

     ChildTree->parent=Tree;//将孩子指向父母

        CreateNewPedTreeNode(ChildTree);

    }

}

void OutAllPedTree(PedTree Tree)//输出整个家谱信息

{

    fflush(stdin);//清除键盘缓冲区

    system("cls");

    printf("\\n\\n\\整个家谱主要的信息如下:\\n");

    printf("\\---***---***---***---***---***---***---\\n");

    //puts(Tree->data.name);

    printf("\\姓名:%s  ",Tree->data.name);

    if(Tree->data.sex=='b'||Tree->data.sex=='B')

    {

        printf("性别:男\\n");

        printf("\\太太姓名:%s\\n",Tree->data.spouse);

    }

    else

    {

        printf("性别:女\\n");

        printf("\\丈夫姓名:%s\\n",Tree->data.spouse);

    }

    for(int i=0;idata.num;i++)

    {

        printf("\\第%d个子女的姓名:%s  ",i+1,(Tree->nextstr[i])->data.name);

        if(((Tree->nextstr[i])->data.sex)=='b'||((Tree->nextstr[i])->data.sex)=='B')

            printf("性别:男\\n");

        else

            printf("性别:女\\n");

    }

    for(int j=0;jdata.num;j++)

    {

        //if((Tree->nextstr[j])->data.num!=0)

         OutOneInfor(Tree->nextstr[j]);

    }

    fflush(stdin);//清除键盘缓冲区

    

    printf("\\n\\按任意键继续:");

    getch();

}

void OutOneInfor(PedTree Tree)//递归调用实现输出整个家谱树

{

    printf("\\---***---***---***---***---***---***---\\n");

    printf("\\姓名:%s  ",Tree->data.name);

    if(Tree->data.sex=='b'||Tree->data.sex=='B')

    {

        printf("性别:男\\n");

        printf("\\太太姓名:%s\\n",Tree->data.spouse);

    }

    else

    {

        printf("性别:女\\n");

        printf("\\丈夫姓名:%s\\n",Tree->data.spouse);

    }

    for(int i=0;idata.num;i++)

    {

        printf("\\第%d个子女的姓名:%s  ",i+1,(Tree->nextstr[i])->data.name);

        if(((Tree->nextstr[i])->data.sex)=='b'||((Tree->nextstr[i])->data.sex)=='B')

            printf("性别:男\\n");

        else

            printf("性别:女\\n");

    }

    for(int j=0;jdata.num;j++)

        //if((Tree->nextstr[j])->data.num!=0)

         OutOneInfor(Tree->nextstr[j]);

}

void ShowMenu1(PedTree Tree)//显示要查找人的信息

{

    PedTree TempTree=NULL;

    char Name[20];

    fflush(stdin);//清除键盘缓冲区

    system("cls");

    printf("\\请输入你要查找的人的姓名:");

    scanf("%s",Name);

    /*if((TempTree=SearchPedTree(Tree,Name))!=NULL)*/

    if(SearchPedTree(Tree,Name,&TempTree))//在树中查找

    {

        printf("\\n\\n\\----*----*----*----*----*----*----*----*----*----*----\\n");

        if(TempTree->parent!=NULL)

        {

            printf("\\姓名:%s  ",TempTree->data.name);

            if((TempTree->data.sex)=='b'||(TempTree->data.sex)=='B')

                printf("性别:男\\n");

            else

                printf("性别:女\\n");

            //输出父母亲的姓名

            if((TempTree->parent->data.sex)=='b'||(TempTree->parent->data.sex)=='B')

            {

                printf("\\父亲姓名:%s \\n",TempTree->parent->data.name);

                printf("\\母亲姓名:%s \\n",TempTree->parent->data.spouse);

            }

            else

            {

                printf("\\父亲姓名:%s \\n",TempTree->parent->data.spouse);

                printf("\\母亲姓名:%s \\n",TempTree->parent->data.name);

            }

        }

        

        else

        {

            printf("\\姓名:%s  ",TempTree->data.name);

            if((TempTree->data.sex)=='b'||(TempTree->data.sex)=='B')

                printf("性别:男\\n");

            else

                printf("性别:女\\n");    

        }

        //输出配偶信息

        if((TempTree->data.sex)=='b'||(TempTree->data.sex)=='B')

            printf("\\太太姓名:%s \\n",TempTree->data.spouse);

        else

            printf("\\丈夫姓名:%s \\n",TempTree->data.spouse);

        //输出孩子信息

        if((TempTree->data.num)!=0)

            printf("\\孩子信息:\\n");

        for(int j=0;jdata.num;j++)

        {

            PedTree ChildTree;

         ChildTree=TempTree->nextstr[j];

            printf("\\姓名:%s  ",ChildTree->data.name);

            if((ChildTree->data.sex)=='b'||(ChildTree->data.sex)=='B')

                printf("性别:男\\n");

            else

                printf("性别:女\\n");

        }

        printf("\\----*----*----*----*----*----*----*----*----*----*----\\n\\n");

    }//if(SearchPedTree(Tree,Name,&TempTree))//在树中查找

    else if(SearchPedTree2(Tree,Name,&TempTree))//在配偶中查找

    {

        printf("\\n\\n\\----*----*----*----*----*----*----*----*----*----*----\\n");

        printf("\\n\\你要找的人已找到,信息如下:\\n");

        printf("\\姓名:%s  ",TempTree->data.spouse);

        if((TempTree->data.sex)=='b'||(TempTree->data.sex)=='B')

        {

            printf("性别:女\\n");

            printf("\\n\\她已成为本家族的媳妇,所以父母信息不存在家谱中\\n");

            printf("\\n\\丈夫姓名:%s\\n",TempTree->data.name);

        }

        else

        {

            printf("性别:男\\n");

            printf("\\n\\他入赘本家族,所以父母信息不存在家谱中\\n");

            printf("\\n\\太太姓名:%s\\n",TempTree->data.name);

        }

        printf("\\----*----*----*----*----*----*----*----*----*----*----\\n\\n");

    }//else if(SearchPedTree2(Tree,Name,&TempTree))//在配偶中查找

    else

    {

        printf("\\n\\n\\----*----*----*----*----*----*----*----*----*----*----\\n\\n");

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

        printf("\\----*----*----*----*----*----*----*----*----*----*----\\n\\n");

    }

    fflush(stdin);//清除键盘缓冲区

    printf("\\n\\按任意键继续:");

    getch();

}

bool SearchPedTree(PedTree Tree,char Name[],PedTree* DrawTree)//在树中查找

{

    //if(strcmp(Tree->data.name,Name)==0)

    //    return Tree;

    //else

    //{

    // for(int i=0;idata.num;i++)

    //    {

    //     if(SearchPedTree(Tree->nextstr[i],Name)==NULL)

    //         SearchPedTree(Tree->nextstr[i],Name);//没找到继续找

    //        else

    //            return Tree->nextstr[i];

    //    }

    //    return NULL;

    //}

    if(strcmp(Tree->data.name,Name)==0)

    {

        *DrawTree=Tree;

        return true;

    }

    else

    {

        for(int i=0;idata.num;i++)

        {

            if(SearchPedTree(Tree->nextstr[i],Name,DrawTree))

                return true;

        }

        return false;

    }

}

bool SearchPedTree2(PedTree Tree,char Name[],PedTree* DrawTree)//在树中查找配偶是否匹配

{

    if(strcmp(Tree->data.spouse,Name)==0)

    {

        *DrawTree=Tree;

        return true;

    }

    else

    {

        for(int i=0;idata.num;i++)

        {

            if(SearchPedTree2(Tree->nextstr[i],Name,DrawTree))

                return true;

        }

        return false;

    }

}

int AddNewInfor(PedTree Tree)//添加新的家谱信息

{

    fflush(stdin);//清除键盘缓冲区

    char choice;

    while(1)

    {

        fflush(stdin);//清除键盘缓冲区

        system("cls");

        ShowMenu2();//显示添加信息的菜单

        printf("\\n");

        printf("\  请您选择:");

        choice=getchar();

        switch(choice)

        {

        case '1':

            AddChildInfor(Tree);//添加子女的信息            

            break;

        case '2':

            AddPouseInfor(Tree);//添加配偶信息

            break;

        case '3':

            return 0;

            

        }

    }

}

void AddChildInfor(PedTree Tree)//添加子女的信息

{

    fflush(stdin);//清除键盘缓冲区

    system("cls");

    char Name[20];

    PedTree TempTree=NULL;

    printf("\\n\\请输入要添加子女的父母的名字:");

    scanf("%s",Name);

    /*if((TempTree=SearchPedTree(Tree,Name))==NULL)*/

    if(SearchPedTree(Tree,Name,&TempTree)||SearchPedTree2(Tree,Name,&TempTree))//在树中查找

    {

        if(strcmp(TempTree->data.spouse,"0")!=0)

        {

            PedTree ChildTree;

            int num=TempTree->data.num;

         TempTree->nextstr[num]=(PedTree)malloc(sizeof(PedTNode));//父母指向孩子

         ChildTree=TempTree->nextstr[num];

            if(!ChildTree)

            {

                printf("\\Insufficient Memory!\\n");

                exit(1);

            }

            printf("\\n\\请输入要填家的子女的姓名:");

            scanf("%s",ChildTree->data.name);

            fflush(stdin);//清除键盘缓冲区

            printf("\\n\\请输入添加子女的性别(女G 男B):");

            scanf("%c",&(ChildTree->data.sex));

         (TempTree->data.num)++;//父母孩子数加1

         ChildTree->parent=TempTree;//孩子指向父母

         strcpy(ChildTree->data.spouse,"0");//将配偶初始为

            printf("\\n\\n\\- - - - 子女信息添加成功- - - - - \\n");

        }

        else

        {

            printf("\\n\\配偶不存在,不能添加子女信息\\n");

        }

        

    }

    else

    {

        printf("\\n\\n\\不存在该父母!\\n");

    }

    fflush(stdin);//清除键盘缓冲区

    

    printf("\\n\\按任意键继续:");

    getch();

}

void AddPouseInfor(PedTree Tree)//添加配偶信息

{

    fflush(stdin);//清除键盘缓冲区

    system("cls");

    char Name[20];

    bool flag=false;

    PedTree TempTree=NULL;

    printf("\\n\\请输入要添加人的配偶的名字:");

    scanf("%s",Name);

    if(!SearchPedTree(Tree,Name,&TempTree))//在树中查找

    {

        printf("\\n\\n\\不存在该人!\\n");

        flag=true;

    }

    else

    {

        if(strcmp(TempTree->data.spouse,"0")==0)

        {

            printf("\\n\\请入要填加的人的姓名:");

            scanf("%s",TempTree->data.spouse);

        }

        else

        {

            printf("\\n\\n\\配偶已存在!\\n");

            flag=true;

        }

    }

    fflush(stdin);//清除键盘缓冲区

    if(!flag)

        printf("\\n\\n\\- - - - 配偶信息添加成功- - - - - \\n");

    printf("\\n\\按任意键继续:");

    getch();

}

void ShowMenu2()//显示添加信息的菜单

{

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

    printf("\   ----****----1.添加某个人的子女的信息----****----\\n");

    printf("\   ----****----2.添加某个人的配偶的信息----****----\\n");

    printf("\\n\     ----****---***---3.退出---***----****-----\\n");

}

int ChangeInfor(PedTree Tree)//修改家谱信息

{

    fflush(stdin);//清除键盘缓冲区

    system("cls");

    char Name[20];

    char choice;//

    char tempch;

    char TempName[20];

    PedTree TempTree;

    printf("\\n\\请输入要修改人的姓名:");

    scanf("%s",Name);

    if(SearchPedTree(Tree,Name,&TempTree))

    {

     PedTree TempParent=TempTree->parent;

        while(1)

        {

            fflush(stdin);//清除键盘缓冲区

            system("cls");

            ShowMenu3();

            printf("\\n");

            printf("\\请您选择:");

            choice=getchar();

            switch(choice)

            {

            case '1':

                //printf("\\n\\");

                printf("\\n\\请输入要修改人的姓名:(不需要修改输入)\\n\\");

                scanf("%s",TempName);

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

                {

                 strcpy(TempTree->data.name,TempName);    

                }

                fflush(stdin);//清除键盘缓冲区

                printf("\\n\\请输入要修改人的性别:(不需要修改输入)\\n\\");                

                scanf("%c",&tempch);

                    if(tempch!='0')

                     TempTree->data.sex=tempch;

                printf("\\n\\----****---***---信息修改成功---***----****-----");

                fflush(stdin);//清除键盘缓冲区

                printf("\\n\\按任意键继续:");

                getch();    

                break;

            case '2':

                if(TempTree->parent==NULL)

                    printf("\\n\\这是家谱中最顶端得人,不存在父母的信息!\\n");

                else

                {

                    printf("\\n\\请输入该人的父母的姓名:(不需要修改输入)\\n\\");

                    

                    scanf("%s",TempName);

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

                    {

                     strcpy(TempParent->data.name,TempName);    

                    }

                    fflush(stdin);//清除键盘缓冲区

                    printf("\\n\\请输入该人的父母的性别:(不需要修改输入)\\n\\");                

                    scanf("%c",&tempch);

                        if(tempch!='0')

                         TempParent->data.sex=tempch;

                    printf("\\n\\----****---***---信息修改成功---***----****-----");

                }

                fflush(stdin);//清除键盘缓冲区

                printf("\\n\\按任意键继续:");

                getch();

                break;

            case '3':

                if(TempTree->parent==NULL)

                    printf("\\n\\这是家谱中最顶端得人,不存在兄弟姐妹的信息!\\n");

                //PedTree TempParent=TempTree->parent;

                else

                {

                    for(int i=1;idata.num;i++)

                    {

                        printf("\\n\\请输入%s 修改后的姓名:(不需要修改输入)\\n\\",TempParent->nextstr[i]->data.name);

                        scanf("%s",TempName);

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

                        {

                         strcpy(TempParent->nextstr[i]->data.name,TempName);    

                        }

                        fflush(stdin);//清除键盘缓冲区

                        printf("\\n\\请输入%s 修改后的性别:(不需要修改输入)\\n\\",TempParent->nextstr[i]->data.name);                

                        scanf("%c",&tempch);

                        if(tempch!='0')

                         TempParent->nextstr[i]->data.sex=tempch;

                    }

                    printf("\\n\\----****---***---信息修改成功---***----****-----");

                }

                fflush(stdin);//清除键盘缓冲区

                printf("\\n\\按任意键继续:");

                getch();

                break;

            case '4':

                if(TempTree->data.num<=0)

                {

                    printf("\\n\\%s还没有子女,请先添加\\n",TempTree->data.name);

                }

                else

                {

                    for(int i=0;idata.num;i++)

                    {

                        printf("\\n\\请输入%s 修改后的姓名:(不需要修改输入)\\n\\",TempTree->nextstr[i]->data.name);

                        scanf("%s",TempName);

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

                        {

                         strcpy(TempTree->nextstr[i]->data.name,TempName);    

                        }

                        fflush(stdin);//清除键盘缓冲区

                        printf("\\n\\请输入%s 修改后的性别:(不需要修改输入)\\n\\",TempTree->nextstr[i]->data.name);                

                        scanf("%c",&tempch);

                        if(tempch!='0')

                         TempTree->nextstr[i]->data.sex=tempch;

                    }

                    printf("\\n\\----****---***---信息修改成功---***----****-----");

                }

                fflush(stdin);//清除键盘缓冲区

                printf("\\n\\按任意键继续:");

                getch();

                break;

            case '5':

                if(strcmp(TempTree->data.spouse,"0")==0)

                {

                    printf("\\n\\%s还没有配偶,请先添加\\n",TempTree->data.name);

                }

                else

                {

                    printf("\\n\\请输入%s 修改后的姓名:(不需要修改输入)\\n\\",TempTree->data.spouse);

                    scanf("%s",TempName);

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

                    {

                     strcpy(TempTree->data.spouse,TempName);    

                    }

                    fflush(stdin);//清除键盘缓冲区

                    printf("\\n\\请输入%s 修改后的性别:(不需要修改输入)\\n\\",TempTree->data.spouse);

                    scanf("%c",&tempch);

                        if(tempch!='0')

                         TempTree->data.sex=tempch;

                    

                }

                printf("\\n\   ----****---***---信息修改成功---***----****-----");

                fflush(stdin);//清除键盘缓冲区

                printf("\\n\\按任意键继续:");

                getch();

                break;

            case '6':

                return 0;

            }

        }        

    

    }

    else

    {

        printf("\\n\\找不到你要查找的人!\\n");

    }

    fflush(stdin);//清除键盘缓冲区

    printf("\\n\\按任意键继续:");

    getch();

    

}

void ShowMenu3()//显示修改信息的菜单

{

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

    printf("\    ----****------1.修改个人的信息--------****----\\n");

    printf("\    ----****------2.修改父母的信息--------****----\\n");

    printf("\    ----****------3.修改兄弟姐妹的信息----****----\\n");

    printf("\    ----****------4.修改子女的信息--------****----\\n");

    printf("\    ----****------5.修改配偶的信息--------****----\\n");

    printf("\\n\      ----****---***---6.退出---***----****-----\\n");

    //getch();

}下载本文

显示全文
专题