学生选课管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java

学生选课管理系统

项目概述

哔哩哔哩系统功能演示地址,请点击我跳转!https://www.bilibili.com/video/BV1SQ7Q6gEsT/?spm_id_from=333.1387.homepage.video_card.click&vd_source=1cc74f9f7d21efd4b52085adfbba22f7

基于 Spring BootVue 开发的现代化学生选课管理系统,采用前后端分离架构,支持管理员、教师、学生三种角色的完整业务流程。


技术栈

后端技术

技术 版本 说明
Spring Boot 2.2.1 Java EE 后端框架
MyBatis Plus 3.3.0 ORM 框架,简化数据库操作
MySQL 5.7+ 关系型数据库
Spring AOP - 面向切面编程,统一异常处理
Jsoup 1.12.1 HTML 解析工具
Apache POI 4.1.2 Excel 文件处理

前端技术

技术 版本 说明
Vue.js 2.6.10 渐进式 JavaScript 框架
Vue Router 3.1.3 路由管理
Vuex 3.1.2 状态管理
Element UI 2.13.0 组件库
ECharts 4.5.0 数据可视化图表
Axios 0.19.0 HTTP 客户端
Font Awesome 4.7.0 图标库

功能架构

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    学生选课管理系统                           │
├─────────────────────────────────────────────────────────────┤
│  ┌───────────┐   ┌───────────┐   ┌───────────┐             │
│  │  管理员   │   │   教师    │   │   学生    │             │
│  └─────┬─────┘   └─────┬─────┘   └─────┬─────┘             │
│        │               │               │                    │
│  ┌─────▼────────────────────────────────▼─────┐             │
│  │              核心业务模块                    │             │
│  │  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐            │
│  │  │用户管理│ │课程管理│ │选课管理│ │成绩管理│ │系统设置│    │
│  │  └──────┘ └──────┘ └──────┘ └──────┘ └──────┘            │
│  └─────────────────────────────────────────────┘             │
└─────────────────────────────────────────────────────────────┘

角色功能详解

1. 管理员模块

功能模块 功能描述
用户管理 管理员账号管理、教师信息管理、学生信息管理(支持 Excel 批量导入)
院系管理 院系信息的增删改查
专业管理 专业信息管理,关联院系
班级管理 班级信息管理,关联专业
课程管理 课程信息管理,包括课程安排
选课管理 查看学生选课情况,支持选课调整
公告管理 发布系统公告通知

2. 教师模块

功能模块 功能描述
课程管理 查看授课课程列表
成绩管理 录入和管理学生成绩
课表查询 查看个人授课时间表

3. 学生模块

功能模块 功能描述
课程浏览 查看可选课程列表
选课操作 选择和退选课程
课表查询 查看个人课程表
成绩查询 查看考试成绩
个人信息 修改个人资料

核心特性

🔐 权限控制

  • 基于 Spring AOP 的自定义权限注解
  • 支持 @Admin@Teacher@Student 角色注解
  • 登录状态管理与权限拦截

📊 数据可视化

  • 使用 ECharts 实现数据统计图表
  • 支持课程选课统计、成绩分析等

📱 响应式设计

  • 使用 Element UI 构建现代化界面
  • 支持多种屏幕尺寸

📤 数据导入

  • 支持 Excel 批量导入学生信息
  • 简化数据初始化流程

核心业务流程

1. 用户登录与权限验证流程

复制代码
┌─────────────┐    ┌──────────────┐    ┌──────────────┐
│  用户访问   │───▶│  输入账号密码 │───▶│  验证登录信息 │
└─────────────┘    └──────────────┘    └──────┬───────┘
                                              │
                            ┌─────────────────┼─────────────────┐
                            ▼                 ▼                 ▼
                     ┌───────────┐    ┌───────────┐    ┌───────────┐
                     │  管理员   │    │   教师    │    │   学生    │
                     └─────┬─────┘    └─────┬─────┘    └─────┬─────┘
                           │                │                │
                           ▼                ▼                ▼
                     ┌───────────┐    ┌───────────┐    ┌───────────┐
                     │ 管理员首页│    │ 教师首页  │    │ 学生首页  │
                     └───────────┘    └───────────┘    └───────────┘

流程说明

  • 用户在登录页面输入账号密码
  • 系统验证账号密码的正确性
  • 根据用户类型(管理员/教师/学生)跳转到对应角色的首页
  • 使用 Session 机制保持登录状态

