家谱管理系统含源代码Word格式.docx
- 文档编号:17958769
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:21
- 大小:18.38KB
家谱管理系统含源代码Word格式.docx
《家谱管理系统含源代码Word格式.docx》由会员分享,可在线阅读,更多相关《家谱管理系统含源代码Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
TreeNode*SearchTree(TreeNode*Tree,charname[],intlength);
voidMainMenu(TreeNode*Tree);
voidSubMenue1(TreeNode*Tree);
voidSubMenue2(TreeNode*Tree);
voidChange(TreeNode*Tree);
voidAddNew(TreeNode*Tree);
voidOutPutMessage(TreeNode*Tree,charname[],intlength);
//主函数
voidmain()
TreeNode*Tree;
//产生根节点
Tree=(TreeNode*)malloc(sizeof(TreeNode));
Tree->
Parent=NULL;
strcpy(Tree->
Name,"
0"
);
MainMenu(Tree);
//显示主菜单
}
//添加新的成员
voidAddNew(TreeNode*Tree)
SubMenue2(Tree);
//添加新成员界面
//显示添加家庭信息的界面
voidSubMenue2(TreeNode*Tree)
charc;
intnum;
charname[20];
TreeNode*NewNode;
getchar();
while
(1)
system("
cls"
printf("
请选择你的操作\n"
A:
添加某个人的子女的信息\n"
B:
添加某个人配偶的信息\n"
C:
退出\n"
请选择相应功能:
\n"
c=getchar();
switch(c)
case'
A'
:
//添加子女信息
请输入那个人的名字:
scanf("
%s"
name);
Tree=SearchTree(Tree,name,20);
//在家谱里查找这个人
if(Tree==NULL)
该家谱图中没有%s这个人的信息请确认是否输入错误\n"
break;
if(Tree->
Parent==NULL&
&
NextNode[0]==NULL||Tree->
Parent!
=NULL&
N
ame!
=Tree->
Parent->
NextNode[0]->
Name)
至今还没有配偶请先添加配偶\n"
Tree->
Name);
(Tree->
Num>
20||Tree->
Num<
0))
Num=0;
if(MATEFLAG==1)
Tree=Tree->
Parent;
NewNode=(TreeNode*)malloc(sizeof(TreeNode));
请输入添加人员姓名:
NewNode->
请输入添加人员性别女F男M:
%1s"
&
NewNode->
Kind);
num=Tree->
Num;
NextNode[0]=(TreeNode*)malloc(sizeof(TreeNode));
NextNode[0]=NULL;
Parent=Tree;
NextNode[num+1]=NewNode;
Num=Tree->
Num+1;
子女的信息添加成功\n"
B'
strcmp(Tree->
Name,Tree->
Name)==0||T
ree->
NextNode[0]!
=NULL)
已经有了配偶\n"
该家谱图中没有%s这个人的信息请确认\n"
NextNode[0]=NewNode;
C'
本项服务到此结束\n"
\n'
default:
对不起!
你的选择错误\n"
if(c=='
||c=='
c'
)
请按Enter键继续操作\n"
//修改某个人的信息
voidChange(TreeNode*Tree)
请输入你要修改的人的信息:
NewNode=SearchTree(Tree,name,20);
if(NewNode==NULL)
return;
else
SubMenue1(NewNode);
//输出副菜单
voidSubMenue1(TreeNode*Tree)
intflag,i;
charParent[2][20];
修改个人的信息\n"
修改父母的信息\n"
修改兄弟姐妹的信息\n"
D:
修改子女的信息\n"
E:
修改配偶的信息\n"
F:
请输入修改的姓名:
如果不需要修改就输入'
0'
然后按Enter键继续\n"
if(strcmp(name,"
)!
=0)
Name,name);
是否要修改性别:
如果需要就输入'
1'
不需要修改就输入'
然后按Enter键
继续\n"
%d"
flag);
if(flag==1)
Kind=='
F'
||Tree->
f'
Kind='
M'
;
elseTree->
个人信息修改成功\n"
Parent==NULL)//判断
是不是头节点
是这个家谱图里最顶端的人没有父母信息!
if(MATEFLAG==1)//判断
是不是入赘或加入此间的
她是嫁入此间的所以父母信息不在家谱内包括\n"
他是入赘此间的所以父母信息不在家谱内包括\n"
strcpy(Parent[0],"
母亲"
strcpy(Parent[1],"
父亲"
请输入%s要修改的姓名:
然后按Enter键继续
Parent[0]);
Parent[1]);
父母的信息修改成功\n"
NewNode=Tree->
if(NewNode==NULL)//判断是不
是头节点
是这个家谱图里最顶端的人没有兄弟姐妹信息!
是不是入赘或嫁入这家的
她是嫁入此间的所以兄弟姐妹信息不在家谱内包括\n"
他是入赘此间的所以兄弟姐妹信息不在家谱内包括\n"
if(NewNode->
Num==1)
没有兄弟姐妹\n"
for(i=1;
i<
=NewNode->
i++)
NextNode[i]->
Name!
请输入%s修改的姓名:
然后按
Enter键继续\n"
strcpy(NewNode->
G'
||NewNode->
g'
elseNewNode->
兄弟姐妹的信息修改成功\n"
D'
Num==0)
至今还没有子女\n"
if(Tree->
Parent!
if(strcmp(Tree->
Name)==0)//
如果他是入赘或者是嫁入的就需用配偶节点完成修改
然后按Enter键继
续\n"
子女的信息修改成功\n"
E'
if
NextNode[0]==NULL&
Name)!
至今还没有配偶\n"
Name)==0)
\n\n\t请输入%s修改的姓名:
Enter键继续\n\t"
NextNode[0]==NULL)
配偶的信息修改成功\n"
//输出主菜单
voidMainMenu(TreeNode*Tree)
//用于接受用户输入的选项
//清屏
★★★★★★★★★★★★★欢迎进入家谱管理系统★★★★★★★★★
★★\n\n\n"
◆◆菜单◆◆\n\n"
●输入家谱信息---------------------1\n"
●查找家族成员---------------------2\n"
●添加家族成员---------------------3\n"
●输出家谱信息---------------------4\n"
●修改成员信息---------------------5\n"
●退出-----------------------------6\n"
\n\n★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★\n"
请选择相应的功能:
TreeNode*NewNode;
NewNode=(TreeNode*)malloc(sizeof(TreeNode));
//建立新节点printf("
请输入姓名:
"
scanf("
//给节点姓名赋值printf("
请输入性别(女F,男M):
getchar();
//给性别赋值scanf("
%c"
Kind));
//Tree->
Parent=NewNode;
Tree->
Parent=NULL;
CreatTree(Tree);
printf("
家谱图已经建立成功\n"
break;
case'
2'
if(strcmp(Tree->
)==0){printf("
家谱图还未建立请先建立\n"
}printf("
请输入你要查找的人的姓名:
OutPutMessage(SearchTree(Tree,name,20),name,20);
3'
}AddNew(Tree);
4'
}
整个家谱的主要信息如下:
OutPutAll(Tree);
5'
if(strcmp(Tree->
)==0)
Change(Tree);
6'
本程序结束,欢迎下次使用。
exit(0);
您输入错误,请重新输入。
voidCreatTree(TreeNode*Node)
inti;
TreeNode*NewNode;
Node->
//Node->
请输入%s的子女的数目:
Node->
(Node->
Num));
请输入%s的配偶的姓名:
if((Node->
Num)==0&
strcmp(NewNode->
return;
if(Node->
||Node->
)//自动填写其配偶的性别
Parent=Node;
=Node->
请输入%s的第%d子女的名字\n"
Name,i);
请输入%s的第%d子女的性别女F男M:
NextNode[i]=NewNode;
CreatTree(Node->
NextNode[i]);
//遍历并输出树中的内容
voidOutPutAll(TreeNode*Tree)
inti,flag=0;
//flag记录节点的性别
%s性别:
Kin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 家谱 管理 系统 源代码