基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
目录
- 基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
- 一、项目介绍
- 二、演示视频
- 三、技术栈
- 四、系统角色与功能模块
- 4.1 系统角色
- 4.2 功能结构图
- 五、数据库设计
- 5.1 数据库概述
- 5.2 核心数据表
- 六、项目结构
- 七、核心代码展示
- 7.1 学生登录接口
- 7.2 专业报名接口
- 7.3 Spring整合MyBatis配置(Druid连接池)
- 7.4 前台导航配置(config.js)
- 八、环境要求与运行步骤
- 8.1 环境要求
- 8.2 运行步骤
- 九、系统特点与亮点
- 十、项目总结
一、项目介绍
本系统是一个基于SSM(Spring + SpringMVC + MyBatis-Plus)+ JSP架构开发的高校专业信息管理系统,旨在为高校提供一站式的专业信息展示与管理平台。系统涵盖了学校概况展示、招生政策发布、专业信息管理、课程管理、在线问答、新闻资讯、学生报名、客服聊天等核心功能,实现了前台展示与后台管理的完整闭环。
系统分为管理员和学生两种角色,不同角色拥有不同的操作权限,满足高校日常信息化管理需求。
二、演示视频
📺项目完整演示视频如下:
【学习交流分】ssm001高校专业信息管理系统设计与实现录像 |
三、技术栈
| 类别 | 技术 |
|---|---|
| 后端框架 | Spring 5.0 + SpringMVC + MyBatis-Plus 2.3 |
| 前端技术 | JSP + Vue.js + Layui + ElementUI + Bootstrap |
| 数据库 | MySQL 5.7 |
| 连接池 | Druid 1.1.0 |
| 项目构建 | Maven |
| 服务器 | Tomcat |
| 开发工具 | IDEA / Eclipse |
| 其他 | Hutool工具包、FastJSON、百度AI SDK、TinyMCE富文本编辑器 |
四、系统角色与功能模块
4.1 系统角色
系统包含两种角色:
- 管理员:拥有系统全部管理权限
- 学生:拥有个人信息管理、专业报名、在线问答等权限
4.2 功能结构图
高校专业信息管理系统 ├── 前台展示模块 │ ├── 首页(轮播图 + 信息展示) │ ├── 学校概况 │ ├── 招生政策 │ ├── 专业信息列表 + 详情 │ ├── 课程信息列表 + 详情 │ ├── 在线问答(留言 + 回复) │ ├── 新闻资讯列表 + 详情 │ ├── 客服在线聊天 │ ├── 学生注册 / 登录 │ └── 个人中心 │ └── 后台管理模块 ├── 管理员功能 │ ├── 学生管理(修改、删除) │ ├── 课程管理(增删改查) │ ├── 专业管理(增删改) │ ├── 报名管理(查看、删除) │ ├── 学校概况管理(修改) │ ├── 招生政策管理(修改) │ ├── 在线问答管理(增删改) │ ├── 客服管理 │ ├── 轮播图管理 │ └── 新闻资讯管理(增删改) │ └── 学生功能 ├── 个人信息管理(查看、修改) ├── 课程信息查看 ├── 专业信息查看 + 报名 ├── 在线问答(提问) └── 报名管理(查看、删除)五、数据库设计
5.1 数据库概述
数据库名为gz-ssmj,共包含12 张数据表,使用 MySQL 5.7,字符集为 UTF-8。
5.2 核心数据表
| 表名 | 说明 | 核心字段 |
|---|---|---|
users | 用户表(管理员) | 用户名、密码、角色 |
xueshengxinxi | 学生信息表 | 用户名、账号、密码、头像、性别、身份 |
zhuanye | 专业信息表 | 专业名称、培养目标、就业前景、专业图片、专业介绍 |
kecheng | 课程信息表 | 课程名称、所属专业、课程图片、课程描述 |
baoming | 报名信息表 | 学生ID、专业ID、专业图片、报名时间 |
xuexiaogaikuang | 学校概况表 | 学校概况内容、修改时间 |
zhaoshengzhengce | 招生政策表 | 招生政策内容、修改时间 |
liuyanxinxi | 留言信息表(在线问答) | 留言内容、留言人、留言时间、回复、回复人、回复时间 |
news | 新闻资讯表 | 标题、图片、内容 |
chat | 客服聊天表 | 用户ID、管理员ID、提问、回复、是否回复 |
config | 配置文件表 | 轮播图配置 |
dictionary | 字典表 | 字段编码、编码名字 |
token | Token表 | 用户ID、用户名、Token、过期时间 |
六、项目结构
gz-ssmj/ ├── pom.xml # Maven配置文件 ├── src/main/ │ ├── java/com/ │ │ ├── annotation/ # 自定义注解 │ │ │ ├── IgnoreAuth.java # 忽略鉴权注解 │ │ │ └── LoginUser.java # 登录用户注解 │ │ ├── config/ # 配置类 │ │ │ └── MyMetaObjectHandler.java # MyBatis-Plus自动填充处理器 │ │ ├── controller/ # 控制器层 │ │ │ ├── UserController.java # 管理员控制器 │ │ │ ├── XueshengxinxiController.java # 学生信息控制器(含登录/注册) │ │ │ ├── ZhuanyeController.java # 专业信息控制器 │ │ │ ├── KechengController.java # 课程信息控制器 │ │ │ ├── BaomingController.java # 报名控制器 │ │ │ ├── LiuyanxinxiController.java # 留言信息控制器 │ │ │ ├── NewsController.java # 新闻资讯控制器 │ │ │ ├── ChatController.java # 客服聊天控制器 │ │ │ ├── CommonController.java # 通用控制器 │ │ │ └── ... # 其他控制器 │ │ ├── dao/ # 数据访问层(DAO) │ │ ├── entity/ # 实体类 │ │ ├── interceptor/ # 拦截器 │ │ ├── model/ # 模型类 │ │ ├── service/ # 服务层 │ │ └── utils/ # 工具类 │ ├── resources/ │ │ ├── config.properties # 数据库连接配置 │ │ ├── mapper/ # MyBatis XML映射文件 │ │ ├── mybatis/ # MyBatis全局配置 │ │ └── spring/ # Spring配置文件 │ │ ├── spring.xml # Spring核心配置 │ │ ├── spring-mvc.xml # SpringMVC配置 │ │ └── spring-mybatis.xml # Spring整合MyBatis配置 │ └── webapp/ │ ├── index.jsp # 后台入口页面 │ ├── front/ # 前台页面 │ │ ├── index.jsp # 前台首页 │ │ ├── pages/ # 各功能页面 │ │ │ ├── home/ # 首页 │ │ │ ├── login/ # 登录页 │ │ │ ├── zhuanye/ # 专业信息 │ │ │ ├── kecheng/ # 课程信息 │ │ │ ├── zaixianwenda/ # 在线问答 │ │ │ ├── news/ # 新闻资讯 │ │ │ ├── chat/ # 客服聊天 │ │ │ └── ... │ │ ├── js/ # JavaScript文件 │ │ │ ├── config.js # 系统配置(菜单、导航等) │ │ │ └── vue.js # Vue.js框架 │ │ └── layui/ # Layui UI框架 │ ├── jsp/ # 后台JSP页面 │ └── upload/ # 文件上传目录 └── db.sql # 数据库初始化脚本七、核心代码展示
7.1 学生登录接口
@IgnoreAuth@PostMapping(value="/login")publicRlogin(Stringusername,Stringpassword,Stringrole,HttpServletRequestrequest){XueshengxinxiEntityuser=xueshengxinxiService.selectOne(newEntityWrapper<XueshengxinxiEntity>().eq("account",username));if(user!=null){if(!user.getRole().equals(role)){returnR.error("权限不正常");}if(user==null||!user.getPassword().equals(password)){returnR.error("账号或密码不正确");}Stringtoken=tokenService.generateToken(user.getId(),user.getName(),"users",user.getRole());returnR.ok().put("token",token);}else{returnR.error("账号或密码或权限不对");}}7.2 专业报名接口
@RequestMapping("/apply")publicRapply(Integerid,HttpServletRequestrequest){ZhuanyeEntityzhuanye=zhuanyeService.selectById(id);if(zhuanye!=null){BaomingEntitybaoming=newBaomingEntity();baoming.setXsTypes((Integer)request.getSession().getAttribute("userId"));baoming.setZyPhoto(zhuanye.getZyPhoto());baoming.setZyTypes(zhuanye.getId());baoming.setCreateTime(newDate());// 检查是否已报名Wrapper<BaomingEntity>queryWrapper=newEntityWrapper<BaomingEntity>().eq("xs_types",baoming.getXsTypes());BaomingEntitybaomingEntity=baomingService.selectOne(queryWrapper);if(baomingEntity==null){baomingService.insert(baoming);returnR.ok();}else{returnR.error(511,"每次只能报名一个专业,不能重复报名!!!");}}else{returnR.error();}}7.3 Spring整合MyBatis配置(Druid连接池)
<!-- 配置数据源 --><beanname="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close"><propertyname="url"value="${jdbc_url}"/><propertyname="username"value="${jdbc_username}"/><propertyname="password"value="${jdbc_password}"/><propertyname="initialSize"value="0"/><propertyname="maxActive"value="20"/><propertyname="maxWait"value="60000"/><propertyname="validationQuery"value="${validationQuery}"/><propertyname="testWhileIdle"value="true"/></bean><!-- Spring整合MyBatis-Plus --><beanid="sqlSessionFactory"class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"><propertyname="dataSource"ref="dataSource"/><propertyname="mapperLocations"value="classpath:mapper/*.xml"/><propertyname="configLocation"value="classpath:mybatis/mybatis-config.xml"/><propertyname="plugins"><array><beanid="paginationInterceptor"class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/></array></property></bean>7.4 前台导航配置(config.js)
varprojectName='高校专业信息管理系统';varindexNav=[{name:'学校概况',url:'./pages/xuexiaogaokuang/detail.jsp'},{name:'招生政策',url:'./pages/zhaoshengzhengce/detail.jsp'},{name:'专业信息',url:'./pages/zhuanye/list.jsp'},{name:'课程信息',url:'./pages/kecheng/list.jsp'},{name:'在线问答',url:'./pages/zaixianwenda/list.jsp'},{name:'新闻资讯',url:'./pages/news/list.jsp'},];八、环境要求与运行步骤
8.1 环境要求
| 环境 | 版本要求 |
|---|---|
| JDK | 1.7 及以上 |
| MySQL | 5.7+ |
| Maven | 3.x |
| Tomcat | 8.x / 9.x |
| IDE | IDEA / Eclipse |
8.2 运行步骤
1️⃣ 导入数据库
- 创建数据库
gz-ssmj(UTF-8编码) - 导入项目根目录下的
db.sql文件
2️⃣ 修改数据库配置
修改src/main/resources/config.properties文件:
jdbc_url=jdbc:mysql://127.0.0.1:3306/gz-ssmj?useUnicode=true&characterEncoding=UTF-8&tinyInt1isBit=false jdbc_username=root # 修改为你的数据库用户名 jdbc_password=123456 # 修改为你的数据库密码3️⃣ 部署运行
- 使用 IDEA / Eclipse 导入 Maven 项目
- 等待 Maven 下载依赖
- 配置 Tomcat 服务器
- 启动项目
4️⃣ 访问系统
| 端 | 访问地址 |
|---|---|
| 后台管理 | http://localhost:8080/gz-ssmj/index.jsp |
| 前台首页 | http://localhost:8080/gz-ssmj/front/index.jsp |
5️⃣ 默认账号
| 角色 | 账号 | 密码 |
|---|---|---|
| 管理员 | admin | admin |
| 学生 | 111 | 111 |
九、系统特点与亮点
- 前后台分离设计:前台面向学生用户展示信息,后台面向管理员进行数据管理,职责清晰
- 基于角色的权限控制:通过
config.js中的菜单配置和后端拦截器实现细粒度的权限控制 - Token鉴权机制:用户登录后生成 Token,通过拦截器校验 Token 实现接口安全访问
- MyBatis-Plus 简化开发:使用 MyBatis-Plus 的通用 CRUD、条件构造器、分页插件,减少大量重复代码
- Druid 数据库连接池:使用阿里巴巴 Druid 连接池,支持连接池监控和 SQL 防火墙
- 在线客服系统:内置客服聊天功能,学生可以在线向管理员咨询问题
- 在线报名功能:学生可以直接在线进行专业报名,系统自动校验防止重复报名
- 富文本编辑:集成 TinyMCE 富文本编辑器,支持新闻资讯的图文混排编辑
- 响应式前端:使用 Layui + Vue.js 框架,支持不同设备的自适应展示
十、项目总结
本项目是一个功能完善的高校专业信息管理系统,采用经典的 SSM 框架进行开发,非常适合作为 Java Web 开发的学习项目。通过本项目可以学习到:
- SSM 框架的整合与配置
- MyBatis-Plus 的使用(通用 CRUD、条件构造器、分页)
- Token 鉴权与权限控制的实现
- 前后台分离的设计思路
- JSP + Vue.js + Layui 的混合使用
- Druid 连接池的配置
- 文件上传功能的实现
- 在线聊天功能的设计
📌本项目仅供学习参考,如有问题欢迎在评论区留言交流!
🔗如果本文对你有帮助,请点赞 👍 收藏 ⭐ 关注 🔔 支持一下!你的支持是我创作的最大动力!