WANG пре 6 година
комит
c16251eac9
19 измењених фајлова са 1013 додато и 0 уклоњено
  1. 13 0
      .gitignore
  2. 19 0
      pom.xml
  3. 57 0
      src/main/java/cn/com/qmth/examcloud/question/core/paper/DefaultPaper.java
  4. 60 0
      src/main/java/cn/com/qmth/examcloud/question/core/paper/DefaultQuestionGroup.java
  5. 112 0
      src/main/java/cn/com/qmth/examcloud/question/core/paper/DefaultQuestionStructureWrapper.java
  6. 58 0
      src/main/java/cn/com/qmth/examcloud/question/core/paper/DefaultQuestionUnitWrapper.java
  7. 31 0
      src/main/java/cn/com/qmth/examcloud/question/core/paper/Paper.java
  8. 55 0
      src/main/java/cn/com/qmth/examcloud/question/core/paper/QuestionGroup.java
  9. 47 0
      src/main/java/cn/com/qmth/examcloud/question/core/paper/QuestionStructureWrapper.java
  10. 22 0
      src/main/java/cn/com/qmth/examcloud/question/core/paper/QuestionUnitWrapper.java
  11. 99 0
      src/main/java/cn/com/qmth/examcloud/question/core/question/DefaultQuestion.java
  12. 29 0
      src/main/java/cn/com/qmth/examcloud/question/core/question/DefaultQuestionOption.java
  13. 73 0
      src/main/java/cn/com/qmth/examcloud/question/core/question/DefaultQuestionStructure.java
  14. 75 0
      src/main/java/cn/com/qmth/examcloud/question/core/question/DefaultQuestionUnit.java
  15. 47 0
      src/main/java/cn/com/qmth/examcloud/question/core/question/Question.java
  16. 30 0
      src/main/java/cn/com/qmth/examcloud/question/core/question/QuestionOption.java
  17. 55 0
      src/main/java/cn/com/qmth/examcloud/question/core/question/QuestionStructure.java
  18. 60 0
      src/main/java/cn/com/qmth/examcloud/question/core/question/QuestionType.java
  19. 71 0
      src/main/java/cn/com/qmth/examcloud/question/core/question/QuestionUnit.java

+ 13 - 0
.gitignore

@@ -0,0 +1,13 @@
+.project
+.classpath
+.settings
+target/
+.idea/
+*.iml
+*test/
+# Package Files #
+*.jar
+logs/
+.springBeans
+
+

+ 19 - 0
pom.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>cn.com.qmth.examcloud</groupId>
+		<artifactId>examcloud-parent</artifactId>
+		<version>master-SNAPSHOT</version>
+	</parent>
+	<groupId>cn.com.qmth.examcloud.reports</groupId>
+	<artifactId>examcloud-reports-commons</artifactId>
+	<packaging>jar</packaging>
+
+	<dependencies>
+
+	</dependencies>
+
+</project>

+ 57 - 0
src/main/java/cn/com/qmth/examcloud/question/core/paper/DefaultPaper.java

@@ -0,0 +1,57 @@
+package cn.com.qmth.examcloud.question.core.paper;
+
+import java.util.List;
+
+/**
+ * 试卷结构
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class DefaultPaper implements Paper {
+
+	private static final long serialVersionUID = -5979287118960427883L;
+
+	/**
+	 * 试卷名称
+	 */
+	private String name;
+
+	/**
+	 * 是否全是客观题
+	 */
+	private Boolean fullyObjective;
+
+	/**
+	 * 分组集合
+	 */
+	private List<DefaultQuestionGroup> questionGroupList;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	@Override
+	public List<? extends QuestionGroup> getQuestionGroupList() {
+		return questionGroupList;
+	}
+
+	public void setQuestionGroupList(List<DefaultQuestionGroup> questionGroupList) {
+		this.questionGroupList = questionGroupList;
+	}
+
+	@Override
+	public Boolean isFullyObjective() {
+		return fullyObjective;
+	}
+
+	public void setFullyObjective(Boolean fullyObjective) {
+		this.fullyObjective = fullyObjective;
+	}
+
+}

+ 60 - 0
src/main/java/cn/com/qmth/examcloud/question/core/paper/DefaultQuestionGroup.java

