我在Java中创建一个家庭树程序,或者至少试着去做。我已经开设了几个课程:

名字的获取者和设置者性别年龄等

FamilyMember-扩展个人getter以及设置家长和儿童

家庭-由多个族成员和添加方法正在删除成员

家族树是主要的阶级用于设置关系。

我有两个主要问题:

1)我需要建立人与人之间的关系。目前我正在做:

FamilyMember A, FamilyMember B

B.setMother(A);

A.setChild(B);

上面的示例用于设置母子关系。

这看起来很笨重。实现所有关系都变得非常冗长。关于如何以不太程序化的方式实现多个关系有什么想法吗?

2)我必须能够显示家族树。我该怎么做?有没有定制课程可以让生活更轻松?

谢谢你的时间…

您希望如何显示它?

在绘制结构时,如果显示的代数超过2,则很难避免碰撞(线交叉)。所以如果你的申请允许你把它减到两个,那就太好了。我已经编写了一些使用这种表示的程序,或者是垂直的:

或水平:

氧化镁

如果您需要同时显示更多的代,您需要想出其他表示,它们可能开始变得非常稀疏,这样您就可以在同一级别显示同一代中的每个人。

关于如何将关系表示为数据结构,这很混乱。最简单、最干净的事情是,任何两个分别是同一个人的母亲和父亲的人都是"已婚"的。但是,您希望如何表示多个合作伙伴、继子女等?如果不知道你的程序应该做什么,这很难回答。也许你的数据集没有这些复杂的问题。如果是这样的话,最好先考虑复杂的情况——简单的表示不适合简单地扩展来覆盖困难的情况。

(用手)画出一些你预料到的最困难的情况;这将建议你需要记录什么类型的数据,以及如何组织它。绘制时所做的选择(谁先来,在每个节点使用什么符号和文本等)将通知您的数据结构决策。

设置B的母亲和A的孩子似乎是多余的-冗余导致错误-选择一个。哪一个?好吧,当你设定B的母亲(A的性别)时,有更多的信息,我们知道任何人都需要两个父母,而不是0个或更多的孩子。所以我倾向于只设置B的母亲;你总是可以通过遍历所有对象来找出任何个体的子对象,从而找出父对象与相关个体相等的集合。事实上,储存父母关系(与简单的父母关系相比)可以减少重复(假设你是在储存与个人的性别)。

Any ideas on how to implement multiple

relationships in a less procedural

way?

是的,您可以将关系本身表示为对象。任何两个人都可以拥有零个或更多的关系。

几年前,我在一个警察记录系统工作,在它的主名索引中为任何两个人之间的联系做了更广泛的工作。

关系可以是直接的。母亲---是孩子的母亲。

关系可能是分层的。母亲是父母。

2) I have to be able to display the

family tree. How can I do this? Are

there any custom classes out there to

make life easier?

是的,有支持图形显示的现有代码。我个人在使用预使用可视化工具包方面有很好的经验。

您可能会找到感兴趣的prefuse treeview;请尝试单击本例中的节点。(但是,如果您打算将您的软件供您自己的家庭以外的其他家庭使用,则一棵树可能不够。)

类似下级的东西(这是一个伪代码而不是真正的Java类)

class Node

{

public Node Parent { get;set;}

public List Childs {get;set;}

}

使用

Node ultimateGrandParent = new Node();

ultimateGrandParent.Parent = null;

ultimateGrandParent.Childs = new List();

我想把它以树形结构复线。我的主要问题是建立关系。我有一个家庭成员班,允许一个人有其他的父亲和许多孩子。我不知道如何实现婚姻,也不知道如何实现为许多有着相同父母的孩子建立关系…谢谢你这么快的回复!!

java写的家谱_关于java:家谱计划的逻辑相关推荐

  1. 用java写一个日历_使用JAVA写一个简单的日历

    JAVA写一个简单的日历 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDa ...

  2. java 写文件 二进制_简单Java程序向实用程序的过度:二进制文件的读写

    File I/O中常见的文件读写: 1.字节流读写文本文件 FileInputStream; FileOutputStream; 2.字符流读写文本文件 FileReader; FileWriter; ...

  3. java写一个搜索引擎_搜索引擎—-Java实现一个简单的网络爬虫

    Java实现一个简单的爬虫程序. package SearchCrawler;import java.util.*;import java.net.*;import java.io.*;import ...

  4. 用java写分段函数_使用Java将分段函数转换为CSV文件

    这似乎有用 - 有点.无论如何,这可能是一个好的开始. public class CSVFun { // Where to start the scan of the function. static ...

  5. java写新闻模板_基于java新闻发布及管理系统

    基于java新闻发布及管理系统 java 2020-10-18 下载地址 https://www.codedown123.com/44681.html Java新闻发布系统新闻发布及管理系统就是一个能 ...

  6. Java写一个快速排序_快速排序java实现

    1.快速排序的思想 快速排序属于交换排序,是冒泡排序的升降版.相对于冒泡排序而言,快速排序增大了记录比较和移动的距离,将关键字较大的记录直接移动到后面,将关键字较小的记录直接移动到前面:不再是相邻两个 ...

  7. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  8. java文件客户端下载_使用Java写一个minio的客户端上传下载文件

    标签:color   ati   tty   java   system   wired   format   media   param 前言: 确保已经安装了minio的服务端 代码: pom.x ...

  9. java好的代码_做java软件工程师,怎样才能写出好的代码?

    原标题:做java软件工程师,怎样才能写出好的代码? Java代码之于java程序员而言就是左膀右臂,java代码写的好的java程序员明显更是企业的欢迎,一个优秀的java程序员的考核标准之一也是看 ...

  10. 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码

    原标题:学习Java需要什么基础,初学Java如何写好代码 初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手:写代码的时候时常会遇到不懂的地方,如果停下来 ...

最新文章

  1. 面向 CPython GIL 的多线程编程要点
  2. html里的value什么含义,HTML input value属性表示什么
  3. docker fig mysql_docker管理工具 Fig 配置文件fig.yml的详解
  4. C语言基本类型和存储类别
  5. 什么是 ABAP Field Symbol
  6. 前端学习(1388):多人管理项目8user登录
  7. C# TCP 相关类与方法
  8. SpaceX星舰飞船首次试飞成功着陆!但没想到还是爆炸了...
  9. apache 的http代理出错 502 Proxy Error
  10. java代码中发送http请求的DnsResolver使用问题
  11. “赤膊贪凉”要不得 多喝蜜水防“秋燥”
  12. Vue源码后记-vFor列表渲染(3)
  13. [转载] Python的双端队列deque
  14. Java静态代理、动态代理以及CGLIB动态代理
  15. jsp页面中插入css样式的三种方法总结
  16. 5G模块M.2座子管脚和封装分析
  17. 高性能mysql学习笔记一
  18. 免费在线 Logo生成器
  19. android stagefright
  20. Android实现SSL Socket双向认证

热门文章

  1. AutoJs实战教程---刷宝短视频
  2. HTML 教程(初级)
  3. DirectX发展历程
  4. UE4 Random Unit Vector In Cone
  5. Hive相关(概述、环境搭建、命令、API、JDBC、HBase整合等)
  6. 常见颜色RGB与数值对应表
  7. 在centos8环境下用asterisk18配置pjsip和webrtc音视频通话教程(一)
  8. ftp服务器一直在转未响应,打开ftp服务器未响应
  9. 求10个数中的最大值及其对应的下标
  10. Spring MVC 地址请求映射