家谱管理系统Word文档下载推荐.docx
- 文档编号:18012733
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:33
- 大小:99.79KB
家谱管理系统Word文档下载推荐.docx
《家谱管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《家谱管理系统Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
主函数
2.voidCreatTree(TreeNode*Tree):
创建家族树
3.voidOutPutAII(TreeNode*Tree):
显示家谱
4.voidMenue(TreeNode*Tree):
主菜单
5.voidSubMenue1(TreeNode*Tree):
副菜单(修改选项菜单)
6.voidChange(TreeNode*Tree):
修改家谱
7.
:
按照姓
按照生
输出按
TreeNode*SearchTree(TreeNode*Tree,charname[],intlength)
名查找家谱成员
8.TreeNode*SearchTree1(TreeNode*Tree,charbirth[],intlength)
日查找家谱成员
9.voidOutPutMessage(TreeNode*Tree,charname[],intlength)
姓名查找到的家谱成员
10.voidOutPutMessage1(TreeNode*Tree,charbirth[],intlength)
生日查找到的家谱成员
11.voidSaveFamily(TreeNode*root):
保存家谱
12.voidReadFamily(TreeNode**root):
读取家谱
三、数据结构
typedefstructTreeNode
{
charName[20];
〃记录这个人的姓名
charbirthday[20];
〃生日
intmarriage;
//婚否(1表示结婚,0表示没结婚)
intdeath;
//生死(1表示活着,0表示过世)
charKind;
//标示节点的种类有女G男B
charaddress[100];
〃住址
charlivemassage[50];
〃死亡日期(如果其已经死亡)
structTreeNode*NextNode[20];
//记录这个人的儿女
structTreeNode*Parent;
//记录这个节点的父节点
}TreeNode,*tree;
四、测试
第一组数据为:
爷爷,奶奶,爸爸,妈妈,我,二叔,二婶,姐姐,三叔,三婶,弟弟一共三代11个人。
其中爷爷是根节点,奶奶为爷爷的配偶,同时也是爷爷的第一个后继节点。
爸爸,二叔,三叔为爷爷的子女。
爸爸的配偶是妈妈,爸爸的子女是我。
二叔的配偶是二婶,子女是姐姐。
三叔的的配偶是三婶,三叔的的子女是弟弟。
进入程序之后,首先进行创建家谱,然后进行存盘,之后进行修改和查询等步骤。
退出程序在进入程序时,进行读盘。
之后在进行其他操作,程序完成之后退出即可。
图1家族树
是否憧在【1-弹在.0-去世1:
0
是否惟在【1-建在.0-去世}:
Q延否強任〔卜鰹在.0-去世〕;
0是否置在(1-建在.0-去世}:
{)
是否建在5-強在.0-去世}:
1
是否世在(1-遐在.0-去世}:
是否惟在5-強在.0-去世}:
是菁登在口堂在.俨去世}・】
足否傕在U-翌在.0-去世h1
眉苦登在口雙左.Q-去世H】
第一组数据测试截图为:
■'
CA.UiieTS^dirTiinXDeskTopVcechengrxc
--一*=&
*****--一«
*一一-*«
******4**«
*--一丰**一一一
甦容:
爷爷出生日期:
1944.的.沙姦庭住址:
山东宵'
tfi诉市性别:
R男
妄子娃名:
奶如是否傩冉M-佢右"
0壬世),0
蕭1个子女的姓名;
爸爸出生Sfe;
L^03.M家联庄址:
山东省临诉市性别E男笫2卒子女的注描:
二叔出生日期:
1970.M.05家嚏住址:
山东省临沂市性别总55第$佥子女的姓名;
三扭出生日禺J聊人此“1壯8專旺住址:
山东省询诉市性别E更
—=-旺宰*=“甘*一*2"
—***—-***-—^*^-2曲*—甘*―卑甘■—
姓名:
誉爸屮:
三订氏二9心.03.凤:
眾庭性址:
山东程首诉市性别;
B男
袁子吐名:
蚂垢是否健在□-健在"
0■去世h1
語1个子女的姓■名;
我出生日期;
1船&
10.23羸庭性址:
山东省临祈市性别B男
—-—st**—-=tw-—*«
"
-***—**^-—qt**—«
*-—-—
我出生日期:
1加反16加茶庭住址:
山东省临折市性别:
E勇
至今没有配偶和子女
—w*+-—啊*-_杠书_-——***—♦**—林*—-_申啤*—
妊茗:
二捉出生日期:
M刊.QB.曲妄庭住址]山朿省猶祈巾性别:
&
男
男子姓名:
二嫌是否腱在(1-健在.0■害世):
1
第1井子女的娃宕:
姐姐出生日期:
L991.14寰庭住址:
山东省临沂市愷别G女
林**—啊*—杠电_-***—*Mnjr****#*——噸時
姓茗:
姐爼出生日sa:
1991.02.14妄庭住址[山束省締祈巾性别r女
至今段有配同和子玄
n**»
**片_--*=t****#**»
*—*«
姓容:
三寂出生日期:
1977.02.14\8家處住址:
山东省临沂市性别:
E男
枣子姑弟:
三婢是否傩在订侵在.卜去世h1
爭1个子女的姓名;
第弟出生Sffi;
200L&
3..26家莊住址:
山东背临祈市性别E男
*=&
**甘******4*+n#***
素软描音半:
弟弟出兰旦期:
比01.03.25姦庭住址:
山东省临诉市性别:
E男是否储在〔1-弹在.0-去世匕
图2显示家谱
■"
■jC^.UsersWInnin\Desktop\kecheng.exe—□X
**********取迎憧用家族管芝集统科好**护
丄前入家谱悟息建立树E:
询出至吓家漕悟息:
長出三日期査找其人D:
按姓名査找菇人E:
憾改英个人的信息F:
9fi
适盘H;
退出竝平程序
D
请樹天你妾直找的人的姓名:
弟弟
您所要找的人己经找到信息掘下所示:
姓容:
弟站岀生日期;
2t»
LO3.25隸庭注址:
山东程苗沂市性别:
冃男是否健在〔1-健在,0-去世*1
母亲姓窑:
三莽
父茉姓名;
三叔
弟弟至今还世有配偶和萇手
图3按照姓名查找家族成员
独***戦神*欢迎使用家族营理察统抽*水检+林生
A输入姦悟佬息連宣树
B;
祐出翌伞富谱信息
心冬岀生三期査我菽人
D:
技姓老奁找菜人
E:
條改某牛人拘信息
F:
存盘
G:
读盘
出退出整■t■程序
*****眼存家ii*****
繭KX件宕及保存(ilS{eg:
D:
\\Mample.tst}:
IlJIAP「txt新理丈件成功.文件5.KS&
径为:
DA\JIAPLr.txt
图4存盘
第二组数据为:
图4王家家族树
第二组数据测试截屏为:
■冃C:
\U5eraVaclmin\Desktop\kechengtexe—OX
—■一请选择你的操作-_*申一
*-―He-*---A:
修改个人的信fi*—<
*«
•*~—*——+■——B:
修戒婕母的荷,£
—*——*——*—*—*——*——--—*---*—-*---c;
修卤子爻断悟ft——*---*——*——*——*---*——*—一一-一电£
};
遇出-*—一一*—-一車—乂—*—*—戢4
图5修改家族成员的信息
■fCMF&
ersVadmin^DesktopMcecheng.exe
**—-请迭择件的摄作-一****峰改■人討倍.&
—-—*—-*燔改父毋的嘀息一-*—*T蟻鑫芋立的信息■***
隸学妳注如果椅^改就納9和按聪M续
是售妾熔改性别:
如果需荽就进A'
1■不幣宴悔改扛袪人乜‘然后抗Enter膛進藝0
満输入修改的出生日期:
如果不需要廖改就输入P'
然后按EtU曲镇讎续0
谓输入幡改的家庭地址:
如果不需要修陵就输入然后按帥妊r锂錐逵0
个人信息修改成功
请按En^rSS堆蛭操作-一-懒软拼音半:
图6修改某个人的具体信息
图7按照生日查找某人
■C;
\Osers^admin\De5ktop\k.echeng.exe
**********窓迎便用家族普理聒疏=*=*=**
需岀整牛疙谱信息
C:
按出生日期査找某人
D:
按竝容査找果丸
修改棊伞人的信息
F:
G谨盘氐退出整牛程序
*****读慰家谱*祕艸
藏人丈件容及其蹄牡,以匣灰中垃取笨谱:
兗件£
及艮路径知:
\\exMple.txt):
E:
\\JIA.tst
图8读盘
五、源程序
#include<
stdio.h>
stdlib.h>
#inelude<
string.h>
#ifdefWIN32
#defineCLEARsystem("
cls"
)
#defineTipForSaveFilePositionprintf("
\t\t输入文件名及保存位置(eg:
\W\example.txt):
"
#defineTipForReadFilePositionprintf("
\t\t文件名及其路径(eg:
\W\example.txt):
#else
clear"
/home/xiong/example.txt):
#defineTipForReadFilePositionprintf("
#endif
#definemaxFileNameLen50//保存的文件名的最大长度
intFLAG=0;
inta=1;
intChildNum;
//记录这个人拥有几个儿女
voidCreatTree(TreeNode*Tree);
voidOutPutAII(TreeNode*Tree);
voidMenue(TreeNode*Tree);
voidSubMenue1(TreeNode*Tree);
voidSubMenue2(TreeNode*Tree);
voidChange(TreeNode*Tree);
voidAddNew(TreeNode*Tree);
TreeNode*SearchTree(TreeNode*Tree,charname[],intlength);
TreeNode*SearchTree1(TreeNode*Tree,charbirth[],intlength);
voidOutPutMessage(TreeNode*Tree,charname[],intlength);
voidOutPutMessage1(TreeNode*Tree,charbirth[],intlength);
voidSaveFamily(TreeNode*root);
voidReadFamily(TreeNode**root);
intmain()〃主函数
TreeNode*Tree;
//TreeNode**Tree1;
//Tree仁&
(*Tree);
Tree=(TreeNode*)malloc(sizeof(TreeNode));
Tree->
Parent=NULL;
strcpy(Tree->
Name,"
O"
);
Menue(Tree);
return0;
}
voidMenue(TreeNode*Tree)〃输出主菜单
/*TreeNode**Tree1;
Tree1=&
Tree;
*/
charc;
charname[20];
charbirth[20];
while
(1)
system("
printf("
\t"
\n\n\t\t**********
欢迎使用家族管理系统**********\n\n”);
\n\t\t
A:
输入家谱信息建立树"
B:
输出整个家谱信息"
C:
按出生日期查找某人"
按姓名查找某人"
E:
修改某个人的信息"
存盘"
G:
读盘"
H:
退出整个程序
\n\t"
c=getchar();
switch(c)
case'
A'
TreeNode*NewNode;
NewNode=(TreeNode*)malloc(sizeof(TreeNode));
printf("
\n\t请输入姓名:
scanf("
%s"
Tree->
Name);
\n\t请输入性别女G男B:
getchar();
%c"
&
(Tree->
Kind));
Parent=NewNode;
Parent=NULL;
〃
CreatTree(Tree);
//
\n\t家谱图已经建立成功\n\n"
\n\n\t请按Enter键继续操作"
break;
B'
if(strcmp(Tree->
0"
)==0)
\n\t家谱图的多叉树尚未建立请先建立树\n”);
\n\n\t整个家谱的主要信息如下:
”);
OutPutAII(Tree);
caseC:
birthday,"
)==O)
\n\t家谱图的多叉树尚未建立请先建立树\n"
\n\t请输入你要查找的出生日期:
scanf("
birth);
OutPutMessage1(SearchTree1(Tree,birth,2O),birth,2O);
\n\n\t-----*----*----*----*----*----*----*----*----*----*----\n\t"
getchar();
D'
\n\t请输入你要查找的人的姓名:
name);
OutPutMessage(SearchTree(Tree,name,20),name,20);
E'
Change(Tree);
F'
\n\t家谱图的多叉树尚未建立请先建立树
SaveFamily(Tree);
G'
/*if(strcmp(Tree->
}*/
ReadFamily(&
Tree);
\n"
H'
\n\n\t
本次服务到此结束
\n\t谢谢\n\n"
\n'
default:
\n\n\t对不起!
你的选择不在服务范围之内!
\n\t请您再次选择所需的服务项!
\n\t谢谢\n\t"
if(c=='
||c=='
f)
voidCreatTree(TreeNode*Node)//创建树
inti;
TreeNode*NewNode;
Node->
NextNode[0]=NewNode;
NextNode[0]=NULL;
\n\t请输入出生日期:
Node->
birthday);
\n\t请输入家庭住址:
”);
address);
\n\t请输入是否建在(1-是或0-否):
%d"
(Node->
death));
if(Node->
death==0)
\n\t请输入去世日期:
livemassage);
elseif(Node->
death=='
1'
\n\t仍然建在"
\n\t请输入%s的配偶的姓名(输入0代表没结婚):
NewNode->
if(strcmp(NewNode->
)!
=0)
{printf("
\t请输入配偶的出生日期:
&
(NewNode->
if(NewNode->
elseif(NewNode->
\n\t请输入%s的子女的数目(当子女输入0时便停止输入该成员有关信
息):
ChildNum));
if((Node->
ChildNum)==0&
strcmp(NewNode->
return;
Kind=='
||Node->
Kind=='
g'
NewNode->
Kind='
B:
else
ChildNum=0;
NextNode[0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 家谱 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)