@@ -0,0 +1,60 @@
+package cn.com.qmth.examcloud.question.core.paper;
+
+import java.util.List;
+
+/**
+ * 题分组集合
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class DefaultQuestionGroup implements QuestionGroup {
+
+	private static final long serialVersionUID = 2149814711274942645L;
+
+	/**
+	 * 题组名称
+	 */
+	private String groupName;
+
+	/**
+	 * 题包装器集合
+	 */
+	private List<DefaultQuestionStructureWrapper> QuestionWrapperList;
+
+	/**
+	 * 题组总分
+	 */
+	private Float groupScore;
+
+	@Override
+	public String getGroupName() {
+		return groupName;
+	}
+
+	@Override
+	public void setGroupName(String groupName) {
+		this.groupName = groupName;
+	}
+
+	@Override
+	public List<? extends QuestionStructureWrapper> getQuestionWrapperList() {
+		return QuestionWrapperList;
+	}
+
+	public void setQuestionWrapperList(List<DefaultQuestionStructureWrapper> questionWrapperList) {
+		QuestionWrapperList = questionWrapperList;
+	}
+
+	@Override
+	public Float getGroupScore() {
+		return groupScore;
+	}
+
+	@Override
+	public void setGroupScore(Float groupScore) {
+		this.groupScore = groupScore;
+	}
+
+}

+ 112 - 0
src/main/java/cn/com/qmth/examcloud/question/core/paper/DefaultQuestionStructureWrapper.java

@@ -0,0 +1,112 @@
+package cn.com.qmth.examcloud.question.core.paper;
+
+import java.util.List;
+
+/**
+ * 题结构包装器
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class DefaultQuestionStructureWrapper implements QuestionStructureWrapper {
+
+	private static final long serialVersionUID = 8423916951155451548L;
+
+	/**
+	 * 题ID
+	 */
+	private String questionId;
+
+	/**
+	 * 版本号
+	 */
+	private String version;
+
+	/**
+	 * 题分数
+	 */
+	private Float questionScore;
+
+	/**
+	 * 限制播放次数
+	 */
+	private Integer limitedPlayTimes;
+
+	/**
+	 * 已播放次数
+	 */
+	private Integer playedTimes;
+
+	/**
+	 * 作答限时
+	 */
+	private Long timeLimit;
+
+	/**
+	 * 题单元包装器
+	 */
+	private List<DefaultQuestionUnitWrapper> questionUnitWrapperList;
+
+	@Override
+	public String getQuestionId() {
+		return questionId;
+	}
+
+	public void setQuestionId(String questionId) {
+		this.questionId = questionId;
+	}
+
+	@Override
+	public Float getQuestionScore() {
+		return questionScore;
+	}
+
+	public void setQuestionScore(Float questionScore) {
+		this.questionScore = questionScore;
+	}
+
+	@Override
+	public List<? extends QuestionUnitWrapper> getQuestionUnitWrapperList() {
+		return questionUnitWrapperList;
+	}
+
+	public void setQuestionUnitWrapperList(
+			List<DefaultQuestionUnitWrapper> questionUnitWrapperList) {
+		this.questionUnitWrapperList = questionUnitWrapperList;
+	}
+
+	@Override
+	public String getVersion() {
+		return version;
+	}
+
+	public void setVersion(String version) {
+		this.version = version;
+	}
+
+	public Integer getLimitedPlayTimes() {
+		return limitedPlayTimes;
+	}
+
+	public void setLimitedPlayTimes(Integer limitedPlayTimes) {
+		this.limitedPlayTimes = limitedPlayTimes;
+	}
+
+	public Integer getPlayedTimes() {
+		return playedTimes;
+	}
+
+	public void setPlayedTimes(Integer playedTimes) {
+		this.playedTimes = playedTimes;
+	}
+
+	public Long getTimeLimit() {
+		return timeLimit;
+	}
+
+	public void setTimeLimit(Long timeLimit) {
+		this.timeLimit = timeLimit;
+	}
+
+}

+ 58 - 0
src/main/java/cn/com/qmth/examcloud/question/core/paper/DefaultQuestionUnitWrapper.java

@@ -0,0 +1,58 @@
+package cn.com.qmth.examcloud.question.core.paper;
+
+import cn.com.qmth.examcloud.question.core.question.QuestionType;
+
+/**
+ * 题单元包装器
+ *
+ * @author WANGWEI
+ * @date 2018年8月16日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class DefaultQuestionUnitWrapper implements QuestionUnitWrapper {
+
+	private static final long serialVersionUID = 7584275153456817959L;
+
+	/**
+	 * 选项排序值
+	 */
+	private Integer[] optionPermutation;
+
+	/**
+	 * 题分数
+	 */
+	private Float questionScore;
+
+	/**
+	 * 题型
+	 */
+	private QuestionType questionType;
+
+	@Override
+	public Integer[] getOptionPermutation() {
+		return optionPermutation;
+	}
+
+	public void setOptionPermutation(Integer[] optionPermutation) {
+		this.optionPermutation = optionPermutation;
+	}
+
+	@Override
+	public Float getQuestionScore() {
+		return questionScore;
+	}
+
+	public void setQuestionScore(Float questionScore) {
+		this.questionScore = questionScore;
+	}
+
+	@Override
+	public QuestionType getQuestionType() {
+		return questionType;
+	}
+
+	public void setQuestionType(QuestionType questionType) {
+		this.questionType = questionType;
+	}
+
+}

