选题难、工期紧、不会写?用对 AI,一套教务管理系统从 0 到能跑,并不遥远。
写在前面
很多同学做毕业设计或课程设计时,卡在这两件事上:
不知道从哪下手:需求、技术栈、目录结构一脸懵
能看懂不会写:框架文档翻了半天,代码还是写不动
现在有了 Cursor、ChatGPT、通义千问、文心一言等工具,完全可以把「想清楚需求 → AI 生成骨架 → 自己调试完善」变成一套可复用的流程。
本文以经典的 教务管理系统 为例,带你走一遍:
怎么给 AI 写提示词
后端怎么搭(Spring Boot + MySQL)
前端怎么搭(Vue3 + Element Plus)
前后端怎么联调、怎么避免「AI 生成了但答辩讲不清」

一、项目概览:我们要做一个什么样的教务系统?
1.1 功能范围(够用、好讲、易演示)
建议做成 Web 管理端,核心模块控制在 4~6 个,答辩好讲:
| 角色 | 功能 |
|---|---|
| 管理员 | 用户管理、学院/专业管理、课程管理、学期管理 |
| 教师 | 查看任教课程、录入成绩、查看选课名单 |
| 学生 | 选课、退课、查课表、查成绩 |
进阶(时间够再加):
登录鉴权(JWT)
数据统计图表(选课人数、成绩分布)
导出 Excel
1.2 推荐技术栈(计算机专业最常见、最好写开题报告)
| 层级 | 技术 | 说明 |
|---|---|---|
| 前端 | Vue3 + Vue Router + Pinia + Element Plus + Axios | 后台管理系统标配 |
| 后端 | Spring Boot 3 + MyBatis-Plus + Spring Security(可选) | 就业向、资料多 |
| 数据库 | MySQL 8 | 表结构清晰,ER 图好画 |
| 接口文档 | Knife4j / Swagger | 答辩时可展示接口 |
| AI 工具 | Cursor / ChatGPT / Claude / 通义千问 | 生成代码 + 修 bug |
选题答辩话术:「前后端分离 + RESTful API + 关系型数据库」,非常标准。
二、用 AI 做项目的正确流程

2.1 五步流程(建议收藏)
需求描述:用自然语言把角色、功能、页面说清楚
技术选型:告诉 AI 用什么框架、什么版本
AI 生成代码:先生成数据库 → 后端 → 前端,不要一口气要整站
本地调试:跑通登录、CRUD、联调接口
部署与答辩:整理截图、流程图、论文对应章节
2.2 提示词怎么写才有效?

差提示词:
帮我做一个教务系统。
好提示词(可直接复制改造):
我是计算机专业学生,要做一个前后端分离的教务管理系统。
技术栈:
- 后端:Spring Boot 3 + MyBatis-Plus + MySQL 8
- 前端:Vue3 + Element Plus + Axios + Pinia
- 接口风格:RESTful,统一返回格式 { code, msg, data }
角色:管理员、教师、学生
核心功能:
1. 登录(账号密码,角色区分)
2. 学生/教师/课程的增删改查
3. 学生选课、退课
4. 教师录入成绩,学生查看成绩
请先输出:
1. 数据库表设计(字段、主键、外键)
2. 后端包结构建议
3. 前端路由与页面清单
不要一次性生成全部代码,先确认设计。
和 AI 协作的三条铁律:
先设计,后代码(表结构不对,后面全白写)
一次只生成一个模块(例如先只要「学生管理」)
自己要能讲清每一层干什么(否则答辩一问就崩)
三、数据库设计(先让 AI 出表)

3.1 核心表建议
| 表名 | 作用 |
|---|---|
sys_user | 登录账号、密码、角色 |
student | 学号、姓名、班级、专业 |
teacher | 工号、姓名、职称、学院 |
course | 课程编号、名称、学分、授课教师 |
course_selection | 选课记录(学生-课程) |
score | 成绩(平时/期末/总分) |
3.2 让 AI 生成建表 SQL 的提示词
根据上面的教务系统需求,生成 MySQL 8 建表 SQL。
要求:
1. 每张表有主键 id(bigint 自增)
2. 合理外键或逻辑关联字段
3. 必要索引(学号、课程号唯一)
4. 附带 10 条测试数据 INSERT
请直接输出可执行 SQL。
📌 配图建议:把 Navicat / DataGrip 里的表结构截图放这里,比纯文字更有说服力。
四、后端搭建(Spring Boot)

