Skip to content

stupdada/teaching-management-system

Repository files navigation

教学事务管理系统

基于《数据库原理》2026 春季学期第 9-14 周实验要求实现的 B/S 教学事务管理系统。系统以原始 School 数据库为基础,扩展为支持管理员、教师、学生三类角色的教务管理平台。

技术栈

  • 前端:Vue 3、Vite、Element Plus、Pinia、Vue Router、Axios
  • 后端:Node.js、Express、mysql2、JWT、bcryptjs、zod
  • 数据库:MySQL 8
  • 部署:Docker Compose、Nginx

目录结构

teaching-management-system/
├── frontend/
├── backend/
├── database/
├── deploy/
├── docs/
├── docker-compose.yml
├── 账号说明.txt
└── README.md

默认账号

角色 用户名 密码
管理员 admin 123456
教师 0101 123456
学生 1101 123456

数据库中保存的是 bcrypt 哈希,不保存明文密码。

本地运行

如果使用 Docker,先启动 MySQL:

docker compose -f deploy/docker-compose.local.yml up -d

如果使用本机已有 MySQL,可以直接启动当前机器上的 MySQL:

powershell -ExecutionPolicy Bypass -File deploy/start-local-mysql.ps1

启动后端:

cd backend
npm install
npm run dev

启动前端:

cd frontend
npm install
npm run dev

访问:

http://localhost:5173

健康检查:

curl http://localhost:3000/api/health

完整 Docker Compose

docker compose up -d --build

访问:

http://localhost/

数据库脚本

database/ 下编号文件会按顺序初始化:

文件 说明
00_create_database.sql 创建 school 数据库
01_schema.sql 建表、主键、外键、索引和约束
02_seed_data.sql 导入课程文档中的 School 基础数据并添加演示数据
03_triggers.sql 选课和成绩触发器
04_procedures.sql 学分统计和成绩分布存储过程
05_views.sql 开课汇总、成绩记录等视图

触发器和存储过程

  • trg_before_course_selection_insert:检查课程开放状态、容量、重复选课、同学期同课程多教师冲突。
  • trg_before_course_selection_update:检查成绩范围,阻止已录成绩课程退课,必要时自动计算总评。
  • sp_student_credit_summary:统计学生已选课程、通过学分、平均分和剩余学分。
  • sp_course_grade_distribution:统计课程平均分、最高分、最低分和成绩等级分布。

上述触发器通过学生选课、退课、教师录成绩实际触发;存储过程通过学生学分页、教师/管理员成绩统计页实际调用。

验收演示流程

  1. 管理员 admin / 123456 登录。
  2. 进入课程管理和开课管理,维护课程或新增开课记录。
  3. 学生 1101 / 123456 登录,进入学生选课页选择当前学期课程。
  4. 学生再次选择同学期同课程不同教师,页面展示触发器拦截信息。
  5. 教师 0101 / 123456 登录,查看课程学生名单。
  6. 教师录入非法成绩,例如 120,页面展示触发器拦截信息。
  7. 教师录入合法成绩并保存。
  8. 学生查看成绩和学分统计。
  9. 管理员查看统计分析和学生学分统计。

常见问题

  • 如果 MySQL 已经有旧数据,先执行 docker compose -f deploy/docker-compose.local.yml down -v 再重新启动。
  • 如果前端请求失败,确认后端运行在 http://localhost:3000,并且 .envCORS_ORIGIN=http://localhost:5173
  • 生产部署前必须修改 MYSQL_ROOT_PASSWORDJWT_SECRET

About

Teaching affairs management system for database course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors