最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

(完整word版)家谱树

来源:动视网 责编:小OO 时间:2025-10-07 16:24:14
文档

(完整word版)家谱树

家谱树这是实训时候完全自己写的,输入出生日期的时候一定按要求去输入(以防出错),下面是老师给我们的要求:●建立输入文件以存放最初家谱中各成员的信息。●成员的信息中均应包含以下内容:●姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)●也可附加其它信息、但不是必需的。●能对修改后的家谱存盘以备以后使用。●能从文件中读出已有的家谱,形成树状关系。●家谱建立好之后,以图形方式显示出来。●显示第n代所有人的信息。●按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。●
推荐度:
导读家谱树这是实训时候完全自己写的,输入出生日期的时候一定按要求去输入(以防出错),下面是老师给我们的要求:●建立输入文件以存放最初家谱中各成员的信息。●成员的信息中均应包含以下内容:●姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)●也可附加其它信息、但不是必需的。●能对修改后的家谱存盘以备以后使用。●能从文件中读出已有的家谱,形成树状关系。●家谱建立好之后,以图形方式显示出来。●显示第n代所有人的信息。●按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。●
家谱树

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

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

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

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

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

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

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

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

●显示第 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();

}

文档

(完整word版)家谱树

家谱树这是实训时候完全自己写的,输入出生日期的时候一定按要求去输入(以防出错),下面是老师给我们的要求:●建立输入文件以存放最初家谱中各成员的信息。●成员的信息中均应包含以下内容:●姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)●也可附加其它信息、但不是必需的。●能对修改后的家谱存盘以备以后使用。●能从文件中读出已有的家谱,形成树状关系。●家谱建立好之后,以图形方式显示出来。●显示第n代所有人的信息。●按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。●
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top