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

该系统采用SpringBoot、Redis、Shiro和Vue等技术栈,提供完善的权限控制和用户系统,支持多角色如学生和管理员。功能包括在线考试、错题训练、定员考试和多种题型。代码示例展示了考试的CRUD操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 云帆培训考试系统 

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

 

司法局在线培训考试系统是一款基于B/S架构的在线学习系统,专一针对政府单位公务员培训,大规模培训干部,提高干部素质,远程教学,省时省力,便捷高效。系统支持手机端、电脑端,可以在安卓、苹果、微信中使用,方便学员利用碎片化时间进行随时随地的学习,该系统集在线学习、在线练习、模拟考试在线考试于一体。界面大气,庄重、灵活。Logo、导航栏名称、轮播图等其他基本信息后台均能自定义修改。 软件功能 1. 支持手机,可以在安卓、苹果、微信中使用。 2. 在线学习、在线练习、模拟考试在线考试、错题回顾、考试回顾等 3. 支持自动判卷和手工判卷。 4. 支持本地视频(flv)在线上传在线播放。 5. 支持试题批量导入、导出。 6. 支持考试成绩分组查询、分组导出。 2016新增功能 1. *支持多种界面风格,风格自由切换 2. *视频在线学习,精准记录学员观看时间(视频失去焦点即停止播放) 3. *支持视频播放事件(课堂提问、实时反馈、提醒、资料展示) 4. *学习时间精准统计,统计在线时间,在线学习时间 5. *支持微信,手机端在线学习、在线考试 6. *学员批量导入、批量导出 7. *教师批量导入、批量导出 8. *支持公式编辑 系统环境 系统基于.Net 4.0开发;数据库采用Sqlserver2005; 硬件环境:CPU1.6Mhz以上,内存2GB以上 软件环境:Windows server 2003或以上版本、IIS6以上版本、DotNet4.0 Framework、Sqlserver2005或以上版本 演示地址 http://sf.weisha100.cn/default.ashx 学员账号:zs密码1 管理账号:song密码1(在网站底部的“机构管理”处登录) 下载地址 http://pan.baidu.com/s/1ge70WxH 联系 QQ:19303340 淘宝店:https://shop35387540.taobao.com/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿毕业分享网

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值