AI源码
AI源码AI 精选 · 优质源码 · 助力学习

高校选课系统

这是一个完整的高校选课管理系统,采用前后端分离架构,实现了院系管理、专业管理、班级管理、学生管理、教师管理、课程管理、选课管理等核心功能。系统支持多角色(超级管理员、普通管理员、教师、学生)权限控制,适合作为Vue3全栈开发学习项目或计算机设计参考。

评分:4.8/5.0
销量:72
发布:2025/12/2
难度:L2 进阶级
💬 联系咨询观看视频介绍
永久使用权限
免费更新维护
技术支持服务

项目封面

截图 1

项目说明

高校选课系统

项目简介

这是一个完整的高校选课管理系统,采用前后端分离架构,实现了院系管理、专业管理、班级管理、学生管理、教师管理、课程管理、选课管理等核心功能。系统支持多角色(超级管理员、普通管理员、教师、学生)权限控制,适合作为Vue3全栈开发学习项目或计算机设计参考。

技术栈

后端技术

技术版本/说明
运行环境Node.js
Web框架Express 4.16.1
数据库MySQL 8.0+
数据库驱动mysql / mysql2
身份认证jsonwebtoken (JWT)
密码加密bcryptjs
文件上传multer
跨域处理cors
环境变量dotenv
热重载nodemon

管理后台技术

技术版本/说明
前端框架Vue 3.5.13
构建工具Vite 6.2.4
UI组件库Element Plus 2.11.2
路由管理Vue Router 4.5.0
状态管理Pinia 3.0.1
HTTP请求Axios 1.12.2
图表库ECharts 6.0.0
日期处理Day.js 1.11.18
3D渲染Three.js 0.177.0
动画库GSAP 3.13.0

项目特点

  • 前后端分离:后端提供RESTful API,前端独立开发部署
  • 多角色权限:支持超级管理员、普通管理员、教师、学生四种角色
  • 动态菜单:基于角色的动态菜单权限控制
  • 完整业务流程:涵盖院系、专业、班级、学生、教师、课程、选课全流程管理
  • 数据可视化:管理后台集成ECharts图表展示
  • 现代化技术栈:采用Vue3 + Vite + Element Plus最新技术

功能模块

系统管理

1. 首页仪表盘 (Dashboard.vue)

  • 数据统计概览
  • 图表展示

2. 角色管理 (system/RoleManagement.vue)

  • 角色列表
  • 新增/编辑/删除角色
  • 角色权限配置

3. 账号管理 (system/AccountManagement.vue)

  • 用户账号列表
  • 新增/编辑/删除账号
  • 账号状态管理
  • 关联教师/学生

4. 菜单管理 (system/MenuManagement.vue)

  • 菜单列表
  • 新增/编辑/删除菜单
  • 菜单权限分配

教务管理

5. 院系管理 (DepartmentManagement.vue)

  • 院系列表
  • 新增/编辑/删除院系
  • 院系描述管理

6. 专业管理 (MajorManagement.vue)

  • 专业列表
  • 新增/编辑/删除专业
  • 关联院系

7. 班级管理 (ClassManagement.vue)

  • 班级列表
  • 新增/编辑/删除班级
  • 关联专业
  • 学生人数统计

8. 学生管理 (StudentManagement.vue)

  • 学生列表
  • 新增/编辑/删除学生
  • 学号管理
  • 关联班级

9. 教师管理 (TeacherManagement.vue)

  • 教师列表
  • 新增/编辑/删除教师
  • 工号管理
  • 关联院系和课程

10. 课程管理 (CourseManagement.vue)

  • 课程列表
  • 新增/编辑/删除课程
  • 课程代码管理
  • 学分设置
  • 关联授课教师

选课管理

11. 我的选课 (StudentCourseSelection.vue)

  • 学生端选课功能
  • 可选课程列表
  • 已选课程查看
  • 选课/退课操作
  • 成绩查看

12. 课程学生列表 (TeacherCourseSelection.vue)

  • 教师端查看选课学生
  • 学生成绩录入
  • 选课统计

