家谱图程序.docx

上传人:b****6 文档编号:3296355 上传时间:2022-11-21 格式:DOCX 页数:14 大小:17.04KB
下载 相关 举报
家谱图程序.docx_第1页
第1页 / 共14页
家谱图程序.docx_第2页
第2页 / 共14页
家谱图程序.docx_第3页
第3页 / 共14页
家谱图程序.docx_第4页
第4页 / 共14页
家谱图程序.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

家谱图程序.docx

《家谱图程序.docx》由会员分享,可在线阅读,更多相关《家谱图程序.docx(14页珍藏版)》请在冰豆网上搜索。

家谱图程序.docx

家谱图程序

宁波大红鹰学院

#include

#include

#include

typedefstructTreeNode

{

charname[20];

charsex[10];

charspousename[20];

TreeNode*brother;

TreeNode*child;

TreeNode*parent;

}TreeNode,*TreeNodeP;

TreeNodePtreehead;

voidInterFace();

TreeNodePInite();

voidCreateFamily(TreeNodePtree);

TreeNodePAddBrother(TreeNodePtree,TreeNodePbother);

TreeNodePAddChild(TreeNodePtree,TreeNodePparents);

TreeNodePFindNode(TreeNodePtree,char*tt);

voidFindPeople(TreeNodePtree);

voidPrintfFamily(TreeNodePtree);

voidPrintfNode(TreeNodePtree);

voidPrintfAllChildren(TreeNodePtree);

voidAddMember(TreeNodePtree);

voidModification(TreeNodePtree);

voidHelp();

voidInterFace()