4.1 推荐目录结构
jiaowu-server/
├── controller/ # 接口层:接收请求
├── service/ # 业务层:业务逻辑
├── mapper/ # 数据层:SQL / MyBatis
├── entity/ # 实体类:对应数据库表
├── dto/ # 入参出参
├── common/ # 统一返回、异常处理
└── config/ # 跨域、Swagger、Security
4.2 用 AI 生成后端骨架
提示词示例:
请用 Spring Boot 3 + MyBatis-Plus 生成「学生管理」模块后端代码。
包含:
1. Student 实体类(字段与 student 表一致)
2. StudentMapper
3. StudentService / StudentServiceImpl
4. StudentController(分页查询、新增、修改、删除、按 id 查询)
5. 统一返回 Result<T>
说明每个类的作用,代码要能直接粘贴运行。
4.3 关键接口清单(答辩可展示)
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/login | 登录 |
| GET | /api/students | 学生分页列表 |
| POST | /api/students | 新增学生 |
| PUT | /api/students/{id} | 修改学生 |
| DELETE | /api/students/{id} | 删除学生 |
| GET | /api/courses | 课程列表 |
| POST | /api/selections | 学生选课 |
| POST | /api/scores | 录入成绩 |
4.4 后端调试 checklist
application.yml数据库账号密码正确- 跨域已配置(前端才能调通)
- Swagger/Knife4j 能打开并试调接口
- 选课要做「重复选课」校验(体现业务逻辑)
- 密码不要明文存(至少 MD5/BCrypt)
📌 配图建议:1)IDEA 项目结构截图2)Swagger 接口列表截图3)Postman 调通登录接口截图
五、前端搭建(Vue3 + Element Plus)

5.1 推荐页面结构
jiaowu-web/
├── src/
│ ├── api/ # 接口封装
│ ├── views/
│ │ ├── Login.vue
│ │ ├── student/ # 学生管理
│ │ ├── teacher/ # 教师管理
│ │ ├── course/ # 课程管理
│ │ ├── selection/ # 选课
│ │ └── score/ # 成绩
│ ├── router/
│ ├── stores/ # Pinia(存 token、用户信息)
│ └── layout/ # 侧边栏 + 顶栏布局
5.2 用 AI 生成前端页面
提示词示例:
请用 Vue3 + Element Plus + Axios 生成「学生管理」页面。
要求:
1. 顶部搜索(学号/姓名)+ 新增按钮
2. 表格展示学生列表,支持分页
3. 新增/编辑用 Dialog 表单
4. 删除前二次确认
5. 调用后端 /api/students 接口
给出完整单文件组件代码,并说明关键逻辑。
5.3 侧边栏菜单建议
首页(数据概览)
学生管理
教师管理
课程管理
选课管理
成绩管理
个人中心
5.4 前端调试 checklist
.env里配置好后端地址(如http://localhost:8080)- Axios 请求拦截器带上 Token
- 401 自动跳转登录页
- 表格空数据、加载中状态都有
- 不同角色登录看到不同菜单(加分项)
📌 配图建议:1)登录页截图2)学生管理列表页截图3)选课/成绩录入页截图
六、前后端联调:把系统「跑起来」
6.1 联调顺序(别乱点)
先用 Swagger 确认后端接口正常
前端只连一个模块(如学生 CRUD)
再做登录鉴权
最后做选课、成绩等关联业务
6.2 常见报错与处理(可直接问 AI)
| 现象 | 可能原因 | 怎么跟 AI 说 |
|---|---|---|
| 前端跨域报错 | 后端未放行 CORS | 「Spring Boot 配置允许 localhost:5173 跨域」 |
| 401 一直跳登录 | Token 没带上或过期 | 「检查 Axios 拦截器与后端 JWT 校验」 |
| 选课重复成功 | 缺少唯一约束/业务校验 | 「选课表加唯一索引,并在 Service 判重」 |
| 页面空白 | 路由/组件报错 | 「把浏览器 Console 报错贴给我」 |
6.3 演示脚本(答辩/视频录屏用)
管理员登录 → 新增课程
学生登录 → 选课成功
教师登录 → 录入成绩
学生登录 → 查看成绩
七、AI 能帮你,但这些必须自己懂
用 AI 不是抄作业,而是 加速实现。至少要能讲清楚:
为什么前后端分离?
Controller / Service / Mapper 各干什么?
选课表为什么需要学生 ID + 课程 ID?
Token 登录比 Session 有什么好处?
哪一段是你改过/调试过的?(最容易被问)
论文里建议单独写一节「开发工具与 AI 辅助」,体现你是「会用工具的工程能力」,而不是「完全不会写代码」。
八、完整提示词模板包(收藏即用)
模板 A:总体设计
请为「高校教务管理系统」输出:功能模块图、用例说明、数据库 ER 说明、技术架构图文字版。面向本科毕业设计,表述正式。模板 B:后端单模块
生成 Spring Boot 的【课程管理】模块,含 Entity/Mapper/Service/Controller,支持分页与条件查询,附测试接口说明。模板 C:前端单页面
生成 Vue3 + Element Plus 的【成绩管理】页面:教师可录入/修改成绩,学生只读查看,按角色显示不同按钮。模板 D:修 Bug
下面是报错信息和相关代码,请定位原因并给出最小修改方案(不要重写整个项目):
【粘贴报错】
【粘贴相关代码】
九、总结
借助 AI 做计算机专业项目,关键不是「让 AI 一次生成整站」,而是:
需求讲清楚
技术栈定死
先库表,再后端,后前端
模块化生成 + 自己调试
能讲清原理,才算真正完成
教务系统功能经典、表结构清晰、演示路径顺,非常适合作为:
课程设计
毕业设计
作品集项目
如果你需要,我可以继续出下一篇:
《教务系统:从开题报告到论文目录怎么写》
《教务系统:部署到云服务器保姆教程》
《教务系统:答辩 PPT 一页一页怎么讲》
关注本公众号,持续更新计算机专业项目实战与毕业设计避坑指南。
夜雨聆风