数据结构家谱管理系统.doc

上传人:可**** 文档编号:92171380 上传时间:2023-05-31 格式:DOC 页数:38 大小:61.50KB
返回 下载 相关 举报
数据结构家谱管理系统.doc_第1页
第1页 / 共38页
数据结构家谱管理系统.doc_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《数据结构家谱管理系统.doc》由会员分享,可在线阅读,更多相关《数据结构家谱管理系统.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、/题目:家谱资料管理/要求:家谱用于记录某家族历代家族成员得情况与关系。现编制一个家谱资料管理软件,/实现对一个家族所有得资料进行收集整理。支持对家谱得增加,删除,更新,统计等./ilude sdi、h#include Name!=TrearenNetode0Nme)rintf(nts至今还没有配偶请先添加配偶”,TreeNme);ak;if(TreeParent=UL&(TNum20reeNm0)Tee-Num=0;f(MATLAG=) TeeTeePae;ewNode=(reNod*)alloc(sieo(Treeode));pritf(”nnt请输入添加人员姓名:nt);scaf(s”,

2、NNdeNme);pri(nt请输入添加人员性别女G男:nt”);scnf(1”,&NewNoe-Kin);nu=Tre-Num;NewNodeNextNode0=(TreNoe )mallo(sizef(TreNode));wode-NtNoe0NL;woe-N=;NewNoeart=re;Tree-Nexdu1=Newoe;Te-umTrNum+1; rnt(”t-子女得信息添加成功-);brea;case B: printf(nnt请输入那个人得名字:nt”);scnf(”%s”,ame);re=Searhree(Tree,nam,2);if(Teearet!=NULL&strcmp(T

3、re-Nam,TrePrenNxtode0Nae)=0|TrtNod!NUL)prntf(nnt已经有了配偶);brea;i(Tre=NULL)pintf(”nt*该家谱图中没有s这个人得信息请确认就是否输入错误*n”,am);bea;Newoe(TreeNod )malloc(sizeo(TeeNode));prinf(”nn请输入添加人员姓名:nt);scanf(”s,NewN-Nam);prntf(nt请输入添加人员性别女G男:nt”);scaf(%1,NeNode-Kind);NewNodePan=ee;TreeNextNode0NNode;break;case C: intf(”nt

4、-本项服务到此结束-”);brak; csen: bea;efault: print(nnt-对不起!您得选择不在服务范围之内!- );printf(n-请您再次选择所需得服务项!- ”);rnt(n-谢谢合作!-nt);beak;if (c=|c=c) /?brak; rint(”nnt-请按Ent键继续操作-);getchar();gtcr();/修改某个人得信息oid Cange(TeeNode ree) chr nae0;TeNode* NwNod;it(nt请输入您要修改得人得信息:nt); sanf(%s,nae);ewNod=Shree(Tre,name,0);if(ewNode

5、=ULL) prtf(”nnt*该家谱图中没有%这个人得信息请确认就是否输入错误*n,nae);etur;elseSubMenue1(ewd);/输出副菜单voi Subnu1(TreNod *ee)cac;it flag,i;cha nae2;char Pant220;TeeNoe NewNde;gethar();hile(1)sytem(cs);printf(”t); printf(nnt *-请选择您得操作-*- );rint(nt-*-A:修改个人得信息-*-*- );rintf(t-*-*-:修改父母得信息-*-*- );rin(nt-*-*-:修改兄弟姐妹得信息-*-*-*- ”)

6、;pn(nt-*-*-D:修改子女得信息*-*-*- );rintf(”nt-*-E:修改配偶得信息-*-*-*- ”);prntf(nt-*:退出-*-*-n”);c=gechar();witch()ca A: rinf(nnt请输入修改得姓名:如果不需要修改就输入然后按Ener键继续n”);can(”%s,ame);if(strcmp(name,0)!=0) rcy(ree-Name,name);rntf(nn就是否要修改性别:如果需要就输入1不需要修改就输入0然后按Entr键继续nt); saf(d,flag); f (fa=)if(Tee-Kind=GTre-ind=g)TreeKid

7、B;else Treeid=G;printf(”nt个人信息修改成功”);bea;cse B:f(eaentNULL) /判断就是不就是头节点prit(nt就是这个家谱图里最顶端得人没有父母信息!”,ne); break;if(MATEFA=) /判断就是不就是入赘或加入此间得i(eKidGTreeKn=g) prntf(n她就是嫁入此间得所以父母信息不在家谱内包括);elseprintf(”nnt她就是入赘此间得所以父母信息不在家谱内包括”);break;f(Tree-Parentind=G|reretKind=g)trcy(Paet0,母亲);rcpy(Prnt1,”父亲);lse str

