完整word版家谱树Word下载.docx
- 文档编号:4880031
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:32
- 大小:22.94KB
完整word版家谱树Word下载.docx
《完整word版家谱树Word下载.docx》由会员分享,可在线阅读,更多相关《完整word版家谱树Word下载.docx(32页珍藏版)》请在冰点文库上搜索。
typedefstructTNode{
DataTypedata;
//数据域
structTNode*nextstr[10];
//指针域,指向孩子
structTNode*parent;
//指针域,指向父亲
}PedTNode,*PedTree;
//家谱树
voidOutMenu();
//输出家谱菜单
voidCreateNewPedTreeNode(PedTreeTree);
//创建孩子,递归调用
voidCreatePedTree(PedTreeTree);
//创建Pedigree树
voidOutOneInfor(PedTreeTree);
//递归调用实现输出整个家谱树
voidOutAllPedTree(PedTreeTree);
//输出整个家谱信息
//PedTreeSearchPedTree(PedTreeTree,charName[]);
//在树中查找
boolSearchPedTree(PedTreeTree,charName[],PedTree*DrawTree);
boolSearchPedTree2(PedTreeTree,charName[],PedTree*DrawTree);
//在树中查找配偶是否匹配
voidShowMenu1(PedTreeTree);
//显示要查找人的信息
//voidShowSelfInfor(PedTreeTree,charName[],intLength);
//显示个人信息
voidShowMenu2();
//显示添加信息的菜单
intAddNewInfor(PedTreeTree);
//添加新的家谱信息
voidAddChildInfor(PedTreeTree);
//添加子女的信息
voidAddPouseInfor(PedTreeTree);
//添加配偶信息
intChangeInfor(PedTreeTree);
//修改家谱信息
voidShowMenu3();
//显示修改信息的菜单
intmain()
{
charchoice;
system(”color1f”);
PedTNodeTreeNode;
PedTreeTree=&TreeNode;
boolflag=false;
//标志是否执行建立家谱
//PedTreeTree=NULL;
while
(1)
{
fflush(stdin);
//清除键盘缓冲区
system(”cls”);
OutMenu();
printf("
\n”);
\t\t请您选择:
"
);
choice=getchar();
switch(choice)
{
case'
1'
:
if(!
flag)
{
CreatePedTree(Tree);
flag=true;
}
else
printf(”\n\t\t家谱不能多次建立\n”);
printf(”\n\t\t按任意键继续:
”);
fflush(stdin);
getch();
}
break;
2'
if(flag)
ShowMenu1(Tree);
printf("
\n\t\t家谱未建立,请您先建立家谱\n”);
\n\t\t按任意键继续:
”);
fflush(stdin);
case’3’:
AddNewInfor(Tree);
{
printf(”\n\t\t家谱未建立,请您先建立家谱\n”);
printf(”\n\t\t按任意键继续:
getch();
break;
4’:
OutAllPedTree(Tree);
\n\t\t家谱未建立,请您先建立家谱\n”);
5'
:
ChangeInfor(Tree);
);
6'
return0;
}
}
//return0;
}
voidOutMenu()
{
printf(”\t\t***********************\n"
printf(”\t\t**\n"
printf(”\t\t*家谱信息管理菜单*\n"
printf(”\t\t**\n”);
printf(”\t\t*1:
输入家谱信息*\n”);
printf(”\t\t*2:
查找并输出某人信息*\n”);
printf("
\t\t*3:
添加新的家庭成员*\n”);
printf(”\t\t*4:
输出整个家谱信息*\n”);
printf(”\t\t*5:
修改某个人的信息*\n"
\t\t*6:
退出整个程序*\n"
\t\t**\n"
\t\t***********************\n"
voidCreatePedTree(PedTreeTree)//创建Pedigree树
fflush(stdin);
system("
cls"
/*Tree=(PedTree)malloc(sizeof(PedTNode));
if(!
Tree)
InsufficientMemory!
exit(-1);
}*/
printf(”\t\t请输入姓名:
scanf("
%s"
Tree->
data。
name);
\t\t请输入性别(G女B男):
//scanf(”%c”,&
(Tree-〉data.sex));
(Tree->
data.sex)=getchar();
\t\t请输入%s子女的个数:
”,Tree->
name);
scanf(”%d”,&(Tree->
data.num));
printf(”\t\t请输入%s配偶的名字(配偶不存在,请输入):
”,Tree-〉data。
scanf(”%s"
,Tree—〉data。
spouse);
if(strcmp(Tree—>
data.spouse,”0”)==0&&
Tree—〉data.num!
=0)
printf(”\t\t%s的配偶不存在,不能有孩子!
\n”,Tree-〉data。
Tree->
num=0;
}
Tree-〉parent=NULL;
for(inti=0;
i<
Tree—〉data.num;
i++)
\n"
PedTreeChildTree=(PedTree)malloc(sizeof(PedTNode));
if(!
ChildTree)
{
printf(”InsufficientMemory!
exit(-1);
Tree—〉nextstr[i]=ChildTree;
//指向子女
\t\t请输入%s的第%d个子女的姓名:
name,i+1);
scanf(”%s”,ChildTree—>
printf(”\t\t请输入%s的第%d个子女的性别(G女B男):
,Tree-〉data。
name,i+1);
fflush(stdin);
scanf(”%c”,&(ChildTree->
data.sex));
\t\t请输入%s的第%d个子女的个数:
”,Tree—〉data.name,i+1);
scanf(”%d"
&
(ChildTree-〉data。
num));
printf(”\t\t请输入%s的第%d个子女的配偶的姓名(配偶不存在,请输入):
”,Tree—〉data.name,i+1);
scanf("
%s”,ChildTree-〉data.spouse);
if(strcmp(ChildTree->
data.spouse,”0"
)==0&&ChildTree->
num!
printf(”\t\t%s的配偶不存在,不能有孩子!
ChildTree->
ChildTree—〉data。
ChildTree->
parent=Tree;
//将孩子指向父母
CreateNewPedTreeNode(ChildTree);
fflush(stdin);
\n\n\t\t—-—-家谱建造成功——-—-\n"
\n\t\t按任意键继续:
getch();
voidCreateNewPedTreeNode(PedTreeTree)//创建孩子,递归调用
Tree-〉data.num;
\n”);
printf("
\t\tInsufficientMemory!
exit
(1);
}
Tree—>
nextstr[i]=ChildTree;
printf(”\t\t请输入%s的第%d个子女的姓名:
”,Tree—>
data.name,i+1);
%s"
,ChildTree—>
data.name);
\t\t请输入%s的第%d个子女的性别(G女B男):
,Tree-〉data.name,i+1);
%c”,&
(ChildTree—>
sex));
printf(”\t\t请输入%s的第%d个子女的个数:
Tree—>
name,i+1);
scanf(”%d”,&
(ChildTree-〉data.num));
printf(”\t\t请输入%s的第%d个子女的配偶的姓名(配偶不存在,请输入):
,Tree—>
scanf(”%s"
spouse);
if(strcmp(ChildTree—>
spouse,”0"
)==0&&ChildTree—>
printf(”\t\t%s的配偶不存在,不能有孩子!
,ChildTree->
ChildTree—>
data.num=0;
ChildTree—>
parent=Tree;
CreateNewPedTreeNode(ChildTree);
}
voidOutAllPedTree(PedTreeTree)//输出整个家谱信息
\n\n\t\t整个家谱主要的信息如下:
\t\t-—-***-—-***—-—***-—-***———***-——***—--\n"
//puts(Tree—>
\t\t姓名:
%s"
,Tree—〉data.name);
if(Tree—>
data.sex=='
b’||Tree->
sex=='
B’)
{
性别:
男\n”);
\t\t太太姓名:
%s\n"
else
printf(”性别:
女\n”);
printf(”\t\t丈夫姓名:
%s\n"
,Tree->
for(inti=0;
Tree->
data.num;
printf(”\t\t第%d个子女的姓名:
,i+1,(Tree-〉nextstr[i])—〉data.name);
if(((Tree—〉nextstr[i])—〉data.sex)==’b'
||((Tree->
nextstr[i])—〉data.sex)=='
printf(”性别:
男\n"
else
女\n”);
for(intj=0;
j〈Tree->
num;
j++)
//if((Tree-〉nextstr[j])—>
OutOneInfor(Tree-〉nextstr[j]);
getch();
voidOutOneInfor(PedTreeTree)//递归调用实现输出整个家谱树
printf(”\t\t——-***—--***———***-—-***---***-——***—-—\n"
printf(”\t\t姓名:
%s”,Tree-〉data。
sex==’b'
||Tree—〉data。
sex==’B’)
printf(”\t\t太太姓名:
%s\n”,Tree—〉data。
printf(”\t\t丈夫姓名:
i〈Tree-〉data.num;
printf(”\t\t第%d个子女的姓名:
%s"
i+1,(Tree—>
nextstr[i])—>
if(((Tree-〉nextstr[i])->
data.sex)==’b'
||((Tree-〉nextstr[i])—〉data.sex)=='
B'
)
printf(”性别:
女\n"
j〈Tree—〉data.num;
//if((Tree—〉nextstr[j])—〉data。
OutOneInfor(Tree—〉nextstr[j]);
voidShowMenu1(PedTreeTree)//显示要查找人的信息
PedTreeTempTree=NULL;
charName[20];
system(”cls”);
\t\t请输入你要查找的人的姓名:
%s”,Name);
/*if((TempTree=SearchPedTree(Tree,Name))!
=NULL)*/
if(SearchPedTree(Tree,Name,&TempTree))//在树中查找
\n\n\t\t—--—*-—-—*---—*-—-—*—-—-*-—-—*-——-*—-——*---—*-—-—*——-—\n”);
if(TempTree—〉parent!
=NULL)
,TempTree-〉data。
if((TempTree-〉data.sex)=='
b’||(TempTree—〉data。
sex)=='
//输出父母亲的姓名
if((TempTree-〉parent—〉data。
b’||(TempTree—〉parent-〉data.sex)==’B’)
printf(”\t\t父亲姓名:
%s\n”,TempTree->
parent-〉data。
printf(”\t\t母亲姓名:
%s\n”,TempTree—〉parent—〉data。
\t\t父亲姓名:
%s\n”,TempTree->
parent—>
data.spouse);
printf(”\t\t母亲姓名:
%s\n"
TempTree-〉parent-〉data.name);
\t\t姓名:
,TempTree->
if((TempTree—〉data.sex)==’b'
||(TempTree-〉data。
printf(”性别:
男\n”);
//输出配偶信息
if((TempTree-〉data.sex)==’b'
||(TempTree->
sex)==’B’)
printf(”\t\t太太姓名:
%s\n"
,TempTree—〉data。
printf(”\t\t丈夫姓名:
%s\n”,TempTree->
//输出孩子信息
if((TempTree->
num)!
printf(”\t\t孩子信息:
for(intj=0;
j〈TempTree—〉data.num;
PedTreeChildTree;
ChildTree=TempTree—>
nextstr[j];
if((ChildTree—〉data.sex)==’b’||(ChildTree—>
data.sex)==’B’)
printf(”\t\t—--—*—-—-*-—--*————*-———*—-——*--—-*----*—-——*—---*——-—\n\n"
}//if(SearchPedTree(Tree,Name,&TempTree))//在树中查找
elseif(SearchPedTree2(Tree,Name,&
TempTree))//在配偶中查找
printf(”\n\n\t\t----*-—--*---—*——--*—--—*—---*-———*----*—---*—-—-*--——\n"
\n\t\t你要找的人已找到,信息如下:
printf(”\t\t姓名:
TempTree->
if((TempTree—〉data。
b’||(TempTree—>
printf(”\n\t\t她已成为本家族的媳妇,所以父母信息不存在家谱中\n”);
\n\t\t丈夫姓名:
,TempTree—〉data.name);
\n\t\t他
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 家谱