标题 | 基于二叉树的电子家谱设计方法 |
范文 | 陈国军 张庭玉 摘要:家谱用于记录家族成员情况与关系,具有重要的学术研究价值和实用价值。本文结合生活中实际情况,设计一种基于二叉树的电子家谱管理系统。实现了对家族所有资料的存储分析,具备家谱存储、更新、查询、统计等功能。 关键词:家谱;系统;信息;管理;二叉树 中图分类号:TN915.81 文献标识码:A DOI:10.3969/j.issn.1003-6970.2015.03.018 本文著录格式:陈国军,张庭玉,基于二叉树的电子家谱设计方法卟软件,2015,36(3):95-97 0.引言 家谱,又名“族谱”、“宗谱”、“家乘”,是记载某姓氏世系和重要人物及主要事迹的史籍资料。其在我国有着悠久的历史,先秦时代就已出现。家谱为记述血缘集团世系的载体,作为重要的文档资料,为社会学、历史学、人口学、方志学、民族学等学科研究提供了丰富与具体的史料。当今社会,家谱越来越为人们所重视,成为一个家族紧密联系的象征。长期以来人们一直都使用纸笔进行家谱记录,这种方法不仅费时费力而且不便于查找修改。在信息化时代里,随着电子信息业的不断发展,电子家谱逐渐进入实际应用中。电子家谱系统不仅省时省力而且方便,避免了纸笔记录的好多麻烦。本文提出一种基于二叉树的电子家谱系统,给出家谱系统的关系模式与方法,使家谱管理更加便捷、实用。 1.电子家谱系统分析 1.1系统复杂性分析 一般认为,复杂系统是由众多存在复杂相互作用的组分(或子系统)组成的,系统的整体行为(功能或特性)不能由其组分的行为(功能或特征)来获得。这里所谓的复杂相互作用是指系统的组分间用无数可能的方式相互作用。 李士勇认为复杂性是指一个开放的复杂系统由于组分(子系统)多、种类多,层级结构多,不确定因素多,导致系统在演化过程中和环境交互作用,呈现出的复杂的动态行为特性和突出的整体特性。 家谱系统的复杂性表现在整体性、层次性等方面。整体性指系统是由组成系统的组分或子系统相互联系、相互作用、相互制约的统一整体。层次性指复杂系统往往根据组成部分的重要程度与功能的不同分为多个层次,以便于管理操作。家谱系统涉及家谱数据操作、家谱连接等众多子系统,形成了规模庞大的多层次结构。 1.2家谱的一般结构分析 家谱是根据家族血缘关系,由家族成员间的相互联系组成的一种体系结构。同家谱数据中由后代节点和父代节点分别组成家谱树的特点对应,电子家谱系统通常采用树形结构。 2.基于二叉树的电子家谱设计 2.1家谱体系结构设计 2.1.1家谱数据结构设计 二叉树(Binary Tree)是指每个结点最多有两个子树的有序树。通常二叉树根的子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 家谱的体系结构和树型数据结构十分相似,家谱中的前一辈预后一辈之间的关系就是数据结构类型中树的根节点与叶子节点之间的关系。使用二叉树能够很好的反映家谱中成员之间的关系。二叉树的表示方法有兄弟关系架构、夫妻关系架构以及父子关系架构。在此系统使用父子一兄弟关系架构,即左子树第一个节点为父节点的兄弟(或儿子),右子树第一节点表示父节点的儿子(或兄弟)。 2.1.2家谱的存储方法 二叉树的存储表示方法多种,根据父子关系作为需满足的二元关系,本文采用三叉链表存储二叉树。使用三叉链表不仅可以对字节点进行查找,还便于回溯查询父节点以及节点间关系的确定。 2.2家谱成员及功能设计 2.2.1家谱数据单元设计 对于家族管理系统,在家谱中每个家族成员是最基本的组成部分,所以选定家族成员作为数据的基本单元,并在程序中定义为结构体BiTNode。BiTNode结构如下: typedef struct BiTNode{ mark;name;birthday;address;sex;live;wife:dead; struct BiTNode*lc*rc*father; }BiTNode.*BiTree; 2.2.2家谱系统功能设计 根据对家谱在社会实际使用情况进行分析,系统设计了多种实用功能。包括: 1)存储家谱中各成员的信息,包括成员姓名、性别、出生日期、婚否、地址、健在否、死亡日期(若该成员已死亡)等内容。 2)添加成员,修改成员信息,删除某成员(若其还有后代,则一并删除)。 3)家谱信息查询,包括按姓名等成员属性查询、显示第n代所有人的信息、输入两个姓名确定其关系等。 4)家谱间关系梳理以及按出生日期对家谱成员排序。 5)家谱可视化 2.2.3系统的其它设计 为方便进行比较,系统中的某些属性值用数字代替某些不会改变的字符串,譬如性别(1代表男,0代表女)、判断是否健在(1为是,0为否)。在日期设置上,为便于以后的计算与比较,也将日期用整型数字进行表示,如19990505表示1999年5月5日。这种表示方法只需在输入和输出上作少许的运算便可方便地与日期进行转换。在家族关系表示上,并没有用相关家属姓名作为储存数据,而是存储了各关系亲属的ID,便于存储后作为指针调用相对应的家族成员。其中在属性lc上,表示下一个同父母的兄弟姐妹的ID,也就是说,当某家族成员有若干子女时,其rc仅指向第一个孩子,其余的孩子通过第一个孩子的lc指示,如此类推,直到孩子的lc空为止。这样就可以避免需在程序预定父母的孩子数,实现了动态的储存数据。 3.结束语 电子家谱系统是使家谱得以充分保护和使用的重要工具。本文提出的基于二叉树的电子家谱设计方法提高了家谱使用的便捷性和实用性,是对信息电子化的一种积极尝试,为今后家谱系统的完全电子信息化打下一定基础。今后我们将研究家谱信息搜索的优良算法以及家谱的可视化模式。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。