家谱管理系统(含源代码)

2、edefstructTreeNode/树节点定义保存此人儿女个数保存此人姓名保存此人性别,男M女FstructTreeNode*NextNode20;/structTreeNode*Parent;/TreeNode;voidCreatTree(TreeNode*Tree);/voidOutPutAll(TreeNode*Tree);/保存此人的儿女,NextNode0里存放配偶的地址保存此节点的父节点创建树输出树TreeNode*SearchTree(TreeNode*Tree,charname,intlength);voidMainMe

3、nu(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;strcp

4、y(Tree-Name,0);MainMenu(Tree);/显示主菜单/添加新的成员voidAddNew(TreeNode*Tree)SubMenue2(Tree);/添加新成员界面/显示添加家庭信息的界面voidSubMenue2(TreeNode*Tree)charc;intnum;charname20;TreeNode*NewNode;getchar();while(1)system(cls);printf(请选择你的操作n);printf(A:添加某个人的子女的信息n);printf(B:添加某个人配偶的信息n);printf(C:退

5、出n);printf(请选择相应功能:n);c=getchar();switch(c)caseA:/添加子女信息printf(请输入那个人的名字:n);scanf(%s,name);Tree=SearchTree(Tree,name,20);/在家谱里查找这个人if(Tree=NULL)printf(”该家谱图中没有s这个人的信息请确认是否输入错误n,name);break;if(Tree-Parent=NULL&Tree-NextNode0=NULL|Tree-Parent!=NULL&Tree-Name!=Tree-Parent-NextNode0-Name)

6、printf(至今还没有配偶请先添加配偶n,Tree-Name);break;if(Tree-Parent=NULL&(Tree-Num20|Tree-NumNum=0;if(MATEFLAG=1)Tree=Tree-Parent;NewNode=(TreeNode*)malloc(sizeof(TreeNode);printf(请输入添加人员姓名:n);scanf(%s,NewNode-Name);printf(请输入添加人员性别女F男M:n);scanf(%1s,&NewNode-Kind);num=Tree-Num;NewNode-NextNode0=(TreeNod

7、e*)malloc(sizeof(TreeNode);NewNode-NextNode0=NULL;NewNode-Num=0;NewNode-Parent=Tree;Tree-NextNodenum+1=NewNode;Tree-Num=Tree-Num+1;printf(子女的信息添加成功n);break;caseB:printf(请输入那个人的名字:n);scanf(%s,name);Tree=SearchTree(Tree,name,20);if(Tree-Parent!=NULL&strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0

8、|Tree-NextNode0!=NULL)printf(已经有了配偶n);break;if(Tree=NULL)printf(”该家谱图中没有s这个人的信息请确认n,name);break;NewNode=(TreeNode*)malloc(sizeof(TreeNode);printf(请输入添加人员姓名:n);scanf(%s,NewNode-Name);printf(请输入添加人员性别女F男M:n);scanf(%1s,&NewNode-Kind);NewNode-Parent=Tree;Tree-NextNode0=NewNode;break;caseC:printf(

9、本项服务到此结束n);break;casen:break;default:printf(对不起!你的选择错误n);break;if(c=C|c=c)break;printf(请按Enter键继续操作n);getchar();getchar();/修改某个人的信息voidChange(TreeNode*Tree)charname20;TreeNode*NewNode;printf(请输入你要修改的人的信息:n);scanf(%s,name);NewNode=SearchTree(Tree,name,20);if(NewNode=NULL)print

10、f(”该家谱图中没有s这个人的信息请确认是否输入错误return;elseSubMenue1(NewNode);/输出副菜单voidSubMenue1(TreeNode*Tree)charc;intflag,i;charname20;charParent220;TreeNode*NewNode;getchar();while(1)system(cls);printf(请选择你的操作n);printf(A:修改个人的信息n);printf(B:修改父母的信息n);printf(C:修改兄弟姐妹的信息n);printf(D:修改子女的信息n);printf(E:修改配偶

11、的信息n);printf(F:退出n);c=getchar();switch(c)caseA:n,name);Enter键继续n);printf(请输入修改的姓名:如果不需要修改就输入0然后按scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-Name,name);printf(是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续n);scanf(%d,&flag);if(flag=1)if(Tree-Kind=F|Tree-Kind=f)Tree-Kind=M;elseTree-K

12、ind=F;printf(个人信息修改成功n);break;caseB:if(Tree-Parent=NULL)/判断是不是头节点printf(是这个家谱图里最顶端的人没有父母信息!n,name);break;if(MATEFLAG=1)/判断是不是入赘或加入此间的if(Tree-Kind=F|Tree-Kind=f)printf(她是嫁入此间的所以父母信息不在家谱内包括n);elseprintf(他是入赘此间的所以父母信息不在家谱内包括n);break;if(Tree-Parent-Kind=F|Tree-Parent-Kind=f)strcpy(Par

13、ent0,母亲);strcpy(Parent1,父亲);elsestrcpy(Parent0,父亲);strcpy(Parent1,母亲);printf(”请输入s要修改的姓名:如果不需要修改就输入0然后按Enter键继续n,Parent0);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-Parent-Name,name);printf(”请输入s要修改的姓名:如果不需要修改就输入0然后按Enter键继续n,Parent1);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-Paren

14、t-NextNode0-Name,name);printf(父母的信息修改成功n);break;caseC:NewNode=Tree-Parent;if(NewNode=NULL)/判断是不是头节点printf(是这个家谱图里最顶端的人没有兄弟姐妹信息!n,name);break;if(MATEFLAG=1)/判断是不是入赘或嫁入这家的if(Tree-Kind=F|Tree-Kind=f)printf(她是嫁入此间的所以兄弟姐妹信息不在家谱内包括n);elseprintf(他是入赘此间的所以兄弟姐妹信息不在家谱内包括n);break;if(NewNode-Num=1)

15、printf(没有兄弟姐妹n);break;elsefor(i=1;iNum;i+)if(NewNode-NextNodei-Name!=Tree-Name)printf(”请输入s修改的姓名:如果不需要修改就输入0然后按Enter键继续n,NewNode-NextNodei-Name);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(NewNode-NextNodei-Name,name);printf(是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续n);scanf(%d,&flag);if(f

16、lag=1)if(NewNode-NextNodei-Kind=G|NewNode-NextNodei-Kind=g)NewNode-NextNodei-Kind=B;elseNewNode-NextNodei-Kind=G;printf(兄弟姐妹的信息修改成功n);break;caseD:if(Tree-Num=0)printf(至今还没有子女n);break;if(Tree-Parent!=NULL)if(strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0)/如果他是入赘或者是嫁入的就需用配偶节点完成修改Tree=Tree-Pa

17、rent;for(i=1;iNum;i+)printf(请输入s修改的姓名:如果不需要修改就输入0然后按Enter键继续n,Tree-NextNodei-Name);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-NextNodei-Name,name);printf(是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续n);scanf(%d,&flag);if(flag=1)if(Tree-NextNodei-Kind=F|Tree-NextNodei-Kind=f)Tree-NextNodei-Ki

18、nd=M;elseTree-NextNodei-Kind=F;printf(子女的信息修改成功n);break;caseE:if(Tree-Parent!=NULL)if(Tree-NextNode0=NULL&strcmp(Tree-Name,Tree-Parent-NextNode0-Name)!=0)printf(至今还没有配偶n);break;if(strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0)printf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Tree-Parent-Name)

19、;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(至今还没有配偶n);elseprintf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Ente

20、r键继续nt,Tree-NextNode0-Name);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-NextNode0-Name,name);printf(配偶的信息修改成功n);break;caseF:printf(本项服务到此结束n);break;casen:break;default:printf(对不起!你的选择错误n);break;if(c=F|c=f)break;printf(请按Enter键继续操作n);getchar();getchar();/输出主菜单voidMainMenu(TreeN

21、ode*Tree)charc;/用于接受用户输入的选项charname20;while(1)system(cls);/清屏printf(欢迎进入家谱管理系统nnn);printf(”菜单nn);printf(输入家谱信息1n);printf(查找家族成员2n);printf(添加家族成员3n);printf(输出家谱信息4n);printf(修改成员信息5n);printf(退出6n);printf(nnn);printf(请选择相应的功能:n);c=getchar();switch(c)case1:TreeNode*NewNode;NewNode=(

22、TreeNode*)malloc(sizeof(TreeNode);/建立新节点printf(请输入姓名:);scanf(%s,Tree-Name);/给节点姓名赋值printf(请输入性别(女F,男M):);getchar();/给性别赋值scanf(%c,&(Tree-Kind);/Tree-Parent=NewNode;Tree-Parent=NULL;CreatTree(Tree);printf(家谱图已经建立成功n);printf(请按Enter键继续操作n);getchar();break;case2:if(str

23、cmp(Tree-Name,0)=0)printf(家谱图还未建立请先建立n);getchar();break;printf(请输入你要查找的人的姓名:n);scanf(%s,name);OutPutMessage(SearchTree(Tree,name,20),name,20);getchar();break;case3:if(strcmp(Tree-Name,0)=0)printf(家谱图还未建立请先建立n);getchar();break;AddNew(Tree);getchar();break;case4:if(strcmp(Tr

24、ee-Name,0)=0)printf(家谱图还未建立请先建立n);getchar();break;printf(整个家谱的主要信息如下:n);OutPutAll(Tree);getchar();break;case5:if(strcmp(Tree-Name,0)=0)printf(家谱图还未建立请先建立n);getchar();break;Change(Tree);getchar();break;case6:printf(本程序结束,欢迎下次使用。n);exit(0);break;casen:break;default:printf(您

25、输入错误,请重新输入。n);getchar();break;getchar();/创建树voidCreatTree(TreeNode*Node)inti;TreeNode*NewNode;NewNode=(TreeNode*)malloc(sizeof(TreeNode);Node-NextNode0=NewNode;/Node-NextNode0=NULL;printf(请输入s的子女的数目:n,Node-Name);scanf(%d,&(Node-Num);printf(请输入s的配偶的姓名:n,Node-Name);scanf(%s,NewNode-Name);if(

26、Node-Num)=0&strcmp(NewNode-Name,0)=0)return;if(Node-Kind=F|Node-Kind=f)/自动填写其配偶的性别NewNode-Kind=M;elseNewNode-Kind=F;NewNode-Num=0;NewNode-NextNode0=NULL;Node-NextNode0=NewNode;Node-NextNode0-Parent=Node;for(i=1;iNum;i+)NewNode=(TreeNode*)malloc(sizeof(TreeNode);printf(请输入s的第d子女的名字n”,Node-Name,i)

27、;scanf(%s,NewNode-Name);printf(”请输入s的第d子女的性别女F男M:n,Node-Name,i);getchar();scanf(%c,&NewNode-Kind);NewNode-Num=0;NewNode-Parent=Node;Node-NextNodei=NewNode;CreatTree(Node-NextNodei);/遍历并输出树中的内容voidOutPutAll(TreeNode*Tree)inti,flag=0;/flag记录节点的性别printf(%s性别:,Tree-Name);if(Tree-Kind=F|Tree-Kin

28、d=f)flag=1;printf(女n);elseprintf(男n);if(!(Tree-NextNode0)printf(至今没有配偶和子女n);return;if(flag=1)/flag=1表示性别为女printf(丈夫的姓名:%sn,Tree-NextNode0-Name);elseprintf(妻子的姓名:%sn,Tree-NextNode0-Name);for(i=1;iNum;i+)printf(”第4个子女的姓名别:,i,Tree-NextNodei-Name,Tree-NextNodei-Kind);if(Tree-NextNodei-Ki

29、nd=F|Tree-NextNodei-Kind=f)printf(女n);elseprintf(男n);for(i=1;iNum;i+)OutPutAll(Tree-NextNodei);/在树中经过遍历查找某个人TreeNode*SearchTree(TreeNode*Tree,charname,intlength)inti;TreeNode*NewNode;if(strcmp(Tree-Name,name)=0)if(length=0)MATEFLAG=1;elseMATEFLAG=0;returnTree;if(Tree-NextNode0=NULL)ret

30、urnNULL;for(i=0;iNum;i+):%s性if(i=0)NewNode=SearchTree(Tree-NextNodei,name,0);elseNewNode=SearchTree(Tree-NextNodei,name,20);if(NewNode!=NULL)returnNewNode;returnNULL;/输出已经查找到的人的信息voidOutPutMessage(TreeNode*Tree,charname,intlength)intflag=0,i;/flag标记性别TreeNode*NewNode;if(Tree=NULL)

31、printf(”该家谱图中没有s这个人n,name);return;printf(您找的人信息如下:n);printf(%s性别:,name);if(Tree-Kind=F|Tree-Kind=f)flag=1;/else标记的性别printf(女n);printf(男n);NewNode=Tree-Parent;父母信息放到NewNode里if(MATEFLAG=1)/此人为这家人的伴侣if(flag=1)/性别为女printf(她是嫁入这家的,所以父母信息不在家谱内包括n);printf(丈夫的姓名:%sn,NewNode-Name);else/性别为男printf(他是入赘这家的所以父母信息不在家谱内包括printf(妻子的姓名:%sn,NewNode-Name);if(NewNode-Num)0)/n);判断他(她)是否有孩子printf(孩子的信息如下:n);for(i=1;iNum;i+)printf(%s性别:,NewNode-NextNodei-Name);if(NewNode-NextNodei-Kind=F|NewNode-Kind=f)/输出他(她)的孩

THE END
1.C/C++家族关系查询系统[20241207]C/C++家族关系查询系统[2024-12-07] 47、家族关系查询系统 问题描述: 本程序的实质是完成对家谱成员信息的建立、查找、插入等功能。可以首先定义家族成员的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。 https://blog.csdn.net/qq_35960743/article/details/144319296
2.开题报告python计算机毕业设计的社团管理系统设计与实现(附源码)选择合适的技术框架和开发工具,如前端采用HTML、CSS、JavaScript等技术构建用户界面,后端采用Python或Java等语言实现业务逻辑,数据库可选用MySQL等关系型数据库。 系统开发阶段 按照系统设计的要求,进行各个功能模块的代码编写。在开发过程中,注重代码的规范性、可读性和可维护性。 https://zhuanlan.zhihu.com/p/9930991805
3.关于编程的一些术语及解释代码(code) —般情况下指的就是源代码(source code)。 托管(collocated) 通常指放在ISP处。 ? 注释(comment) 程序中不被计算机执行的部分,通常是为了向人类读者做说明而插在源码中。 Common Lisp ? Lisp语言的一种流行的方言,20世纪80年代由一个委员会设计。 编https://www.guhei.net/post/jb606
4.家谱族谱网站ASP源代码c语言家谱实现FamilyTree源代码.zip 兄弟孩子树实现家谱 上传者:weixin_45849757时间:2021-05-06 自已做的一套生成家族谱网站源码 自已做的一套生成家族谱网站源码。可以自动生成家族谱,操作方便,好用。 上传者:sunkingmovie时间:2014-01-05 软件工程数据库管理与信息系统课程设计家族族谱管理系统源代码.zip https://www.iteye.com/resource/laoyuweng442-3028871
5.[源码和文档分享]基于C语言实现的家谱管理系统一、项目简介 家谱是一种以表谱形式,记载一个以血缘关系为主体的家族世袭繁衍和重要任务事迹的特殊图书体裁。家谱是中国特有的文化遗产,是中华民族的三大文献(国史,地志,族谱)之一https://www.jianshu.com/p/dfa0b47197e2
6.家谱java源码51CTO博客已为您找到关于家谱java源码的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及家谱java源码问答内容。更多家谱java源码相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/jiapujavayuanma.html
7.数据结构课程设计方案(精选8篇)任务:实现具有下列功能的家谱管理系统 功能要求: 1).输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。 2).实现数据的存盘和读盘。3).以图形方式显示家谱。 https://www.360wenmi.com/f/filet8tgnq2p.html
8.C语言常用算法源代码码农集市专业分享IT编程学习资源C语言经典常用算法源代码,C语言经典常用算法源代码点赞(0) 踩踩(0) 反馈 所需:1 积分 电信网络下载 毕设项目:SMART系统-系统框架设计与开发(JAVA+源代码+文档) 2024-12-07 12:31:03 积分:1 偏最小二乘算法(PLS)2分类程序 2024-12-07 12:29:02 积分:1 https://www.coder100.com/index/index/content/id/727431
9.js家谱实现js家谱树形图家谱c语言腾讯云开发者社区假设我们展示的是几棵家谱。我们目前在族谱首页,我们需要我们的列表如下所示:家谱,,,Joneses,,Does 当用户单击Smith时,我们希望列表如下所示:史密斯一家史密斯DaveSteveDolly ? The Joneses Does 当用户单击Steve时,我们希望列表看起来也是这样:戴夫·史密斯史密斯DaveSteveDolly ? The Joneses Does 因此,我们需要https://cloud.tencent.com/developer/information/js%20%E5%AE%B6%E8%B0%B1%E5%AE%9E%E7%8E%B0-ask
10.离散数学的应用9篇(全文)它是传统的逻辑学、集合论(包括函数)、数论基础、算法设计、组合分析、离散概率、关系理论、图论与树、抽象代数、布尔代数,计算模型(语言与自动机)等汇集起来的一门综合学科。该课程主要介绍离散数学的各个分支的基本概念、基本理论和基本方法。这些概念、理论及方法大量地应用于数字电路、编译原理、数据结构、操作系统https://www.99xueshu.com/w/ikey1reksdah.html