——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Node.js≥14
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
❗没学过node.js的不要搞前后端分离项目
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明





基于javaweb的SpringBoot考试管理系统(java+springboot+maven+vue+mysql)
一、项目简述本系统功能包括: 支持单选题、多选题、判断题支持学生(student)、教师(teacher)、管理员(admin)三种角色学生:参加考试和查看我的考试教师:学生的所有权限+创建/编辑题目+创建/编辑考试管理员:教师的所有权限+管理用户。
二、项目运行 环境配置:
Jdk1.8 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
项目技术:
Springboot + Maven + Jpa+ Vue 等等组成,B/S模式 + Maven管理等等。
——————————CodeStart——————————
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| }
@GetMapping("/record/detail/{recordId}") @ApiOperation("根据考试记录id获取考试记录详情") ResultVO<RecordDetailVo> getExamRecordDetail(@PathVariable String recordId) { ResultVO<RecordDetailVo> resultVO; try { RecordDetailVo recordDetailVo = examService.getRecordDetail(recordId); resultVO = new ResultVO<>(0, "获取考试记录详情成功", recordDetailVo); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "获取考试记录详情失败", null); } return resultVO; } }
package com.huawei.l00379880.exam.controller;
@RestController @Api(tags = "User APIs") @RequestMapping("/user") public class UserController {
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| @ApiOperation("根据考试的id,获取考试详情") ResultVO<ExamDetailVo> getExamDetail(@PathVariable String id) { ResultVO<ExamDetailVo> resultVO; try { ExamDetailVo examDetail = examService.getExamDetail(id); resultVO = new ResultVO<>(0, "获取考试详情成功", examDetail); } catch (Exception e) { resultVO = new ResultVO<>(-1, "获取考试详情失败", null); } return resultVO; }
@PostMapping("/finish/{examId}") @ApiOperation("根据用户提交的答案对指定id的考试判分") ResultVO<ExamRecord> finishExam(@PathVariable String examId, @RequestBody HashMap<String, List<String>> answersMap, HttpServletRequest request) { ResultVO<ExamRecord> resultVO; try { String userId = (String) request.getAttribute("user_id"); ExamRecord examRecord = examService.judge(userId, examId, answersMap); resultVO = new ResultVO<>(0, "考卷提交成功", examRecord); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "考卷提交失败", null); } return resultVO; }
@GetMapping("/record/list") @ApiOperation("获取当前用户的考试记录") ResultVO<List<ExamRecordVo>> getExamRecordList(HttpServletRequest request) { ResultVO<List<ExamRecordVo>> resultVO; try { String userId = (String) request.getAttribute("user_id"); List<ExamRecordVo> examRecordVoList = examService.getExamRecordList(userId); resultVO = new ResultVO<>(0, "获取考试记录成功", examRecordVoList); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "获取考试记录失败", null); } return resultVO; }
@GetMapping("/record/detail/{recordId}") @ApiOperation("根据考试记录id获取考试记录详情") ResultVO<RecordDetailVo> getExamRecordDetail(@PathVariable String recordId) { ResultVO<RecordDetailVo> resultVO; try { RecordDetailVo recordDetailVo = examService.getRecordDetail(recordId); resultVO = new ResultVO<>(0, "获取考试记录详情成功", recordDetailVo);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| return resultVO; }
@PostMapping("/update") @ApiOperation("更新考试") ResultVO<Exam> updateExam(@RequestBody ExamVo examVo, HttpServletRequest request) { ResultVO<Exam> resultVO; String userId = (String) request.getAttribute("user_id"); try { Exam exam = examService.update(examVo, userId); resultVO = new ResultVO<>(0, "更新考试成功", exam); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "更新考试失败", null); } return resultVO; }
@GetMapping("/card/list") @ApiOperation("获取考试列表,适配前端卡片列表") ResultVO<List<ExamCardVo>> getExamCardList() { ResultVO<List<ExamCardVo>> resultVO; try { List<ExamCardVo> examCardVoList = examService.getExamCardList(); resultVO = new ResultVO<>(0, "获取考试列表卡片成功", examCardVoList); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "获取考试列表卡片失败", null); } return resultVO; }
@GetMapping("/detail/{id}") @ApiOperation("根据考试的id,获取考试详情") ResultVO<ExamDetailVo> getExamDetail(@PathVariable String id) { ResultVO<ExamDetailVo> resultVO; try { ExamDetailVo examDetail = examService.getExamDetail(id); resultVO = new ResultVO<>(0, "获取考试详情成功", examDetail); } catch (Exception e) { resultVO = new ResultVO<>(-1, "获取考试详情失败", null);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| @ApiOperation("获取考试列表,适配前端卡片列表") ResultVO<List<ExamCardVo>> getExamCardList() { ResultVO<List<ExamCardVo>> resultVO; try { List<ExamCardVo> examCardVoList = examService.getExamCardList(); resultVO = new ResultVO<>(0, "获取考试列表卡片成功", examCardVoList); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "获取考试列表卡片失败", null); } return resultVO; }
@GetMapping("/detail/{id}") @ApiOperation("根据考试的id,获取考试详情") ResultVO<ExamDetailVo> getExamDetail(@PathVariable String id) { ResultVO<ExamDetailVo> resultVO; try { ExamDetailVo examDetail = examService.getExamDetail(id); resultVO = new ResultVO<>(0, "获取考试详情成功", examDetail); } catch (Exception e) { resultVO = new ResultVO<>(-1, "获取考试详情失败", null); } return resultVO; }
@PostMapping("/finish/{examId}") @ApiOperation("根据用户提交的答案对指定id的考试判分") ResultVO<ExamRecord> finishExam(@PathVariable String examId, @RequestBody HashMap<String, List<String>> answersMap, HttpServletRequest request) { ResultVO<ExamRecord> resultVO; try { String userId = (String) request.getAttribute("user_id"); ExamRecord examRecord = examService.judge(userId, examId, answersMap); resultVO = new ResultVO<>(0, "考卷提交成功", examRecord); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "考卷提交失败", null); } return resultVO; }
@GetMapping("/record/list") @ApiOperation("获取当前用户的考试记录") ResultVO<List<ExamRecordVo>> getExamRecordList(HttpServletRequest request) {
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| }
@PostMapping("/finish/{examId}") @ApiOperation("根据用户提交的答案对指定id的考试判分") ResultVO<ExamRecord> finishExam(@PathVariable String examId, @RequestBody HashMap<String, List<String>> answersMap, HttpServletRequest request) { ResultVO<ExamRecord> resultVO; try { String userId = (String) request.getAttribute("user_id"); ExamRecord examRecord = examService.judge(userId, examId, answersMap); resultVO = new ResultVO<>(0, "考卷提交成功", examRecord); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "考卷提交失败", null); } return resultVO; }
@GetMapping("/record/list") @ApiOperation("获取当前用户的考试记录") ResultVO<List<ExamRecordVo>> getExamRecordList(HttpServletRequest request) { ResultVO<List<ExamRecordVo>> resultVO; try { String userId = (String) request.getAttribute("user_id"); List<ExamRecordVo> examRecordVoList = examService.getExamRecordList(userId); resultVO = new ResultVO<>(0, "获取考试记录成功", examRecordVoList); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "获取考试记录失败", null); } return resultVO; }
@GetMapping("/record/detail/{recordId}") @ApiOperation("根据考试记录id获取考试记录详情") ResultVO<RecordDetailVo> getExamRecordDetail(@PathVariable String recordId) { ResultVO<RecordDetailVo> resultVO; try { RecordDetailVo recordDetailVo = examService.getRecordDetail(recordId); resultVO = new ResultVO<>(0, "获取考试记录详情成功", recordDetailVo); } catch (Exception e) { e.printStackTrace(); resultVO = new ResultVO<>(-1, "获取考试记录详情失败", null); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| sendJsonMessage(response, JsonData.buildError("token无效,请重新登录")); return false; } String id = (String) claims.get("id"); String username = (String) claims.get("username"); request.setAttribute("user_id", id); request.setAttribute("username", username); return true; } sendJsonMessage(response, JsonData.buildError("token为null,请先登录!")); return false; }
public static void sendJsonMessage(HttpServletResponse response, Object obj) throws Exception { Gson g = new Gson(); response.setContentType("application/json; charset=utf-8"); PrintWriter writer = response.getWriter(); writer.print(g.toJson(obj)); writer.close(); response.flushBuffer(); } } package com.huawei.l00379880.exam.controller;
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=231222062008200wv
https://javayms.pages.dev?id=231222062008200wv