diff --git a/src/main/java/com/zhangmeng/online/exam/controller/InitController.java b/src/main/java/com/zhangmeng/online/exam/controller/InitController.java index a9d7459..0f71ee1 100644 --- a/src/main/java/com/zhangmeng/online/exam/controller/InitController.java +++ b/src/main/java/com/zhangmeng/online/exam/controller/InitController.java @@ -1,11 +1,14 @@ package com.zhangmeng.online.exam.controller; import com.zhangmeng.online.exam.dao.*; +import com.zhangmeng.online.exam.dto.Result; import com.zhangmeng.online.exam.entity.*; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Arrays; import java.util.HashSet; import java.util.List; @@ -154,6 +157,11 @@ public class InitController { @Autowired private SubjectDao subjectDao; + @GetMapping("/subject/init") + public void subjectInit(){ + subjectInitData(); + } + // 学科管理初始化数据 public void subjectInitData(){ @@ -223,4 +231,443 @@ public class InitController { professionDao.save(profession); } + @Autowired + private QuestionDao questionDao; + + @Autowired + private QuestionOptionDao questionOptionDao; + @GetMapping("/question") + public void questionInit(){ + questionInitData(); + } + + // 问题管理初始化数据 + public void questionInitData(){ + + Subject subject = this.subjectDao.findByCode("001"); + Profession profession = subject.getProfession(); + + /** + * 题目‌:下列文学常识表述错误的一项是( ) + * A.《骆驼祥子》中祥子失去土地后流落到北平城拉车 + * B.《朝花夕拾》原名《旧事重提》,收录了鲁迅的10篇回忆性散文 + * C.《水浒传》中“智取生辰纲”的故事与吴用、林冲等人相关 + * D.《战国策》由西汉刘向整理编辑,共三十三篇 + * ‌答案‌:C + * ‌解析‌:“智取生辰纲”的主要策划者是吴用,参与者包括晁盖、公孙胜等,林冲并未参与此事‌ + */ + Question question = new Question(); + question.setSubject(subject); + question.setType(Question.Type.SINGLE_CHOICE); + question.setName("下列文学常识表述错误的一项是( )"); + this.questionDao.save(question); + + QuestionOption optionA = new QuestionOption(); + optionA.setQuestion(question); + optionA.setOptionName("A."); + optionA.setOptionContent("《骆驼祥子》中祥子失去土地后流落到北平城拉车"); + optionA.setOptionOrder(1); + optionA.setIsAnswer(false); + this.questionOptionDao.save(optionA); + + QuestionOption optionB = new QuestionOption(); + optionB.setQuestion(question); + optionB.setOptionName("B."); + optionB.setOptionContent("《朝花夕拾》原名《旧事重提》,收录了鲁迅的10篇回忆性散文"); + optionB.setOptionOrder(2); + optionB.setIsAnswer(false); + this.questionOptionDao.save(optionB); + + QuestionOption optionC = new QuestionOption(); + optionC.setQuestion(question); + optionC.setOptionName("C."); + optionC.setOptionContent("《水浒传》中“智取生辰纲”的故事与吴用、林冲等人相关"); + optionC.setOptionOrder(3); + optionC.setIsAnswer(true); + optionC.setExplanation("“智取生辰纲”的主要策划者是吴用,参与者包括晁盖、公孙胜等,林冲并未参与此事"); + this.questionOptionDao.save(optionC); + + QuestionOption optionD = new QuestionOption(); + optionD.setQuestion(question); + optionD.setOptionName("D."); + optionD.setOptionContent("《战国策》由西汉刘向整理编辑,共三十三篇"); + optionD.setOptionOrder(4); + optionD.setIsAnswer(false); + this.questionOptionDao.save(optionD); + + question.setOptions(Arrays.asList(optionA, optionB, optionC, optionD)); + + /** + * 题目‌:《骆驼祥子》中祥子买第一辆洋车用了多长时间?( ) + * A.三年 B.四年 C.两年 D.五年 + * ‌答案‌:A + * ‌解析‌:祥子通过省吃俭用,历时三年才攒够钱购买第一辆车‌ + */ + question = new Question(); + question.setSubject(subject); + question.setType(Question.Type.SINGLE_CHOICE); + question.setName("《骆驼祥子》中祥子买第一辆洋车用了多长时间?( )"); + this.questionDao.save(question); + + optionA = new QuestionOption(); + optionA.setQuestion(question); + optionA.setOptionName("A."); + optionA.setOptionContent("三年"); + optionA.setOptionOrder(1); + optionA.setIsAnswer(false); + this.questionOptionDao.save(optionA); + + optionB = new QuestionOption(); + optionB.setQuestion(question); + optionB.setOptionName("B."); + optionB.setOptionContent("四年"); + optionB.setOptionOrder(2); + optionB.setIsAnswer(false); + this.questionOptionDao.save(optionB); + + optionC = new QuestionOption(); + optionC.setQuestion(question); + optionC.setOptionName("C."); + optionC.setOptionContent("两年"); + optionC.setOptionOrder(3); + optionC.setIsAnswer(false); + this.questionOptionDao.save(optionC); + + optionD = new QuestionOption(); + optionD.setQuestion(question); + optionD.setOptionName("D."); + optionD.setOptionContent("五年"); + optionD.setOptionOrder(4); + optionD.setIsAnswer(true); + optionD.setExplanation("祥子通过省吃俭用,历时三年才攒够钱购买第一辆车"); + this.questionOptionDao.save(optionD); + + question.setOptions(Arrays.asList(optionA, optionB, optionC, optionD)); + + /** + * 题目‌:《水浒传》中“白骨精”是指哪个角色?( ) + * A.杨过 B.郭靖 C.黄蓉 D.张无忌 + * ‌答案‌:C + * ‌解析‌:“白骨精”指的是张无忌,他在《水浒传》中扮演的角色是“白骨精”‌ + */ + question = new Question(); + question.setSubject(subject); + question.setType(Question.Type.SINGLE_CHOICE); + question.setName("《水浒传》中“白骨精”是指哪个角色?( )"); + this.questionDao.save(question); + + optionA = new QuestionOption(); + optionA.setQuestion(question); + optionA.setOptionName("A."); + optionA.setOptionContent("杨过"); + optionA.setOptionOrder(1); + optionA.setIsAnswer(false); + this.questionOptionDao.save(optionA); + + optionB = new QuestionOption(); + optionB.setQuestion(question); + optionB.setOptionName("B."); + optionB.setOptionContent("郭靖"); + optionB.setOptionOrder(2); + optionB.setIsAnswer(false); + this.questionOptionDao.save(optionB); + + optionC = new QuestionOption(); + optionC.setQuestion(question); + optionC.setOptionName("C."); + optionC.setOptionContent("黄蓉"); + optionC.setOptionOrder(3); + optionC.setIsAnswer(false); + this.questionOptionDao.save(optionC); + + optionD = new QuestionOption(); + optionD.setQuestion(question); + optionD.setOptionName("D."); + optionD.setOptionContent("张无忌"); + optionD.setOptionOrder(4); + optionD.setIsAnswer(true); + optionD.setExplanation("“白骨精”指的是张无忌,他在《水浒传》中扮演的角色是“白骨精”"); + this.questionOptionDao.save(optionD); + + question.setOptions(Arrays.asList(optionA, optionB, optionC, optionD)); + + /** + * ‌题目‌:异地恋时,下列哪句诗最能表达思念之情?( ) + * A.泪眼问花花不语,乱红飞过秋千去 + * B.江南无所有,聊赠一枝春 + * C.孤帆远影碧空尽,唯见长江天际流 + * D.离恨恰如春草,更行更远还生 + * ‌答案‌:D + * ‌解析‌:D选项以春草蔓延比喻离愁的绵长,契合异地相思的意境;B选项侧重赠物表心意,非专指思念‌ + */ + question = new Question(); + question.setSubject(subject); + question.setType(Question.Type.SINGLE_CHOICE); + question.setName("异地恋时,下列哪句诗最能表达思念之情?( )"); + this.questionDao.save(question); + + optionA = new QuestionOption(); + optionA.setQuestion(question); + optionA.setOptionName("A."); + optionA.setOptionContent("泪眼问花花不语,乱红飞过秋千去"); + optionA.setOptionOrder(1); + optionA.setIsAnswer(false); + this.questionOptionDao.save(optionA); + + optionB = new QuestionOption(); + optionB.setQuestion(question); + optionB.setOptionName("B."); + optionB.setOptionContent("离恨恰如春草,更行更远还生"); + optionB.setOptionOrder(2); + optionB.setIsAnswer(false); + this.questionOptionDao.save(optionB); + + optionC = new QuestionOption(); + optionC.setQuestion(question); + optionC.setOptionName("C."); + optionC.setOptionContent("春风十里不如你,江南岸边月下柳"); + optionC.setIsAnswer(false); + this.questionOptionDao.save(optionC); + + optionD = new QuestionOption(); + optionD.setQuestion(question); + optionD.setOptionName("D."); + optionD.setOptionContent("泪眼问花花不语,乱红飞过秋千去"); + optionD.setOptionOrder(4); + optionD.setIsAnswer(true); + optionD.setExplanation("D选项以春草蔓延比喻离愁的绵长,契合异地相思的意境;B选项侧重赠物表心意,非专指思念"); + this.questionOptionDao.save(optionD); + + question.setOptions(Arrays.asList(optionA, optionB, optionC, optionD)); + /** + * 题目‌:“接天莲叶无穷碧,映日荷花别样红”主要表达什么情感?( ) + * A.对自然美景的赞叹 + * B.对离别的伤感 + * C.对丰收的期待 + * D.对时光流逝的感慨 + * ‌答案‌:A + * ‌解析‌:诗句通过描绘莲叶与荷花的壮丽色彩,展现诗人对西湖风光的喜爱‌ + */ + question = new Question(); + question.setSubject(subject); + question.setType(Question.Type.SINGLE_CHOICE); + question.setName("“接天莲叶无穷碧,映日荷花别样红”主要表达什么情感?( )"); + this.questionDao.save(question); + + optionA = new QuestionOption(); + optionA.setQuestion(question); + optionA.setOptionName("A."); + optionA.setOptionContent("对自然美景的赞叹"); + optionA.setOptionOrder(1); + optionA.setIsAnswer(true); + optionA.setExplanation("诗句通过描绘莲叶与荷花的壮丽色彩,展现诗人对西湖风光的喜爱"); + this.questionOptionDao.save(optionA); + + optionB = new QuestionOption(); + optionB.setQuestion(question); + optionB.setOptionName("B."); + optionB.setOptionContent("对离别的伤感"); + optionB.setOptionOrder(2); + optionB.setIsAnswer(false); + this.questionOptionDao.save(optionB); + + optionC = new QuestionOption(); + optionC.setQuestion(question); + optionC.setOptionName("C."); + optionC.setOptionContent("对丰收的期待"); + optionC.setOptionOrder(3); + optionC.setIsAnswer(false); + this.questionOptionDao.save(optionC); + + optionD = new QuestionOption(); + optionD.setQuestion(question); + optionD.setOptionName("D."); + optionD.setOptionContent("对时光流逝的感慨"); + optionD.setOptionOrder(4); + optionD.setIsAnswer(false); + this.questionOptionDao.save(optionD); + + question.setOptions(Arrays.asList(optionA, optionB, optionC, optionD)); + + + /** + * 题目‌:下列句子没有语病的是( ) + * A.记者发现,中国人不爱喝牛奶的原因是饮食习惯未改变所致 + * B.我们必须站在实践科学发展观的高度统筹规划农业 + * C.从食堂到宿舍的煤屑路在没有月光的晚上阴森可怕 + * D.人口增加导致滥伐林木等问题,造成物种濒危 + * ‌答案‌:C + * ‌解析‌:A选项“原因”与“所致”重复;B选项缺少“构建和谐社会”等搭配;D选项“导致”与“造成”语义重复‌ + */ + question = new Question(); + question.setSubject(subject); + question.setType(Question.Type.SINGLE_CHOICE); + question.setName("下列句子没有语病的是( )"); + this.questionDao.save(question); + + optionA = new QuestionOption(); + optionA.setQuestion(question); + optionA.setOptionName("A."); + optionA.setOptionContent("原因"); + optionA.setOptionOrder(1); + optionA.setIsAnswer(false); + this.questionOptionDao.save(optionA); + + optionB = new QuestionOption(); + optionB.setQuestion(question); + optionB.setOptionName("B."); + optionB.setOptionContent("我们必须站在实践科学发展观的高度统筹规划农业"); + optionB.setOptionOrder(2); + optionB.setIsAnswer(false); + this.questionOptionDao.save(optionB); + + optionC = new QuestionOption(); + optionC.setQuestion(question); + optionC.setOptionName("C."); + optionC.setOptionContent("从食堂到宿舍的煤屑路在没有月光的晚上阴森可怕"); + optionC.setOptionOrder(3); + optionC.setIsAnswer(true); + optionC.setExplanation("从食堂到宿舍的煤屑路在没有月光的晚上阴森可怕,说明人们对自然环境的恐惧"); + this.questionOptionDao.save(optionC); + + optionD = new QuestionOption(); + optionD.setQuestion(question); + optionD.setOptionName("D."); + optionD.setOptionContent("人口增加导致滥伐林木等问题,造成物种濒危"); + optionD.setOptionOrder(4); + optionD.setIsAnswer(false); + this.questionOptionDao.save(optionD); + + question.setOptions(Arrays.asList(optionA, optionB, optionC, optionD)); + + /** + * 题目‌:下列句子中画线成语使用恰当的是( ) + * A.救灾物资络绎不绝地运往灾区 + * B.他总爱在会议上发表明日黄花的观点 + * C.这场辩论赛双方针锋相对,难分高下 + * D.听到获奖消息,他激动得手舞足蹈 + * ‌答案‌:C + * ‌解析‌:A选项“络绎不绝”形容人流而非物资;B选项“明日黄花”比喻过时事物,含贬义,与“观点”搭配不当;D选项“手舞足蹈”多形容儿童,与成人获奖场景不协调‌ + */ + question = new Question(); + question.setSubject(subject); + question.setType(Question.Type.SINGLE_CHOICE); + question.setName("下列句子中画线成语使用恰当的是( )"); + this.questionDao.save(question); + + + optionA = new QuestionOption(); + optionA.setQuestion(question); + optionA.setOptionName("A."); + optionA.setOptionContent("救灾物资络绎不绝地运往灾区"); + optionA.setOptionOrder(1); + optionA.setIsAnswer(false); + this.questionOptionDao.save(optionA); + + optionB = new QuestionOption(); + optionB.setQuestion(question); + optionB.setOptionName("B."); + optionB.setOptionContent("他总爱在会议上发表明日黄花的观点"); + optionB.setOptionOrder(2); + optionB.setIsAnswer(false); + this.questionOptionDao.save(optionB); + + optionC = new QuestionOption(); + optionC.setQuestion(question); + optionC.setOptionName("C."); + optionC.setOptionContent("这场辩论赛双方针锋相对,难分高下"); + optionC.setOptionOrder(3); + optionC.setIsAnswer(true); + optionC.setExplanation("这场辩论赛双方针锋相对,难分高下,说明双方观点不一致"); + this.questionOptionDao.save(optionC); + + optionD = new QuestionOption(); + optionD.setQuestion(question); + optionD.setOptionName("D."); + optionD.setOptionContent("听到获奖消息,他激动得手舞足蹈"); + optionD.setOptionOrder(4); + optionD.setIsAnswer(false); + this.questionOptionDao.save(optionD); + + question.setOptions(Arrays.asList(optionA, optionB, optionC, optionD)); + + /** + * 题目‌:下列句子中不属于语病的是( ) + * A.这位老师的讲课风格独特,深受学生喜爱 + * B.他的课堂气氛活跃,学生们都很投入 + * C.这位同学的作文写得很好,文章结构清晰 + * D.这位老师的授课方式循序渐进,学生能学到知识 + * ‌答案‌:B + * ‌解析‌:A选项“风格”与“独特”搭配不当;C选项“写得”与“文章”搭配不当;D选项“循序渐进”与“能学到”搭配不当‌ + */ + question = new Question(); + question.setSubject(subject); + question.setType(Question.Type.SINGLE_CHOICE); + question.setName("下列句子中不属于语病的是( )"); + this.questionDao.save(question); + + optionA = new QuestionOption(); + optionA.setQuestion(question); + optionA.setOptionName("A."); + optionA.setOptionContent("这位老师的讲课风格独特,深受学生喜爱"); + optionA.setOptionOrder(1); + optionA.setIsAnswer(false); + this.questionOptionDao.save(optionA); + + optionB = new QuestionOption(); + optionB.setQuestion(question); + optionB.setOptionName("B."); + optionB.setOptionContent("他的课堂气氛活跃,学生们都很投入"); + optionB.setOptionOrder(2); + optionB.setIsAnswer(true); + optionB.setExplanation("他的课堂气氛活跃,学生们都很投入,说明教师的教学方式符合学生的学习需求"); + this.questionOptionDao.save(optionB); + + optionC = new QuestionOption(); + optionC.setQuestion(question); + optionC.setOptionName("C."); + optionC.setOptionContent("这位同学的作文写得很好,文章结构清晰"); + optionC.setOptionOrder(3); + optionC.setIsAnswer(false); + this.questionOptionDao.save(optionC); + + optionD = new QuestionOption(); + optionD.setQuestion(question); + optionD.setOptionName("D."); + optionD.setOptionContent("这位老师的授课方式循序渐进,学生能学到知识"); + optionD.setOptionOrder(4); + optionD.setIsAnswer(false); + this.questionOptionDao.save(optionD); + + question.setOptions(Arrays.asList(optionA, optionB, optionC, optionD)); + + } + + + @GetMapping("/test1") + public void test1() { + + Role role = this.roleDao.findById(1L).get(); + + Permission p = new Permission(); + p.setName("选项管理"); + p.setDescription("选项管理"); + p.setSort(3); + p.setFrontpath("/role/list"); + p.setRoles(new HashSet<>(List.of(role))); + permissionDao.save(p); + + Permission p3 = new Permission(); + p3.setName("选项管理"); + p3.setIcon("option-list"); + p3.setUrl("/option/list"); + p3.setDescription("角色管理"); + p3.setSort(3); + p3.setFrontpath("/option/list"); + p3.setParent(p); + permissionDao.save(p3); + + } + + } diff --git a/src/main/java/com/zhangmeng/online/exam/controller/SubjectController.java b/src/main/java/com/zhangmeng/online/exam/controller/SubjectController.java new file mode 100644 index 0000000..a130951 --- /dev/null +++ b/src/main/java/com/zhangmeng/online/exam/controller/SubjectController.java @@ -0,0 +1,51 @@ +package com.zhangmeng.online.exam.controller; + +import com.zhangmeng.online.exam.dao.SubjectDao; +import com.zhangmeng.online.exam.dto.Result; +import com.zhangmeng.online.exam.entity.Subject; +import com.zhangmeng.online.exam.entity.User; +import com.zhangmeng.online.exam.utils.PageUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zm + * @date 2025/3/17 16:44 + * @version: 1.0 + */ +@RestController +@RequestMapping("/subject") +public class SubjectController { + + @Autowired + private SubjectDao subjectDao; + + @RequestMapping("/list") + public Object list(Integer pageNum, Integer pageSize) { + Pageable pageable = PageRequest.of(PageUtils.getPageNum(pageNum), pageSize, Sort.Direction.DESC, "addTime"); + Page all = subjectDao.findAll(pageable); + List list = all.getContent(); + List> resultList = new ArrayList<>(); + for (Subject subject : list) { + Map map = new HashMap<>(); + map.put("id", subject.getId()); + map.put("name", subject.getName()); + map.put("code", subject.getCode()); + map.put("description", subject.getDescription()); + map.put("addTime", subject.getAddTime()); + resultList.add(map); + } + return Result.success(pageNum, pageSize, all.getTotalElements(), resultList); + } + +} diff --git a/src/main/java/com/zhangmeng/online/exam/dao/SubjectDao.java b/src/main/java/com/zhangmeng/online/exam/dao/SubjectDao.java index 293674e..bc9cc37 100644 --- a/src/main/java/com/zhangmeng/online/exam/dao/SubjectDao.java +++ b/src/main/java/com/zhangmeng/online/exam/dao/SubjectDao.java @@ -9,4 +9,7 @@ import org.springframework.data.jpa.repository.JpaRepository; * @version: 1.0 */ public interface SubjectDao extends JpaRepository { + + public Subject findByCode(String code); + } diff --git a/src/main/java/com/zhangmeng/online/exam/entity/QuestionOption.java b/src/main/java/com/zhangmeng/online/exam/entity/QuestionOption.java index e6e7298..458bd38 100644 --- a/src/main/java/com/zhangmeng/online/exam/entity/QuestionOption.java +++ b/src/main/java/com/zhangmeng/online/exam/entity/QuestionOption.java @@ -38,4 +38,7 @@ public class QuestionOption extends BaseEntity { private Integer optionOrder;//选项顺序 private Boolean isAnswer;//是否是正确答案 + + private String explanation;//选项解析 + }