我正在用Java创建一个家庭树程序,或者至少尝试。我开发了几门课程:
我有两个主要问题:
1)我需要确定人与人之间的关系。目前我正在做:
FamilyMember A, FamilyMember B
B.setMother(A);
A.setChild(B);上面的例子是为了建立母子关系。
这看起来很笨重。实现所有关系的时间越来越长。对于如何以较少的程序方式实现多个关系,有什么想法吗?
2)我必须能够展示家谱。我该怎么做?有什么定制的课程可以让生活更轻松吗?
谢谢你抽出时间..。
发布于 2010-12-26 20:52:55
关于绘制结构,如果显示超过2代,则很难避免冲突(行交叉)。所以,如果你的申请允许你把它减少到2,那就太好了。我编写了一些使用这种表示形式的程序,或者垂直表示:

或横向:

如果您需要同时显示更多代,则需要提出其他表示,它们可能会变得非常稀疏,这样您就可以在同一级别上向同代的每个人展示。
关于如何将关系表示为数据结构--嗯,这很麻烦。最简单、最干净的事情是,任何两个分别是同一个人的母亲和父亲的人都是“已婚”的。但是你想如何代表多个合作伙伴,孩子等等呢?如果不知道你的程序应该做什么,这是很难回答的。也许你的数据集没有这些复杂的情况。但是,如果是这样的话,最好先考虑一下棘手的情况--简单的表示不适合简单地扩展以涵盖困难的情况。
(用手)画出一些你预料到的最困难的案例;这将建议你需要记录什么样的数据,以及如何组织它。你在画的时候所做的选择(谁是第一位的,每个节点要使用什么符号和文本等等)将通知您的数据结构决策。
设置B的母亲和A的孩子似乎都是多余的--冗余会导致错误--选择一个。哪个?当你设定B的母亲(A的性别)时,我们知道任何一个人都需要双亲,而不是0或更多的孩子。所以,我倾向于只设置B的母亲,你可以通过遍历所有的方法来找出任何一个人的子代,来选择其父母与所讨论的个体相等的集合。事实上,存储父母关系(相对于简单的父母关系)可能会减少重复(假设您将性别与个体存储在一起)。
https://stackoverflow.com/questions/4534988
复制相似问题