# 云帆培训考试系统

管理账号: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 {@Autowiredprivate 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 更新时间 是

基于Springboot vue前后端分离在线培训考试系统源码相关推荐

  1. 基于springboot vue前后端分离的图书借阅管理系统源码

    请观看视频: 基于springboot vue前后端分离的图书借阅管理系统源码 <project xmlns="http://maven.apache.org/POM/4.0.0&qu ...

  2. 基于SpringBoot+Vue前后端分离的在线教育平台项目

    基于SpringBoot+Vue前后端分离的在线教育平台项目 赠给有缘人,希望能帮助到你!也请不要吝惜你的大拇指,你的Star.点赞将是对我最大的鼓励与支持! 开源传送门: 后台:Gitee | Gi ...

  3. 基于springboot+vue前后端分离的学生在线考试管理系统

    一.基于springboot+vue前后端分离的学生在线考试管理系统 本系统通过教师用户创建班级编写试卷信息然后发布到班级.学生用户进入班级,在线作答,考试结果数据通过网络回收,系统自动进行判分,生成 ...

  4. 基于springboot+vue前后端分离的婚礼服装租赁系统

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,基于springboot+vue前后端分离的婚礼服装租赁系统. 计算机毕业生设计,课程设计需要帮助的可以找我 源码获取------> ...

  5. ssm vue架构图_ssm+vue前后端分离框架整合实现(附源码)

    前言 本文针对Spring+SpringMVC+Mybatis后台开发框架(基于maven构建)与vue前端框架(基于webpack构建)的项目整合进行介绍,对于ssm和vue单独项目的搭建不作为本文 ...

  6. Jeecg-Boot 2.0.0 版本发布,基于Springboot+Vue 前后端分离快速开发平台

    Jeecg-Boot 2.0.0 版本发布,前后端分离快速开发平台 Jeecg-Boot项目简介 源码下载 升级日志 Issues解决 v1.1升级到v2.0不兼容地方 系统截图 Jeecg-Boot ...

  7. 基于Springboot+vue前后端分离的项目--后端笔记

    效果图: 1.前言  从零开始搭建一个项目最重要的是选择一个自己熟悉的框架,此项目使用Springboot框架来构建后端结构,使用vue来构建前端页面.数据层我们常用的是Mybatis,这里我大部分使 ...

  8. 酒店管理|基于Springboot+Vue前后端分离实现酒店管理系统

    作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .掘金特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Java项目.毕业设计.简历模板.学习资料.面试题库.技术互助 ...

  9. ssm+vue前后端分离框架整合(附源码)

    前言 本文针对Spring+SpringMVC+Mybatis后台开发框架(基于maven构建)与vue前端框架(基于webpack构建)的项目整合进行介绍,对于ssm和vue单独项目的搭建不作为本文 ...

最新文章

  1. JAVA 线上故障排查完整套路!牛掰!
  2. SpringMVC之context-dispatcher.xml,了解基本的控制器
  3. 如何从 ABAP 调试器里提取某个内表的内容用于单元测试
  4. TCP提供可靠传输的工作原理和实现过程
  5. 基于CNN的增量学习论文的读后感
  6. python windows开发_windows 下 python 开发是一种什么样的体验?
  7. 前后端敏感数据加密方案及实现_02
  8. PHP 常用代码大全
  9. 《iOS网络编程与云端应用最佳实践》微博转发送书了!
  10. Go语言计时器的使用详解
  11. header()函数使用说明
  12. 。。。,带着这三点疑问,让我们层层深入的对HTTPS原理进行剖析!
  13. 内置auth 的使用,用超级用户创建
  14. [论文阅读] Transformer Transforms Salient Object Detection and Camouflaged Object Detection
  15. 【javascipt】Generator函数(生成器)
  16. js+面向对象相关笔记(一)
  17. 知行EDI系统-入门篇
  18. arcgis 利用栅格计算器计算 土地转移矩阵
  19. 三相并联功率因数校正matlab,基于并联技术的三相功率因数校正方法研究
  20. 单片机---HLK-W801移植Nes模拟器(一)

热门文章

  1. 6、商品条码API接口,免费好用
  2. 从0开始学Unity做SLG系列(杂记)
  3. Java多线程中的锁
  4. 详解退役军人一体化综合信息服务云平台解决方案
  5. 军队文职数学Ⅱ-物理考试题型总结
  6. 网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第0篇)
  7. 计算机cpu拆装步骤,cpu外壳怎么拆开?拆解cpu外壳详细教程-电脑教程
  8. 零基础学习想考华为认证,要从何学起,需要什么资料?
  9. 第27课:Node.js 模块详解
  10. DNS 查询原理详解