——————————DescriptionStart——————————
运行环境 Java≥8、MySQL≥5.7、Node.js≥14
开发工具 后端:eclipse/idea/myeclipse/sts等均可配置运行 前端:WebStorm/VSCode/HBuilderX等均可
❗没学过node.js的不要搞前后端分离项目
适用 课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot学生成绩管理系统(java+springboot+maven+vue+elementui+redis+mysql)
项目介绍
角色:管理员、教师、学生 角色权限管理RBAC、学院管理、专业管理、班级管理、教师管理、学生管理、学期管理、考试管理、课程管理、留言管理、教学安排、成绩管理、成绩图表分析、统计分析、成绩打印等
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 4.数据库:MySql 5.7/8.0版本均可; 5.是否Maven项目:是;
技术栈
后端:SpringBoot+mybatisplus+redis
前端:Vue+Ant Design Vue
使用说明
项目运行: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
登录页面展示:
系统主页展示:
统计信息展示:
计划成绩分析统计展示:
教学安排展示:
数学成绩分析展示:
考试计划成绩分析:
考试计划页面展示:
——————————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 message = "删除角色失败" ; log.error(message, e); throw new FebsException(message); } } @Log("修改角色") @PutMapping @RequiresPermissions("role:update") public FebsResponse updateRole (@RequestBody @Valid Role role) throws FebsException { try { this .roleService.updateRole(role); return new FebsResponse().code("200" ).message("修改角色成功" ).status("success" ); } catch (Exception e) { message = "修改角色失败" ; log.error(message, e); throw new FebsException(message); } } @PostMapping("excel") @RequiresPermissions("role:export") public void export (QueryRequest queryRequest, @RequestBody Role role, HttpServletResponse response) throws FebsException { try { List<Role> roles = this .roleService.findRoles(role, queryRequest).getRecords(); ExcelKit.$Export(Role.class, response).downXlsx(roles, false ); } catch (Exception e) { message = "导出Excel失败" ; log.error(message, e); throw new FebsException(message); } } }
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 } @ExceptionHandler({NotAcceptableStatusException.class, HttpMediaTypeNotAcceptableException.class}) @ResponseStatus(HttpStatus.NOT_ACCEPTABLE) public FebsResponse handleNotAcceptableException (Exception e) { log.warn(e.getMessage()); return new FebsResponse().message(Code.C406.getDesc()).code(Code.C406.getCode().toString()).status(ResponseStat.ERROR.getText()); } @ExceptionHandler(value = UnauthorizedException.class) @ResponseStatus(HttpStatus.FORBIDDEN) public FebsResponse handleUnauthorizedException (Exception e) { log.error("权限不足,{}" , e.getMessage()); return new FebsResponse().message(Code.C401.getDesc()).code(Code.C401.getCode().toString()).status(ResponseStat.ERROR.getText()); } } @Slf4j @Validated @RestController
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 @GetMapping("/loadStudentScoreMaps/{teachingArrangeId}/{examId}") @RequiresPermissions("education:teachingArrange:loadStudentScoreMaps") public Map<String, Object> loadStudentScoreMaps (@PathVariable Long teachingArrangeId, @PathVariable Long examId) { return iStudentScoreService.findStudentScoreMapByTeachingArrangeId(teachingArrangeId, examId); } @GetMapping("/loadStudentScoreMaps/{teachingArrangeId}") @RequiresPermissions("education:teachingArrange:loadStudentScoreMaps2") public Map<String, Object> loadStudentScoreMaps (@PathVariable Long teachingArrangeId) { return iStudentScoreService.findStudentScoreMapByTeachingArrangeId(teachingArrangeId); } @Log("保存考试成绩") @PutMapping("/loadStudentScoreLists") @RequiresPermissions("education:teachingArrange:saveStudentScoreLists") public void saveStudentScoreLists (@RequestBody Map<String, String> examScoreMap) throws FebsException { System.out.println(JSONUtil.toJsonPrettyStr(examScoreMap)); iStudentScoreService.saveStudentScoreMap(examScoreMap); } @PostMapping("excel") @RequiresPermissions("education:teachingArrange:export")
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Slf4j @RestControllerAdvice @Order(value = Ordered.HIGHEST_PRECEDENCE) public class GlobalExceptionHandler { @ExceptionHandler({FebsException.class,Exception.class}) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public FebsResponse handleException (Exception e) { log.error("系统内部异常,异常信息:" , e); String message=e instanceof FebsException?e.getMessage():Code.C500.getDesc(); return new FebsResponse().message(message).code(Code.C500.getCode().toString()).status(ResponseStat.ERROR.getText()); } @ExceptionHandler(value = HttpRequestMethodNotSupportedException.class) @ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED) public FebsResponse handleHttpRequestMethodNotSupportedException (Exception e) {
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 * @return */ @GetMapping("/all") @RequiresUser public List<Semester> allSemesterList () { return iSemesterService.list(); } @GetMapping @RequiresPermissions("education:semester:view") public Map<String, Object> semesterList (QueryRequest request, Semester semester) { return getDataTable(this .iSemesterService.findSemesters(request, semester)); } @Log("新增学期") @PostMapping @RequiresPermissions("education:semester:add") public void addSemester (@RequestBody @Valid Semester semester) throws FebsException { try { this .iSemesterService.insert(semester); } catch (Exception e) { message = "新增学期失败" ; log.error(message, e); throw new FebsException(message); } }
——————————PayStart——————————
项目链接: https://javayms.github.io?id=071524180701201hq https://javayms.pages.dev?id=071524180701201hq