diff --git a/backend/src/main/java/lsgwr/exam/ExamApplication.java b/backend/src/main/java/lsgwr/exam/ExamApplication.java index 28458d1..b192019 100644 --- a/backend/src/main/java/lsgwr/exam/ExamApplication.java +++ b/backend/src/main/java/lsgwr/exam/ExamApplication.java @@ -1,12 +1,17 @@ +// 指定当前类所在的包路径,这是Java中组织类的一种方式,有助于类的管理和访问控制。 package lsgwr.exam; - +// 导入Spring Boot的启动类和应用配置自动装配的注解类。 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; - +// @SpringBootApplication是一个方便的注解,它包括了@Configuration,@EnableAutoConfiguration,和@ComponentScan注解。 +// 它告诉Spring Boot基于当前类所在包及其子包下的组件来启动自动配置和组件扫描。 @SpringBootApplication public class ExamApplication { - - public static void main(String[] args) { + // main方法是Java应用程序的入口点。当运行这个类时,JVM会调用这个方法。 + public static void main(String[] args) + { + // SpringApplication.run方法启动Spring应用,传入ExamApplication.class(当前启动类)和main方法的参数args。 + // 这个方法会执行一系列的操作,包括启动Spring容器,加载应用上下文,自动配置等。 SpringApplication.run(ExamApplication.class, args); } } diff --git a/backend/src/main/java/lsgwr/exam/vo/ExamCreateVo.java b/backend/src/main/java/lsgwr/exam/vo/ExamCreateVo.java index a43f3d1..23e52c2 100644 --- a/backend/src/main/java/lsgwr/exam/vo/ExamCreateVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/ExamCreateVo.java @@ -5,60 +5,63 @@ * @email : liangshanguang2@gmail.com ***********************************************************/ package lsgwr.exam.vo; - +// 引入Jackson库中的注解,用于JSON序列化和反序列化时自定义属性名 import com.fasterxml.jackson.annotation.JsonProperty; +// 引入Lombok库中的@Data注解,它会自动为你的类的字段生成getter和setter方法,以及toString、equals和hashCode方法 import lombok.Data; import java.util.List; - +// 使用@Data注解来自动生成getter、setter等方法 @Data public class ExamCreateVo { - + // 考试名称,通过@JsonProperty注解指定JSON字段名为"name" @JsonProperty("name") private String examName; - + // 考试头像或图标,通过@JsonProperty注解指定JSON字段名为"avatar" @JsonProperty("avatar") private String examAvatar; - + // 考试描述,通过@JsonProperty注解指定JSON字段名为"desc" @JsonProperty("desc") private String examDescription; /** - * 考试时长,单位分钟 + * 考试时长,单位分钟。通过@JsonProperty注解指定JSON字段名为"elapse" + * 注意:这里的注释说明了字段的用途和单位 */ @JsonProperty("elapse") private Integer examTimeLimit; /** - * 单选题 + * 单选题列表。这里虽然使用了List类型,但注释仅指明了是单选题 + * 注意:ExamQuestionSelectVo可能是一个表示题目信息的VO类,但在此代码段中未给出 */ private List radios; /** - * 多选题 + * 多选题列表。同样使用了List类型,但注释指明了是多选题 */ private List checks; /** - * 判断题 + * 判断题列表。使用了List类型,注释指明了是判断题 */ private List judges; /** - * 单选题的分数 + * 单选题每题的分数。通过@JsonProperty注解指定JSON字段名为"radioScore" */ @JsonProperty("radioScore") private Integer examScoreRadio; /** - * 多选题的分数 + * 多选题每题的分数。通过@JsonProperty注解指定JSON字段名为"checkScore" */ @JsonProperty("checkScore") private Integer examScoreCheck; /** - * 判断题每题的分数 + * 判断题每题的分数。通过@JsonProperty注解指定JSON字段名为"judgeScore" */ @JsonProperty("judgeScore") private Integer examScoreJudge; diff --git a/backend/src/main/java/lsgwr/exam/vo/ExamDetailVo.java b/backend/src/main/java/lsgwr/exam/vo/ExamDetailVo.java index 7e20e7b..d66f9ee 100644 --- a/backend/src/main/java/lsgwr/exam/vo/ExamDetailVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/ExamDetailVo.java @@ -5,29 +5,42 @@ * @email : liangshanguang2@gmail.com ***********************************************************/ package lsgwr.exam.vo; - +// 引入Exam实体类,它可能包含了考试的详细信息,如考试ID、名称、描述等 import lsgwr.exam.entity.Exam; +// 引入Lombok库的@Data注解,用于自动生成getter、setter等方法 import lombok.Data; - +// 使用@Data注解来自动生成这个类的getter、setter等方法 @Data public class ExamDetailVo { /** - * 考试的基本信息对象 + * 考试的基本信息对象。 + * 这个字段存储了一个Exam类型的对象,该对象可能包含了考试的详细信息, + * 如考试ID、名称、描述、时长、状态等。 + * 这里,ExamDetailVo通过持有这个Exam对象来提供关于特定考试的详细信息。 */ private Exam exam; /** - * 单选题的id数组 + * 单选题的id数组。 + * 这个字段是一个字符串数组,用于存储考生所选的单选题的ID。 + * 每个字符串可能代表一个单选题的唯一标识符。 + * 在处理考试结果或进行成绩统计时,这些ID可以用于查找和验证考生所选的答案。 */ private String[] radioIds; /** - * 多选题的id数组 + * 多选题的id数组。 + * 类似于单选题的id数组,这个字段存储了考生所选的多选题的ID。 + * 由于多选题可能允许选择多个选项,因此这个数组可能包含多个字符串, + * 每个字符串代表一个被选中的多选题的唯一标识符。 */ private String[] checkIds; /** - * 判断题的id数组 + * 判断题的id数组。 + * 这个字段也是一个字符串数组,用于存储考生所选的判断题的ID。 + * 每个字符串代表一个判断题的唯一标识符,通常与考生所选的答案(正确或错误)相关联。 + * 在处理考试结果时,这些ID可以用于查找和验证考生对判断题的回答。 */ private String[] judgeIds; diff --git a/backend/src/main/java/lsgwr/exam/vo/ExamPageVo.java b/backend/src/main/java/lsgwr/exam/vo/ExamPageVo.java index 2cac0d1..9638d44 100644 --- a/backend/src/main/java/lsgwr/exam/vo/ExamPageVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/ExamPageVo.java @@ -4,37 +4,40 @@ * @date : 2019-06-22 17:00 * @email : liangshanguang2@gmail.com ***********************************************************/ -package lsgwr.exam.vo; - +package lsgwr.exam.vo;// 定义包名,用于组织类文件,避免命名冲突 +// 导入Jackson库的JsonProperty注解,用于JSON序列化时自定义字段名 import com.fasterxml.jackson.annotation.JsonProperty; +// 导入Lombok库的Data注解,用于自动生成getter、setter、equals、hashCode和toString方法 import lombok.Data; - +// 导入Java的List接口,用于存储ExamVo对象的集合 import java.util.List; - +// 使用Lombok的@Data注解,自动为该类生成getter、setter等方法 @Data public class ExamPageVo { /** - * 分页时每个分页的大小 + * 分页时每个分页的大小,即每页显示多少条记录 */ private Integer pageSize; /** - * 当前是在第几页,注意要比前端传过来地小1 + * 当前是在第几页,注意这里的页码是从1开始计数的,但后端处理时可能需要减1以符合某些分页算法或框架的页码从0开始的要求 + * 这里的注释提醒开发者,后端接收到的页码值可能需要减1处理 */ private Integer pageNo; /** - * 一共有多少条符合条件的记录 + * 一共有多少条符合条件的记录,用于计算总页数 */ private Long totalCount; /** - * 一共有多少页 + * 一共有多少页,根据总记录数和每页大小计算得出 */ private Integer totalPage; /** - * 当前页的详细数据 + * 当前页的详细数据,包含了一个ExamVo对象的列表,ExamVo类通常定义了考试信息的数据结构 + * @JsonProperty("data")注解用于JSON序列化时,将examVoList字段的JSON键名指定为"data" */ @JsonProperty("data") private List examVoList; diff --git a/backend/src/main/java/lsgwr/exam/vo/ExamQuestionSelectVo.java b/backend/src/main/java/lsgwr/exam/vo/ExamQuestionSelectVo.java index a70a03f..7fa14dd 100644 --- a/backend/src/main/java/lsgwr/exam/vo/ExamQuestionSelectVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/ExamQuestionSelectVo.java @@ -4,22 +4,32 @@ * @date : 2019-06-17 23:10 * @email : liangshanguang2@gmail.com ***********************************************************/ -package lsgwr.exam.vo; - +package lsgwr.exam.vo;// 定义包名,用于组织类文件,避免命名冲突 +// 导入Jackson库的JsonProperty注解,用于JSON序列化时自定义字段名 import com.fasterxml.jackson.annotation.JsonProperty; +// 导入Lombok库的Data注解,用于自动生成getter、setter、equals、hashCode和toString方法 import lombok.Data; - +// 使用Lombok的@Data注解,自动为该类生成getter、setter等方法 @Data public class ExamQuestionSelectVo { + /** + * 问题的唯一标识符,在JSON序列化时,该字段的名称被指定为"id" + * 这通常用于前端向后端发送请求时,标识特定的选择题 + */ @JsonProperty("id") private String questionId; - + /** + * 问题的名称,在JSON序列化时,该字段的名称被指定为"name" + * 这通常用于在前端显示问题的名称 + */ @JsonProperty("name") private String questionName; /** - * 这个问题是否被选为了考试中的题目.默认是false,经过前端修改后可能会变成true, - * 传回来用于创建问题 + * 这个问题是否被选为了考试中的题目。默认值是false,表示未被选中。 + * 当前端用户进行选择后,该值可能会变为true,并随请求发送回后端, + * 用于在创建或更新考试时,确定哪些问题被包含在内。 + * 在JSON序列化时,该字段的名称被指定为"checked"。 */ @JsonProperty("checked") private Boolean checked = false; diff --git a/backend/src/main/java/lsgwr/exam/vo/ExamQuestionTypeVo.java b/backend/src/main/java/lsgwr/exam/vo/ExamQuestionTypeVo.java index 318cddc..333b3e0 100644 --- a/backend/src/main/java/lsgwr/exam/vo/ExamQuestionTypeVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/ExamQuestionTypeVo.java @@ -4,21 +4,35 @@ * @date : 2019-06-23 11:00 * @email : liangshanguang2@gmail.com ***********************************************************/ -package lsgwr.exam.vo; - +package lsgwr.exam.vo;// 定义包名,用于组织类文件,避免命名冲突 +// 导入Jackson库的JsonProperty注解,用于JSON序列化时自定义字段名 import com.fasterxml.jackson.annotation.JsonProperty; +// 导入Lombok库的Data注解,用于自动生成getter、setter、equals、hashCode和toString方法 import lombok.Data; - +// 导入Java的List接口,用于存储对象的集合 import java.util.List; - +// 使用Lombok的@Data注解,自动为该类生成getter、setter等方法 @Data public class ExamQuestionTypeVo { + /** + * 单选题列表,包含多个ExamQuestionSelectVo对象,每个对象代表一个单选题。 + * 在JSON序列化时,该字段的名称被指定为"radios"。 + * 注意:这里的"radios"命名可能表示单选按钮(radio buttons)的集合。 + */ @JsonProperty("radios") private List examQuestionSelectVoRadioList; - + /** + * 多选题列表,包含多个ExamQuestionSelectVo对象,每个对象代表一个多选题。 + * 在JSON序列化时,该字段的名称被指定为"checks"。 + * 注意:这里的"checks"命名可能表示复选框(checkboxes)的集合。 + */ @JsonProperty("checks") private List examQuestionSelectVoCheckList; - + /** + * 判断题列表,包含多个ExamQuestionSelectVo对象,每个对象代表一个判断题。 + * 在JSON序列化时,该字段的名称被指定为"judges"。 + * 注意:这里的"judges"命名可能表示判断题(true/false或yes/no)的集合。 + */ @JsonProperty("judges") private List examQuestionSelectVoJudgeList; } diff --git a/backend/src/main/java/lsgwr/exam/vo/ExamRecordVo.java b/backend/src/main/java/lsgwr/exam/vo/ExamRecordVo.java index 5ac65c9..d2218dc 100644 --- a/backend/src/main/java/lsgwr/exam/vo/ExamRecordVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/ExamRecordVo.java @@ -4,27 +4,34 @@ * @date : 2019/10/25 7:42 * @email : liangshanguang2@gmail.com ***********************************************************/ -package lsgwr.exam.vo; - -import lsgwr.exam.entity.Exam; -import lsgwr.exam.entity.ExamRecord; -import lsgwr.exam.entity.User; +package lsgwr.exam.vo;// 定义包名,用于组织类文件,避免命名冲突 +// 导入相关的实体类 +import lsgwr.exam.entity.Exam;// 考试实体类 +import lsgwr.exam.entity.ExamRecord; // 考试记录实体类 +import lsgwr.exam.entity.User;// 用户实体类 +// 导入Lombok库的Data注解,用于自动生成getter、setter、equals、hashCode和toString方法 import lombok.Data; - +// 使用Lombok的@Data注解自动生成getter、setter等方法 @Data public class ExamRecordVo { /** - * 当前考试记录对应的考试 + * 当前考试记录对应的考试。 + * 这个字段包含了考试的详细信息,如考试名称、描述、时间等。 + * 它是一个Exam类型的对象,与数据库中的Exam表相对应。 */ private Exam exam; /** - * 当前考试对应的内容 + * 当前考试对应的内容(或记录)。 + * 这个字段包含了考试记录的具体信息,如用户的答题情况、得分等。 + * 它是一个ExamRecord类型的对象,与数据库中的ExamRecord表相对应。 */ private ExamRecord examRecord; /** - * 参加考试的用户信息 + * 参加考试的用户信息。 + * 这个字段包含了用户的详细信息,如用户名、邮箱、头像等。 + * 它是一个User类型的对象,与数据库中的User表相对应。 */ private User user; } diff --git a/backend/src/main/java/lsgwr/exam/vo/ExamVo.java b/backend/src/main/java/lsgwr/exam/vo/ExamVo.java index 2947746..b8c2228 100644 --- a/backend/src/main/java/lsgwr/exam/vo/ExamVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/ExamVo.java @@ -4,86 +4,83 @@ * @date : 2019/5/14 07:42 * @email : liangshanguang2@gmail.com ***********************************************************/ - +// 定义包名,用于组织类文件并避免命名冲突 package lsgwr.exam.vo; +// 导入所需的库和注解 +import com.fasterxml.jackson.annotation.JsonFormat;// 用于日期格式的序列化和反序列化 +import com.fasterxml.jackson.annotation.JsonProperty;// 用于自定义JSON字段名 +import lombok.Data;// 用于自动生成getter、setter等方法 -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.Date; -import java.util.List; - +import java.util.Date;// Java日期类 +import java.util.List;// Java列表接口 +// 使用Lombok的@Data注解自动生成getter、setter等方法 @Data public class ExamVo { + // 使用@JsonProperty注解自定义JSON字段名为"id" @JsonProperty("id") - private String examId; + private String examId;// 考试的唯一标识符 + // 使用@JsonProperty注解自定义JSON字段名为"name" @JsonProperty("name") - private String examName; + private String examName;// 考试名称 + // 使用@JsonProperty注解自定义JSON字段名为"avatar" @JsonProperty("avatar") - private String examAvatar; + private String examAvatar;// 考试图标或头像 + // 使用@JsonProperty注解自定义JSON字段名为"desc" @JsonProperty("desc") - private String examDescription; - + private String examDescription;// 考试描述 + // 单选题列表,JSON字段名为"radios" @JsonProperty("radios") - private List examQuestionSelectVoRadioList; - + private List examQuestionSelectVoRadioList;// 单选题选项列表 + // 多选题列表,JSON字段名为"checks" @JsonProperty("checks") - private List examQuestionSelectVoCheckList; - + private List examQuestionSelectVoCheckList;// 多选题选项列表 + // 判断题列表,JSON字段名为"judges" @JsonProperty("judges") - private List examQuestionSelectVoJudgeList; - + private List examQuestionSelectVoJudgeList;// 判断题选项列表 + // 考试总分,JSON字段名为"score" @JsonProperty("score") - private Integer examScore; - + private Integer examScore;// 考试的总分数 + // 单选题总分,JSON字段名为"radioScore" @JsonProperty("radioScore") - private Integer examScoreRadio; - + private Integer examScoreRadio;// 单选题的总分数 + // 多选题总分,JSON字段名为"checkScore" @JsonProperty("checkScore") - private Integer examScoreCheck; - + private Integer examScoreCheck;// 多选题的总分数 + // 判断题总分,JSON字段名为"judgeScore" @JsonProperty("judgeScore") - private Integer examScoreJudge; + private Integer examScoreJudge;// 判断题的总分数 - /** - * 考试的创建人,根据id从用户表中查取姓名 - */ + // 考试创建人的名称,JSON字段名为"creator" + // 注意:这里假设只存储了创建人的名称,实际可能需要根据ID查询数据库获取 @JsonProperty("creator") - private String examCreator; + private String examCreator;// 考试的创建者名称 - /** - * 考试限制的时间,单位为分钟 - */ + // 考试的时间限制(分钟),JSON字段名为"elapse" @JsonProperty("elapse") - private Integer examTimeLimit; + private Integer examTimeLimit;// 考试的时间限制,单位为分钟 - /** - * 开始时间 - */ + // 考试开始时间,JSON字段名为"startDate" + // 使用@JsonFormat注解指定日期格式和时区 @JsonProperty("startDate") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date examStartDate; + private Date examStartDate;// 考试的开始时间 - /** - * 结束时间 - */ + // 考试结束时间,JSON字段名为"endDate" + // 使用@JsonFormat注解指定日期格式和时区 @JsonProperty("endDate") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date examEndDate; + private Date examEndDate;// 考试的结束时间 - /** - * 创建时间 - */ + // 创建时间,JSON字段名为"createTime" + // 使用@JsonFormat注解指定日期格式和时区 @JsonProperty("createTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date createTime; + private Date createTime;// 记录的创建时间 - /** - * 更新时间 - */ + // 更新时间,JSON字段名为"updateTime" + // 使用@JsonFormat注解指定日期格式和时区 @JsonProperty("updateTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date updateTime; + private Date updateTime;// 记录的更新时间 }