2. 学生选课流程

复制代码
┌─────────────┐    ┌──────────────┐    ┌──────────────┐
│  浏览课程   │───▶│  选择课程    │───▶│  校验选课条件 │
└─────────────┘    └──────────────┘    └──────┬───────┘
                                              │
                              ┌───────────────┼───────────────┐
                              ▼               ▼               ▼
                       ┌───────────┐    ┌───────────┐    ┌───────────┐
                       │ 人数已满  │    │ 时间冲突  │    │ 选课成功  │
                       └───────────┘    └───────────┘    └─────┬─────┘
                                                               │
                                                               ▼
                                                        ┌───────────┐
                                                        │ 更新课表  │
                                                        └───────────┘

流程说明

  • 学生浏览可选课程列表,支持按课程名、教师名搜索
  • 选择心仪的课程后,系统进行条件校验:
    • 检查课程选课人数是否已满
    • 检查是否与已选课程时间冲突
  • 校验通过后,添加选课记录并更新个人课表

核心API接口

接口 方法 说明
/student/course/select/page/{index} GET 分页查询可选课程
/student/course/select/{id} POST 选择指定课程

3. 教师成绩录入流程

复制代码
┌─────────────┐    ┌──────────────┐    ┌──────────────┐
│ 选择授课课程│───▶│ 查看选课学生 │───▶│ 录入/修改成绩 │
└─────────────┘    └──────────────┘    └──────┬───────┘
                                              │
                                              ▼
                                       ┌───────────┐
                                       │ 保存成绩  │
                                       └─────┬─────┘
                                             │
                                             ▼
                                      ┌───────────┐
                                      │ 更新统计  │
                                      └───────────┘

流程说明

  • 教师登录后查看个人授课课程列表
  • 选择某门课程,查看已选课的学生名单
  • 录入或修改学生成绩(支持分数、等级等多种形式)
  • 保存成绩后更新数据库,并刷新统计信息

核心API接口

接口 方法 说明
/teacher/grade/page/{index} GET 分页查询成绩列表
/teacher/grade/{id} GET 查询单个成绩详情
/teacher/grade PUT 更新成绩信息

4. 管理员数据导入流程

复制代码
┌─────────────┐    ┌──────────────┐    ┌──────────────┐
│ 上传Excel文件│───▶│ 解析文件内容 │───▶│ 数据格式校验 │
└─────────────┘    └──────────────┘    └──────┬───────┘
                                              │
                              ┌───────────────┼───────────────┐
                              ▼               ▼               ▼
                       ┌───────────┐    ┌───────────┐    ┌───────────┐
                       │ 格式错误  │    │ 部分成功  │    │ 全部成功  │
                       └───────────┘    └───────────┘    └───────────┘

流程说明

  • 管理员选择 Excel 文件上传
  • 系统使用 Apache POI 解析文件内容
  • 校验数据格式和完整性
  • 返回导入结果(成功条数、失败原因)

5. 权限拦截流程(Themis框架)

复制代码
┌─────────────┐    ┌──────────────┐    ┌──────────────┐
│  用户请求   │───▶│ 拦截器拦截   │───▶│ 检查登录状态 │
└─────────────┘    └──────────────┘    └──────┬───────┘
                                              │
                              ┌───────────────┴───────────────┐
                              ▼                               ▼
                       ┌───────────┐                   ┌───────────┐
                       │ 未登录    │                   │ 已登录    │
                       └─────┬─────┘                   └─────┬─────┘
                             │                               │
                             ▼                               ▼
                      ┌───────────┐                   ┌───────────┐
                      │ 跳转登录页│                   │ 校验权限  │
                      └───────────┘                   └─────┬─────┘
                                                             │
                                              ┌─────────────┴─────────────┐
                                              ▼                           ▼
                                       ┌───────────┐                ┌───────────┐
                                       │ 权限不足  │                │ 允许访问  │
                                       └───────────┘                └───────────┘

