家谱管理系统样本

合集下载

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

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

家谱管理系统一一C语言(数据结构)目的和要求:树形结构是一种非常重要的非线性结构,它用于描述数据元素之间的层次关系,人类家谱是树形结构的典型体现,通过此项训练让学生掌握树形结构的知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历,和二叉树相关的一些运算;要求完成家谱信息的录入和保存,任意成员的查找及某一成员祖先、子孙、兄弟、堂兄弟的查找。

排答疑和辅导。

完整代码:#include<stdio.h>#include<stdlib.h>#include<string.h>intMATEFLAG=0;//是否入赘或嫁入这家的,1表示为是,0表示否typedefstructTreeNode//树节点定义{intNum;//保存此人儿女个数charName[20];//保存此人姓名charKind;〃保存此人性别,男M,女FstructTreeNode*NextNode[20];〃保存此人的儿女,NextNode[0]里存放配偶的地址structTreeNode*Parent;//保存此节点的父节点}TreeNode;voidCreatTree(TreeNode*Tree);〃创建树voidOutPutAII(TreeNode*Tree);//输出树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[],intIength);//主函数voidmain(){TreeNode*Tree;//产生根节点Tree=(TreeNode*)maIIoc(sizeof(TreeNode));Tree->Parent=NULL;MainMenu(Tree);//显示主菜单}//添加新的成员voidAddNew(TreeNode*Tree){SubMenue2(Tree);〃添加新成员界面}//显示添加家庭信息的界面voidSubMenue2(TreeNode*Tree){charc;intnum;charname[20];TreeNode*NewNode;getchar();while(1){请选择你的操作添加某个人的子女的信息添加某个人配偶的信息退出请选择相应功能:c=getchar();switch(c){case'A'://添加子女信息请输入那个人的名字Tree=SearchTree(Tree,name,20);〃在家谱里查找这个人if(Tree==NULL){该家谱图中没有%$这个人的信息请确认是否输入错误break;}if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree->Parent!=NULL&&Tree->Name!=Tr ee->Parent->NextNode[0]->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));请输入添加人员姓名请输入添加人员性别女F男num=Tree->Num;NewNode->NextNode[0]=(TreeNode*)malloc(sizeof(TreeNode));NewNode->NextNode[0]=NULL;NewNode->Num=0;NewNode->Parent=Tree;Tree->NextNode[num+1]=NewNode;Tree->Num=Tree->Num+1;子女的信息添加成功break;case'B':请输入那个人的名字Tree=SearchTree(Tree,name,20);if(Tree->Parent!=NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0||Tree-> NextNode[0]!=NULL){已经有了配偶break;}if(Tree==NULL){该家谱图中没有%$这个人的信息请确认break;}NewNode=(TreeNode*)malloc(sizeof(TreeNode));请输入添加人员姓名请输入添加人员性别女F男NewNode->Parent=Tree;Tree->NextNode[0]=NewNode;break;case'C':本项服务到此结束break;case'':break;default:对不起!你的选择错误break;}if(c=='C'||c=='c')break;请按Enter键继续操作getchar();getchar();}}//修改某个人的信息voidChange(TreeNode*Tree){charname[20];TreeNode*NewNode;请输入你要修改的人的信息NewNode=SearchTree(Tree,name,20);if(NewNode==NULL){该家谱图中没有%$这个人的信息请确认是否输入错误return;}else{SubMenue1(NewNode);}}//输出副菜单voidSubMenue1(TreeNode*Tree){charc;intflag,i;charname[20];charParent[2][20];TreeNode*NewNode;getchar();while(1){请选择你的操作修改个人的信息修改父母的信息修改兄弟姐妹的信息修改子女的信息修改配偶的信息退出c=getchar();switch(c){case'A':请输入修改的姓名:如果不需要修改就输入'0'然后按Enter键继续Tree->NextNode[i]->Kind='M';elseTree->NextNode[i]->Kind='F';}}子女的信息修改成功break;case'E':if(Tree->Parent!=NULL){if(Tree->NextNode[0]==NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)!=0) {至今还没有配偶break;}if(strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0){请输入%$修改的姓名:如果不需要修改就输入'0'然后按Enter键继续strcpy(Tree->Parent->Name,name);}else{请输入%$修改的姓名:如果不需要修改就输入'0'然后按Enter键继续strcpy(Tree->NextNode[0]->Name,name);}}else{if(Tree->NextNode[0]==NULL)至今还没有配偶else{请输入%$修改的姓名:如果不需要修改就输入'0'然后按Enter键继续strcpy(Tree->NextNode[0]->Name,name);}配偶的信息修改成功break;case'F':本项服务到此结束break;case'':break;default:对不起!你的选择错误break;}if(c=='F'||c=='f')break;请按Enter键继续操作getchar();getchar();}}//输出主菜单voidMainMenu(TreeNode*Tree){charc;〃用于接受用户输入的选项charname[20];while(1){清屏★★★★★★★★★★★★★欢迎进入家谱管理系统^★★★★★★★★★★♦♦菜单♦♦输入家谱信息查找家族成员添加家族成员输出家谱信息修改成员信息退出★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★请选择相应的功能:c=getchar();switch(c){caseT:TreeNode*NewNode;NewNode=(TreeNode*)malloc(sizeof(TreeNode));//建立新节点请输入姓名给节点姓名赋值请输入性别(女F,男if(flag==1)//flag=1表示性别为女丈夫的姓名else妻子的姓名for(i=1;i<=Tree->Num;i++){第%4个子女的姓名别if(Tree->NextNode[i]->Kind=='F'||Tree->NextNode[i]->Kind=='f')女else男}for(i=1;i<=Tree->Num;i++){OutPutAll(Tree->NextNode[i]);}}//在树中经过遍历查找某个人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->NextNode[0]==NULL)returnNULL;for(i=0;i<=Tree->Num;i++):%s性if(i==0)NewNode=SearchTree(Tree->NextNode[i],name,0);elseNewNode=SearchTree(Tree->NextNode[i],name,20);if(NewNode!=NULL)returnNewNode;}returnNULL;}//输出已经查找到的人的信息voidOutPutMessage(TreeNode*Tree,charname[],intlength){intflag=0,i;//flag标记性别TreeNode*NewNode;if(Tree==NULL){该家谱图中没有%s这个人return;}您找的人信息如下性别if(Tree->Kind=='F'||Tree->Kind=='f'){flag=1;//标记的性别女}else男NewNode=Tree->Parent;〃父母信息放到NewNode里if(MATEFLAG==1)〃此人为这家人的伴侣{if(flag==1)〃性别为女{她是嫁入这家的,所以父母信息不在家谱内包括丈夫的姓名}else//性别为男{他是入赘这家的所以父母信息不在家谱内包括妻子的姓名}if((NewNode->Num)>0)//判断他(她)是否有孩子{孩子的信息如下//输出他(她)的孩子的信息for(i=1;i<=NewNode- >Num;i++){性别女else男}}return;}if(NewNode==NULL)//判断它是不是根节点如果是的话就没有父母兄弟信息是这个家谱图里最顶端的人else{if(NewNode->Kind=='F'||NewNode->Kind=='f')//判断父亲节点是父亲还是母亲{//输出他(她)的父母亲的信息母亲的姓名父亲的姓名}else{母亲的姓名父亲的姓名}if(NewNode->Num>1)//判断他(她)是否有兄弟姐妹{//输出他(她)的兄弟姐妹的信息的兄弟姐妹信息如下for(i=1;i<=NewNode->Num;i++){if(NewNode->NextNode[i])性别if(NewNode->NextNode[i]->Kind=='F'||Tree->Kind=='f')女elseif(Tree->NextNode[i]->Kind=='F'||Tree->Kind=='f')女elseelse至今还没有孩子}else至今还没有配偶和孩子} 男} } else 没有兄弟姐妹} if(Tree->NextNode[0]!=NULL)(她)的配偶的信息if(flag==1)丈夫的姓名else妻子的姓名 if(Tree->Num>0) 孩子的信息如下{性别 //判断他(她)是否有配偶{//判断他(她)是否有孩子{输出他(她)的孩子的信息//输出他 for(i=1;i<=Tree->Num;i++)。