项目结构

vue3-select-college-course/
├── admin/                          # 管理后台(Vue3 + Element Plus)
│   ├── public/                     # 静态资源
│   ├── src/
│   │   ├── api/                    # API接口封装
│   │   ├── assets/                 # 静态资源
│   │   ├── components/             # 公共组件
│   │   ├── router/                 # 路由配置
│   │   ├── store/                  # Pinia状态管理
│   │   ├── utils/                  # 工具函数
│   │   ├── views/                  # 页面视图
│   │   │   ├── system/             # 系统管理
│   │   │   │   ├── AccountManagement.vue   # 账号管理
│   │   │   │   ├── MenuManagement.vue      # 菜单管理
│   │   │   │   └── RoleManagement.vue      # 角色管理
│   │   │   ├── 404.vue                     # 404页面
│   │   │   ├── ClassManagement.vue         # 班级管理
│   │   │   ├── CourseManagement.vue        # 课程管理
│   │   │   ├── Dashboard.vue               # 首页仪表盘
│   │   │   ├── DepartmentManagement.vue    # 院系管理
│   │   │   ├── Home.vue                    # 主布局
│   │   │   ├── Login.vue                   # 登录页
│   │   │   ├── MajorManagement.vue         # 专业管理
│   │   │   ├── StudentCourseSelection.vue  # 学生选课
│   │   │   ├── StudentManagement.vue       # 学生管理
│   │   │   ├── TeacherCourseSelection.vue  # 教师查看选课
│   │   │   └── TeacherManagement.vue       # 教师管理
│   │   ├── App.vue                 # 根组件
│   │   └── main.js                 # 入口文件
│   ├── package.json
│   └── vite.config.js              # Vite配置
│
├── express/                        # 后端服务(Express + MySQL)
│   ├── bin/
│   │   └── www                     # 启动入口
│   ├── config/
│   │   ├── db.js                   # 数据库配置
│   │   └── index.js                # 全局配置
│   ├── controllers/                # 控制器
│   ├── public/
│   │   └── images/                 # 上传图片存储
│   ├── routes/
│   │   ├── sys/                    # 系统管理API
│   │   ├── class.js                # 班级接口
│   │   ├── course.js               # 课程接口
│   │   ├── courseSelection.js      # 选课接口
│   │   ├── department.js           # 院系接口
│   │   ├── index.js                # 路由入口
│   │   ├── major.js                # 专业接口
│   │   ├── student.js              # 学生接口
│   │   ├── teacher.js              # 教师接口
│   │   ├── total.js                # 统计接口
│   │   └── upload.js               # 文件上传
│   ├── services/                   # 业务逻辑层
│   ├── test/                       # 测试文件
│   │   └── api.test.js             # API测试
│   ├── util/
│   │   ├── index.js                # 工具函数
│   │   └── wechat.js               # 微信相关工具
│   ├── app.js                      # Express应用配置
│   └── package.json
│
├── college_course_system.sql       # 数据库SQL文件
├── 导入SQL步骤.md                   # 数据库导入说明
├── 模版.xlsx                        # 数据导入模板
├── 视频演示.mp4                     # 功能演示视频
└── 新 - 运行必读.docx              # 运行说明文档

数据模型

院系表 (department)

{
  id: bigint,                 // 院系ID
  name: varchar(100),         // 院系名称
  description: varchar(255)   // 院系描述
}

专业表 (major)

{
  id: bigint,                 // 专业ID
  dept_id: bigint,            // 所属院系ID
  name: varchar(100),         // 专业名称
  description: varchar(255)   // 专业描述
}

班级表 (class)

{
  id: bigint,                 // 班级ID
  major_id: bigint,           // 所属专业ID
  name: varchar(100),         // 班级名称
  student_count: int          // 学生人数
}

学生表 (student)

{
  id: bigint,                 // 学生ID
  student_id: varchar(20),    // 学号(唯一)
  name: varchar(50),          // 姓名
  class_id: bigint            // 班级ID
}