8、cpy(Par0,父亲);rcpy(Pren1,母亲”);pintf(”nt请输入%s要修改得姓名:如果不需要修改就输入0然后按Ete键继续nt”,Parent);scanf(s,name);f(strcmp(na,)!=0)stpy(TeParenNe,nme);pintf(nnt请输入s要修改得姓名:如果不需要修改就输入然后按Ener键继续t,Parn);scan(”s,name);if(srcmp(name,0”)!=0)strcp(TrePartNextNode0-Name,name); pntf(”nnt-父母得信息修改成功-);brek;ce C:NwNoderee-Pret;if

9、(NewN=ULL) /判断就是不就是头节点prinf(就是这个家谱图里最顶端得人没有兄弟姐妹信息!,me); brea; (MAELAG=1) /判断就是不就是入赘或加入此间得i(TreKd=GTreeKidg) prinf(nn她就是嫁入此间得所以兄弟姐妹信息不在家谱内包括);elserinf(”nn她就是入赘此间得所以兄弟姐妹信息不在家谱内包括);bak;f(Nwode=1)print(nn没有兄弟姐妹”);reak;eseor(i1;iNewNodeNum;+)f(NewNodNextNdeiae!reName)printf(nn请输入%s修改得姓名:如果不需要修改就输入0然后按Eer

10、键继续nt,Newoe-etNdeiName);scan(”,nae);if(trmp(name,0)!0)rcpy(ewNoe-NextNoam,ne);rint(nt就是否要修改性别:如果需要就输入1不需要修改就输入0然后按Ener键继续nt);scaf(”d”,flg);if (flg=1)f(NewNodeNtNodeiKindGwNde-NextNdend=g)NewNde-NxtNodeiKind=B;s Newod-NexodKind=G; intf(nt-兄弟姐妹得信息修改成功-);eak;cas D:if(Tre-u=0)pritf(nt至今还没有子女);break;if (

11、Tee-Parent !NUL)f (strm(Treame,Te-Parnt-NexNd0Na)=0) /如果她就是入赘或者就是嫁入得就需用配偶节点完成修改Tree=Tree-Parnt;fo(i=1;i=Tree-Num;i+)pnf(nt请输入%修改得姓名:如果不需要修改就输入0然后按Ente键继续n,reeNexNoiNam);scnf(”s”,ame);if(strp(n,0)!=0)strcpy(Tre-NxNodeNae,n);rinf(nnt就是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续nt);canf(%d,flag);if(a=1)if(Tree

12、-NextNdeiind=reeNetNoi-id=g)reeNxtNodeiKnd=B;elsere-NeNoeKnd=G; printf(”n-子女得信息修改成功-);break;cse E:i(reParent!=L)i (TNextNoe0=NL&strmp(Teeae,Tree-Prent-Nextde0Nme)!=)printf(nt至今还没有配偶);reak;i (p(ee-ame,TParet-Nexoe0Nam)=0)prit(”nt请输入%s修改得姓名:如果不需要修改就输入0然后按Enter键继续nt,Tee-ParentNam);cf(”%s,name);if(trcmp

13、(nme,”)!=0)srcpy(reePren-Name,name);elseprint(”nnt请输入%修改得姓名:如果不需要修改就输入0然后按Eer键继续nt,Tree-exNod0ae);scf(”,name);i(strcmp(name,”0)!=0)strpy(TeeNetNde0-Name,name);eleif(TNextNde0=NULL)print(nnt至今还没有配偶);elepnt(nnt请输入s修改得姓名:如果不需要修改就输入然后按Entr键继续n”,Teextode0Name);scnf(”s”,nam);(strc(nae,0)!=0)strc(TreextNe0

14、-Nme,name); pint(nt-配偶得信息修改成功-”);brek;caseF: printf(nnt-本项服务到此结束-”);break; cae n: break;daut: prntf(”nnt-对不起!您得选择不在服务范围之内!-);rntf(nt-请您再次选择所需得服务项!-);rintf(”nt-谢谢合作!-nt);brek;if (c=Fc=f)brek; printf(n-请按Enter键继续操作-);getc();gtcar();/输出主菜单void ainMee(reeNoe Tre)char ;char name2;whie(1)sstem(”cs);printf

15、(”t); rintf(nnt -*-请选择您得操作-*);prinf(nt-A:输入家谱信息建立多叉树-);pintf(n-:在家族中查找某人并输出她或(她)得相应信息-”);tf(nt-C:添加新得成员-);prinf(n-D:输出整个家谱信息-);prinf(”nt-E:修改某个人得信息-);pritf(nt-:退出整个程序-n”);cgetcr();swtc(c)case :TeNde ewNode;NewNe=(reeode )allo(so(reNo));printf(nt请输入姓名:nt”);scanf(%s,TreeName);print(nt请输入性别女G男B:nt);etc