数据结构家谱管理系统二叉链表样本

数据结构家谱管理系统二叉链表样本

《项目实训二》项目名称__ 家谱管理系统__ 姓名__ ___________ 班级 __ _______________ 学号__ ________________ 指引教师__ __________ __.1模块划分:1、记录模块(1)记录家族总人数、健在人数、几代人(2)重要函数:int Generation(Node *root);//这个家族共有几代人int NumberOfPeople( );//家族总人数int LifeNum( );//健在人数(3)实现办法:静态成员变量(4)实现成果:2、更新模块(1)创立家谱、增长成员、删除成员、成员改名(2)重要函数:Node* Creat( );//构造函数调用void AddNewPeople(Node *root,string FatherName,string NAme);//增长新家族成员int DeletePeople(Node *root,string FatherName,string Deletepeople);//删除家族成员int SetNewName(Node *root,string NAme,string NewName);//更改姓名(3)实现办法:创立家谱和成员改名重要通过递归调用;增长成员和删除成员重要通过栈非递归调用。

(4)实现成果:3、查询模块(1)查询成员详细信息、查询成员孩子以及孩子详细信息(2)重要函数:int Message(Node *root,string Name);//显示该成员基本信息int FindChild(Node *root,string NAme);//显示孩子信息(3)实现办法:通过递归调用,找到成员,输出相应信息(4)实现成果:4、显示模块(1)前序、中序、后序遍历家谱(2)重要函数:void PreOrder(Node *root);//前序递归遍历输出家谱void InOrder(Node *root);//中序递归遍历输出家谱void PostOrder(Node *root);//后序递归遍历输出家谱(3)实现办法:递归遍历(4)实现成果:5、文献模块(1)保存到文献、从文献读取(2)重要函数:void SaveToFile(Node *root);//保存到文献void FileToFamilyTree( Node *root) ;//从文献中读取(3)实现办法:文献流(4)实现成果:实验成果及分析1、创立家谱2、保存到文献3、读取文献4、增长成员5、基本信息6、查询成员信息7、成员改名8、遍历家谱9、查询孩子信息10、删除成员。