教师表 (teacher)

{
  id: bigint,                 // 教师ID
  teacher_id: varchar(20),    // 工号(唯一)
  name: varchar(50),          // 姓名
  dept_id: bigint,            // 所属院系ID
  course_id: int              // 课程ID
}

课程表 (course)

{
  id: bigint,                 // 课程ID
  course_id: varchar(20),     // 课程代码(唯一)
  name: varchar(100),         // 课程名称
  teacher_id: bigint,         // 授课教师ID
  credit: decimal(2,1)        // 学分
}

选课表 (course_selection)

{
  id: bigint,                 // 选课记录ID
  student_id: bigint,         // 学生ID
  course_id: bigint,          // 课程ID
  score: decimal(5,2),        // 成绩
  select_time: datetime,      // 选课时间
  score_update_time: datetime // 成绩更新时间
}

系统用户表 (sys_user)

{
  id: bigint,                 // 用户ID
  username: varchar(50),      // 用户名(唯一)
  password: varchar(255),     // 密码
  role_id: bigint,            // 角色ID
  status: tinyint,            // 状态(1启用 0禁用)
  teacher_id: bigint,         // 关联教师ID
  student_id: bigint,         // 关联学生ID
  role: int,                  // 系统级别(99内置)
  create_time: datetime,      // 创建时间
  update_time: datetime       // 更新时间
}

系统角色表 (sys_role)

{
  id: bigint,                 // 角色ID
  name: varchar(50),          // 角色名称
  description: varchar(255),  // 角色描述
  role: int,                  // 系统级别
  create_time: datetime,      // 创建时间
  update_time: datetime       // 更新时间
}

系统菜单表 (sys_menu)

{
  id: bigint,                 // 菜单ID
  parent_id: bigint,          // 父菜单ID(0表示一级菜单)
  title: varchar(50),         // 菜单名称
  path: varchar(255),         // 路由路径
  icon: varchar(50),          // 图标
  component: varchar(255),    // 前端组件路径
  order_num: int,             // 排序
  create_time: datetime,      // 创建时间
  update_time: datetime       // 更新时间
}

角色菜单关联表 (sys_role_menu)

{
  role_id: bigint,            // 角色ID
  menu_id: bigint             // 菜单ID
}

运行环境要求

后端环境

  • Node.js 16.0+
  • MySQL 8.0+
  • npm 或 pnpm

管理后台

  • Node.js 16.0+
  • npm 或 pnpm
  • 现代浏览器(Chrome、Firefox、Edge等)

快速开始

1. 数据库配置

  1. 创建MySQL数据库
CREATE DATABASE college_course_system CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  1. 导入数据库文件
mysql -u root -p college_course_system < college_course_system.sql
  1. 修改数据库配置 编辑 express/config/db.js
var db = mysql.createConnection({
  database: 'college_course_system', // 数据库名称
  port: '3306', // 端口号
  host: 'localhost', // 主机地址
  user: 'root', // 用户名
  password: 'root', // 密码(修改为你的密码)
});

2. 启动后端服务

# 进入后端目录
cd express

# 安装依赖
npm install
# 或使用 pnpm
pnpm install

# 启动服务(开发模式)
npm run dev

后端服务默认运行在 http://localhost:5002

3. 启动管理后台

# 进入管理后台目录
cd admin

# 安装依赖
npm install
# 或使用 pnpm
pnpm install

# 启动开发服务器
npm run dev

管理后台默认运行在 http://localhost:5173

默认账号

角色用户名密码说明
超级管理员admin123456拥有所有权限
普通管理员normal123456部分管理权限
教师teacher123456教师权限,可查看选课学生
学生student123456学生权限,可进行选课

预置测试数据

院系数据

院系名称描述
计算机学院计算机相关专业
电子信息学院电子信息相关专业

专业数据

专业名称所属院系描述
计算机科学与技术计算机学院培养计算机领域人才
软件工程计算机学院培养软件开发人才

班级数据

班级名称所属专业学生人数
计科2021-1班计算机科学与技术30
计科2021-2班计算机科学与技术28

