教务管理系统带万字文档基于springboot+vue的校务管理系统java项目

文章目录

  • 教务管理系统
    • 一、项目演示
    • 二、项目介绍
    • 三、万字项目文档
    • 四、部分功能截图
    • 五、部分代码展示
    • 六、底部获取项目源码和万字论文参考(9.9¥带走)

教务管理系统

一、项目演示

校务管理系统

二、项目介绍

基于springboot+vue的前后端分离教务管理系统

系统角色 : 系统管理员、科任老师、班主任、学生

系统管理员:管理系统用户、角色与权限,拥有查看班主任信息,学生基本信息,年级,班级,课程的管理,发布考试信息等。

科任老师:录入成绩,查看自己的个人信息。

班主任:可以查看本班成绩,本班学生信息。

学生:查看自己成绩,自己信息

项目技术
语言:java
前端技术:Vue、 ELementUI
后端技术:SpringBoot、Mybatis-Plus
数据库:MySQL

三、万字项目文档

在这里插入图片描述

在这里插入图片描述

四、部分功能截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、部分代码展示

package com.ljxy.score.controller;import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ljxy.score.common.Result;
import com.ljxy.score.entity.Clazz;
import com.ljxy.score.entity.Grade;
import com.ljxy.score.entity.Student;
import com.ljxy.score.entity.User;
import com.ljxy.score.service.ClazzService;
import com.ljxy.score.service.GradeService;
import com.ljxy.score.service.StudentService;
import com.ljxy.score.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import java.util.List;@Api(tags = "班级模块")
@RestController
@RequestMapping("/clazz")
public class ClazzController {@ResourceClazzService clazzService;@ResourceGradeService gradeService;@ResourceStudentService studentService;@ResourceUserService userService;@ApiOperation(value = "全部年级")@GetMapping("/all")public Result<?> getAllClazz() {List<Clazz> list = clazzService.list();return Result.success(list);}@ApiOperation(value = "分页查询(班级管理)")@GetMapping("/list")public Result<?> page(@RequestParam(defaultValue = "1") Integer PageNum, @RequestParam(defaultValue = "10") Integer PageSize, @RequestParam(defaultValue = "") String search) {LambdaQueryWrapper<Clazz> wrapper = Wrappers.<Clazz>lambdaQuery();if (StrUtil.isNotBlank(search)) wrapper.like(Clazz::getName, search);Page<Clazz> clazzPage = clazzService.findPage(new Page<>(PageNum, PageSize), search);return Result.success(clazzPage);}@ApiOperation(value = "添加班级")@PostMapping("/add")public Result<?> addClazz(@RequestBody Clazz clazz) {Grade one = gradeService.getOne(Wrappers.<Grade>lambdaQuery().eq(Grade::getId, clazz.getGradeId()));String GradeName = one.getName();Clazz result = clazzService.getOne(Wrappers.<Clazz>lambdaQuery().eq(Clazz::getId, clazz.getId()));Clazz res = clazzService.getOne(Wrappers.<Clazz>lambdaQuery().eq(Clazz::getName, clazz.getName()).eq(Clazz::getGradeId, clazz.getGradeId()));System.out.println("res = " + res);System.out.println("result = " + result);if (res != null) return Result.error("-1", GradeName+clazz.getName()+"已存在");if (result != null) return Result.error("-2", "编号已存在");clazzService.save(clazz);System.out.println(clazz);return Result.success(clazz);}@ApiOperation(value = "删除班级")@ApiImplicitParam(name = "id", value = "班级编号", required = true)@DeleteMapping("/delete/{id}")public Result<?> deleteClazz(@PathVariable Long id) {Integer gradeId = clazzService.getById(id).getGradeId();List<Student> list = studentService.list(Wrappers.<Student>lambdaQuery().eq(Student::getClazzId, id).eq(Student::getGradeId, gradeId));for (int i = 0; i < list.size(); i++) {userService.remove(Wrappers.<User>lambdaQuery().eq(User::getAccount,list.get(i).getStuId()));}if (clazzService.removeById(id)) return Result.success();return Result.error("-1", "删除失败");}@ApiOperation(value = "修改班级")@PutMapping("/update")public Result<?> update(@RequestBody Clazz clazz) {if (clazzService.updateById(clazz)) return Result.success();return Result.error("-1", "修改失败");}@ApiOperation(value = "根据年级ID查询班级")@GetMapping("/findClazzByGid")public Result<?> findByGid(Integer gradeId) {List<Clazz> res = clazzService.findClazz(gradeId);return Result.success(res);}@ApiOperation(value = "查id")@GetMapping("/findid")public void getById(String name, Integer gradeId) { /*        Integer res = gradeMapper.selectGrade(name); System.out.println(res);*/Integer id = clazzService.findId(name, gradeId);System.out.println(id);}
}
package com.ljxy.score.controller;import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ljxy.score.common.Result;
import com.ljxy.score.entity.Escore;import com.ljxy.score.entity.Vo.ClazzAvgVo;import com.ljxy.score.service.EscoreService;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource;
import java.util.List;/*** @author SuSheng* @date 2022/3/3 16:25*/@Api(tags = "成绩模块")
@RestController
@RequestMapping("/escore")
public class EscoreController {@ResourceEscoreService escoreService;@ApiOperation("查询学生成绩")@GetMapping("/studentscore")public Result<?> studentScoreList(Integer examId, Integer studentId) {List<Escore> scoreList = escoreService.selectScore(examId, studentId, null, null, null);return Result.success(scoreList);}@ApiOperation("管理员查看学生成绩")@GetMapping("/admin/student/score")public Result<?> adminScore(@RequestParam(defaultValue = "1") Integer PageNum, @RequestParam(defaultValue = "10") Integer PageSize,Integer examId, Integer studentId, Integer courseId, Integer clazzId){Page<Escore> page = escoreService.findPage(new Page<>(PageNum, PageSize), examId, studentId,null, clazzId, courseId);return Result.success(page);}/*** 查询学生成绩(老师)** @param PageNum* @param PageSize* @param examId* @param clazzId* @param gradeId* @param courseId* @return*/@ApiOperation("老师查询学生成绩")@GetMapping("/teacherscore")public Result<?> teacherScoreList(@RequestParam(defaultValue = "1") Integer PageNum, @RequestParam(defaultValue = "10") Integer PageSize, Integer examId, Integer clazzId, Integer gradeId, Integer courseId,Integer studentId) {Page<Escore> page = escoreService.findPage(new Page<>(PageNum, PageSize), examId, studentId, gradeId, clazzId, courseId);return Result.success(page);}/*** 修改学生成绩** @param escore* @return*/@ApiOperation("修改学生成绩")@PutMapping("/update")public Result<?> updateExamScore(@RequestBody Escore escore) {if (escoreService.updateById(escore)) {return Result.success();}return Result.error("-1", "修改失败");}/*** 导入学生成绩*/@ApiOperation("导入学生成绩")@PostMapping("/upload")public Result<?> importScore(MultipartFile file, Integer examId, Integer gradeId, Integer clazzId, Integer courseId) {System.out.println(examId);System.out.println(gradeId);System.out.println(clazzId);System.out.println(courseId);ImportParams params = new ImportParams();params.setTitleRows(0);try {List<Escore> list = ExcelImportUtil.importExcel(file.getInputStream(), Escore.class, params);list.forEach(escore -> {System.out.println(escore);
//               查找学生成绩对应的idList<Escore> escores = escoreService.selectScore(examId, escore.getStudentId(), gradeId, clazzId, courseId);System.out.println(escores);Integer escoreId = escores.get(0).getId();System.out.println("成绩id"+escoreId);escoreService.updateScore(escoreId, escore.getScore());});return Result.success();} catch (Exception e) {e.printStackTrace();}return Result.error("-1", "上传失败");}@ApiOperation("查询考试平均分")@GetMapping("/clazzavg")public Result<?> test(Integer examId,Integer gradeId,Integer clazzId,Integer courseId){float v = escoreService.selectAvg(examId,gradeId,clazzId,courseId);System.out.println(v);return Result.success(v);}@ApiOperation("各班平均分")@GetMapping("/test")public Result<?> result(Integer examId,Integer gradeId,Integer courseId){List<ClazzAvgVo> clazzAvgVos = escoreService.clazzAvg(examId, gradeId, courseId);return Result.success(clazzAvgVos);}@ApiOperation("最高分")@GetMapping("/height/score")public Result<?> heightScore(Integer examId,Integer gradeId,Integer courseId,Integer clazzId){float score = escoreService.heightScore(examId, gradeId, courseId,clazzId);return Result.success(score);}}
package com.ljxy.score.controller;import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ljxy.score.common.Result;
import com.ljxy.score.entity.*;
import com.ljxy.score.entity.Vo.GradecountVo;
import com.ljxy.score.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import java.util.List;/*** @author SuSheng* @date 2022/3/2 0:30*/
@Api(tags = "考试模块")
@RestController
@RequestMapping("/exam")
public class ExamController {@ResourceExamService examService;@ResourceGradeCourseService gradeCourseService;@ResourceStudentService studentService;@ResourceEscoreService escoreService;/*** 删除考试** @param id* @return*/@ApiOperation(value = "删除考试")@DeleteMapping("/delete/{id}")public Result<?> deleteExam(@PathVariable Long id) {if (examService.removeById(id)) return Result.success();return Result.error("-1", "删除失败");}/*** 分页查询考试成绩** @param PageNum* @param PageSize* @param name* @param gradeId* @return*/@ApiOperation(value = "考试信息(分页)")@GetMapping("/all")public Result<?> ExamList(@RequestParam(defaultValue = "1") Integer PageNum, @RequestParam(defaultValue = "10") Integer PageSize, String name, Integer gradeId) {System.out.println(name);System.out.println(gradeId);Page<Exam> list = examService.examPage(new Page<>(PageNum, PageSize), name, gradeId);return Result.success(list);}/*** 修改考试信息** @param exam* @return*/@ApiOperation(value = "修改考试信息")@PutMapping("/update")public Result<?> updateExam(@RequestBody Exam exam) {if (examService.updateById(exam)) {return Result.success(exam);}return Result.error("-1", "更新失败");}/*** 修改年级状态** @param id* @param status* @return*/@ApiOperation("修改考试状态")@PutMapping("/updateStatus")public Result<?> updateStatus(Integer id, Integer status) {System.out.println("考试ID" + id);System.out.println("考试状态" + status);examService.updateStatus(id, status);return Result.success();}/*** 添加考试* 初始化学生成绩信息*/@ApiOperation(value = "添加考试")@PostMapping("/add")public Result<?> addExamAndInfo(@RequestBody Exam exam) {
//        设置考试状态为不可见Exam one = examService.getOne(Wrappers.<Exam>lambdaQuery().eq(Exam::getId, exam.getId()));if(one !=null){return Result.error("-2","编号重复");}exam.setStatus(0);if (examService.save(exam)) {//        年级idInteger gradeId = exam.getGradeId();//        根据年级查询课程List<GradeCourse> gradeCourseList = gradeCourseService.list(Wrappers.<GradeCourse>lambdaQuery().eq(GradeCourse::getGradeId, gradeId));//        查询年级学生List<Student> studentList = studentService.list(Wrappers.<Student>lambdaQuery().eq(Student::getGradeId, gradeId));for (int i = 0; i < gradeCourseList.size(); i++) {for (int j = 0; j < studentList.size(); j++) {Escore escore = new Escore();escore.setExamId(exam.getId());escore.setGradeId(exam.getGradeId());escore.setClazzId(studentList.get(j).getClazzId());escore.setCourseId(gradeCourseList.get(i).getCourseId());escore.setStudentId(studentList.get(j).getId());escoreService.save(escore);}}return Result.success();}return Result.error("-1", "添加失败");}/*** 查询各年级考试次数*/@ApiOperation("查询各年级考试次数")@GetMapping("/count")public Result<?> examCount(){List<GradecountVo> gradecountVos = examService.examCount();return Result.success(gradecountVos);}
}

六、底部获取项目源码和万字论文参考(9.9¥带走)

有问题,或者需要协助调试运行项目的也可以

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode:整数转罗马数字

题目链接&#xff1a;12. 整数转罗马数字 - 力扣&#xff08;LeetCode&#xff09; 普通版本&#xff08;贪心&#xff09; 条件分析&#xff1a;罗马数字由 7 个不同的单字母符号组成&#xff0c;每个符号对应一个具体的数值。此外&#xff0c;减法规则还给出了额外的 6 个复…

简单聊下服务器防病毒

在当今数字化时代&#xff0c;服务器作为数据存储、处理与传输的核心设备&#xff0c;其安全性显得尤为关键。服务器防病毒工作&#xff0c;不仅是保障企业信息安全的重要一环&#xff0c;更是维护用户数据隐私的关键举措。以下&#xff0c;我们将从多个方面&#xff0c;简单探…

Unity之XR Interaction Toolkit如何使用XRSocketInteractable组件

前言 在虚拟现实(VR)和增强现实(AR)开发中,交互性是提升用户体验的关键。Unity作为一个领先的游戏开发引擎,提供了多种工具支持VR/AR开发。Unity的OpenXR插件扩展了这一功能,提供了更强大和灵活的交互系统。其中一个非常有用的组件是XRSocketInteractable。本文将详细介…

串口控制小车和小车PWM调速

1.串口控制小车 1. 串口分文件编程进行代码整合&#xff0c;通过现象来改代码 2.接入蓝牙模块&#xff0c;通过蓝牙控制小车 3.添加点动控制&#xff0c;如果APP支持按下一直发数据&#xff0c;松开就停止发数据&#xff08;蓝牙调试助手的自定义按键不能实现&#xff09;&…

随笔-我在武汉一周了

做梦一样&#xff0c;已经来武汉一周了&#xff0c;回顾一下这几天&#xff0c;还真是有意思。 周一坐了四个小时的高铁到了武汉站&#xff0c;照着指示牌打了个出租车。司机大姐开得很快&#xff0c;瞅了眼&#xff0c;最快速度到了110&#xff0c;差点把我晃晕。一下车就感觉…

计算机视觉与模式识别实验2-2 SIFT特征提取与匹配

文章目录 &#x1f9e1;&#x1f9e1;实验流程&#x1f9e1;&#x1f9e1;SIFT算法原理总结&#xff1a;实现SIFT特征检测和匹配通过RANSAC 实现图片拼接更换其他图片再次测试效果&#xff08;依次进行SIFT特征提取、RANSAC 拼接&#xff09; &#x1f9e1;&#x1f9e1;全部代…

Java编程常见问题汇总一

系列文章目录 文章目录 系列文章目录前言一、字符串连接误用二、错误的使用StringBuffer三、测试字符串相等性四、数字转换成字符串五、利用不可变对象(Immutable) 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分…

浅谈防勒索病毒的关键

主机加固能否做好防勒索病毒的工作&#xff0c;一直是网络安全领域的重要议题。随着信息技术的飞速发展&#xff0c;勒索病毒等网络威胁层出不穷&#xff0c;对企业和个人数据安全构成了严重威胁。因此&#xff0c;如何通过主机加固提升安全防护能力&#xff0c;防止勒索病毒的…

【微信小程序】小锦哥小程序工具 v2.3.8.0

# 简介 小锦哥小程序工具是一款可以对微信小程序进行解密或者反编译的工具&#xff0c;通过这款工具&#xff0c;可以对别人已经发布的小程序进行解密或者是反编译&#xff0c;然后查看源代码。对于网络安全人员来说&#xff0c;可以使用该工具进行安全审计&#xff0c;发现其…

(函数)判断字符串元音字母(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明判断元音函数&#xff1b; void vowel(char a[100], char b[100]);int main() {//初始化变量值&#xff1b;char a[100] { 0 };char b[100] { 0 };//获取…

PR怎么剪辑短视频:成都鼎茂宏升文化传媒公司

PR怎么剪辑短视频&#xff1a;从入门到精通的剪辑技巧 在当今的媒体时代&#xff0c;短视频已经成为了人们日常生活中不可或缺的一部分。而要制作出高质量的短视频&#xff0c;熟练掌握一款强大的视频剪辑软件是必不可少的。在众多软件中&#xff0c;Adobe Premiere Pro&#…

【数据结构】图论——Prim算法和Kruskal算法

目录 Prim算法和Kruskal算法Prim算法的原理数据结构算法步骤解释算法实现代码示例 Kruskal 算法Kruskal算法的原理和步骤Kruskal算法的实现数据结构并查集操作Kruskal算法 Prim算法和Kruskal算法 文章: 【数据结构】图论&#xff08;图的储存方式&#xff0c;图的遍历算法DFS和…

Linux.用户

使用su - 切换用户 切换root时要输入密码&#xff0c;但是看不到 创建用户组 groupadd用户组名&#xff0c;用getent查看有哪些组 getent group 创建用户 在root身份中使用gentent passwd 可以查当前的用户信息 使用getent group查看有哪些组 使用chmod修改权限 快捷方法…

【算法速查】万字图解带你快速入门八大排序(下)

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;首先在这里祝大家中秋国庆双节同乐&#xff01;&#xff01;抓住假期的小尾巴&#xff0c;今天来把算法速查的八大排序的后续写完&#xff0c;当…

【网络技术】【Kali Linux】Wireshark嗅探(十六)TLS(传输层安全协议)报文捕获及分析

往期 Kali Linux 上的 Wireshark 嗅探实验见博客&#xff1a; 【网络技术】【Kali Linux】Wireshark嗅探&#xff08;一&#xff09;ping 和 ICMP 【网络技术】【Kali Linux】Wireshark嗅探&#xff08;二&#xff09;TCP 协议 【网络技术】【Kali Linux】Wireshark嗅探&…

Android下HWC以及drm_hwcomposer普法(下)

Android下HWC以及drm_hwcomposer普法(下) 引言 不容易啊&#xff0c;写到这里。经过前面的普法(上)&#xff0c;我相信童鞋们对HWC和drm_hwcomposer已经有了一定的认知了。谷歌出品&#xff0c;必须精品。我们前面的篇章见分析到啥来了&#xff0c;对了分析到了HwcDisplay::in…

K-POP女团X:IN现身韩K联赛 中场表演令人眼前一亮

本月1日&#xff0c;韩国K-POP女团X:IN参加了在韩国京畿道金浦Solteo足球场举办的金浦FC和全南天龙(Jeonnam Dragons)的韩亚银行K联赛2&#xff08;2024第16轮&#xff09;比赛&#xff0c;并带来了精彩的祝贺表演令人眼前一亮。 女团X:IN在比赛中场休息期间&#xff0c;通过《…

Linux配置定时任务crontab

场景 要求每个小时 定时到/home/threeinf 目录下执行 sh run.sh restart 命令 配置 1. crontab -e 编辑定时任务列表&#xff08;相当于vi /etc/crontab, 就是编辑crontab文件&#xff09; crontab -e 在文件中添加 0 * * * * cd /home/threeinf && sh run.sh re…

特征工程技巧——字符串编码成数字序列

这段时间在参加比赛&#xff0c;发现有一些比赛上公开的代码&#xff0c;其中的数据预处理步骤值得我们参考。 平常我们见到的都是数据预处理&#xff0c;现在我们来讲一下特征工程跟数据预处理的区别。 数据预处理是指对原始数据进行清洗、转换、缩放等操作&#xff0c;以便为…

扩散变压器:开创图像生成新纪元

在深度学习领域&#xff0c;变换器&#xff08;Transformer&#xff09;架构已经成为自然语言处理、视觉识别等多个领域的核心技术。最近&#xff0c;一项新的研究探索了基于变换器的一类新型扩散模型——扩散变压器&#xff08;Diffusion Transformers&#xff0c;简称DiTs&am…