族谱家谱制作模板

族谱家谱制作模板

制作族谱家谱的模板可以根据个人或家族的特定需求进行调整,但通常应包含以下几个基本部分:
封面
家族名称
族谱/家谱名称
制作日期或修订日期
制作人或修订人
目录
列出族谱家谱中的所有章节和页码,方便读者查找。

引言或前言
简要介绍家族的起源、历史、传统等。

感谢参与制作和贡献的家族成员。

家族世系图
以图表形式展示家族的世系关系,包括各代祖先的名字、生卒年份、配偶等信息。

家族传记
详细介绍家族的重要事件、历史变迁、成就等。

可以包括家族成员的传记、家族故事、传统习俗等。

家族成员名录
列出当前家族成员的名字、关系、出生年份等信息。

可以按照年龄、性别或其他标准进行排序。

照片和插图
插入家族成员的照片、家族活动照片、家族故居照片等。

插入家族徽章、族谱家谱插图等。

附录
提供参考资料、参考文献、家族网站或联系方式等额外信息。

可以包括致谢、鸣谢、捐赠者名单等。

请注意,以上只是一个基本的族谱家谱制作模板,具体的内容和格式应根据个人或家族的需
求进行调整。

同时,制作族谱家谱需要仔细校对和审核,确保信息的准确性和完整性。

家谱管理系统设计

家谱管理系统设计