流程说明

  • ThemisInterceptor 拦截所有请求
  • 检查用户是否已登录(通过 Session)
  • 解析 Controller 上的权限注解(@Admin@Teacher@Student
  • 根据用户角色判断是否具有访问权限
  • 无权限时返回 403 错误或跳转到登录页

数据模型关系

复制代码
┌──────────────┐      ┌──────────────┐      ┌──────────────┐
│ Department   │──────│    Major     │──────│    Class     │
│   (院系)     │      │   (专业)     │      │   (班级)     │
└──────────────┘      └──────────────┘      └──────┬───────┘
                                                   │
                                                   ▼
┌──────────────┐      ┌──────────────┐      ┌──────────────┐
│   Teacher    │──────│   Course     │──────│   Student    │
│   (教师)     │      │   (课程)     │      │   (学生)     │
└──────────────┘      └──────────────┘      └──────────────┘
                              │                   │
                              └──────────┬────────┘
                                         ▼
                              ┌──────────────┐
                              │StudentCourse │
                              │  (选课记录)   │
                              └──────────────┘

关系说明

  • 院系与专业:一对多关系,一个院系包含多个专业
  • 专业与班级:一对多关系,一个专业包含多个班级
  • 班级与学生:一对多关系,一个班级包含多个学生
  • 教师与课程:一对多关系,一个教师可教授多门课程
  • 课程与学生 :多对多关系,通过 StudentCourse 中间表关联

项目结构

复制代码
Course-Selection-System/
├── springboot/                    # 后端代码
│   ├── src/main/java/com/rainng/coursesystem/
│   │   ├── controller/            # REST API 控制层
│   │   ├── service/               # 业务逻辑层
│   │   ├── manager/               # 业务管理层
│   │   ├── dao/                   # 数据访问层
│   │   ├── model/                 # 数据模型
│   │   ├── config/                # 配置类
│   │   └── Application.java       # 启动类
│   ├── src/main/resources/
│   │   ├── mapping/               # MyBatis 映射文件
│   │   └── application.yaml       # 应用配置
│   └── pom.xml                    # Maven 依赖
├── vue/                           # 前端代码
│   ├── src/
│   │   ├── components/            # 公共组件
│   │   ├── views/                 # 页面视图
│   │   ├── router/                # 路由配置
│   │   ├── store/                 # 状态管理
│   │   └── App.vue                # 根组件
│   └── package.json               # npm 依赖
└── course.sql                     # 数据库初始化脚本

运行方式

环境要求

  • JDK 1.8+
  • Maven 3.6+
  • Node.js 12+
  • MySQL 5.7+

启动步骤

  1. 数据库配置
sql 复制代码
-- 创建数据库
CREATE DATABASE course CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 导入初始化脚本
source course.sql;
  1. 后端启动
bash 复制代码
cd springboot
mvn spring-boot:run
  • 服务地址:http://localhost:8085
  1. 前端启动
bash 复制代码
cd vue
npm install
npm run serve
  • 访问地址:http://localhost:8080

适用场景

  • 毕业设计项目:完整的前后端分离架构,适合作为计算机专业毕业设计
  • 课程设计:涵盖用户管理、权限控制、数据统计等核心功能
  • 学习参考:代码结构清晰,适合学习 Spring Boot + Vue 技术栈

项目亮点

  1. 架构规范:采用经典的分层架构,代码结构清晰
  2. 权限系统:自定义注解实现灵活的权限控制
  3. 业务完整:覆盖选课系统的全流程业务
  4. 技术主流:使用当前企业级主流技术栈
  5. 文档齐全:代码注释规范,便于学习和维护

项目截图

登录页面

管理员页面

教师页面

学生选课页面


如果您对本项目感兴趣,欢迎交流学习!

📌 提示:本项目适合作为计算机科学与技术、软件工程等专业的毕业设计选题,功能完整、技术栈主流、扩展性强。

相关推荐
清风6666661 小时前
基于单片机与DAC0832的双路波形信号发生系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
invicinble2 小时前
easyexcel开发全域理解
spring boot
豆瓣鸡2 小时前
Spring Cloud笔记
spring·spring cloud
不知名的老吴2 小时前
线程的生命周期之线程“插队“
java·开发语言·python
ANnianStriver2 小时前
PetLumina-02-后端开发与前后端联调
java·ai·sa-token
云烟成雨TD2 小时前
Spring AI 1.x 系列【56】用大模型评判大模型:递归顾问实现自动化评估方案
人工智能·spring·自动化
杨了个杨89823 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构
陈鋆4 小时前
Spring AI Framework(二:模块分析)
spring·ai
马士兵教育5 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习