基于Java+spring+mysql+jquery实现学生管理系统
Posted java李杨勇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Java+spring+mysql+jquery实现学生管理系统相关的知识,希望对你有一定的参考价值。
🍅 作者主页:Java李杨勇
🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我,都给你】
🍅文末获取源码联系🍅
临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里,你想解决的问题,在下方专栏👇🏻👇🏻👇🏻👇🏻
❤️Java项目精品实战案例❤️
❤️web前端期末大作业网页实战❤️
都能满足你的需求。原始Jsp、SSM、SpringBoot、以及html+CSS+JS页面设计, web大学生网页设计作业源码等等都可以参考得到解决。话不多说直接拿一个学生信息管理系统来举例
摘要设计:
本次系统设计以方便快捷和安全为出发点,放弃传统的人工记录对学生信息管理的缺陷和不足, 采用全新的方式使学校对学生信息进行存储和维护,增加管理效率。本系统大体分为管理员登录管理后台、学生登录选课及对老师授课等三大模块、并且赋予了管理员很多功能来操作这个系统,包括:学生管理,老师管理,选课管理,密码修改等功能;为学生用户提供了选修改课程查询 、选择、密码修改等功能。通过这些功能模块的设计,满足了老师对学生的信息进行管控所需的功能。系统采用 B/S 三层结构,对动态页面的制作采用了 JSP技术,为了实现管理系统的安全可靠以及对有些代码可以进行重复使用考虑, 对程序的重要代码进行封装时采用 Java Bean。本系统贯彻以人为本的思想,实用性高。
系统功能概述:
主要模块设计如下:
使用Shiro权限管理框架,实现登录验证和登录信息的储存,根据不同的登录账户,分发权限角色,对不同页面url进行角色设置。
管理员可对 教师信息、学生信息、课程信息 进行 增删改查 操作,管理员账户,可以重置非管理员账户的密码。
课程管理:当课程已经有学生选课成功时,将不能删除学生管理:添加学生信息时,其信息也会添加到登录表中教师管理:同上
账户密码重置:
教师登陆后,可以获取其,教授的课程列表,并可以给已经选择该课程的同学打分无法对已经给完分的同学进行二次操作
学生登录后,根据学生信息,获取其已经选择的课程,和已经修完的课程
所有课程: 在这里选修课程,选好后,将会自动跳转到已选课程选项
已选课程: 这里显示的是,还没修完的课程,也就是老师还没给成绩,由于还没有给成绩,所以这里可以进行退课操作
已修课程: 显示已经修完,老师已经给成绩的课程修改密码:
主要功能截图:
用户登录:用户登录是选择角色进行登录:管理员、教师、学生
系统主页:管理员登录后具体功能模块可对 教师信息、学生信息、课程信息 进行 增删改查 操作,管理员账户,可以重置非管理员账户的密码。
课程管理:课程列表管理和添加课程等具体操作
添加录入课程信息
学生管理:学生列表管理和添加学生等具体操作
添加学生信息
教师管理:
文件上传下载:
文件列表和下载文件
文件上传
账号相关:
教师登录后主要页面展示:
查看授课列表
查看该课程学生信息
给学生成绩打分
学生用户登录:
根据学生信息,获取其已经选择的课程,和已经修完的课程
主要代码展示:
登录相关
package com.system.controller;
import com.system.exception.CustomException;
import com.system.po.Userlogin;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Created by 李杨勇.
*/
@Controller
public class LoginController {
//登录跳转
@RequestMapping(value = "/login", method = {RequestMethod.GET})
public String loginUI() throws Exception {
return "../../login";
}
//登录表单处理
@RequestMapping(value = "/login", method = {RequestMethod.POST})
public String login(Userlogin userlogin) throws Exception {
//Shiro实现登录
UsernamePasswordToken token = new UsernamePasswordToken(userlogin.getUsername(),
userlogin.getPassword());
Subject subject = SecurityUtils.getSubject();
//如果获取不到用户名就是登录失败,但登录失败的话,会直接抛出异常
subject.login(token);
if (subject.hasRole("admin")&userlogin.getRole()==0) {
return "redirect:/admin/showStudent";
} else if (subject.hasRole("teacher")&userlogin.getRole()==1) {
return "redirect:/teacher/showCourse";
} else if (subject.hasRole("student")&userlogin.getRole()==2) {
return "redirect:/student/showCourse";
}else throw new CustomException("请选择正确的身份登陆");
}
}
文件上传
package com.system.controller;
import com.system.po.FileVO;
import com.system.service.FileService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.UUID;
/**
* 文件上传下载
*/
@Controller
@RequestMapping("/file")
public class FileController {
@Resource(name = "fileServiceImpl")
private FileService fileService;
@RequestMapping("/upload")
public String fileUpload(@RequestParam MultipartFile file, FileVO filevo, HttpServletRequest request) throws IOException {
//上传路径保存设置
// 把文件写到磁盘
String fileName = file.getOriginalFilename();
String[] str = fileName.split("\\\\.");
String uuid = UUID.randomUUID().toString().replaceAll("-","");
String headPath = "E://upload/" + uuid+ "."+str[str.length-1];
File dest = new File(headPath);
file.transferTo(dest);
filevo.setFileID(uuid);
filevo.setFilePath(headPath);
filevo.setUserID(null);
try {
fileService.save(filevo);
} catch (Exception e) {
e.printStackTrace();
}
return "redirect:/admin/showFile";
}
@RequestMapping("/downFile")
public void down(HttpServletRequest request, HttpServletResponse response,String fileID) throws Exception{
FileVO fileVO = fileService.findById(fileID);
String fileName = fileVO.getFilePath();
String[] str = fileName.split("\\\\.");
InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
String filename = fileVO.getFileName()+"\\\\."+str[str.length-1];
filename = URLEncoder.encode(filename,"UTF-8");
response.addHeader("Content-Disposition", "attachment;filename=" + filename);
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
while((len = bis.read()) != -1){
out.write(len);
out.flush();
}
out.close();
}
}
异常处理
package com.system.exception;
/**
* 系统自定义异常类,针对预期异常,需要在程序中抛出此类的异常
*/
public class CustomException extends Exception {
//异常信息
public String message;
public CustomException(String message) {
super(message);
this.message=message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
主要数据库设计:
主要数据表有:专业表、课程表、文件信息表、角色表、学生选课表、老师表、学生表等
CREATE TABLE `college` (
`collegeID` int(11) NOT NULL,
`collegeName` varchar(200) NOT NULL COMMENT '课程名',
PRIMARY KEY (`collegeID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `college` */
insert into `college`(`collegeID`,`collegeName`) values
(1,'计算机系'),
(2,'设计系'),
(3,'财经系');
/*Table structure for table `course` */
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`courseID` int(11) NOT NULL,
`courseName` varchar(200) NOT NULL COMMENT '课程名称',
`teacherID` int(11) NOT NULL,
`courseTime` varchar(200) DEFAULT NULL COMMENT '开课时间',
`classRoom` varchar(200) DEFAULT NULL COMMENT '开课地点',
`courseWeek` int(200) DEFAULT NULL COMMENT '学时',
`courseType` varchar(20) DEFAULT NULL COMMENT '课程类型',
`collegeID` int(11) NOT NULL COMMENT '所属院系',
`score` int(11) NOT NULL COMMENT '学分',
PRIMARY KEY (`courseID`),
KEY `collegeID` (`collegeID`),
KEY `teacherID` (`teacherID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `course` */
insert into `course`(`courseID`,`courseName`,`teacherID`,`courseTime`,`classRoom`,`courseWeek`,`courseType`,`collegeID`,`score`) values
(1,'C语言程序设计',1001,'周二','科401',18,'必修课',1,3),
(2,'Python爬虫技巧',1001,'周四','X402',18,'必修课',1,3),
(3,'数据结构',1001,'周四','科401',18,'必修课',1,2),
(4,'Java程序设计',1002,'周五','科401',18,'必修课',1,2),
(5,'英语',1002,'周四','X302',18,'必修课',2,2),
(6,'服装设计',1003,'周一','科401',18,'选修课',2,2);
/*Table structure for table `role` */
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`roleID` int(11) NOT NULL,
`roleName` varchar(20) NOT NULL,
`permissions` varchar(255) DEFAULT NULL COMMENT '权限',
PRIMARY KEY (`roleID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `role` */
insert into `role`(`roleID`,`roleName`,`permissions`) values
(0,'admin',NULL),
(1,'teacher',NULL),
(2,'student',NULL);
/*Table structure for table `selectedcourse` */
DROP TABLE IF EXISTS `selectedcourse`;
CREATE TABLE `selectedcourse` (
`courseID` int(11) NOT NULL,
`studentID` int(11) NOT NULL,
`mark` int(11) DEFAULT NULL COMMENT '成绩',
KEY `courseID` (`courseID`),
KEY `studentID` (`studentID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `selectedcourse` */
insert into `selectedcourse`(`courseID`,`studentID`,`mark`) values
(2,10001,12),
(1,10001,95),
(1,10002,66),
(2,10003,99),
(5,10001,NULL),
(3,10001,NULL),
(1,10003,NULL),
(4,10003,NULL);
/*Table structure for table `student` */
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`userID` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(200) NOT NULL,
`sex` varchar(20) DEFAULT NULL,
`birthYear` date DEFAULT NULL COMMENT '出生日期',
`grade` date DEFAULT NULL COMMENT '入学时间',
`collegeID` int(11) NOT NULL COMMENT '院系id',
PRIMARY KEY (`userID`),
KEY `collegeID` (`collegeID`)
) ENGINE=InnoDB AUTO_INCREMENT=10008 DEFAULT CHARSET=utf8;
/*Data for the table `student` */
insert into `student`(`userID`,`userName`,`sex`,`birthYear`,`grade`,`collegeID`) values
(9999,'mike1','男','1996-09-03','2019-11-13',3),
(10001,'小红','男','2020-03-02','2020-03-02',1),
(10002,'小绿','男','2020-03-10','2020-03-10',1),
(10003,'小陈','女','1996-09-02','2015-09-02',2),
(10005,'小左','女','1996-09-02','2015-09-02',2),
(10007,'MIke','男','1996-09-02','2015-09-02',2);
/*Table structure for table `teacher` */
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
`userID` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(200) NOT NULL,
`sex` varchar(20) DEFAULT NULL,
`birthYear` date NOT NULL,
`degree` varchar(20) DEFAULT NULL COMMENT '学历',
`title` varchar(255) DEFAULT NULL COMMENT '职称',
`grade` date DEFAULT NULL COMMENT '入职时间',
`collegeID` int(11) NOT NULL COMMENT '院系',
PRIMARY KEY (`userID`),
KEY `collegeID` (`collegeID`)
) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=utf8;
/*Data for the table `teacher` */
insert into `teacher`(`userID`,`userName`,`sex`,`birthYear`,`degree`,`title`,`grade`,`collegeID`) values
(1001,'刘老师','女','1990-03-08','硕士','副教授','2015-09-02',2),
(1002,'张老师','女','1996-09-02','博士','讲师','2015-09-02',1),
(1003,'软老师','女','1996-09-02','硕士','助教','2017-07-07',1);
/*Table structure for table `userlogin` */
DROP TABLE IF EXISTS `userlogin`;
CREATE TABLE `userlogin` (
`userID` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(200) NOT NULL,
`password` varchar(200) NOT NULL,
`role` int(11) NOT NULL DEFAULT '2' COMMENT '角色权限',
PRIMARY KEY (`userID`),
KEY `role` (`role`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
/*Data for the table `userlogin` */
insert into `userlogin`(`userID`,`userName`,`password`,`role`) values
(1,'admin','123',0),
(10,'10003','123',2),
(11,'10005','123',2),
(14,'1001','123',1),
(15,'1002','123',1),
(16,'1003','123',1),
(20,'9999','123',2),
(21,'10001','123',2),
(22,'10002','123',2);
论文结构目录设计 :
相关系统设计实现推荐:
基于java springboot+mybatis电影售票网站管理系统前台+后台设计和实现
基于java ssm springboot+mybatis酒庄内部管理系统设计和实现
基于JAVA springboot+mybatis智慧生活分享平台设计和实现
基于Java springboot+vue+redis前后端分离家具商城平台系统设计和实现
基于JAVA SSM springboot实现的抗疫物质信息管理系统设计和实现
查看更多博主首页更多实战项目 >>>
好了,今天就到这儿吧,小伙伴们点赞、收藏、评论走起呀,下期见~~
获取完整源码:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系👇🏻👇🏻👇🏻
打卡 文章 更新 79/ 100天
精彩专栏推荐:
以上是关于基于Java+spring+mysql+jquery实现学生管理系统的主要内容,如果未能解决你的问题,请参考以下文章
基于java jsp+mysql+Spring+mybatis的SSM二手交易网站设计和实现建议收藏
基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版
基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版
基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版