家谱管理系统设计(共18页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《软件综合设计》家谱管理系统院系:计算机科学技术学院二系班级:计11 – 2班姓名:刘文秀(15)合作者:姜雪(05) 、岳奉宜(33)指导教师:薛曼玲2013 年 12 月 01 日《软件综合设计》任务书一、题目:家谱管理系统二、设计要求(1)刘文秀(组长)、姜雪和岳奉宜组成课程设计小组。

(2)小组成员分工协作完成。

要求每个成员有自己相对独立的模块,,同时要了解其他组员完成的内容。

(3)查阅相关资料,自学具体课题中涉及到的新知识。

(4)采用结构化、模块化程序设计方法设计,功能要完善,界面美观。

(5)所设计的系统应有菜单、动画和音乐。

(6)按要求写出课程设计报告,并于设计结束后1周内提交。

其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求分析、总体设计、详细设计、程序的调试与测试、总结与体会、结束语、程序清单(带中文注释)、参考文献等。

报告一律用A4纸打印,正文的中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。

1级标题中文字体为黑体,西文字体为Time New Roma,采用三号字;段落为居中、段前18磅、段后12磅、行距采用“固定值”18磅,首行缩进:无,段中不分页,与下段同页。

仅一级标题上目录。

三、课程设计工作量由于是设计小组团结协作完成设计任务,一般每人的程序量在400行有效程序行以上,不得抄袭。

四、课程设计工作计划2013年12月2日,指导教师讲课,学生根据题目准备资料,需求分析;2013年12月3日,设计小组进行总体方案设计和任务分工;2013年12月4日~2013年12月10日,每人完成自己承担的程序模块并通过独立编译;2013年12月11日~12日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;2013年12月13日,验收、开始撰写课程设计报告;2013年12月18日前,提交课程设计报告和软件。

家谱族谱宗谱样本(唐氏家谱)

家谱族谱宗谱样本(唐氏家谱)

重庆市铜梁唐氏家谱主编:XXX执笔:XXX目录第1章字辈谱 (5)1.1祖谱传下来的字辈谱(40字) (5)1.2祖谱的字辈谱续写(增加20字) (5)1.3唐氏其他版本字辈谱(仅供参阅) (5)第2章世系总图 (6)第3章谱序 (7)3.1关于唐姓的起源与演变 (7)3.2关于唐姓迁徙分布 (8)3.3当代唐姓的情况 (8)3.4唐姓血型 (9)3.5唐姓的传统文化——郡望 (9)3.6唐姓的传统文化——堂号 (10)第4章家谱凡例 (11)4.1字辈谱传承规范 (11)4.2唐氏族人取名原则 (11)4.3续谱原则 (11)4.4本谱纪年原则 (11)4.5本谱入谱人员范围 (12)4.6本谱世系本源书写规范 (12)4.7人物录及传记 (13)4.8修谱期限 (13)4.9其他 (14)3 / 44第5章家风---家训家规 (15)5.1家规文化(十二条) (15)5.2家训文化 (17)第6章传记及人物录 (21)6.1人物传——第四世 (21)《XX字辈》奋斗史 (21)6.2祖居录——XX屋基 (22)《XX屋基》由来及历史变迁 (22)6.3人物录 (25)第7章谱系本源 (26)7.1唐氏族人的详细本源记录 (26)一、第一世 (26)二、第二世 (27)三、第三世 (28)四、第四世 (29)五、第五世 (31)六、第六世 (33)七、第七世 (34)八、第八世 (35)后记1第1章字辈谱1.1祖谱传下来的字辈谱(40字)惠星照海全,萬里奉春軒;宏發坤德盛,安邦定國賢;家和祖太平,壽域永其昌;開明朝先慶,福禄文光庭;1.2祖谱的字辈谱续写(增加20字)惠星照海全,萬里奉春軒;宏發坤德盛,安邦定國賢;家和祖太平,壽域永其昌;開明朝先慶,福禄文光庭;志高谋贵官,忠孝添声振;睿智遗后泽,宗族旺世延;1.3唐氏其他版本字辈谱(仅供参阅)根据唐氏七修族谱记载,我唐氏历代修谱,均列有字辈,在光绪十九年第五修时进行规范,曾制定(40字)字辈字。

现代家谱制作软件格式图电子版

现代家谱制作软件格式图电子版

现代家谱制作软件格式图电子版
现在都是互联网时代,很多人都很多人都与时俱进选择电子家谱,网上电子家谱使用非常方便,只要注册账号登录就可以免费将家族成员信息录入,在录入过程中还能预览家谱样例。

电子家谱格式样本图,要用一些制作家谱的软件。

进去之后进入个人中心,绑定个人资料后,进入我的家谱页面
1、输入用户名,密码完成系统用户登录操作。

2、登录成功后弹出修谱王主页面,点击高级功能-家谱预览导出,弹出如下家谱信息展示页面
3、点击欧式左右开,选择数据设置、显示设置、确定。

4.点击牒记式右开、牒记式头像版右开、牒记式世代居上版右开,选择右边数据设置、显示设置、确定。

5.点击十代图右开,选择版式、数据设置、显示设置、确定。

6.点击五代图右开,选择版式、数据设置、显示设置、确定。

家谱管理系统项目简介

家谱管理系统项目简介

引言概述家谱管理系统是一个基于计算机技术的家族谱系追溯与记录工具,它的主要目标是帮助用户轻松地管理家族的谱系信息,并提供便捷的查询和维护功能。

家谱管理系统的应用范围广泛,可以适用于家族组织、家族企业、家族文化传承等方面。

本文将针对家谱管理系统进行详细的介绍和分析,包括系统架构、功能模块、技术实现等方面的内容。

正文内容1. 系统架构1.1 客户端1.1.1 用户界面家谱管理系统的客户端采用友好的图形用户界面,用户可以通过界面操作完成家谱信息的添加、查询、修改等操作。

1.1.2 数据存储客户端需要提供本地数据存储功能,用于存储用户的家谱信息。

可以通过文件存储或数据库存储的方式实现。

1.2 服务器端1.2.1 数据库管理服务器端需要建立一套完善的数据库管理系统,用于存储和管理用户的家族谱系数据,保障数据的安全性和稳定性。

1.2.2 业务逻辑处理服务器端需要实现家谱信息的增删改查等基本业务逻辑处理,包括数据的校验、数据的关联处理等功能。

1.3 网络通信客户端和服务器端之间需要建立稳定可靠的网络通信,确保用户能够正常访问服务器端的数据。

2. 功能模块2.1 家谱信息录入模块家谱管理系统需要提供一个用户友好的家谱信息录入界面,用户可以通过该界面输入家族成员的基本信息,并建立起家族成员之间的关系网。

2.2 家谱查询模块家谱管理系统提供了强大的查询功能,用户可以通过姓名、出生日期、关系等关键字进行快速搜索和查找。

并可根据用户需求展示不同级别的家族成员。

2.3 家族统计模块家谱管理系统可以根据家族成员的属性信息进行统计分析,比如年龄分布、性别比例等,为家族成员提供全面的了解。

2.4 家族事件模块家谱管理系统可以记录家族的重要事件,比如婚姻、出生、逝世等,方便用户进行追溯和回顾。

2.5 家族文化传承模块家谱管理系统可以提供家族文化资料共享功能,让家族成员可以共同学习和传承家族的优秀文化。

3. 技术实现3.1 前端技术家谱管理系统的前端界面部分可以采用HTML、CSS、JavaScript等前端技术进行开发,实现交互式的用户界面,提升用户体验。

【转载】家谱范本

【转载】家谱范本

【转载】家谱范本【转载】家谱范本2013-06-24 15:05:29| 分类:国学|字号订阅本文转载自老排长《家谱范本》X氏家谱目录......第一章谱序谱序是每部家谱不可或缺的内容之一,家谱卷首应有数量不等的序文。

谱序包括新序、旧序、阖家或某几位族人撰写的序和当时名流、族外人写的赠序、客序,以及跋语等。

谱序的内容主要是介绍家族世系渊源、传承关系、修谱缘由和经过以及修谱任事人员等,是熟悉、研究一部家谱的直接切入点,是了解我X氏家族世系源流的重要资料。

主要说明了为什么要进行此次修谱以及如何组织此次修谱等内容。

【续谱时间】2012年。

【地点】XX省XX市XX县XXX镇XX村。

【续谱主持人】族长XXX及各支系长者等族人。

【执笔人】XXX等。

【说明】修谱小组说明:1.据2012年统计,XX村共有登记在册人口XXXX人,其中X氏总人口XXXX人,占全村人口的XX.X%,其中本支系共有XX户,人口XX人。

户口在外地、国外居住工作的人口约XX人,本支系合计有XXX人。

(此处以此次修谱具体人口统计数字为准)自XX二年X氏始祖由XXXX县XX迁徙到XX省XX县XX庄(现XX市XX县XXX镇XX村)XX多年来,世代繁衍,根深叶茂,现已繁衍到了第XX代,现在是X世同堂。

各分支系长者均参与了本次修谱事宜。

2.修谱有一个原则,即可以补叙、补遗、补新等,但不能对先人的修谱予以修改或评论,其目的是避免引起其支系后裔的异议,避免产生族群矛盾。

3.本次新修谱包括总目录、正文、后记总共XXXX字(标点符号在内),不包括书封计有XX幅照片、图片。

全谱用16开本印刷,共计XXX页(不包括所附空白页),共一卷。

此说明的目的是,一旦家谱遇到特别原因而破损,后人也能知道到底是部分散失还是大部散失。

【X氏家谱的修谱定义与内容结构】家谱是一种特殊的文献,亦称祖谱、宗谱、族谱、世谱、支谱、系谱、统谱、家乘、私谱、谱传等。

我X氏家族按始祖的习惯统称为家谱。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

家谱管理系统
一、需求分析
本系统实现以下功能:
1). 输入文件以存放最初家谱中各成员的信息。

