欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构家谱管理系统(共40页).docx

    • 资源ID:14052132       资源大小:22.28KB        全文页数:40页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构家谱管理系统(共40页).docx

    精选优质文档-倾情为你奉上/题目:家谱资料管理/要求:家谱用于记录某家族历代家族成员的情况与关系。现编制一个家谱资料管理软件,/实现对一个家族所有的资料进行收集整理。支持对家谱的增加,删除,更新,统计等。/#include <stdio.h>#include <stdlib.h>#include <string.h>int MATEFLAG=0;typedef struct TreeNodeint Num; /记录这个人拥有几个儿女char Name20; /记录这个人的姓名char Kind; /标示节点的种类有女G男Bstruct TreeNode * NextNode20; /记录这个人的儿女struct TreeNode * Parent; /记录这个节点的父节点TreeNode;void CreatTree(TreeNode *Tree);void OutPutAll(TreeNode *Tree);TreeNode * SearchTree(TreeNode *Tree,char name,int length);void MainMenue(TreeNode *Tree);void SubMenue1(TreeNode * Tree);void SubMenue2(TreeNode *Tree);void Change(TreeNode * Tree);void AddNew(TreeNode * Tree);void OutPutMessage(TreeNode * Tree,char name,int length);/主函数void main()TreeNode *Tree;Tree=(TreeNode *)malloc(sizeof(TreeNode);Tree->Parent =NULL;strcpy(Tree->Name,"0"); MainMenue(Tree);/添加新的成员void AddNew(TreeNode * Tree)SubMenue2(Tree);/输出副菜单void SubMenue2(TreeNode *Tree) char c;int num;char name20;TreeNode * NewNode;getchar();while(1)system("cls");printf("t"); printf("nnt -*-请选择你的操作-*- ");printf("nt-*-*-*-A:添加某个人的子女的信息-*-*-*-*- ");printf("nt-*-*-*-B:添加某个人配偶的信息-*-*-*-*-*- ");printf("nt-*-*-*-C:退出-*-*-*-*-*-*-*-*-*-nt");c=getchar();switch(c)case 'A': printf("nnt请输入那个人的名字:nt");scanf("%s",name);Tree=SearchTree(Tree,name,20);if(Tree=NULL)printf("nnt*该家谱图中没有%s这个人的信息请确认是否输入错误*n",name);break;if(Tree->Parent=NULL&&Tree->NextNode0=NULL|Tree->Parent!=NULL&&Tree->Name!=Tree->Parent->NextNode0->Name)printf("nnt%s至今还没有配偶请先添加配偶",Tree->Name);break;if(Tree->Parent=NULL&&(Tree->Num>20|Tree->Num<0)Tree->Num=0;if(MATEFLAG=1) Tree=Tree->Parent;NewNode=(TreeNode *)malloc(sizeof(TreeNode);printf("nnt请输入添加人员姓名:nt");scanf("%s",NewNode->Name);printf("nnt请输入添加人员性别女G男B:nt");scanf("%1s",&NewNode->Kind);num=Tree->Num;NewNode->NextNode0=(TreeNode *)malloc(sizeof(TreeNode);NewNode->NextNode0=NULL;NewNode->Num=0;NewNode->Parent=Tree;Tree->NextNodenum+1=NewNode;Tree->Num=Tree->Num+1; printf("nnt-子女的信息添加成功-");break;case 'B': printf("nnt请输入那个人的名字:nt");scanf("%s",name);Tree=SearchTree(Tree,name,20);if(Tree->Parent!=NULL&&strcmp(Tree->Name,Tree->Parent->NextNode0->Name)=0|Tree->NextNode0!=NULL)printf("nnt已经有了配偶");break;if(Tree=NULL)printf("nnt*该家谱图中没有%s这个人的信息请确认是否输入错误*n",name);break;NewNode=(TreeNode *)malloc(sizeof(TreeNode);printf("nnt请输入添加人员姓名:nt");scanf("%s",NewNode->Name);printf("nnt请输入添加人员性别女G男B:nt");scanf("%1s",&NewNode->Kind);NewNode->Parent=Tree;Tree->NextNode0=NewNode;break;case 'C': printf("nnt-本项服务到此结束-");break; case 'n': break;default: printf("nnt-对不起!你的选择不在服务范围之内!- ");printf("nt-请您再次选择所需的服务项!- ");printf("nt-谢谢合作!-nt");break;if (c='C'|c='c') /?break; printf("nnt-请按Enter键继续操作-");getchar();getchar();/修改某个人的信息void Change(TreeNode * Tree) char name20;TreeNode * NewNode;printf("nt请输入你要修改的人的信息:nt"); scanf("%s",name); NewNode=SearchTree(Tree,name,20);if(NewNode=NULL) printf("nnt*该家谱图中没有%s这个人的信息请确认是否输入错误*n",name);return;else SubMenue1(NewNode);/输出副菜单void SubMenue1(TreeNode * Tree)char c;int flag,i;char name20;char Parent220;TreeNode * NewNode;getchar();while(1)system("cls");printf("t"); printf("nnt -*-请选择你的操作-*- ");printf("nt-*-*-*-A:修改个人的信息-*-*-*-*-*-*- ");printf("nt-*-*-*-B:修改父母的信息-*-*-*-*-*-*- ");printf("nt-*-*-*-C:修改兄弟姐妹的信息-*-*-*-*-*- ");printf("nt-*-*-*-D:修改子女的信息-*-*-*-*-*-*- ");printf("nt-*-*-*-E:修改配偶的信息-*-*-*-*-*-*- ");printf("nt-*-*-*-F:退出-*-*-*-*-*-*-*-*-*-nt");c=getchar();switch(c)case 'A': printf("nnt请输入修改的姓名:如果不需要修改就输入0然后按Enter键继续nt");scanf("%s",name);if(strcmp(name,"0")!=0) strcpy(Tree->Name,name);printf("nnt是否要修改性别:如果需要就输入'1'不需要修改就输入'0'然后按Enter键继续nt"); scanf("%d",&flag); if (flag=1)if(Tree->Kind='G'|Tree->Kind='g')Tree->Kind='B'else Tree->Kind='G'printf("nnt个人信息修改成功");break;case 'B':if(Tree->Parent=NULL) /判断是不是头节点printf("nt是这个家谱图里最顶端的人没有父母信息!",name); break;if (MATEFLAG=1) /判断是不是入赘或加入此间的if(Tree->Kind='G'|Tree->Kind='g') printf("nnt她是嫁入此间的所以父母信息不在家谱内包括");elseprintf("nnt他是入赘此间的所以父母信息不在家谱内包括");break;if(Tree->Parent->Kind='G'|Tree->Parent->Kind='g')strcpy(Parent0,"母亲");strcpy(Parent1,"父亲");else strcpy(Parent0,"父亲");strcpy(Parent1,"母亲");printf("nnt请输入%s要修改的姓名:如果不需要修改就输入0然后按Enter键继续nt",Parent0);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->Parent->Name,name);printf("nnt请输入%s要修改的姓名:如果不需要修改就输入0然后按Enter键继续nt",Parent1);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->Parent->NextNode0->Name,name); printf("nnt-父母的信息修改成功-");break;case 'C':NewNode=Tree->Parent;if(NewNode=NULL) /判断是不是头节点printf("nt是这个家谱图里最顶端的人没有兄弟姐妹信息!",name); break;if (MATEFLAG=1) /判断是不是入赘或加入此间的if(Tree->Kind='G'|Tree->Kind='g') printf("nnt她是嫁入此间的所以兄弟姐妹信息不在家谱内包括");elseprintf("nnt他是入赘此间的所以兄弟姐妹信息不在家谱内包括");break;if(NewNode->Num=1)printf("nnt没有兄弟姐妹");break;elsefor(i=1;i<=NewNode->Num;i+)if(NewNode->NextNodei->Name!=Tree->Name)printf("nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt",NewNode->NextNodei->Name);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(NewNode->NextNodei->Name,name);printf("nnt是否要修改性别:如果需要就输入'1'不需要修改就输入'0'然后按Enter键继续nt");scanf("%d",&flag);if (flag=1)if(NewNode->NextNodei->Kind='G'|NewNode->NextNodei->Kind='g')NewNode->NextNodei->Kind='B'else NewNode->NextNodei->Kind='G' printf("nnt-兄弟姐妹的信息修改成功-");break;case 'D':if(Tree->Num=0)printf("nnt至今还没有子女");break;if (Tree->Parent !=NULL)if (strcmp(Tree->Name,Tree->Parent->NextNode0->Name)=0) /如果他是入赘或者是嫁入的就需用配偶节点完成修改Tree=Tree->Parent;for(i=1;i<=Tree->Num;i+)printf("nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt",Tree->NextNodei->Name);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->NextNodei->Name,name);printf("nnt是否要修改性别:如果需要就输入'1'不需要修改就输入'0'然后按Enter键继续nt");scanf("%d",&flag);if (flag=1)if(Tree->NextNodei->Kind='G'|Tree->NextNodei->Kind='g')Tree->NextNodei->Kind='B'else Tree->NextNodei->Kind='G' printf("nnt-子女的信息修改成功-");break;case 'E':if(Tree->Parent!=NULL)if (Tree->NextNode0=NULL&&strcmp(Tree->Name,Tree->Parent->NextNode0->Name)!=0)printf("nnt至今还没有配偶");break;if (strcmp(Tree->Name,Tree->Parent->NextNode0->Name)=0)printf("nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt",Tree->Parent->Name);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->Parent->Name,name);elseprintf("nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt",Tree->NextNode0->Name);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->NextNode0->Name,name);elseif(Tree->NextNode0=NULL)printf("nnt至今还没有配偶");elseprintf("nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt",Tree->NextNode0->Name);scanf("%s",name);if(strcmp(name,"0")!=0)strcpy(Tree->NextNode0->Name,name); printf("nnt-配偶的信息修改成功-");break;case 'F': printf("nnt-本项服务到此结束-");break; case 'n': break;default: printf("nnt-对不起!你的选择不在服务范围之内!-");printf("nt-请您再次选择所需的服务项!-");printf("nt-谢谢合作!-nt");break;if (c='F'|c='f')break; printf("nnt-请按Enter键继续操作-");getchar();getchar();/输出主菜单void MainMenue(TreeNode *Tree)char c;char name20;while(1)system("cls");printf("t"); printf("nnt -*-请选择你的操作-*-");printf("nt-A:输入家谱信息建立多叉树-");printf("nt-B:在家族中查找某人并输出他或(她)的相应信息-");printf("nt-C:添加新的成员-");printf("nt-D:输出整个家谱信息-");printf("nt-E:修改某个人的信息-");printf("nt-F:退出整个程序-nt");c=getchar();switch(c)case 'A':TreeNode * NewNode;NewNode=(TreeNode *)malloc(sizeof(TreeNode);printf("nt请输入姓名:nt");scanf("%s",Tree->Name);printf("nt请输入性别女G男B:nt");getchar();scanf("%c",&(Tree->Kind);Tree->Parent=NewNode;Tree->Parent=NULL;CreatTree(Tree);printf("nt-家谱图已经建立成功-nn");printf("nnt-请按Enter键继续操作-");getchar();break;case 'B':if(strcmp(Tree->Name,"0")=0)printf("nt家谱图的多叉树尚未建立请先建立树n");getchar();break;printf("nt请输入你要查找的人的姓名:nt");scanf("%s",name);OutPutMessage(SearchTree(Tree,name,20),name,20); printf("nnt-*-*-*-*-*-*-*-*-*-*-nt");getchar();break;case 'C':if(strcmp(Tree->Name,"0")=0)printf("nt家谱图的多叉树尚未建立请先建立树n");getchar();break;AddNew(Tree);getchar();break;case 'D':if(strcmp(Tree->Name,"0")=0)printf("nt家谱图的多叉树尚未建立请先建立树n");getchar();break;printf("nnt整个家谱的主要信息如下:");OutPutAll(Tree);getchar();break;case 'E':if(strcmp(Tree->Name,"0")=0)printf("nt家谱图的多叉树尚未建立请先建立树n");getchar();break;Change(Tree);getchar();break;case 'F': printf("nnt-本次服务到此结束-");printf("nt-欢迎下次使用-");printf("nt-谢谢-nn");break;case 'n': break;default: printf("nnt-对不起!你的选择不在服务范围之内!-");printf("nt-请您再次选择所需的服务项!-");printf("nt-谢谢合作!-nt");getchar();break;if (c='F'|c='f')break;getchar();/创建树void CreatTree(TreeNode *Node)int i;TreeNode *NewNode;NewNode=(TreeNode *)malloc(sizeof(TreeNode); Node->NextNode0=NewNode;Node->NextNode0=NULL;/Node->Parent =NULL;printf("nt请输入%s的子女的数目:nt",Node->Name); scanf("%d",&(Node->Num);printf("nt请输入%s的配偶的姓名:nt",Node->Name);scanf("%s",NewNode->Name);if(Node->Num)=0&&strcmp(NewNode->Name,"0")=0)return ;if (Node->Kind='G'|Node->Kind='g')NewNode->Kind='B'else NewNode->Kind='G'NewNode->Num=0;NewNode->NextNode0=NULL;Node->NextNode0=NewNode;Node->NextNode0->Parent=Node;for(i=1;i<=Node->Num;i+)NewNode=(TreeNode *)malloc(sizeof(TreeNode);printf("nt请输入%s的第%d子女的名字nt",Node->Name,i);scanf("%s",NewNode->Name);printf("nt请输入%s的第%d子女的性别女G男B:nt",Node->Name,i);getchar();scanf("%c",&NewNode->Kind);NewNode->Num=0;NewNode->Parent=Node;Node->NextNodei=NewNode;CreatTree(Node->NextNodei);/遍历并输出树中的内容void OutPutAll(TreeNode *Tree)int i, flag=0;printf("nt-*-*-*-*-*-*-*-*-*-");printf("nt姓名:%s 性别:",Tree->Name);if (Tree->Kind='G'|Tree->Kind='g')flag=1;printf("女");else printf("男");if (!(Tree->NextNode0) printf("nt至今没有配偶和子女n");return; if(flag=1)printf("nt丈夫 姓名:%s",Tree->NextNode0->Name);elseprintf("nt妻子 姓名:%s",Tree->NextNode0->Name);for(i=1;i<=Tree->Num;i+)printf("nt第%d个子女的姓名:%s 性别:",i,Tree->NextNodei->Name,Tree->NextNodei->Kind);if (Tree->NextNodei->Kind='G'|Tree->NextNodei->Kind='g')printf("女");else printf("男");printf("nt");for(i=1;i<=Tree->Num;i+)OutPutAll(Tree->NextNodei);/在树中经过遍历查找某个人TreeNode * SearchTree(TreeNode *Tree,char name,int length)int i;TreeNode *NewNode; if(strcmp(Tree->Name,name)=0)if(length=0) MATEFLAG=1;else MATEFLAG=0;return Tree;if(Tree->NextNode0=NULL)return NULL;for(i=0;i<=Tree->Num;i+)if (i=0) NewNode=SearchTree(Tree->NextNodei,name,0); else NewNode=SearchTree(Tree->NextNodei,name,20);if (NewNode!=NULL) return NewNode; return NULL;/输出已经查找到的人的信息void OutPutMessage(TreeNode * Tree,char name,int length) int flag=0,i;TreeNode *NewNode; printf("nnt-*-*-*-*-*-*-*-*-*-*-");if(Tree=N

    注意事项

    本文(数据结构家谱管理系统(共40页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开