+ 31 - 0
src/main/java/cn/com/qmth/examcloud/question/core/paper/Paper.java

@@ -0,0 +1,31 @@
+package cn.com.qmth.examcloud.question.core.paper;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 试卷结构
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public interface Paper extends Serializable {
+
+	/**
+	 * 获取题组集合
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public List<? extends QuestionGroup> getQuestionGroupList();
+
+	/**
+	 * 是否全是客观题
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public Boolean isFullyObjective();
+
+}

+ 55 - 0
src/main/java/cn/com/qmth/examcloud/question/core/paper/QuestionGroup.java

@@ -0,0 +1,55 @@
+package cn.com.qmth.examcloud.question.core.paper;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 题分组集合
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public interface QuestionGroup extends Serializable {
+
+	/**
+	 * 获取组名
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public String getGroupName();
+
+	/**
+	 * 设置组名
+	 *
+	 * @author WANGWEI
+	 * @param groupName
+	 */
+	public void setGroupName(String groupName);
+
+	/**
+	 * 获取题包装器集合
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public List<? extends QuestionStructureWrapper> getQuestionWrapperList();
+
+	/**
+	 * 获取题组总分
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public Float getGroupScore();
+
+	/**
+	 * 设置题组总分
+	 *
+	 * @author WANGWEI
+	 * @param groupScore
+	 */
+	public void setGroupScore(Float groupScore);
+
+}

+ 47 - 0
src/main/java/cn/com/qmth/examcloud/question/core/paper/QuestionStructureWrapper.java

@@ -0,0 +1,47 @@
+package cn.com.qmth.examcloud.question.core.paper;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 题结构包装器
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public interface QuestionStructureWrapper extends Serializable {
+
+	/**
+	 * 获取题ID
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public String getQuestionId();
+
+	/**
+	 * 获取题版本
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public String getVersion();
+
+	/**
+	 * 获取题分数
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public Float getQuestionScore();
+
+	/**
+	 * 获取题单元包装器
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public List<? extends QuestionUnitWrapper> getQuestionUnitWrapperList();
+
+}

+ 22 - 0
src/main/java/cn/com/qmth/examcloud/question/core/paper/QuestionUnitWrapper.java

@@ -0,0 +1,22 @@
+package cn.com.qmth.examcloud.question.core.paper;
+
+import java.io.Serializable;
+
+import cn.com.qmth.examcloud.question.core.question.QuestionType;
+
+/**
+ * 类注释
+ *
+ * @author WANGWEI
+ * @date 2018年8月16日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public interface QuestionUnitWrapper extends Serializable {
+
+	public Integer[] getOptionPermutation();
+
+	public Float getQuestionScore();
+
+	public QuestionType getQuestionType();
+
+}

+ 99 - 0
src/main/java/cn/com/qmth/examcloud/question/core/question/DefaultQuestion.java

@@ -0,0 +1,99 @@
+package cn.com.qmth.examcloud.question.core.question;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 题<完整题>
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class DefaultQuestion implements Question {
+
+	private static final long serialVersionUID = 195811114083691548L;
+
+	/**
+	 * 题ID
+	 */
+	private String id;
+
+	/**
+	 * 属性注释
+	 */
+	private Long rootOrgId;
+
+	/**
+	 * 是否脱离试卷存在
+	 */
+	private Boolean isolated;
+
+	/**
+	 * 主版本
+	 */
+	private DefaultQuestionStructure masterVersion;
+
+	/**
+	 * 分支版本
+	 */
+	private List<DefaultQuestionStructure> branchVersionList;
+
+	/**
+	 * 扩展属性
+	 */
+	private Map<String, String> properties;
+
+	@Override
+	public String getId() {
+		return id;
+	}
+
+	@Override
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Boolean getIsolated() {
+		return isolated;
+	}
+
+	public void setIsolated(Boolean isolated) {
+		this.isolated = isolated;
+	}
+
+	@Override
+	public QuestionStructure getMasterVersion() {
+		return masterVersion;
+	}
+
+	public void setMasterVersion(DefaultQuestionStructure masterVersion) {
+		this.masterVersion = masterVersion;
+	}
+
+	@Override
+	public List<? extends QuestionStructure> getBranchVersionList() {
+		return branchVersionList;
+	}
+
+	public void setBranchVersionList(List<DefaultQuestionStructure> branchVersionList) {
+		this.branchVersionList = branchVersionList;
+	}
+
+	public Map<String, String> getProperties() {
+		return properties;
+	}
+
+	public void setProperties(Map<String, String> properties) {
+		this.properties = properties;
+	}
+
+}

