(Java毕业设计)学生成绩管理系统(基于java+springboot)

article/2025/11/9 23:27:09

您好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。

开发环境

开发语言:Java
框架:springboot
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7(一定要5.7版本)
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器

项目介绍

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,学生成绩管理系统就是信息时代变革中的产物之一。

任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于java语言设计并实现了学生成绩管理系统。该系统基于B/S即所谓浏览器/服务器模式,应用java技术,选择MySQL作为后台数据库。系统主要包括首页、个人中心、学生管理、教师管理、班级管理、综合成绩管理、专业管理、课程信息管理等功能模块。

功能介绍

本课题要求实现一套学生成绩管理系统,系统主要包括管理员模块、学生模块和教师等功能模块。

这个系统的功能结构设计如图所示。

系统功能模块图

效果图

部分核心代码


package com.controller;import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;/*** 登录相关*/
@RequestMapping("users")
@RestController
public class UserController{@Autowiredprivate UserService userService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("账号不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密码已重置为:123456");}/*** 列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/list")public R list( UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew));}/*** 信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 保存*/@PostMapping("/save")public R save(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {return R.error("用户名已存在。");}userService.updateById(user);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}
package com.controller;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;import com.entity.ZonghechengjiEntity;
import com.entity.view.ZonghechengjiView;import com.service.ZonghechengjiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;/*** 综合成绩* 后端接口* @author * @email * @date 2022-04-16 16:14:23*/
@RestController
@RequestMapping("/zonghechengji")
public class ZonghechengjiController {@Autowiredprivate ZonghechengjiService zonghechengjiService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,ZonghechengjiEntity zonghechengji,HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("xuesheng")) {zonghechengji.setXuehao((String)request.getSession().getAttribute("username"));}if(tableName.equals("jiaoshi")) {zonghechengji.setJiaoshigonghao((String)request.getSession().getAttribute("username"));}EntityWrapper<ZonghechengjiEntity> ew = new EntityWrapper<ZonghechengjiEntity>();PageUtils page = zonghechengjiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zonghechengji), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,ZonghechengjiEntity zonghechengji, HttpServletRequest request){EntityWrapper<ZonghechengjiEntity> ew = new EntityWrapper<ZonghechengjiEntity>();PageUtils page = zonghechengjiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zonghechengji), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( ZonghechengjiEntity zonghechengji){EntityWrapper<ZonghechengjiEntity> ew = new EntityWrapper<ZonghechengjiEntity>();ew.allEq(MPUtil.allEQMapPre( zonghechengji, "zonghechengji")); return R.ok().put("data", zonghechengjiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(ZonghechengjiEntity zonghechengji){EntityWrapper< ZonghechengjiEntity> ew = new EntityWrapper< ZonghechengjiEntity>();ew.allEq(MPUtil.allEQMapPre( zonghechengji, "zonghechengji")); ZonghechengjiView zonghechengjiView =  zonghechengjiService.selectView(ew);return R.ok("查询综合成绩成功").put("data", zonghechengjiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){ZonghechengjiEntity zonghechengji = zonghechengjiService.selectById(id);return R.ok().put("data", zonghechengji);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){ZonghechengjiEntity zonghechengji = zonghechengjiService.selectById(id);return R.ok().put("data", zonghechengji);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody ZonghechengjiEntity zonghechengji, HttpServletRequest request){zonghechengji.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(zonghechengji);zonghechengjiService.insert(zonghechengji);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody ZonghechengjiEntity zonghechengji, HttpServletRequest request){zonghechengji.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(zonghechengji);zonghechengjiService.insert(zonghechengji);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody ZonghechengjiEntity zonghechengji, HttpServletRequest request){//ValidatorUtils.validateEntity(zonghechengji);zonghechengjiService.updateById(zonghechengji);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){zonghechengjiService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<ZonghechengjiEntity> wrapper = new EntityWrapper<ZonghechengjiEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("xuesheng")) {wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("jiaoshi")) {wrapper.eq("jiaoshigonghao", (String)request.getSession().getAttribute("username"));}int count = zonghechengjiService.selectCount(wrapper);return R.ok().put("count", count);}}

如需对应的源码,可以评论或者下方联系我,私信都可以。


http://chatgpt.dhexx.cn/article/d471WNFM.shtml

相关文章

学生成绩管理系统(Java)

目录 ​编辑 需求分析&#xff1a; 登录界面(LoginPanel) 主界面(MainApp) 重写 1.班级重写(cs.practics.bean.BjBean.java) 2.课程重写(cs.practics.bean.CourseBean.java) 3.成绩重写(cs.practics.bean.MarkBean.java) 4.学生重写(cs.practics.bean.StudentBean.java…

Linux两台服务器之间直接传输文件和文件件

Linux两台服务器之间直接传输文件和文件夹 今天遇到一个需求&#xff0c;因公司有四台服务器&#xff0c;在老服务器上有一个音频文件夹大约为5个G大小&#xff0c;现在要拷贝到另外一台服务器上。 如果把文件夹打包下载到本地&#xff0c;再上传到目标服务器上&#xff0c;感…

FTP连接树莓派(Linux)进行文件传输

1. 在Linux上安装和启动FTP服务 在使用FTP功能之前&#xff0c;树莓派需要安装FTP Server&#xff0c;请输入以下命令安装vsftpd sudo apt-get install vsftpd 使用以下命令启动FTP服务 sudo service vsftpd start 2. 在主机上下载FlashFXP 然后按照如下方式配置&#xff1…

Linux学习(2)——传输文件

承接上一篇&#xff0c;这一篇文章也是基于《Linux从入门到精通》 何明编著 中国水利水电出版社 这本书写的&#xff0c;在写这篇文章的时候也查阅了一些相关资料&#xff0c;也自己动手实践了一下&#xff0c;不得不说&#xff0c;这本书讲得实在是通俗易懂&#xff0c;只要愿…

【Linux】基于TCP实现的大型文件(超过2G)传输项目——总结

文章目录 【1】实现的功能【2】项目框架【3】源代码【4】运行截图 【1】实现的功能 文件的上传、下载&#xff08;包括超过2G的大文件&#xff09;、断点续传、秒传、删除等等。 【2】项目框架 整个项目是在Linux环境下用C语言开发的&#xff0c;基于TCP协议&#xff0c;采用…

两台linux之间传输文件的方法

scp传输 当两台Linux主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp –用户名计算机IP或者计算机名称:文件名 …

Linux实现两台机器文件互传(SCP命令)

文章目录 SCP命令的注意事项下载文件和目录上传文件和目录 SCP命令的注意事项 scp命令的主要作用是实现Linux与Linux系统之间的文件传输 SCP传输要求&#xff1a; 两台计算机都的操作系统都必须是Linux操作系统SCP命令是基于SSH协议&#xff0c;所以两台服务器的sshd服务必须…

Linux这么在两个服务器直接传文件?

文章目录 概念1.当从一个远程服务器传输文件到另一个服务器上(你想传给别人文件)2.在本地服务器&#xff0c;从另一个服务器中获取文件(你想从别人获取文件)总结 概念 scp是secure copy的简写&#xff0c; 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。scp 是加密…

快速实现两台Linux系统之间的传输文件

文章目录 前言一、ssh协议介绍1、什么是ssh协议&#xff1f;2、ssh协议使用介绍3、scp指令使用介绍 二、实验步骤1、安装虚拟机&#xff0c;分别安装linux2、开启ssh协议3、查看ip地址4、文件传输 总结 前言 最近开始用linux做实验啦&#xff0c;实现了用ssh协议的两个liunx系统…

两台Linux系统之间传输文件的几种方法

scp传输 当两台LINUX主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp –用户名计算机IP或者计算机名称:文件名 …

Linux之两个Linux服务器之间互传文件

1.当从一个Linxu服务器传输文件到另一个服务器上 现在有128和129两个文件夹&#xff0c;128服务其中有m文件夹以及其中对应的文件 128服务器 129服务器&#xff08;没有m文件夹及其中文件&#xff09; 把aaa.java文件传输到129的opt目录下 //scp 文件名称 root服务器ip&…

Linux(传输层二继续讲TCP)

文章目录 0. 前言1. 流量控制2. 滑动窗口2-1 基础2-2 重传 3. 拥塞控制4. 延迟应答5. 捎带应答6. 面向字节流7. 粘包问题8. TCP异常情况9. TCP小结10. 基于TCP应用层协议11. TCP/UDP对比 0. 前言 上一章我们主讲了TCP,本章我们继续 链接&#xff1a;https://blog.csdn.net/Din…

Linux(传输层二)

文章目录 0. 前言1. TCP协议1-1 TCP协议段格式1. TCP如何解包&#xff1f;2. TCP协议如何交付&#xff08;应用层- - 客户&#xff09;&#xff1f;3. 如何理解报文本身&#xff1f;4. 如何理解报文字段&#xff1f; 1-2 确认应答(ACK)机制1-3 超时重传机制1-4 连接管理机制1. …

两台linux服务器之间传输文件的几种方法

打开powershell, 开始连接服务器 ssh root192.168.7.204 然后输入密码后就进来了&#xff0c;进入之后找到你要传输文件的位置 接下来我要将这个包传到另一个环境中去&#xff0c;有以下几种方法 scp 示例&#xff1a; 将本地服务器的文件传向另一个服务器 wget 【用法】 wget是…

操作:FTP服务器的搭建

实验目的&#xff1a; 掌握FTP服务器的配置方法、掌握FTP配置基于虚拟用户的服务器搭建方法 实验要求&#xff1a; 以学号和姓名为虚拟用户的FTP服务器搭建实现利用不同虚拟用户登录FTP服务器实现不同用户的权限控制 实验步骤&#xff1a; 一、 搭建一台FTP服务器&#xf…

虚拟机上CentOS 7 架设ftp服务器 最新版系统超详细!!

被这玩意弄的死去活来&#xff0c;搞了这么长时间终于通了。。。看了很多教程感觉说的都不错&#xff0c;但对像我这样的菜鸟还是不够照顾啊。。。还是觉得自己写一篇入门级的更好一些&#xff0c;也希望能方便大家&#xff01; 我们假定此时CentOS刚刚在虚拟机上安装好&#…

办公室服务器安装系统,教你如何架设办公室FTP服务器以Serv-U为例

Scrv-U是Windows平台上最流行的FTP服务器软件&#xff0c;可以从官方网站下载&#xff0c;也可以从其他软件下载网站下载。下面&#xff0c;脚本之家小编就以现在局域网中最流行的FTP服务器软件Serv-U为例&#xff0c;向您讲解一下如何架设FTP服务器。 [1]下载并准备安装Serv-U…

Serv-U 15 架设FTP文件服务器 图文教程

&#xfeff;&#xfeff; 轉自solar的博客:无心阁 solar 转自&#xff1a;http://blog.163.com/zoulei154126/blog/static/4645500220093831019355/ FTP&#xff1a;意思就是&#xff1a;文件传输协议。说白了&#xff0c;就是提供一个服务&#xff0c;让网上的人&#xff…

搭建FTPserver

默认情况下FTP协议使用TCP端口中的 20和21这两个端口&#xff0c;其中20用于传输数据&#xff0c;21用于传输控制信息。但是&#xff0c;是否使用20作为传输数据的端口与FTP使用的传输模式有关&#xff0c;如果采用主动模式&#xff0c;那么数据传输端口就是20&#xff1b;如果…

FTP搭建

FTP FTP&#xff08;File Transfer Protocol&#xff0c;文件传输协议&#xff09; 是 TCP/IP 协议组中的协议之一。FTP 协议包括两个组成部分&#xff0c;其一为 FTP 服务器&#xff0c;其二为 FTP 客户端。其中FTP 服务器用来存储文件&#xff0c;用户可以使用FTP 客户端通过…