赞
踩
# 云帆培训考试系统
管理账号:admin/admin 学员账号:person/person
# 介绍
一款多角色在线培训考试系统,系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能,考试流程完善。
# 技术栈
SpringBoot / Redis / Shiro / Vue / MySQL
# 产品功能
## 系统完善:完善的权限控制和用户系统
权限控制:基于Shiro和JWT开发的权限控制功能。
用户系统:用户管理、部门管理、角色管理等。
## 多角色:多角色支持
考试端:学生学员角色、支持在线考试、查看分数、训练错题。
管理端:题库管理、试题管理、考试管理、用户部门管理、查看考试情况等等。
## 定员考试:考试权限定义
完全公开:任何人员都可以参与考试。
指定部门:只有选中部门的人员才可以看到考试。
## 多题型:常用题型支持
支持题型:单选题、多选题、判断题。
难易程度:普通、困难。
## 便捷组卷:题库组卷
题库组卷:指定题库、分数、数量;题目、选项随机排序、杜绝作弊
- package com.yf.exam.modules.exam.controller;
-
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.yf.exam.core.api.ApiRest;
- import com.yf.exam.core.api.controller.BaseController;
- import com.yf.exam.core.api.dto.BaseIdReqDTO;
- import com.yf.exam.core.api.dto.BaseIdsReqDTO;
- import com.yf.exam.core.api.dto.BaseStateReqDTO;
- import com.yf.exam.core.api.dto.PagingReqDTO;
- import com.yf.exam.modules.exam.dto.ExamDTO;
- import com.yf.exam.modules.exam.dto.request.ExamSaveReqDTO;
- import com.yf.exam.modules.exam.dto.response.ExamOnlineRespDTO;
- import com.yf.exam.modules.exam.dto.response.ExamReviewRespDTO;
- import com.yf.exam.modules.exam.entity.Exam;
- import com.yf.exam.modules.exam.service.ExamService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
-
- import java.util.Date;
-
- /**
- * <p>
- * 考试控制器
- * </p>
- *
- * @author 聪明笨狗
- * @since 2023-02-25 16:18
- */
- @Api(tags={"考试"})
- @RestController
- @RequestMapping("/exam/api/exam/exam")
- public class ExamController extends BaseController {
-
- @Autowired
- private ExamService baseService;
-
- /**
- * 添加或修改
- * @param reqDTO
- * @return
- */
- @ApiOperation(value = "添加或修改")
- @RequestMapping(value = "/save", method = { RequestMethod.POST})
- public ApiRest save(@RequestBody ExamSaveReqDTO reqDTO) {
- //复制参数
- baseService.save(reqDTO);
- return super.success();
- }
-
- /**
- * 批量删除
- * @param reqDTO
- * @return
- */
- @ApiOperation(value = "批量删除")
- @RequestMapping(value = "/delete", method = { RequestMethod.POST})
- public ApiRest edit(@RequestBody BaseIdsReqDTO reqDTO) {
- //根据ID删除
- baseService.removeByIds(reqDTO.getIds());
- return super.success();
- }
-
- /**
- * 查找详情
- * @param reqDTO
- * @return
- */
- @ApiOperation(value = "查找详情")
- @RequestMapping(value = "/detail", method = { RequestMethod.POST})
- public ApiRest<ExamDTO> find(@RequestBody BaseIdReqDTO reqDTO) {
- ExamSaveReqDTO dto = baseService.findDetail(reqDTO.getId());
- return super.success(dto);
- }
-
- /**
- * 查找详情
- * @param reqDTO
- * @return
- */
- @ApiOperation(value = "查找详情")
- @RequestMapping(value = "/state", method = { RequestMethod.POST})
- public ApiRest state(@RequestBody BaseStateReqDTO reqDTO) {
-
- QueryWrapper<Exam> wrapper = new QueryWrapper<>();
- wrapper.lambda().in(Exam::getId, reqDTO.getIds());
- Exam exam = new Exam();
- exam.setState(reqDTO.getState());
- exam.setUpdateTime(new Date());
-
- baseService.update(exam, wrapper);
- return super.success();
- }
-
-
- /**
- * 分页查找
- * @param reqDTO
- * @return
- */
- @ApiOperation(value = "考试视角")
- @RequestMapping(value = "/online-paging", method = { RequestMethod.POST})
- public ApiRest<IPage<ExamOnlineRespDTO>> myPaging(@RequestBody PagingReqDTO<ExamDTO> reqDTO) {
- //分页查询并转换
- IPage<ExamOnlineRespDTO> page = baseService.onlinePaging(reqDTO);
- return super.success(page);
- }
-
- /**
- * 分页查找
- * @param reqDTO
- * @return
- */
- @ApiOperation(value = "分页查找")
- @RequestMapping(value = "/paging", method = { RequestMethod.POST})
- public ApiRest<IPage<ExamDTO>> paging(@RequestBody PagingReqDTO<ExamDTO> reqDTO) {
- //分页查询并转换
- IPage<ExamDTO> page = baseService.paging(reqDTO);
-
- return super.success(page);
- }
-
-
- /**
- * 分页查找
- * @param reqDTO
- * @return
- */
- @ApiOperation(value = "待阅试卷")
- @RequestMapping(value = "/review-paging", method = { RequestMethod.POST})
- public ApiRest<IPage<ExamReviewRespDTO>> reviewPaging(@RequestBody PagingReqDTO<ExamDTO> reqDTO) {
- //分页查询并转换
- IPage<ExamReviewRespDTO> page = baseService.reviewPaging(reqDTO);
-
- return super.success(page);
- }
-
-
- }
- 表名:el_exam
- 说明:考试信息
- 参数 类型 描述 ⾮空
- id varchar(64) ID 否
- title varchar(255) 考试名称 否
- content varchar(255) 考试描述 否
- open_type int(11) 1公开2部⻔3定员 否
- join_type int(11) 组题⽅式1题库,2指定 否
- level int(11) 难度:0不限,1普通,2较难 否
- state int(11) 考试状态 否
- time_limit tinyint(3) 是否限时 否
- start_time datetime 开始时间 是
- end_time datetime 结束时间 是
- create_time datetime 创建时间 是
- update_time datetime 更新时间 是
- total_score int(11) 总分数 否
- total_time int(11) 总时⻓(分钟) 否
- qualify_score int(11) 及格分数 否
- 表名:el_exam_depart
- 说明:考试部⻔
- 参数 类型 描述 ⾮空
- id varchar(32) ID 否
- exam_id varchar(32) 考试ID 否
- depart_id varchar(32) 部⻔ID 否
- 表名:el_exam_repo
- 说明:考试题库
- 参数 类型 描述 ⾮空
- id varchar(64) ID 否
- exam_id varchar(64) 考试ID 否
- repo_id varchar(64) 题库ID 否
- radio_count int(11) 单选题数量 否
- radio_score int(11) 单选题分数 否
- multi_count int(11) 多选题数量 否
- multi_score int(11) 多选题分数 否
- judge_count int(11) 判断题数量 否
- judge_score int(11) 判断题分数 否
- saq_count int(11) 简答题数量 否
- saq_score int(11) 简答题分数 否
- 表名:el_paper
- 表名:el_paper
- 说明:试卷
- 参数 类型 描述 ⾮空
- id varchar(64) 试卷ID 否
- user_id varchar(64) ⽤户ID 否
- depart_id varchar(32) 部⻔ID 否
- exam_id varchar(64) 规则ID 否
- title varchar(64) 考试标题 否
- total_time int(11) 考试时⻓ 否
- user_time int(11) ⽤户时⻓ 否
- total_score int(11) 试卷总分 否
- qualify_score int(11) 及格分 否
- obj_score int(11) 客观分 否
- subj_score int(11) 主观分 否
- user_score int(11) ⽤户得分 否
- has_saq tinyint(3) 是否包含简答题 否
- state int(11) 试卷状态 否
- create_time datetime 创建时间 是
- update_time datetime 更新时间 是
- limit_time datetime 截⽌时间 是
- 表名:el_paper_qu
- 说明:试卷考题
- 参数 类型 描述 ⾮空
- id varchar(64) ID 否
- paper_id varchar(64) 试卷ID 否
- qu_id varchar(64) 题⽬ID 否
- qu_type int(11) 题⽬类型 否
- answered tinyint(3) 是否已答 否
- answer varchar(5000) 主观答案 否
- sort int(11) 问题排序 否
- score int(11) 单题分分值 否
- actual_score int(11) 实际得分(主观题) 否
- is_right tinyint(3) 是否答对 否
- 表名:el_paper_qu_answer
- 说明:试卷考题备选答案
- 参数 类型 描述 ⾮空
- id varchar(64) ⾃增ID 否
- id varchar(64) ⾃增ID 否
- paper_id varchar(64) 试卷ID 否
- answer_id varchar(32) 回答项ID 否
- qu_id varchar(32) 题⽬ID 否
- is_right tinyint(11) 是否正确项 否
- checked tinyint(11) 是否选中 否
- sort int(11) 排序 否
- abc varchar(64) 选项标签 否
- 表名:el_qu
- 说明:问题题⽬
- 参数 类型 描述 ⾮空
- id varchar(64) 题⽬ID 否
- qu_type int(11) 题⽬类型 否
- level int(11) 1普通,2较难 否
- image varchar(500) 题⽬图⽚ 否
- content varchar(2000) 题⽬内容 否
- create_time datetime 创建时间 否
- update_time datetime 更新时间 否
- remark varchar(255) 题⽬备注 否
- analysis varchar(2000) 整题解析 否
- 表名:el_qu_answer
- 表名:el_qu_answer
- 说明:候选答案
- 参数 类型 描述 ⾮空
- id varchar(64) 答案ID 否
- qu_id varchar(64) 问题ID 否
- is_right tinyint(3) 是否正确 否
- image varchar(500) 选项图⽚ 否
- content varchar(5000) 答案内容 否
- analysis varchar(5000) 答案分析 否
- 表名:el_qu_repo
- 说明:试题题库
- 参数 类型 描述 ⾮空
- id varchar(64) ⽆ 否
- qu_id varchar(64) 试题 否
- repo_id varchar(64) 归属题库 否
- qu_type int(11) 题⽬类型 否
- sort int(11) 排序 否
- 表名:el_repo
- 说明:题库
- 参数 类型 描述 ⾮空
- id varchar(64) 题库ID 否
- code varchar(255) 题库编号 否
- title varchar(255) 题库名称 否
- radio_count int(11) 单选数量 否
- multi_count int(11) 多选数量 否
- judge_count int(11) 判断数量 否
- remark varchar(255) 题库备注 否
- create_time datetime 创建时间 是
- update_time datetime 更新时间 是
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。