{

intchoice;

printf("\n----------------菜单--------------------\n");

printf("1.创建一个家谱\n");

printf("2.输出家谱中所有人\n");

printf("3.查找某个人的信息\n");

printf("4.查找某人所有孩子\n");

printf("5.在家谱中添加成员\n");

printf("6.在家谱中修改资料\n");

printf("7.与某人断绝关系\n");

printf("8.系统使用帮助\n");

printf("9.退出系统\n");

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

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

printf("输入你的选择:

");

scanf("%d",&choice);

while(choice<1||choice>8)

{

printf("请输入范围内的数字:

");

scanf("%d",&choice);

}

switch(choice)

{

case1:

{CreateFamily(treehead);break;}

case2:

{PrintfFamily(treehead);break;}

case3:

{FindPeople(treehead);break;}

case4:

{PrintfAllChildren(treehead);break;}

case5:

{AddMember(treehead);break;}

case6:

{Modification(treehead);break;}

case7:

{DelPerson(treehead);break;}

case8:

{Help();break;}

case9:

{exit(0);break;}

}

}

TreeNodePInite()

{

TreeNodePp;

char*s="sdf";

p=(TreeNodeP)malloc(sizeof(TreeNode));

printf("正在初始化一个家谱。

\n");

printf("\n请输入家谱顶端祖先的姓名:

");

scanf("%s",p->name);

strcpy(p->sex,"man");

printf("\n请输入顶端祖先配偶姓名:

");

scanf("%s",p->spousename);

p->child=NULL;

p->brother=NULL;

p->parent=NULL;

system("cls");

returnp;

}

voidCreateFamily(TreeNodePtree)

{

charflag;

fflush(stdin);

printf("\n\t给%s添加后代......",tree->name);

tree->child=AddChild(tree->child,tree);

}

TreeNodePAddBrother(TreeNodePtree,TreeNodePbrother)

{

charflag;

tree=(TreeNodeP)malloc(sizeof(TreeNode));

tree->parent=brother->parent;

printf("\n请输入%s弟弟或妹妹的姓名:

",brother->name);

scanf("%s",tree->name);

printf("\n请输入%s的性别{F/M}:

",tree->name);

scanf("%s",tree->sex);

fflush(stdin);

printf("\n请输入%s的是否有配偶{Y/N}:

",tree->name);

scanf("%c",&flag);

if(flag=='y'||flag=='Y')

{

printf("\n请输入%s的配偶姓名:

",tree->name);

scanf("%s",tree->spousename);

fflush(stdin);

printf("\n请输入%s是否添加孩子{Y/N}:

",tree->name);

scanf("%c",&flag);

if(flag=='y'||flag=='Y'){

tree->child=AddChild(tree->child,tree);

}

else

{

tree->child=NULL;

}

}else{

strcpy(tree->spousename,"");

tree->child=NULL;

}

fflush(stdin);

printf("\n请输入%s是否添加弟弟妹妹{Y/N}:

",tree->name);

scanf("%c",&flag);

if(flag=='y'||flag=='Y'){

tree->brother=AddBrother(tree->brother,tree);

}

else

{

tree->brother=NULL;

}

returntree;

}

TreeNodePAddChild(TreeNodePtree,TreeNodePparents)

{

charflag;

tree=(TreeNodeP)malloc(sizeof(TreeNode));

tree->parent=parents;

printf("\n请输入%s第一个孩子的姓名:

",parents->name);

scanf("%s",tree->name);

printf("\n请输入%s的性别{F/M}:

",tree->name);

scanf("%s",tree->sex);

fflush(stdin);

printf("\n请输入%s的是否有配偶{Y/N}:

",tree->name);

scanf("%c",&flag);

if(flag=='y'||flag=='Y')

{

printf("\n请输入%s的配偶姓名:

",tree->name);

scanf("%s",tree->spousename);

fflush(stdin);

printf("\n请输入%s是否添加孩子{Y/N}:

",tree->name);

scanf("%c",&flag);

if(flag=='y'||flag=='Y'){

tree->child=AddChild(tree->child,tree);

}

else

{

tree->child=NULL;

}

}else{

strcpy(tree->spousename,"");

tree->child=NULL;

}

fflush(stdin);

printf("\n请输入%s是否添加弟弟妹妹{Y/N}:

",tree->name);

scanf("%c",&flag);

if(flag=='y'||flag=='Y'){

tree->brother=AddBrother(tree->brother,tree);

}

else

{

tree->brother=NULL;

}

returntree;

}

voidPrintfNode(TreeNodePtree)

{

if(tree!

=NULL)

{

printf("\n孩子:

%s性别:

%s",tree->name,tree->sex);

if(strcmp(tree->spousename,"")!

=0)

{

printf("配偶:

%s",tree->spousename);

}else{

printf("配偶:

未婚");

}

if(tree->brother!

=NULL)

PrintfNode(tree->brother);

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

if(tree->child!

=NULL)

PrintfFamily(tree);

}

}

voidPrintfFamily(TreeNodePtree)

{

if(tree!

=NULL)

{

printf("\n姓名:

%s",tree->name);

if(strcmp(tree->spousename,"")!

=0)

{

printf("\n配偶:

%s",tree->spousename);

}else

printf("\n配偶:

未婚");

if(tree->parent!

=NULL)

printf("\n此人父母:

%s和%s",tree->parent->name,tree->parent->spousename);

PrintfNode(tree->child);

}

}

TreeNodePFindNode(TreeNodePtree,char*tt)

{

TreeNodePp=NULL;

if(tree!

=NULL)

{

if(strcmp(tree->name,tt)==0||strcmp(tree->spousename,tt)==0)p=tree;

else{

p=FindNode(tree->child,tt);

if(p!

=NULL)returnp;

else

p=FindNode(tree->brother,tt);

}

}

if(p!

=NULL)returnp;

elsereturnNULL;

}

voidFindPeople(TreeNodePtree)

{

chartt[20];

TreeNodePT;

printf("\n请输入要查找的人的姓名:

");

scanf("%s",tt);

T=FindNode(tree,tt);

if(T!

=NULL)

{

printf("\n姓名:

%s",T->name);

printf("\n性别:

%s",T->sex);

if(strcmp(T->spousename,"")!

=0){

printf("\n配偶:

%s",T->spousename);

}else{

printf("\n配偶:

未婚!

");

}

}else{

printf("查不到此人!

");

}

}

voidPrintfAllChildren(TreeNodePtree)

{

chartt[20];

TreeNodePT;

printf("\n请输入:

");

scanf("%s",tt);

T=FindNode(tree,tt);

if(T!

=NULL)

{

printf("\n姓名:

%s",T->name);

printf("\n性别:

%s",T->sex);

if(strcmp(T->spousename,"")!

=0){

printf("\n配偶:

%s",T->spousename);

}else{

printf("\n配偶:

未婚!

");

}

if((T=T->child)!

=NULL)

{

printf("\n孩子:

%s性别:

%s",T->name,T->sex);

if(strcmp(T->spousename,"")!

=0)

{

printf("配偶:

%s",T->spousename);

}else{

printf("配偶:

未婚");

}

}

while((T=T->brother)!

=NULL)

{

printf("\n孩子:

%s性别:

%s",T->name,T->sex);

if(strcmp(T->spousename,"")!

=0)

{

printf("配偶:

%s",T->spousename);

}else{

printf("配偶:

未婚");

}

}

}else{

printf("查不到此人!

");

}

}

voidAddMember(TreeNodePtree)

{

chartt[20],choice;

TreeNodePT;

printf("\n请输入在哪儿添加姓名:

");

scanf("%s",tt);

fflush(stdin);

T=FindNode(tree,tt);

if(T!

=NULL)

{

printf("\n姓名:

%s",T->name);

printf("\n性别:

%s",T->sex);

if(strcmp(T->spousename,"")!

=0){

printf("\n配偶:

%s",T->spousename);

}else{

printf("\n配偶:

未婚!

");

}

}else{

printf("\n没有此人!

");

return;

}

printf("\n添加成员与此人关系----------------");

printf("\n\t1.父子(女)关系");

printf("\n\t2.兄弟(姐妹)关系");

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

printf("\n请选择:

");

scanf("%d",&choice);

while(choice<1||choice>2)

{

printf("请输入范围内的数字:

");

scanf("%d",&choice);

}

if(choice==1)

{

if(strcmp(T->spousename,"")!

=0){

if(T->child!

=NULL)

{

T=T->child;

while(T->brother!

=NULL){

T=T->brother;

}

T->brother=AddBrother(T->brother,T);

}else

T->child=AddChild(T->child,T);

}else{

printf("\n此人未婚!

");

}

}

elseif(choice==2){

T->brother=AddBrother(T->brother,T);

}

}

voidModification(TreeNodePtree)

{

chartt[20],flag;

TreeNodePT;

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

");

scanf("%s",tt);

T=FindNode(tree,tt);

if(T!

=NULL)

{

printf("\n修改前-----");

printf("\n姓名:

%s",T->name);

printf("\n性别:

%s",T->sex);

if(strcmp(T->spousename,"")!

=0){

printf("\n配偶:

%s",T->spousename);

}else{

printf("\n配偶:

未婚!

");

}

}else{

printf("\n没有此人!

");

return;

}

printf("\n修改后-----");

printf("\n姓名:

");

scanf("%s",T->name);

printf("\n性别{F/M}:

");

scanf("%s",T->sex);

fflush(stdin);

printf("\n请输入该人是否有配偶(Y/N):

");

scanf("%c",&flag);

if(flag=='y'||flag=='Y')

{

printf("\n配偶:

");

scanf("%s",T->spousename);

}elsestrcpy(T->spousename,"");

}

voidDelPerson(treehead)

{

}

voidHelp()

{

system("cls");

printf("\n本系统使用指南:

");

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

printf("\n1、使用本系统前,请仔细阅读本系统使用指南。

");

printf("\n2、严格遵守本系统使用规则。

");

printf("\n3、本系统使用规则:

");

printf("\n根据常识,在家谱中重名的情况很少,");

printf("\n所以我们输入的姓名一般也不要重名。

如");

printf("\n果有重名情况,则可以在姓名中做标记再输入。

");

printf("\n本系统没有考虑以下几种情况:

");

printf("\n1.再婚(夫妻一方去世)。

");

printf("\n2.离异(若有孩子,孩子跟外性配偶)。

");

printf("\n3.重名(若有重名,可做标记存储)");

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

}

intmain()

{

treehead=Inite();

while

(1)

{

InterFace();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1