课程数据

课程代码课程名称学分
C001数据结构4.0
C002操作系统4.0

界面预览

项目包含演示视频文件:

  • 视频演示.mp4 - 系统完整功能演示

扩展建议

如需进一步完善项目,可考虑以下扩展:

  1. 选课时间控制:添加选课开始/结束时间配置
  2. 课程容量限制:设置每门课程最大选课人数
  3. 成绩统计分析:添加成绩分布图表、GPA计算
  4. 课表生成:根据选课结果生成个人课表
  5. 消息通知:选课结果、成绩发布通知
  6. 数据导入导出:批量导入学生、教师数据
  7. 日志审计:记录系统操作日志
  8. 移动端适配:开发移动端选课界面

注意事项

  1. 本项目为学习演示项目,部分数据为模拟数据
  2. 生产环境部署需要配置HTTPS
  3. 建议定期备份数据库数据
  4. 密码存储建议使用bcrypt加密

常见问题

Q: 数据库连接失败?

A: 检查MySQL服务是否启动,数据库配置是否正确

Q: 登录后菜单不显示?

A: 检查用户角色是否正确配置菜单权限

Q: 选课功能无法使用?

A: 确认使用学生账号登录,且学生账号已关联学生信息

Q: 教师无法录入成绩?

A: 确认使用教师账号登录,且教师账号已关联教师信息

许可证

本项目仅供学习交流使用,请勿用于商业用途。

技术分类

包含内容

完整源码
项目说明文档
演示材料

适用人群

学习参考与二次开发

关于 AI源码

AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。

QQ: 861077046
邮箱: 861077046@qq.com
已服务 72+ 位用户
立即咨询

相关推荐

查看全部 →
大学生就业信息管理系统
Node
进阶

大学生就业信息管理系统

这是一个面向高校大学生的就业信息管理系统,采用前后端分离架构,实现了学生求职、企业招聘、管理员后台管理三端功能。系统涵盖职位发布、简历管理、面试安排、合同签署、就业指南等完整的就业服务流程,适合作为计算机设计或学习项目参考。

NodeVue3MySQL
4.842
大学生在线焦虑测试系统
SpringBoot
进阶

大学生在线焦虑测试系统

这是一个专为大学生设计的在线心理健康评估与咨询平台,集成了焦虑测评、在线咨询、个性化建议等核心功能。系统采用前后端分离架构,支持学生、医生、管理员三种角色,提供专业的心理健康服务。

SpringBootVue2MySQL
4.833
商品管理系统HTML(登录注册增删增删改查)
Node
进阶

商品管理系统HTML(登录注册增删增删改查)

这是一个基于 Node.js + MySQL + HTML(Vue2) 的商品管理系统,包含用户登录注册和商品的增删改查功能。

Node大作业Vue2+1
4.838
高校快递代取系统
Node
NEW推荐
进阶

高校快递代取系统

本系统是一套高校快递代取微信小程序全栈平台,包含用户端小程序、骑手接单端与 PC 管理后台。用户可发布代取预约、在线支付、跟踪订单进度与申诉;骑手可在大厅接单、取件配送并填写备注;管理员负责驿站与价格配置、公告发布、骑手审核、订单改派及数据统计。后端采用 Express + MySQL,适合作为校园 O2O 类小程序计算机设计参考。

Node小程序Vue2+1
4.896
高校查分系统
Node
NEW
进阶

高校查分系统

高校学生成绩查询与管理系统,采用前后端分离架构,支持管理员、教师、学生三种角色。

NodeVue3MySQL
4.843
鲜花商城(HTML版)
HTML
免费NEW
进阶

鲜花商城(HTML版)

鲜花商城是一个面向移动端的鲜花电商前端演示项目,采用纯 HTML + CSS + JavaScript 实现,无需构建工具即可直接运行。项目模拟了完整的购物流程:浏览商品、查看详情、下单确认、订单管理以及用户登录注册,适合作为前端大作业或移动端页面练习。

HTML大作业
4.844