目录

摘要设计:

系统功能概述:

B站视频演示:java毕业设计-SSM学生信息管理系统.mp4

主要功能截图:

主要数据库设计:

论文结构目录设计 :

获取完整源码:



摘要设计:文末获取源码联系

本次系统设计以方便快捷和安全为出发点,放弃传统的人工记录对学生信息管理的缺陷和不足, 采用全新的方式使学校对学生信息进行存储和维护,增加管理效率。本系统大体分为管理员登录管理后台、学生登录选课及对老师授课等三大模块、并且赋予了管理员很多功能来操作这个系统,包括:学生管理,老师管理,选课管理,密码修改等功能;为学生用户提供了选修改课程查询 、选择、密码修改等功能。通过这些功能模块的设计,满足了老师对学生的信息进行管控所需的功能。系统采用 B/S 三层结构,对动态页面的制作采用了 JSP技术,为了实现管理系统的安全可靠以及对有些代码可以进行重复使用考虑, 对程序的重要代码进行封装时采用 Java Bean。本系统贯彻以人为本的思想,实用性高。

系统功能概述:

主要模块设计如下:使用Shiro权限管理框架,实现登录验证和登录信息的储存,根据不同的登录账户,分发权限角色,对不同页面url进行角色设置。

管理员可对 教师信息、学生信息、课程信息 进行 增删改查 操作,管理员账户,可以重置非管理员账户的密码。

课程管理:当课程已经有学生选课成功时,将不能删除学生管理:添加学生信息时,其信息也会添加到登录表中教师管理:同上

账户密码重置:

教师登陆后,可以获取其,教授的课程列表,并可以给已经选择该课程的同学打分无法对已经给完分的同学进行二次操作

学生登录后,根据学生信息,获取其已经选择的课程,和已经修完的课程

所有课程: 在这里选修课程,选好后,将会自动跳转到已选课程选项

已选课程: 这里显示的是,还没修完的课程,也就是老师还没给成绩,由于还没有给成绩,所以这里可以进行退课操作

已修课程: 显示已经修完,老师已经给成绩的课程修改密码:

B站视频演示:java毕业设计-SSM学生信息管理系统.mp4

主要功能截图:

用户登录:用户登录是选择角色进行登录:管理员、教师、学生

系统主页:管理员登录后具体功能模块可对 教师信息、学生信息、课程信息 进行 增删改查 操作,管理员账户,可以重置非管理员账户的密码。

课程管理:课程列表管理和添加课程等具体操作

​ 添加录入课程信息

学生管理:学生列表管理和添加学生等具体操作

​添加学生信息教师管理:

文件上传下载: 文件列表和下载文件

​文件上传

账号相关: 

教师登录后主要页面展示:

查看授课列表

​查看该课程学生信息

给学生成绩打分

学生用户登录:

根据学生信息,获取其已经选择的课程,和已经修完的课程​主要代码展示:

登录相关

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;/*** 文件上传下载*/
@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;insert  into `college`(`collegeID`,`collegeName`) values (1,'计算机系'),(2,'设计系'),/*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),(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;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),/*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),/*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` */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;

论文结构目录设计 :

一、 绪论 4

1.1 研究背景 4

1.2 系统设计概述 4

1.3 研究的内容 5

二、相关技术介绍 5

2.1 spring 5

2.2 Spring MVC 6

2.3 mybatis 7

2.4 JSP技术 7

2.5 jQuery 8

2.6 Mysql 8

三、需求分析和可行性 11

3.1 系统功能概述 11

3.2 系统运行环境 11

3.3 技术设计 12

3.4 社会可行性 12

3.5 安全性可行性 12

3.6 经济可行性 12

3.7 法律可行性 12

四、系统设计 13

4.1 系统模式架构 13

4.2系统层次架构 13

4.3系统功能详情设计 14

4.4数据流图 14

4.5源码架构 15

五、系统实现 17

5.1 程序主要类 17

5.1.1用户登录类 17

5.1.2教师信息类 17

5.1.3角色权限类 17

5.1.4课程信息类 17

5.1.5学生信息类 18

5.1.6学生选课类 18

5.2系统功能主要实现模块截图 18

5.2.1关键代码实现 18

5.2.2部分功能截图 23

六、数据库设计 26

6.1表基本设计 26

6.2数据库三范式要求: 26

6.3数据库表ER图 27

6.4用户登录表设计 27

6.5老师表设计 28

6.6学生信息表设计 29

6.7学生选课表设计 30

6.8角色权限表设计 31

6.9课程表设计 31

