当前位置:   article > 正文

基于Springboot vue前后端分离在线培训考试系统源码_云帆考试源码

云帆考试源码

# 云帆培训考试系统 

管理账号:admin/admin 学员账号:person/person   


# 介绍
一款多角色在线培训考试系统,系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能,考试流程完善。


# 技术栈
SpringBoot / Redis / Shiro / Vue / MySQL

# 产品功能

## 系统完善:完善的权限控制和用户系统
权限控制:基于Shiro和JWT开发的权限控制功能。    
用户系统:用户管理、部门管理、角色管理等。    

## 多角色:多角色支持    
考试端:学生学员角色、支持在线考试、查看分数、训练错题。    
管理端:题库管理、试题管理、考试管理、用户部门管理、查看考试情况等等。    

## 定员考试:考试权限定义    
完全公开:任何人员都可以参与考试。    
指定部门:只有选中部门的人员才可以看到考试。    

## 多题型:常用题型支持    
支持题型:单选题、多选题、判断题。    
难易程度:普通、困难。    

## 便捷组卷:题库组卷    
题库组卷:指定题库、分数、数量;题目、选项随机排序、杜绝作弊    
 

  1. package com.yf.exam.modules.exam.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.yf.exam.core.api.ApiRest;
  5. import com.yf.exam.core.api.controller.BaseController;
  6. import com.yf.exam.core.api.dto.BaseIdReqDTO;
  7. import com.yf.exam.core.api.dto.BaseIdsReqDTO;
  8. import com.yf.exam.core.api.dto.BaseStateReqDTO;
  9. import com.yf.exam.core.api.dto.PagingReqDTO;
  10. import com.yf.exam.modules.exam.dto.ExamDTO;
  11. import com.yf.exam.modules.exam.dto.request.ExamSaveReqDTO;
  12. import com.yf.exam.modules.exam.dto.response.ExamOnlineRespDTO;
  13. import com.yf.exam.modules.exam.dto.response.ExamReviewRespDTO;
  14. import com.yf.exam.modules.exam.entity.Exam;
  15. import com.yf.exam.modules.exam.service.ExamService;
  16. import io.swagger.annotations.Api;
  17. import io.swagger.annotations.ApiOperation;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.web.bind.annotation.RequestBody;
  20. import org.springframework.web.bind.annotation.RequestMapping;
  21. import org.springframework.web.bind.annotation.RequestMethod;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import java.util.Date;
  24. /**
  25. * <p>
  26. * 考试控制器
  27. * </p>
  28. *
  29. * @author 聪明笨狗
  30. * @since 2023-02-25 16:18
  31. */
  32. @Api(tags={"考试"})
  33. @RestController
  34. @RequestMapping("/exam/api/exam/exam")
  35. public class ExamController extends BaseController {
  36. @Autowired
  37. private ExamService baseService;
  38. /**
  39. * 添加或修改
  40. * @param reqDTO
  41. * @return
  42. */
  43. @ApiOperation(value = "添加或修改")
  44. @RequestMapping(value = "/save", method = { RequestMethod.POST})
  45. public ApiRest save(@RequestBody ExamSaveReqDTO reqDTO) {
  46. //复制参数
  47. baseService.save(reqDTO);
  48. return super.success();
  49. }
  50. /**
  51. * 批量删除
  52. * @param reqDTO
  53. * @return
  54. */
  55. @ApiOperation(value = "批量删除")
  56. @RequestMapping(value = "/delete", method = { RequestMethod.POST})
  57. public ApiRest edit(@RequestBody BaseIdsReqDTO reqDTO) {
  58. //根据ID删除
  59. baseService.removeByIds(reqDTO.getIds());
  60. return super.success();
  61. }
  62. /**
  63. * 查找详情
  64. * @param reqDTO
  65. * @return
  66. */
  67. @ApiOperation(value = "查找详情")
  68. @RequestMapping(value = "/detail", method = { RequestMethod.POST})
  69. public ApiRest<ExamDTO> find(@RequestBody BaseIdReqDTO reqDTO) {
  70. ExamSaveReqDTO dto = baseService.findDetail(reqDTO.getId());
  71. return super.success(dto);
  72. }
  73. /**
  74. * 查找详情
  75. * @param reqDTO
  76. * @return
  77. */
  78. @ApiOperation(value = "查找详情")
  79. @RequestMapping(value = "/state", method = { RequestMethod.POST})
  80. public ApiRest state(@RequestBody BaseStateReqDTO reqDTO) {
  81. QueryWrapper<Exam> wrapper = new QueryWrapper<>();
  82. wrapper.lambda().in(Exam::getId, reqDTO.getIds());
  83. Exam exam = new Exam();
  84. exam.setState(reqDTO.getState());
  85. exam.setUpdateTime(new Date());
  86. baseService.update(exam, wrapper);
  87. return super.success();
  88. }
  89. /**
  90. * 分页查找
  91. * @param reqDTO
  92. * @return
  93. */
  94. @ApiOperation(value = "考试视角")
  95. @RequestMapping(value = "/online-paging", method = { RequestMethod.POST})
  96. public ApiRest<IPage<ExamOnlineRespDTO>> myPaging(@RequestBody PagingReqDTO<ExamDTO> reqDTO) {
  97. //分页查询并转换
  98. IPage<ExamOnlineRespDTO> page = baseService.onlinePaging(reqDTO);
  99. return super.success(page);
  100. }
  101. /**
  102. * 分页查找
  103. * @param reqDTO
  104. * @return
  105. */
  106. @ApiOperation(value = "分页查找")
  107. @RequestMapping(value = "/paging", method = { RequestMethod.POST})
  108. public ApiRest<IPage<ExamDTO>> paging(@RequestBody PagingReqDTO<ExamDTO> reqDTO) {
  109. //分页查询并转换
  110. IPage<ExamDTO> page = baseService.paging(reqDTO);
  111. return super.success(page);
  112. }
  113. /**
  114. * 分页查找
  115. * @param reqDTO
  116. * @return
  117. */
  118. @ApiOperation(value = "待阅试卷")
  119. @RequestMapping(value = "/review-paging", method = { RequestMethod.POST})
  120. public ApiRest<IPage<ExamReviewRespDTO>> reviewPaging(@RequestBody PagingReqDTO<ExamDTO> reqDTO) {
  121. //分页查询并转换
  122. IPage<ExamReviewRespDTO> page = baseService.reviewPaging(reqDTO);
  123. return super.success(page);
  124. }
  125. }

  1. 表名:el_exam
  2. 说明:考试信息
  3. 参数 类型 描述 ⾮空
  4. id varchar(64) ID 否
  5. title varchar(255) 考试名称 否
  6. content varchar(255) 考试描述 否
  7. open_type int(11) 1公开2部⻔3定员 否
  8. join_type int(11) 组题⽅式1题库,2指定 否
  9. level int(11) 难度:0不限,1普通,2较难 否
  10. state int(11) 考试状态 否
  11. time_limit tinyint(3) 是否限时 否
  12. start_time datetime 开始时间 是
  13. end_time datetime 结束时间 是
  14. create_time datetime 创建时间 是
  15. update_time datetime 更新时间 是
  16. total_score int(11) 总分数 否
  17. total_time int(11) 总时⻓(分钟) 否
  18. qualify_score int(11) 及格分数 否
  19. 表名:el_exam_depart
  20. 说明:考试部⻔
  21. 参数 类型 描述 ⾮空
  22. id varchar(32) ID 否
  23. exam_id varchar(32) 考试ID 否
  24. depart_id varchar(32) 部⻔ID 否
  25. 表名:el_exam_repo
  26. 说明:考试题库
  27. 参数 类型 描述 ⾮空
  28. id varchar(64) ID 否
  29. exam_id varchar(64) 考试ID 否
  30. repo_id varchar(64) 题库ID 否
  31. radio_count int(11) 单选题数量 否
  32. radio_score int(11) 单选题分数 否
  33. multi_count int(11) 多选题数量 否
  34. multi_score int(11) 多选题分数 否
  35. judge_count int(11) 判断题数量 否
  36. judge_score int(11) 判断题分数 否
  37. saq_count int(11) 简答题数量 否
  38. saq_score int(11) 简答题分数 否
  39. 表名:el_paper
  40. 表名:el_paper
  41. 说明:试卷
  42. 参数 类型 描述 ⾮空
  43. id varchar(64) 试卷ID 否
  44. user_id varchar(64) ⽤户ID 否
  45. depart_id varchar(32) 部⻔ID 否
  46. exam_id varchar(64) 规则ID 否
  47. title varchar(64) 考试标题 否
  48. total_time int(11) 考试时⻓ 否
  49. user_time int(11) ⽤户时⻓ 否
  50. total_score int(11) 试卷总分 否
  51. qualify_score int(11) 及格分 否
  52. obj_score int(11) 客观分 否
  53. subj_score int(11) 主观分 否
  54. user_score int(11) ⽤户得分 否
  55. has_saq tinyint(3) 是否包含简答题 否
  56. state int(11) 试卷状态 否
  57. create_time datetime 创建时间 是
  58. update_time datetime 更新时间 是
  59. limit_time datetime 截⽌时间 是
  60. 表名:el_paper_qu
  61. 说明:试卷考题
  62. 参数 类型 描述 ⾮空
  63. id varchar(64) ID 否
  64. paper_id varchar(64) 试卷ID 否
  65. qu_id varchar(64) 题⽬ID 否
  66. qu_type int(11) 题⽬类型 否
  67. answered tinyint(3) 是否已答 否
  68. answer varchar(5000) 主观答案 否
  69. sort int(11) 问题排序 否
  70. score int(11) 单题分分值 否
  71. actual_score int(11) 实际得分(主观题) 否
  72. is_right tinyint(3) 是否答对 否
  73. 表名:el_paper_qu_answer
  74. 说明:试卷考题备选答案
  75. 参数 类型 描述 ⾮空
  76. id varchar(64) ⾃增ID 否
  77. id varchar(64) ⾃增ID 否
  78. paper_id varchar(64) 试卷ID 否
  79. answer_id varchar(32) 回答项ID 否
  80. qu_id varchar(32) 题⽬ID 否
  81. is_right tinyint(11) 是否正确项 否
  82. checked tinyint(11) 是否选中 否
  83. sort int(11) 排序 否
  84. abc varchar(64) 选项标签 否
  85. 表名:el_qu
  86. 说明:问题题⽬
  87. 参数 类型 描述 ⾮空
  88. id varchar(64) 题⽬ID 否
  89. qu_type int(11) 题⽬类型 否
  90. level int(11) 1普通,2较难 否
  91. image varchar(500) 题⽬图⽚ 否
  92. content varchar(2000) 题⽬内容 否
  93. create_time datetime 创建时间 否
  94. update_time datetime 更新时间 否
  95. remark varchar(255) 题⽬备注 否
  96. analysis varchar(2000) 整题解析 否
  97. 表名:el_qu_answer
  98. 表名:el_qu_answer
  99. 说明:候选答案
  100. 参数 类型 描述 ⾮空
  101. id varchar(64) 答案ID 否
  102. qu_id varchar(64) 问题ID 否
  103. is_right tinyint(3) 是否正确 否
  104. image varchar(500) 选项图⽚ 否
  105. content varchar(5000) 答案内容 否
  106. analysis varchar(5000) 答案分析 否
  107. 表名:el_qu_repo
  108. 说明:试题题库
  109. 参数 类型 描述 ⾮空
  110. id varchar(64) ⽆ 否
  111. qu_id varchar(64) 试题 否
  112. repo_id varchar(64) 归属题库 否
  113. qu_type int(11) 题⽬类型 否
  114. sort int(11) 排序 否
  115. 表名:el_repo
  116. 说明:题库
  117. 参数 类型 描述 ⾮空
  118. id varchar(64) 题库ID 否
  119. code varchar(255) 题库编号 否
  120. title varchar(255) 题库名称 否
  121. radio_count int(11) 单选数量 否
  122. multi_count int(11) 多选数量 否
  123. judge_count int(11) 判断数量 否
  124. remark varchar(255) 题库备注 否
  125. create_time datetime 创建时间 是
  126. update_time datetime 更新时间 是

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/497772
推荐阅读
相关标签
  

闽ICP备14008679号