我正在开发具有两种类型用户的游戏;管理员和用户,因此管理员可以根据需要生成尽可能多的问题,因此这些问题可以是NORMAL, MULTICHOICE, BINARI, SMALL_DESCRIPTION
,因此,每次管理员要创建一个问题时,他都必须决定要对此问题回答哪种类型,也要确定主题这个问题(可以是一个子主题)。
他可以生成测验,而生成测验的方式是他必须选择之前创建的问题。
他还可以检查用户的历史记录,这意味着通过呼叫端点,他应该能够检查该用户所做的问题(包括分数,哪个问题失败,他回答了什么)。>
从现在开始,我有了Question
和Answer
类,但是我有点卡住问题生成和分配给主题的答案,然后创建测验,因为在这两部分中我也都缺少用户,以了解哪个用户创建了问题/测验,哪个用户回答了该问题/测验并存储了一些数据以进行历史记录。
我的问题类具有:
@Entity(name="question")
public class Question extends DateAudit {
@Id
@Column(name = "question_id")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "question_seq")
@SequenceGenerator(name = "question_seq", allocationSize = 1)
private Long id;
@Column(name = "text_question")
private String textQuestion; //The question itself "What's the name of ..."
@Column(name = "answerDescription")
@NotBlank(message = "Answer description")
private String answerDescription; //The answer to the question as an explanation
@Column(name = "isExamQuestion", nullable = false)
private Boolean isExamQuestion; //A flag for the user to filter when he wants to do a question he only will see those that are not isExamQuestion, isExamQuestion are the questions that are going to appear when he wants to create a Quiz
@OneToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
private Set<Answer> answers; //List of answers...
@Column(name = "answer_type", nullable = false)
private String answerType; //I don't know if it goes here, but the answerType mentioned before NORMAL,MULTICHOICE,.... is to render on the user app
答案
@Entity(name = "answer")
public class Answer extends DateAudit {
@Id
@Column(name = "answer_id")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "answer_seq")
@SequenceGenerator(name = "answer_seq", allocationSize = 1)
private Long id;
@Column(name = "answerToQuestion")
@NotBlank(message = "Answer to question name can not be blank")
private String answerToQuestion; //If the questions is what's 2*2 this could be 3
@ManyToOne
private Question question; //In what question appear that answer
//Here I'm wondering if I have to add a flag saying isCorrect to detect if it's the correct answer or not
如您所见,我缺少主题资料,历史记录和测验,并且我没有引用哪个用户做了问题或测验或解决了测验/问题,请您指导我如何做这个?
我收到的问题:
该问题仅针对一个用户还是一组用户?
对于不同的用户,可以回答相同的问题或测验,这意味着Q1可以由40个用户完成。
测验与主题有关吗?
创建测验时,请选择一个主题以选择具有该主题的问题。 示例:创建一个学习总结的测验,我必须按主题过滤:数学,然后是SubTopic和,以便我选择要放入测验中的问题。
您打算如何创建主题或子主题?
管理员应该具有创建主题或子主题的端点,从现在开始只有一个子主题,没有子主题的子主题,从现在开始是主题:数学子主题:平方根。因此,在创建问题或测验之前,管理员应首先创建一个主题,如果他想添加一个子主题,然后创建一个主题,那么当他尝试创建一个问题时,他可以说该问题来自X主题/子主题。这个问题可以分配给那个。
“历史”是什么意思?
好,对于Admin而言,Admin应该具有一个端点,该端点具有用户的ID或名称,该端点将返回用户已完成的所有测验(第一个端点)或所有问题(第二个端点),并且分数,失败次数/正确次数,但我想知道这应该是前端进行计算,我的意思是,端点返回所有此信息,问题总数/测验已完成,分数,什么问题失败等等。然后在前端进行更多计算。
答案 0 :(得分:0)
对不起,我没有为答案添加注释。你找出他们。都是实体。不需要“答案”实体,或者它取决于您的问题类型。让他们自己拥有课程,并填写用户表格。有选择的例子。
您可以管理谁可以从Controller创建测验。您可以将测验添加到您的用户实体:<vtable url="orders/filter" :columns="columns" :filters="filters"></vtable>
List<Quiz> myQuizesAsAdmin;
您可以从用户实体查询中查看历史记录;使用List<Quiz> myQuizesAsAnswerer;
对其进行过滤和排序。您还可以像为学校班级那样添加班级,并添加Quizes他们要做的事情。
编码方法:管理员创建List<Quiz> myQuizesAsAnswerer;
现在您有一个原始的测验,因此您已使用唯一ID对其进行了复制或克隆。我向Quiz.class添加了一个构造函数来实现。 Quiz myQuiz = new Quiz(name, QuizId, Questions, StartDate, EndDate, etc...)
现在,答题者可以进行测验并回答问题。填充后将其保存到数据库。现在,在您的数据库中,您将有一个“原始测验”和它的副本,这些内容是被回答的测验。
Quiz iDoThisQuiz = new Quiz (this.QuizRepository.findByQuizIdAndByOriginal(thisQuisId, true));
-
public class Quiz {
private String name;
private boolean original;
private long id; // This is unique for every entity
private String quizId; // this is for this quiz general id. Like a name. Unique for this quiz.
private List<Question> questions;
private User answerer;
private User admin;
private Date endDateToDoDate; // and another dates like when it has been done.
private double totalPoints; // If you want to on
}
public Quiz(Quiz originalQuiz) {
this.id= this has to be unique, autogenerated or what you use to generate ids.
this.quizId = originalQuiz.quizId;
this.name = originalQuiz.name;
this.question = new Question(originalQuiz.question);
this.original = false;
...