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










基于javaweb的SpringBoot在线考试系统(java+springboot+vue+mysql+maven)
线上考试前端系统
介绍
- 本系统通过教师用户创建班级编写试卷信息然后发布到班级。学生用户进入班级,在线作答,考试结果数据通过网络回收,系统自动进行判分,生成考试成绩和统计数据。教师用户也可以再次批阅试卷,确定最后得分。
- 试卷支持单选、多选、判断、填空、简答五大题型,可以选项是否允许题目复制、题目乱序功能、是否启动自动批改功能
软件架构
- 这是一款基于前后端分离的线上考试系统
- 前端采用vue框架,搭配vue-cli、axios、vuex、element-ui组件库。
- 后端采用springBoot框架、jwt、swagger、持久层mybatis,mysql数据库。
环境运行
- node.js v14.6.0
- jdk 1.8
- mysql 8.0.22
前端启动命令:npm run serve
老师(管理员):
13000000000 123456
学生:
注册即可
前端前修改后端application.properties中的web.uploadpath配置,指向本机的实际位置
——————————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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| page.build((List) result.getData()); return ResultUtil.success(page); }
@ApiOperation(value = "获取班级下的试卷列表") @GetMapping("/getExamByClasses") public Msg getExamByClassesId(HttpServletRequest request,@RequestParam Integer classesId,@RequestParam int pageSize,@RequestParam int currentPage){ String token = request.getHeader("token");
int u_id=Integer.parseInt(JwtUtil.getUserId(token));
Msg result = examService.selectByClassesId(classesId, u_id); Page page = new Page(pageSize,currentPage); page.build((List) result.getData()); return ResultUtil.success(page); }
@ApiOperation(value = "获取学生已完成的试卷列表") @GetMapping("/getFinishExam") public Msg getFinishExam(HttpServletRequest request,@RequestParam int pageSize,@RequestParam int currentPage){ String token = request.getHeader("token");
int u_id=Integer.parseInt(JwtUtil.getUserId(token));
return examService.selectFinishExamList(u_id, pageSize,currentPage); }
@ApiOperation(value = "获取试卷信息(教师角色)") @GetMapping("/getTestPaperByTp_id") public Msg getTestPaperByTp_id(HttpServletRequest request,@RequestParam int examId){ String token = request.getHeader("token"); if(!JwtUtil.getUserStatus(token).equals("teacher")){ return ResultUtil.error(400,"用户身份不正确"); } int userId = Integer.parseInt(JwtUtil.getUserId(token)); return examService.tchSelectByPrimaryKey(userId,examId); }
@ApiOperation(value = "获取试卷信息(学生角色)") @GetMapping("/getTestPaper") public Msg getTestPaper(HttpServletRequest request,@RequestParam int examId ,@RequestParam int classesId){ String token = request.getHeader("token");
|
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
| if(keyword == null){ keyword = ""; } String token = request.getHeader("token"); int u_id=Integer.parseInt(Objects.requireNonNull(JwtUtil.getUserId(token)));
Msg result = examService.selectByCreatorId(u_id,keyword); Page page = new Page(pageSize,currentPage); page.build((List) result.getData()); return ResultUtil.success(page); }
@ApiOperation(value = "获取班级下的试卷列表") @GetMapping("/getExamByClasses") public Msg getExamByClassesId(HttpServletRequest request,@RequestParam Integer classesId,@RequestParam int pageSize,@RequestParam int currentPage){ String token = request.getHeader("token");
int u_id=Integer.parseInt(JwtUtil.getUserId(token));
Msg result = examService.selectByClassesId(classesId, u_id); Page page = new Page(pageSize,currentPage); page.build((List) result.getData()); return ResultUtil.success(page); }
@ApiOperation(value = "获取学生已完成的试卷列表") @GetMapping("/getFinishExam") public Msg getFinishExam(HttpServletRequest request,@RequestParam int pageSize,@RequestParam int currentPage){ String token = request.getHeader("token");
int u_id=Integer.parseInt(JwtUtil.getUserId(token));
return examService.selectFinishExamList(u_id, pageSize,currentPage); }
@ApiOperation(value = "获取试卷信息(教师角色)") @GetMapping("/getTestPaperByTp_id") public Msg getTestPaperByTp_id(HttpServletRequest request,@RequestParam int examId){ String token = request.getHeader("token"); if(!JwtUtil.getUserStatus(token).equals("teacher")){ return ResultUtil.error(400,"用户身份不正确"); } int userId = Integer.parseInt(JwtUtil.getUserId(token)); return examService.tchSelectByPrimaryKey(userId,examId); }
@ApiOperation(value = "获取试卷信息(学生角色)") @GetMapping("/getTestPaper") public Msg getTestPaper(HttpServletRequest request,@RequestParam int examId ,@RequestParam int classesId){
|
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
| @ApiOperation(value = "更改试卷") @PostMapping(value = "/updateTestPaper" ) public Msg updateTestPaper(@RequestBody ExamTopicTchDTO examTopicTchDTO,HttpServletRequest request){ String token = request.getHeader("token");
if(!JwtUtil.getUserStatus(token).equals("teacher")){ return ResultUtil.error(400,"用户身份不正确"); }
int u_id=Integer.parseInt(JwtUtil.getUserId(token));
return examService.updateByPrimaryKeySelective(examTopicTchDTO,u_id);
}
@ApiOperation(value = "提交试卷(学生角色)") @PostMapping(value = "/submitTestPaper" ) public Msg submitTestPaper(@RequestBody StuSubmitExamDTO stuSubmitExamDTO, HttpServletRequest request){ System.out.println(stuSubmitExamDTO); String token = request.getHeader("token"); int u_id=Integer.parseInt(JwtUtil.getUserId(token));
return markExamService.submitTestPaper(stuSubmitExamDTO,u_id); }
}
|
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
| int u_id=Integer.parseInt(JwtUtil.getUserId(token));
return userService.changeRole(u_id); }
@DeleteMapping(value = "/deleteUser") public String deleteUser(int id){ int result=userService.deleteUser(id); if(result==1){ return "注销成功"; }else { return "注销失败"; } } }
@RestController public class ReleaseExamController { @Autowired private ReleaseExamService releaseExamService; @Autowired private ExamClassesDao examClassesDao;
@ApiOperation(value = "获取发布考试信息") @GetMapping(value = "/getReleaseInfo") public Msg getReleaseInfo(HttpServletRequest request,@RequestParam Integer classesId,@RequestParam Integer examId){ String token = request.getHeader("token");
return releaseExamService.getReleaseInfo(classesId,examId); }
@ApiOperation(value = "发布考试") @PostMapping(value = "/releaseTest") public Msg releaseTest(HttpServletRequest request, @RequestBody ReleasExamVO releasExamVO){ System.out.println(releasExamVO); String token = request.getHeader("token");
if(!JwtUtil.getUserStatus(token).equals("teacher")){ return ResultUtil.error(400,"用户身份不正确");
|
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
| String token = request.getHeader("token"); int u_id=Integer.parseInt(JwtUtil.getUserId(token));
Msg result=userService.queryUserByC_id(c_id, u_id); Page<List> page = new Page(pageSize,currentPage); page.build((List) result.getData()); return ResultUtil.success(page); }
@ApiOperation(value = "修改用户信息") @PutMapping(value = "/updateUser") public Msg updateUser(@RequestBody User user){ int result=userService.updateUser(user); if(result>0){ return ResultUtil.success(); }else{ return ResultUtil.error(100,"修改失败"); } }
@ApiOperation(value = "获取用户权限") @GetMapping(value = "getRole") public Msg getRole(HttpServletRequest request){ String token = request.getHeader("token"); int u_id=Integer.parseInt(JwtUtil.getUserId(token)); return userService.getRole(u_id); }
@ApiOperation(value = "切换用户角色") @PutMapping(value = "changeRole") public Msg changeRole(HttpServletRequest request){ String token = request.getHeader("token"); int u_id=Integer.parseInt(JwtUtil.getUserId(token));
return userService.changeRole(u_id); }
@DeleteMapping(value = "/deleteUser") public String deleteUser(int id){ int result=userService.deleteUser(id); if(result==1){ return "注销成功"; }else { return "注销失败"; }
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=362223270309201dz
https://javayms.pages.dev?id=362223270309201dz