基于SSM的学生信息管理系统(选课)
项目简介:
由SpringMVC+MyBatis为主要框架,mysql8.0配置主从复制实现读写分离,主机丛机分别为腾讯云的服务器,而项目部署在阿里云上。前端主要由bootstrap完成,背景用particles.js插件。数据库交互查询用到pagehelper分页。在添加修改相关功能时通过ajax来验证其主键是否存在可用。代码层次清晰,输入框约束较高,已配置登录拦截。
一、应用技术
- 工具:eclipse、navicat
- 环境:JDK1.8、tomcat9.0、mysql8.0
- 前端:JavaScript、jQuery、bootstrap4、particles.js
- 后端:maven、SpringMVC、MyBatis、ajax、mysql读写分离、mybatis分页
二、环境搭建
-
建议安装eclipse4.8及以上
官网下载:点击进入官网下载 -
JDK 1.8
官网下载:点击进入官网下载 -
MySQL8.0
官网下载:https://dev.mysql.com/downloads/mysql/
windows安装:略!
linux安装请查看:https://fuzui.net/2019/04/15/mysql-master-slave/#more
mysql主从搭建(可有可无):如果不需要读写分离只需要把applicationContext.xml配置文件改一下即可,这样也就不必搭建主从。
搭建有以下方式
(1)单台linux通过docker搭建mysql主从:
https://blog.csdn.net/supermao1013/article/details/83065682
(2)两台云服务器或虚拟机(我用的这种方式):
https://fuzui.net/2019/04/15/mysql-master-slave/#more -
tomcat 9.0
官方下载:点击进入官网下载 -
navicat数据库工具
百度网盘下载:https://pan.baidu.com/s/1BWQglimJH4_heiKLyH0lKg
提取码:eslheclipse、jdk、tomcat等相关安装配置步骤省略
三、功能
这是在上个springmvc选课系统的基础上进行修改完善的,目前功能基本相同,修复诸多bug,上个系统中有详细介绍:B/S基于springMVC的网上选课系统
主要功能模块图:
新增:
- 增加分页查询
- 输入框约束
学号、身份证、课程编号、教师编号只能输入数字,并且有最大输入限制,其中学号固定12位,若小于12位将会有提示。姓名只能输入中文。几乎所有输入框不能输入空格等约束 - 下拉框联动
添加、修改课程采用二级联动,即所属系别——所属专业;
添加、修改学生采用三级联动,即系别——专业——班级。(三级联动代码有些复杂,因为JavaScript学的不好=-=)。 - ajax+springmvc验证
用于验证学号、课程编号、教师编号是否存在并给出提示信息等。
其中课程安排时间地点排重功能正在开发中···· - 登录拦截
在handler层配置拦截器,对各角色进行登录拦截,即未登录用户不能直接通过相应url访问。
更多功能持续更新中······
四、数据库设计
总共六个表:学生表、教师表、管理员表、课程表、课程安排表、选课表。
管理员表admin
列名 | 类型 | 约束 | 备注 |
---|---|---|---|
Aname | Varchar(12) | 主键 | 账号 |
Apassword | 密码 |
学生表Student
列名 | 类型 | 约束 | 备注 |
---|---|---|---|
Sid | Char(12) | 非空、主键 | 学号 |
Sname | Varchar(8) | 非空 | 姓名 |
Sidcard | Char(18) | 非空 | 身份证 |
Ssex | Char(2) | 男女 | 性别 |
Spassword | Varchar(12) | 非空 | 密码 |
Sage | Char(2) | 年龄 | |
Classr | Varchar(15) | 班级 | |
profession | Varchar(15) | 专业 | |
College | Varchar(15) | 学院 |
教师表Teacher
列名 | 类型 | 约束 | 备注 |
---|---|---|---|
Tid | Char(4) | 主键 | 工号 |
Tname | Varchar(8) | 姓名 | |
Tpassword | Varchar(12) | 密码 | |
Tsex | Char(2) | 男女 | 性别 |
Introduction | Varchar(100) | 简介 |
课程表course
列名 | 类型 | 约束 | 备注 |
---|---|---|---|
Cid | Char(4) | 主键 | 课程号 |
Cname | varChar(15) | 课程名 | |
Cintroduction | Varchar(100) | 简介 | |
Type | Varchar(15) | 类型(选修,必修) | |
Belongcoll | Varchar(15) | 所属学院 | |
Belongpro | Varchar(15) | 所属专业 |
课程安排
列名 | 类型 | 约束 | 备注 |
---|---|---|---|
Courseclass | Varchar(12) | 主键 | 开课班级 |
Coursetime | Varchar(12) | 上课时间 | |
Courseweek | Varchar(12) | 上课周 | |
Cid | Char(4) | 外键 | 课程号 |
Tid | Char(4) | 外键 | 教师编号 |
Classroom | Varchar(6) | 上课教室 | |
credits | Int(11) | 学分 | |
period | Int(11) | 学时 | |
Totalnum | Int(11) | 总人数 |
选课表sc
列名 | 类型 | 约束 | 备注 |
---|---|---|---|
Id | varChar(4) | 自动增长、主键 | 用于传值 |
Sid | Char(12) | 外键 | 学生学号 |
Cid | Char(4) | 外键 | 课程编号 |
五、主页面截图
更多请查看演示
六、项目层次
七、展示与下载
展示:
http://studentInfo.fuzui.net/StudentInfo
4月15日,我的服务器出现问题,包括mysql在内,即无法通过网站演示,待修复····
11月13日,暂时无法预览
2020年02月06日,修改演示地址
请大佬不要攻击我毫无防御的服务器~
如果发现什么bug希望能够及时留言或联系我,会尽快修正。
下载:
-
百度网盘下载:https://pan.baidu.com/s/1ZFNuOCNx775KVUvEff57eg
提取码:edob
推荐github下载,百度网盘更新不及时=-=
还可留邮箱我发源码
最终感谢大佬给予前端风格设计帮助 @进击的橙子君
如果部署运行测试中出现问题可以找我~,留言会在12小时内回复
更新历史:
2019.4.26解决因为数据库远程连接而出现一系列问题的bug,github更新:主要在连接上加allowPublicKeyRetrieval=true
。
2019年6月19日更新:
新增结课、成绩录入、学分统计功能。
成绩录入处有bug,可以录入多次成绩,后续再修改
2019年11月13日更新:
工作半年,回头看看自己的那些学习小项目,不忍直视。今天用了一小会重新整理了下,删除了mongodb的配置,源码忽略掉一些eclipse配置(可以在eclipse上或idea上运行,直接导入maven项目,导入本地sql),里面有一些还是绝对路径没改过来,所以项目名尽量不要更改,后期抽时间再改改。github和百度网盘都更新了,可以在上面链接下载。
特别说明:
如果你的版本和我的完全一致,那么运行是完全容易的,在这里再重申一遍版本:eclipse4.8及以上 ,mysql8(如果mysql,需要在pom里换一下mysql驱动包),tomcat8.5以上,JDK8(JDK尽量一致)。版本一致的话出现问题可无偿帮调试。
如果版本不一致烦请您自己折腾(举个例子:mysql5、eclipse3.3、tomcat7······)。
你就应该静下心来学习。