基于SSM+JSP的高校专业信息管理系统【附源码+数据库】

基于SSM+JSP的高校专业信息管理系统【附源码+数据库】


目录


一、项目介绍

本系统是一个基于 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 学生登录接口

java 复制代码
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String role, HttpServletRequest request) {
    XueshengxinxiEntity user = xueshengxinxiService.selectOne(
        new EntityWrapper<XueshengxinxiEntity>().eq("account", username));
    if(user != null){
        if(!user.getRole().equals(role)){
            return R.error("权限不正常");
        }
        if(user == null || !user.getPassword().equals(password)) {
            return R.error("账号或密码不正确");
        }
        String token = tokenService.generateToken(
            user.getId(), user.getName(), "users", user.getRole());
        return R.ok().put("token", token);
    }else{
        return R.error("账号或密码或权限不对");
    }
}

7.2 专业报名接口

java 复制代码
@RequestMapping("/apply")
public R apply(Integer id, HttpServletRequest request){
    ZhuanyeEntity zhuanye = zhuanyeService.selectById(id);
    if(zhuanye != null){
        BaomingEntity baoming = new BaomingEntity();
        baoming.setXsTypes((Integer) request.getSession().getAttribute("userId"));
        baoming.setZyPhoto(zhuanye.getZyPhoto());
        baoming.setZyTypes(zhuanye.getId());
        baoming.setCreateTime(new Date());
        // 检查是否已报名
        Wrapper<BaomingEntity> queryWrapper = new EntityWrapper<BaomingEntity>()
                .eq("xs_types", baoming.getXsTypes());
        BaomingEntity baomingEntity = baomingService.selectOne(queryWrapper);
        if(baomingEntity == null){
            baomingService.insert(baoming);
            return R.ok();
        }else {
            return R.error(511, "每次只能报名一个专业,不能重复报名!!!");
        }
    }else{
        return R.error();
    }
}

7.3 Spring整合MyBatis配置(Druid连接池)

xml 复制代码
<!-- 配置数据源 -->
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      init-method="init" destroy-method="close">
    <property name="url" value="${jdbc_url}"/>
    <property name="username" value="${jdbc_username}"/>
    <property name="password" value="${jdbc_password}"/>
    <property name="initialSize" value="0"/>
    <property name="maxActive" value="20"/>
    <property name="maxWait" value="60000"/>
    <property name="validationQuery" value="${validationQuery}"/>
    <property name="testWhileIdle" value="true"/>
</bean>

<!-- Spring整合MyBatis-Plus -->
<bean id="sqlSessionFactory"
      class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
    <property name="plugins">
        <array>
            <bean id="paginationInterceptor"
                  class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
        </array>
    </property>
</bean>

7.4 前台导航配置(config.js)

javascript 复制代码
var projectName = '高校专业信息管理系统';

var indexNav = [
    { 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 文件:

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

九、系统特点与亮点

  1. 前后台分离设计:前台面向学生用户展示信息,后台面向管理员进行数据管理,职责清晰
  2. 基于角色的权限控制 :通过 config.js 中的菜单配置和后端拦截器实现细粒度的权限控制
  3. Token鉴权机制:用户登录后生成 Token,通过拦截器校验 Token 实现接口安全访问
  4. MyBatis-Plus 简化开发:使用 MyBatis-Plus 的通用 CRUD、条件构造器、分页插件,减少大量重复代码
  5. Druid 数据库连接池:使用阿里巴巴 Druid 连接池,支持连接池监控和 SQL 防火墙
  6. 在线客服系统:内置客服聊天功能,学生可以在线向管理员咨询问题
  7. 在线报名功能:学生可以直接在线进行专业报名,系统自动校验防止重复报名
  8. 富文本编辑:集成 TinyMCE 富文本编辑器,支持新闻资讯的图文混排编辑
  9. 响应式前端:使用 Layui + Vue.js 框架,支持不同设备的自适应展示

十、项目总结

本项目是一个功能完善的高校专业信息管理系统,采用经典的 SSM 框架进行开发,非常适合作为 Java Web 开发的学习项目。通过本项目可以学习到:

  • SSM 框架的整合与配置
  • MyBatis-Plus 的使用(通用 CRUD、条件构造器、分页)
  • Token 鉴权与权限控制的实现
  • 前后台分离的设计思路
  • JSP + Vue.js + Layui 的混合使用
  • Druid 连接池的配置
  • 文件上传功能的实现
  • 在线聊天功能的设计

📌 本项目仅供学习参考,如有问题欢迎在评论区留言交流!


🔗 如果本文对你有帮助,请点赞 👍 收藏 ⭐ 关注 🔔 支持一下!你的支持是我创作的最大动力!

相关推荐
张小姐的猫20 分钟前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节
东鹏特饮2 小时前
系统运维(传统/通用运维)面试题
开发语言·php
风若飞2 小时前
Spring Ai 入门遇到问题1
java·后端·spring
今天要早睡_3 小时前
C++01_入门基础复习
开发语言·c++
Nuanyt3 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
黑马程序员毕设3 小时前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
SL_staff3 小时前
从文档工具到知识中枢:基于JVS数字底座构建企业级统一内容管理平台的技术实践
java·开源·全栈
SL_staff3 小时前
从‘连得上’到‘管得好’:JVS-IOT双引擎驱动设备运维闭环
java·物联网·产品