家谱管理系统

前段时间和同学一块写了个家谱管理系统,我负责的是界面,查询,删除和树的设计


对于界面,在这里就不再描述了;

查询的要求有两个:1.通过名字查询;2.通过出生日期查询;3.输入两人姓名判断他们的关系。 对于名字和生日查询我都是应用的数据库中sql语句来实现的。这里着重记录下关系的判断:

*确定两人关系

    首先要说的就是在一个家族族谱中,是以男性为主导的族谱,所以女方的丈夫是没有权利进入家谱的。这里就可以排除与女方丈夫的关系,即:没有丈母娘和老丈人的关系及与女方娘家的所有关系都排除在外。

    接着就是在数据的存储方面,我们在保存男方的妻子时,其妻子的父亲和母亲是为空的,她只是记录了丈夫的Id,所以在判断她和别人的关系就要先找到她的丈夫,然后以她丈夫的身份去判断。

    然后讲的就是算法的实现:

    1.先判断在族谱中是否存在这两人。这里也会判断当名字一样的情况。

    2.从数据库中取出这两人的数据

    3.如果是某人的妻子就拿到她的丈夫在树中的节点。(区分女儿和男方妻子)

    4.判断两人数据中的代系,即区分同代和不同代的,以此再分开来判断两人关系

    5.根据区分开来的代系,判断同代的关系。在同代中有亲,堂,表的三个关系链,当然还有夫妻这一层关系。

    6.当是异代的时候,在这里又要区分是差几代的情况,根据实际的情况,判断的都是三代和三代以内的关系,即到了爷爷辈之后就不提供关系的判断了。异代的关系判断走的是直系和旁系这两条线,因为在一个家族中当人口达到一定的数量时,就会产生直系和旁系的明显区别,所以在做判断的,添加了直旁系的判断以此来增强程序的健壮性和可持续性

   最后提供的是关键代码片段的解释:


在这里寻找目标节点用的是库中提供的getNextNode()方法。再使用递归调用来查找树。


这段代码的用处就是确认她是一个真正的“女人”,当她是男方的妻子时就返回其丈夫的名字,否则就返回为null。




【功能介绍】 1.该族谱管理系统一改以往修谱系统的特点,增加了输出word文档的功能,方便在打印前对出谱资料的二次修改,具有很强的可修改性。另外,可以将族人图形资料输出到word文档,和族人资料一起一并打印。可以打印输出族人的图形等可见信息。 2.可以在数据库内保存家族和族人的语音、视频、扫描资料等重要资料,由于保存在数据库内,所以具有保密性。家谱资料在数据库内可以删除、查看,方便整个家族资料的管理和完备性。 3.可以将世系树的结构输出到文本文档,对于家族的分支结构在树上得到很好的诠释。由于文本文档不具有格式性, 所以可以输出无限大的世系图,可以将整个家族的世系图完整输出 。 4.具有输出部分世系图分支的功能,可以分段输出世系图,便于将世系图分段保存和管理。配合整个世系图和分段世系图,对于某一分支可以了解自家分支的世系全貌。 5.可以管理多个配偶信息,配偶信息的输出是附加在族人后面,对于家庭的完整性得到很好的体现。配偶信息资料全,可以了解配偶在自家的排行、兄弟姐妹等情况。 6.自定义家谱输出格式,方便输出古代的五代格式。五代输出按大排行方式输出,符合大家的排行习惯。 7.族人输出按照大排行的顺序输出,例子老大的儿子输出要排在老二儿子的前边, 老大的孙子输出也要排在老二孙子的前边,以此类推。 8.可以管理家族的历史事件,历史人物,可以任意增加历史事件和历史人物,来阐述家族曾经出得辉煌。增加的人物和事件无限制。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值