16、har();scanf(,&(TreeKind);Tree-Part=NewNo;Treearent=NULL;Createe(Tee);rintf(nt-家谱图已经建立成功-nn);pritf(nnt-请按Ente键继续操作-”);gtcar();break;cseB:if(strcmp(TreName,)=0)prnf(”nt家谱图得多叉树尚未建立请先建立树n”);geha();rk;pinf(nt请输入您要查找得人得姓名:);scaf(s,nme);utPuMssg(eacTre(Tee,name,20),name,20); print(nnt-*-*-*-*-*-*-nt”);getc

17、hr();break;case:i(strc(Tee-a,0”)=0)pintf(n家谱图得多叉树尚未建立请先建立树n”);gehar();brek;Addew(ree);getchr();bk;case :if(tmp(Teeam,)=0)rinf(nt家谱图得多叉树尚未建立请先建立树n);getchr();beak;pintf(t整个家谱得主要信息如下:”);uPtl(Tee);getr();break;caseE:if(strmp(Tree-Name,”0”)=0)prntf(nt家谱图得多叉树尚未建立请先建立树n);char();beak;Chage(Tre);gtchar();bre

18、ak;caseF: nt(nn-本次服务到此结束-);print(nt-欢迎下次使用-);int(”-谢谢-n”);ba;cae n: break;default: pit(”nnt-对不起!您得选择不在服务范围之内!-);prt(”-请您再次选择所需得服务项!-);rif(nt-谢谢合作!-t);getchar();beak;if (=F|c=)break;gehar();/创建树vid CreatTr(TreeNo *Node)iti;TeNod NewNode;Newode=(TreeNode )aloc(sizof(TreeNode)); NodeextNod0=eN;NNextNo=

19、NUL;/deant =NUL;prit(nt请输入得子女得数目:nt”,ode-Name); scaf(d”,&(Nde-Num));printf(nt请输入%s得配偶得姓名:nt”,Nod-Nme);scf(s”,NewNodeNam);if(Nodu)=0&strm(eNoeNae,”)=)rur ;f (oeKind=G|Node-in=)ewNoKindB;els NewNode-Kind=G;ewNde-um=0;de-NexNode0=NLL;Noe-NextNode0=NewNode;NodeNextNode0Parntoe;fo(=1;i=Node-Num;i+)Node(T

20、reede )aloc(sieof(TreNe));prif(”nt请输入%s得第%d子女得名字,NodNe,);canf(”%s,NewNdeNm);pif(”t请输入s得第%d子女得性别女G男:nt”,Nodeame,i);etcar();scan(c,&NewodeKid);NewNoeNum=0;NewNdePaet=Nde;Node-NxtNdei=Newod;CreatTee(NodeNexNodi);/遍历并输出树中得内容i OutPul(TreeNod *Tre)t i, flag0;rt(-*-*-*-*-*-*-*-);printf(”nt姓名:s 性别:,reeme);i

21、f (T-Ki=|TreKind=g)flag=1;printf(女”);elseinf(男);if (!(TrextNoe0)) printf(”nt至今没有配偶与子女n”);reurn; f(lg=1)pintf(nt丈夫姓名:s,TreeextNod0Nm);eseprintf(t妻子 姓名:s”,TrNextode0Name);for(=1;iNextoName,Tree-NextNodei);if (TeeNxtNodK=G|TreextNd-Kind=g)intf(”女);e prntf(”男);pint(nt);or(i=1;xtNodi);在树中经过遍历查找某个人TreNode

22、 SearchTree(eNo *Tree,chr nam,intlegth)int i;TreeNde *Nwode; if(srcmp(Treeame,nae)=0)if(lengt=0) MTEFAG=;else MTEFLAG=;reur Te;f(ree-NxtNde0=LL)reurn NUL;f(i=0;i=Tre-um;i+)if (i=0) NewNodeearchTree(TreNetde,nam,0);ese NewNode=SearchTree(reexNodi,nme,0);i (NewNe!=NLL) reuewde; un NL;/输出已经查找到得人得信息vdOtPutMesae(TreNod Tree,ha name,int lngth) int fla=0,i;TreNode *NwNode; rntf(nt*-*-*-*-);if(Tre=NU)pintf(”nt*该家谱图中没有%s这个人得信息请确认就是否输入错误*n,name); reur;rintf(nnt您所要找得人已经找到信息如下所示:”);rn(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