+ 29 - 0
src/main/java/cn/com/qmth/examcloud/question/core/question/DefaultQuestionOption.java

@@ -0,0 +1,29 @@
+package cn.com.qmth.examcloud.question.core.question;
+
+/**
+ * 选择题选项
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class DefaultQuestionOption implements QuestionOption {
+
+	private static final long serialVersionUID = 8258548156850194710L;
+
+	/**
+	 * 选项体
+	 */
+	private String body;
+
+	@Override
+	public String getBody() {
+		return body;
+	}
+
+	@Override
+	public void setBody(String body) {
+		this.body = body;
+	}
+
+}

+ 73 - 0
src/main/java/cn/com/qmth/examcloud/question/core/question/DefaultQuestionStructure.java

@@ -0,0 +1,73 @@
+package cn.com.qmth.examcloud.question.core.question;
+
+import java.util.List;
+
+/**
+ * 题结构<完整题机构>
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class DefaultQuestionStructure implements QuestionStructure {
+
+	private static final long serialVersionUID = 4744728219699873386L;
+
+	/**
+	 * 题结构体
+	 */
+	private String body;
+
+	/**
+	 * 版本号
+	 */
+	private String version;
+
+	/**
+	 * 是否有音频
+	 */
+	private boolean hasAudios;
+
+	/**
+	 * 体单元集合
+	 */
+	private List<DefaultQuestionUnit> questionUnitList;
+
+	@Override
+	public String getBody() {
+		return body;
+	}
+
+	@Override
+	public void setBody(String body) {
+		this.body = body;
+	}
+
+	@Override
+	public String getVersion() {
+		return version;
+	}
+
+	@Override
+	public void setVersion(String version) {
+		this.version = version;
+	}
+
+	@Override
+	public List<? extends QuestionUnit> getQuestionUnitList() {
+		return questionUnitList;
+	}
+
+	public void setQuestionUnitList(List<DefaultQuestionUnit> questionUnitList) {
+		this.questionUnitList = questionUnitList;
+	}
+
+	public boolean isHasAudios() {
+		return hasAudios;
+	}
+
+	public void setHasAudios(boolean hasAudios) {
+		this.hasAudios = hasAudios;
+	}
+
+}

+ 75 - 0
src/main/java/cn/com/qmth/examcloud/question/core/question/DefaultQuestionUnit.java

@@ -0,0 +1,75 @@
+package cn.com.qmth.examcloud.question.core.question;
+
+import java.util.List;
+
+/**
+ * 题单元<最小作答单元>
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class DefaultQuestionUnit implements QuestionUnit {
+
+	private static final long serialVersionUID = 3092731472173574671L;
+
+	/**
+	 * 题型
+	 */
+	private QuestionType questionType;
+
+	/**
+	 * 题干
+	 */
+	private String body;
+
+	/**
+	 * 选项集合
+	 */
+	private List<DefaultQuestionOption> questionOptionList;
+
+	/**
+	 * 正确答案
+	 */
+	private String[] rightAnswer;
+
+	@Override
+	public QuestionType getQuestionType() {
+		return questionType;
+	}
+
+	@Override
+	public void setQuestionType(QuestionType questionType) {
+		this.questionType = questionType;
+	}
+
+	@Override
+	public String getBody() {
+		return body;
+	}
+
+	@Override
+	public void setBody(String body) {
+		this.body = body;
+	}
+
+	@Override
+	public List<? extends QuestionOption> getQuestionOptionList() {
+		return questionOptionList;
+	}
+
+	public void setQuestionOptionList(List<DefaultQuestionOption> questionOptionList) {
+		this.questionOptionList = questionOptionList;
+	}
+
+	@Override
+	public String[] getRightAnswer() {
+		return rightAnswer;
+	}
+
+	@Override
+	public void setRightAnswer(String[] rightAnswer) {
+		this.rightAnswer = rightAnswer;
+	}
+
+}