成员的信息中均应包含以下内容:
姓名、出生日期、婚否、地址、健在否、死亡日期( 若其已死亡) 也
可附加其它信息、但不是必须的。

2). 实现数据的存盘和读盘。

3). 以图形方式显示家谱。

4). 显示第n 代所有人的信息。

5). 按照姓名查询, 输出成员信息( 包括其本人、父亲、孩子的信息) 。

6). 按照出生日期查询成员名单。

7). 输入两人姓名, 确定其关系。

8). 某成员添加孩子。

9). 删除某成员( 若其还有后代, 则一并删除) 。

10).修改某成员信息。

11).按出生日期对家谱中所有人排序。

12).打开一家谱时, 提示当天生日的健在成员。

测试要求:
1).建立至少30个成员的数据, 以较为直观的方式显示结果, 并提供文稿形式以便检查。

2).对界面的要求是: 有合理的提示, 每个功能能够设立菜单, 根据提示,
能够完成相关的功能要求。

二、设计概要
1、抽象数据类型兄弟孩子树的定义如下:
ADT CSNode{
数据对象: person是兄弟孩子树中的每一个节点, T是整个树的统一体
数据关系: R1={<person
i-1,person
i
>|<person
i-1
,person
i
>表示person
i-1
和person
i
之间有血缘关系}
基本操作:
CSNode *CreatTree(fstream &outfile);
初始条件: 已经打开了文本文件PersonInfo.txt
操作结果: 创立一个兄弟孩子树T, 并把从文件中的数据送到树中, 关闭文件。

void CreatParent_step(CSNode *parent);
初始条件: 兄弟孩子树T已经存在
操作结果: 对所有的孩子节点添加指向父亲的指针
void InOrderTraverse(CSNode *T);
初始条件: 兄弟孩子树T已经存在
操作结果: 对T进行中序遍历。

bool Today_Brithday(CSNode *T);
初始条件: 兄弟孩子树T已经存在
操作结果: 根据计算机系统的时间判断几天是否有人过生日, 并显示她们的名字。

bool (int n,CSNode *T,LinkQueue &Q);
初始条件: 兄弟孩子树T已经存在, 队列Q也已经存在
操作结果: 用队列Q返回第N代人的所有信息
void Link_Info(LinkQueue Q);
初始条件: 队列Q中是第N代人的所有信息
操作结果: 显示队列中所有人的信息。

CSNode *DetectMember_Name(CSNode *T,char name[]);
初始条件: 兄弟孩子树T已经存在
操作结果: 根据输入的姓名进行查找, 如找到则返回该节点的指针。

CSNode *DetectMember_BornDate(CSNode *T,Date date);
初始条件: 兄弟孩子树T已经存在
操作结果: 根据输入的出生日期进行查找, 如找到则返回该节点的指针。

void OutputOneInfo(CSNode *T);
初始条件: 采集到一个节点T
操作结果: 显示这一个节点的所有信息。

void Output_Name_Relation(CSNode *T);
初始条件: 采集到一个节点T
操作结果: 显示这一个节点的父亲和孩子的所有信息。

void Delete_Member(CSNode *T,char name[]);
初始条件: 兄弟孩子树T已经存在
操作结果: 根据输入的姓名进行查找, 如找到则删除该节点和她所有的孩子节点。

void Edit_Member_Info(CSNode *T,char name[]);
初始条件: 兄弟孩子树T已经存在
操作结果: 根据输入的姓名进行查找, 如找到则根据用户要求修改相应的信息。

bool Add_New_Child(CSNode *T);
初始条件: 兄弟孩子树T已经存在
操作结果: 根据输入的姓名进行查找, 如找到则在她的孩子树中添加新的孩子节点。

void InOrderInfile(CSNode *T,fstream &infile);
初始条件: 兄弟孩子树T已经存在, 且已经打开了文本文件PersonInfo.txt
操作结果: 把现在的数据读入文件中, 关闭文件。

bool Generation(CSNode *T,CSNode *child);
初始条件: 兄弟孩子树T已经存在
操作结果: 判断child是否是T的后代, 如果是返回true, 否则返回false。

void Output_Two_Member_Realtionship(CSNode *T,char name1[],char name2[]);
初始条件: 兄弟孩子树T已经存在
操作结果: 根据已经输入的两个姓名进行查找和判断, 确定她们的关系。

void InOrderIn(CSNode *T,CSNode S[],int &num);
初始条件: 兄弟孩子树T已经存在
操作结果: 对T进行中序遍历, 而且把每一个节点信息送到数组S中, num为S中成员个数。

void LineChars(CSNode S[],int num);
初始条件: 节点数组S已经存在
操作结果: 对数组的节点信息按照出生日期进行排序, 采用的是基数排

}ADT CSNode
2、抽象数据类型队列的定义如下:
ADT LinkQueue{
数据对象: D={e
i | i=1,2,3,…,n; n≧0; e
i
∈LinkQueue}
数据关系: R1={<e
i-1, e
i
>|<e
i-1
,e
i
>表示e
i-1
和e
i
之间有先后顺序关系}
基本操作:
bool InitQueue(LinkQueue &Q);
操作结果: 创立一个空的队列Q。

bool DestroyQueue(LinkQueue &Q);
初始条件: 队列Q存在
操作结果: 销毁队列Q, Q不再存在。

bool EnQueue(LinkQueue &Q,CSNode e);
初始条件: 队列Q存在
操作结果: 插入元素e为Q的新的队尾元素。

bool ClearQueue(LinkQueue &Q);
初始条件: 队列Q存在
操作结果: 清空队列Q。

bool QueueEmpty(LinkQueue Q);
初始条件: 队列Q存在
操作结果: 若队列为空, 则返回true, 否则返回false。

bool DeQueue(LinkQueue &Q,CSNode &e);
初始条件: 队列Q存在
操作结果: 删除Q的队头元素, 并用e返回其值, 并返回true。

int QueueLength(LinkQueue Q);
初始条件: 队列Q存在
操作结果: 返回队列Q的长度。

bool GetHead(LinkQueue Q,CSNode &e);
初始条件: 队列Q存在
操作结果: 用e返回队首元素, 并返回true。

} ADT LinkQueue
3、主程序
Void main()
{
打开文本文件PersonInfo.txt;
Do{接受命令( 对兄弟孩子树进行相关的操作的选项) ;
处理命令( 对兄弟孩子树进行相关的操作) ;
}while(”命令”! =”退出”);
}。

相关文档
最新文档