java - 辩论俱乐部作业应用程序的设计

标签 java design-patterns mathematical-optimization

对于我大学的辩论俱乐部,我被要求创建一个应用程序来分配辩论 session ,但我在为其设计一个好的设计时遇到了一些困难。我将用 Java 来做。这是需要的:

关于 BP 辩论您需要了解的信息:共有四队,每队 2 名辩手和一名评委。这四个组被分配了特定的位置:gov1、gov2、op1、op2。团队内的顺序没有任何意义。

该应用程序的目标是获取在场辩手的输入(例如,如果有 20 人,我们将举行 2 场辩论),并根据每个辩手的历史将他们分配到团队和角色,以便那:

  • 每位辩手应与尽可能多的人进行辩论(在同一团队中)。
  • 每位辩手应统一在不同位置进行辩论。
  • 辩论应该公平 - 辩手的经验水平不同,并且应尽可能公平 - 即,不应存在由两名经验丰富的辩手和一组初级辩手组成的团队。
  • 应该为用户提供一个以各种方式限制分配的选项,例如:
    • 指定两个人应该一起辩论,无论是否处于特定立场。
    • 指定一名辩手应处于特定位置,无论对手是谁。

如果有人可以尝试为我提供一些有关此应用程序设计的指导,我将非常感激! 另外,我以前从未实现过 GUI,所以我也很感激对此的一些指示,但这不是现在的主要问题。

此外,还存在将 Debater 信息保存在文件中的问题,我也从未在 Java 中实现过该问题,并且也希望获得一些有关此问题的提示。

最佳答案

这看起来像是教科书上的约束问题。尽管有 GUI,但它对于像 Prolog 这样的技术来说是完美的(ECLiPSe prolog 附带了几个不同的 Java 集成库)。

但是,既然您希望在 Java 中实现这一点,为什么不将辩手的历史记录存储在 SQL 数据库中,并使用 SQL 语言来构建约束。然后,您可以将这些 SQL 查询包装为 Java 方法。

关于java - 辩论俱乐部作业应用程序的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2776315/

相关文章:

java - 使用 mockito 执行发送对象

java - 一个线程完成任务后,如何告诉线程池中的其他线程停止?

java - 如何确定我是否在 Spring 中进行事务处理?

matlab - 规范化在优化中有用/必要吗?

java - 使用 JPanel 在 GUI 中相互覆盖的层

java - 使用枚举扩展类 - java

go - 传入请求:具有自定义类型字段的上下文

如果模式与其他字典键匹配,Python 字典键删除

python - 使用 Python scipy.optimize 进行双层优化

python - 查找给定范围内其除数之和具有完美平方的数字,并将它们与相关平方一起返回