+ 47 - 0
src/main/java/cn/com/qmth/examcloud/question/core/question/Question.java

@@ -0,0 +1,47 @@
+package cn.com.qmth.examcloud.question.core.question;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 题<完整题>
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public interface Question extends Serializable {
+
+	/**
+	 * 获取题ID
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public String getId();
+
+	/**
+	 * 设置题ID
+	 *
+	 * @author WANGWEI
+	 * @param id
+	 */
+	public void setId(String id);
+
+	/**
+	 * 获取主版本
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public QuestionStructure getMasterVersion();
+
+	/**
+	 * 获取分支
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public List<? extends QuestionStructure> getBranchVersionList();
+
+}

+ 30 - 0
src/main/java/cn/com/qmth/examcloud/question/core/question/QuestionOption.java

@@ -0,0 +1,30 @@
+package cn.com.qmth.examcloud.question.core.question;
+
+import java.io.Serializable;
+
+/**
+ * 选择题选项接口
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public interface QuestionOption extends Serializable {
+
+	/**
+	 * 获取选项体
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public String getBody();
+
+	/**
+	 * 设置选项体
+	 *
+	 * @author WANGWEI
+	 * @param body
+	 */
+	public void setBody(String body);
+
+}

+ 55 - 0
src/main/java/cn/com/qmth/examcloud/question/core/question/QuestionStructure.java

@@ -0,0 +1,55 @@
+package cn.com.qmth.examcloud.question.core.question;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 题结构<完整题机构>
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public interface QuestionStructure extends Serializable {
+
+	/**
+	 * 获取结构体
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public String getBody();
+
+	/**
+	 * 设置结构体
+	 *
+	 * @author WANGWEI
+	 * @param body
+	 */
+	public void setBody(String body);
+
+	/**
+	 * 获取版本
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public String getVersion();
+
+	/**
+	 * 设置版本
+	 *
+	 * @author WANGWEI
+	 * @param version
+	 */
+	public void setVersion(String version);
+
+	/**
+	 * 获取题单元集
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public List<? extends QuestionUnit> getQuestionUnitList();
+
+}

+ 60 - 0
src/main/java/cn/com/qmth/examcloud/question/core/question/QuestionType.java

@@ -0,0 +1,60 @@
+package cn.com.qmth.examcloud.question.core.question;
+
+/**
+ * 题型
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public enum QuestionType {
+
+	/**
+	 * 单选题
+	 */
+	SINGLE_CHOICE("单选题"),
+
+	/**
+	 * 多选题
+	 */
+	MULTIPLE_CHOICE("多选题"),
+
+	/**
+	 * 填空题
+	 */
+	FILL_UP("填空题"),
+
+	/**
+	 * 问答题
+	 */
+	ESSAY("问答题"),
+
+	/**
+	 * 判断题
+	 */
+	TRUE_OR_FALSE("判断题");
+
+	// ===========================================================================
+
+	/**
+	 * 描述
+	 */
+	private String desc;
+
+	/**
+	 * 构造函数
+	 *
+	 * @param desc
+	 */
+	private QuestionType(String desc) {
+		this.desc = desc;
+	}
+
+	/**
+	 * @return the desc
+	 */
+	public String getDesc() {
+		return desc;
+	}
+
+}

+ 71 - 0
src/main/java/cn/com/qmth/examcloud/question/core/question/QuestionUnit.java

@@ -0,0 +1,71 @@
+package cn.com.qmth.examcloud.question.core.question;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 题单元接口<最小作答单元>
+ *
+ * @author WANGWEI
+ * @date 2018年8月15日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public interface QuestionUnit extends Serializable {
+
+	/**
+	 * 获取题型
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public QuestionType getQuestionType();
+
+	/**
+	 * 设置题型
+	 *
+	 * @author WANGWEI
+	 * @param questionType
+	 */
+	public void setQuestionType(QuestionType questionType);
+
+	/**
+	 * 获取题干
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public String getBody();
+
+	/**
+	 * 设置题干
+	 *
+	 * @author WANGWEI
+	 * @param body
+	 */
+	public void setBody(String body);
+
+	/**
+	 * 获取选项集
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public List<? extends QuestionOption> getQuestionOptionList();
+
+	/**
+	 * 获取正确答案
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public String[] getRightAnswer();
+
+	/**
+	 * 设置正确答案
+	 *
+	 * @author WANGWEI
+	 * @param rightAnswer
+	 */
+	public void setRightAnswer(String[] rightAnswer);
+
+}