当前位置: 首页 > 知识库问答 >
问题:

改进此模式/抽象的方法?

澹台奇略
2023-03-14

我正在为一个在线考试模块制作一个网络应用,想知道如何改进我目前的设计和抽象。考试是多项选择题。

到目前为止,我的数据库中有三个表:

1.考试

  • 考试id(小学,汽车公司)

2.问题

  • question_id-主键,auto_inc
  • exam_id-FK引用exam_id正在检查,更新和删除-级联
  • question_text-实际问题本身
  • question_figure-如果问题带有图像(例如:graph.jpg),则文件名。可以为空
  • question_category
  • question_name-Unique, varchar,一些用来识别问题的东西(我打算使用这个字段,所以我有一个参考来添加答案选项,但感觉它没有必要)

3.答案

  • 答案_id-PK,汽车公司
  • 问题_id-引用问题_id的外键。更新/删除时级联
  • 回答_text
  • 答案_correct-微小的整数表示答案是否正确
  • 答案名称-唯一,varchar,答案的引用,与问题名称的引用相同

这就是我对课程的想法:

public class Exam
{
    private int Id;
    private String name;
    private int timePerQuestionInSeconds;
    private int pointsPerQuestion;
    private int numberOfQuestions;
    private ArrayList<Question> questionList;
}

public class Question
{
    private int Id;
    private int examID;
    private String text;
    private String figure;
    private String category;
    private String name;
    private ArrayList<Answer> answers;
}

public class Answer
{
    private int id;
    private int questionId;
    private String text;
    private boolean correct;
    private String name;
}

所以要想参加考试,我必须从考试中选择ByExamName,然后从问题中选择ByExamid,然后从答案中选择ByQuestionID。然后将这些结果集映射到对象。

相反,如果我要使用JPA来持久化这些实体,是否可以持久化实体的ArrayList?我在课堂考试中是否正确

[Question.class]

私人阵列表(问题);

在课堂上,我应该问

@许多人

私人考试;

建立理想的关系?顺便说一句,我使用的是JavaSE,所以我不确定我是否拥有JavaEE对beans的所有支持。

我还需要一些方法来存储学生的考试成绩。我在考虑一个表分数,它有fk到学生id,我可以通过学生id查询该表以返回学生的分数。

共有2个答案

后焕
2023-03-14

关于考试表中的num_question属性,这是必要的吗?从问题表中数行不是很准确吗?

另外,points_per_question取决于考试还是问题?(我认为它基于问题)。如果是这样,那么它应该是问题表的一个属性,也许还有time_per_question属性。(困难或更长的问题允许更多的时间?)这都是基于你最初的要求。

否则,我觉得没问题。

怀浩大
2023-03-14

Appart from JPA,对于您编写的每个类,您应该尽可能使用接口而不是具体类声明bean变量。使用java.util.List而不是java.util.ArrayList。

 类似资料:
  • 我正在尝试对扩展抽象基的类进行单元测试。以下是“类似的类”,以供说明: 下面是我正在尝试的单元测试: 当我做这个测试的时候 java.lang.NullPointerException 在中 我知道自动连线的“滤水器”没有初始化。但接下来,我只想在我的单元测试中模拟抽象的“非抽象”方法。 我该如何使用EasyMock来实现这一点呢?另外,我不知道和应该做什么。

  • 主要内容:介绍,实现,Shape.java,Rectangle.java,Square.java,Circle.java,Color.java,Red.java,Green.java,Blue.java,AbstractFactory.java,ShapeFactory.java,ColorFactory.java,FactoryProducer.java,AbstractFactoryPatternDemo.java抽象工厂模式(Abstract Factory Pattern)是围绕一个超级

  • 抽象工厂模式 亦称: Abstract Factory 意图 抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。 问题 假设你正在开发一款家具商店模拟器。 你的代码中包括一些类, 用于表示: 1、一系列相关产品, 例如 椅子Chair 、 ​ 沙发Sofa和 咖啡桌Coffee­Table 。 2、系列产品的不同变体。 例如, 你可以使用 现代Modern 、 ​

  • 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 介绍 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 主要

  • 简介 抽象工厂模式是一种软件开发设计模式。抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。 简例 有个

  • 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 介绍 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 主要