6.10院系表设计 32

七、开发心得体会 33

八、测试实例 33

九、参考献文 34

源码联系获取:

大家点赞、收藏、关注、评论啦 、查看

Java SpringMVC毕业项目实战-学生信息管理系统相关推荐

  1. 基于JAVA+SpringMVC+Mybatis+MYSQL的学生信息管理系统

    项目功能: 学生信息管理,学生列表分页展示,添加学生,修改学生信息,删除学生 页面效果:

  2. java计算机毕业设计基于Ssm学生信息管理系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计基于Ssm学生信息管理系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计基于Ssm学生信息管理系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈 ...

  3. java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运 ...

  4. python学生管理系统教学_Python项目:学生信息管理系统(完整版)

    本文是基于上一篇(python项目:学生信息管理系统(初版))进行了完善,并添加了新的功能. 主要包括有: 学生信息管理系统(完整版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----- ...

  5. python项目:学生信息管理系统(初版)

    python项目:学生信息管理系统(初版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----------------------+ | 1)添加学生信息 | | 2)显示所有学生的信息 ...

  6. 【Java:JDBC+MySQL实现学生信息管理系统】

    此次使用Java JDBC+MySQL数据库实现一个简易的学生管理系统(没有前端界面). 目录 前言 一.数据库设计 二.Java代码编写实现 1.创建项目,引入JDBC的.jar包 2.创建连接驱动 ...

  7. Python项目:学生信息管理系统

    Python学习笔记 文章目录 Python学习笔记 第十六站 学生信息管理系统 1. 需求分析 2. 系统开发必备 3. 系统设计 4. 学生信息维护模块设计 5. 项目打包 6. 实验感悟 课程笔 ...

  8. Java课设之Swing学生信息管理系统(源码)

    前言: 这是我学java时,写的一个练手项目,主要用来巩固知识,还有很多地方并不完善,有很多不足之处,仅供参考. 另外,如果直接按着我的代码敲很可能会出现bug.这大概率时JDK或MySQL的版本问题 ...

  9. Python基础项目:学生信息管理系统

    经过上一个例子学习,同学们应该已经掌握了我在前面提到的知识点,如语句,函数和列表等内容,本章将在上一章基础上对于Python的基础语法进行操作理解,本章的实际案例为学生信息管理系统,主要输入输出依然通 ...

最新文章

  1. java连接数据库不使用框架_实体框架数据库连接不重新连接
  2. tinyxml c语言,开源TinyXML 最简单的新手教程
  3. dnf时装预览怎么打开_DNF最疯狂的年代,纯色天空整套白给,“神话”宠物不卖只送...
  4. qdtuling.xyz 7.10
  5. [转载] 七龙珠第一部——第114话 悟空的愿望 卡林大人好为难
  6. TensorFlow学习笔记之 PReLU激活函数原理和代码
  7. Axure _ 原型图
  8. PDCA循环的四个阶段八个步骤,你知道么?
  9. 2022 分布式存储市场调研报告
  10. DDS产生波形及AM 调制解调原理
  11. C语言 身份证号解析年龄和性别
  12. AI教程 如何在 Illustrator 中创建渐变颜色?
  13. k8s1.20二进制安装
  14. [设计模式]设计模式SOLID原则
  15. 利用 Echarts 简单制作省份或区域地图步骤
  16. Word里表格跨页时自动断开,表格后留有空白部分,未布满整页,如何操作让表格上下页均匀布满?
  17. 【新媒体 | 自媒体 运营】虚拟素材(图片,字体,音频,视频)商用及CC版权相关问题
  18. 计算机相关美文摘抄,值得摘抄的好文章,好文章摘抄大全
  19. Redis典型应用场景实战之抢红包系统
  20. 零基础怎样系统的学习Python

热门文章

  1. 【MOOC-生物信息学-生物数据库】
  2. matlab ewt使用方法,ewt升学e网通怎么使用,ewt升学e网通使用解析
  3. python基础 日常总结——列表(二)
  4. 程序员婚恋那点事儿(四):程序员与程序媛的婚礼
  5. 高效办公之思维导图半小时从入门与精通(Xmind2020版)
  6. 福利 | 区块链寒冬的“另类”火锅吃法
  7. android svg动画框架,Android实现炫酷SVG动画效果
  8. RFC5869翻译 HMAC-based Extract-and-Expand Key Derivation Function (HKDF)
  9. 【Derivation】Nyquist采样定理
  10. 论计算机技术在现代农业的应用,试论计算机技术在农业节水灌溉中的应用