news 2026/5/23 21:59:07

AI 辅助开发实战:基于 Spring Boot + Vue 的学生宿舍管理系统设计与实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI 辅助开发实战:基于 Spring Boot + Vue 的学生宿舍管理系统设计与实现


背景痛点:毕设开发的三座大山

做毕设最怕什么?

  1. 时间被“重复劳动”吃掉:实体类、Mapper、Service、Controller 四层模板代码,写完一栋楼,还有十栋楼。
  2. 前后端“各唱各的调”:接口字段一改,Vue 端爆红,Postman 一测,500 错误。
  3. 代码质量“老师一眼看穿”:命名随意、逻辑耦合、SQL 全表扫描,答辩现场被问“你这里事务边界在哪?”直接社死。

这三座大山,把不少同学卡在最后两个月。AI 辅助编程的出现,并不是让机器替你写论文,而是把“体力活”变成“一句话的事”,把省下来的时间用在“为什么这样设计”上。

技术选型:为什么不是 Django + React?

语言层面,Java 系在高校依旧“官方语言”,Spring Boot 一站式脚手架,从依赖注入到监控埋点全配好;Vue3 的 Composition API 对新手比 React Hooks 更“像 Java”,心智负担低。

AI 工具横向对比(2024 年 4 月):

工具上下文长度Java 支持Vue 支持中文注释离线部署
GitHub Copilot2k token★★★★☆★★★�☆英文为主
通义灵码8k token★★★★★★★★★☆★★★★★
CodeGeeX4k token★★★☆☆★★★☆☆★★★☆☆

结论:

  • 校内 Git 私服不便上外网,优先用“通义灵码”离线版;
  • Copilot 当“外脑”补全英文算法片段;
  • 两者混用,一个写业务,一个写单元测试,互不抢键盘。

核心模块:让 AI 帮你“脑暴”领域模型

先别打开 IDE,把需求拆成三句话喂给 AI:
“学生宿舍系统,有楼栋、宿舍、床位、学生、入住记录五个实体,帮我生成 U 栋 4 层 32 间宿舍的 ER 图与 Spring 实体类。”

30 秒后拿到第一版,再人工修正:

  1. 把“学生”与“用户”拆分,避免把学信网字段塞进登录表;
  2. 床位增加 status 枚举(FREE/OCCUPIED/DISABLE),方便后面写“一键分配”算法;
  3. 入住记录加 version 乐观锁,防止并发退宿时余额回写错误。

修正完,让 AI 一次性生成:

  • 带 Swagger 注解的 RESTful 接口;
  • MyBatis-Plus Mapper;
  • 单元测试(MockMvc + H2)。

自己只干两件事:

  1. 在 Service 层加“床位分配”业务规则——同班同性、先下铺后上铺;
  2. 给字段写中文注释,方便答辩老师看懂。

这样“AI 出初稿,人定规则”,既快又能体现“业务理解”。

代码实战:楼栋管理模块

后端:BuildingController.java

/** * 楼栋管理 * 作者:AI 生成 + 人工校验 */ @RestController @RequestMapping("/api/buildings") @RequiredArgsConstructor public class BuildingController { private final BuildingService buildingService; /** * 分页列表 * @param page 从 1 开始 * @param size 每页条数 */ @GetMapping public PageVO<BuildingVO> page(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size) { Page<Building> p = Page.of(page, size); return PageVO.build(buildingService.page(p)); } /** * 新建楼栋 * 权限:后勤管理员+ */ @PostMapping @PreAuthorize("hasRole('ADMIN')") public Long create(@Valid @RequestBody BuildingDTO dto) { return buildingService.create(dto); } /** * 修改楼栋 */ @PutMapping("/{id}") @PreAuthorize("hasRole('ADMIN')") public void update(@PathVariable Long id, @Valid @RequestBody BuildingDTO dto) { buildingService.update(id, dto); } /** * 删除楼栋 * 级联逻辑:先检查宿舍是否为空 */ @DeleteMapping("/{id}") @PreAuthorize("hasRole('ADMIN')") public void delete(@PathVariable Long id) { buildingService.delete(id); } }

Service 层核心逻辑(AI 生成后人工加锁):

@Transactional public void delete(Long id) { // 1. 校验 if (roomMapper.selectCount(Wrappers.<Room>lambdaQuery() .eq(Room::getBuildingId, id)) > 0) { throw new BizException("楼栋内存在宿舍,无法删除"); } // 2. 删除 buildingMapper.deleteById(id); }

前端:BuildingList.vue 结构

src/views/building/ ├─ index.vue // 路由入口 ├─ components/ │ ├─ SearchBar.vue // 搜索栏(AI 生成) │ ├─ EditDialog.vue // 新增/编辑弹窗(AI 生成) │ └─ Table.vue // ProTable 二次封装

让 AI 写“表格+分页”组件,只需一句提示:
“用 Vue3 + ElementPlus 写一个支持分页、刷新、行内编辑的楼栋表格,字段:id、name、floors、createTime,操作列:编辑、删除。”

拿到代码后,人工做三件事:

  1. 把列名换成中文;
  2. 给删除加二次确认;
  3. 抽离出 EditDialog,保证“新增/编辑”同一套校验规则。

AI 帮你写完 80%,剩下 20% 才是体现“你懂业务”的地方。

安全与性能:别让“快”变成“坑”

  1. JWT 鉴权

    • AccessToken 有效期 30 min,RefreshToken 7 天,存 HttpOnly Cookie;
    • 每次刷新令牌,旧令牌加入 Redis 黑名单,防止并发刷新导致“双 Token 同时有效”。
  2. XSS 防护

    • Vue 默认转义,别用 v-html;
    • 富文本用 markdown-it 渲染,禁用原生 HTML。
  3. 分页与缓存

    • 楼栋、宿舍等字典数据量大但改动少,用 SpringCache + Redis,key 带“版本号”——Building::v1;
    • 入住记录流水大,用 MyBatis-Plus 分页插件,单页上限 50,防止爬虫把数据库打爆。
  4. SQL 审计

    • AI 生成的 LambdaQuery 要人工 EXPLAIN,出现 ALL 全表扫描立刻加索引;
    • 禁止 SELECT *,只查 VO 所需字段,减少 30% 网络 IO。

生产环境踩坑清单

  1. AI 代码审查

    • 必须过三遍:IDE 告警、SonarLint、同学交叉 CR;
    • 重点看“空指针”“事务失效”“魔法值硬编码”。
  2. 数据库命名

    • 统一下划线,禁用拼音缩写,building_id 而不是 b_id;
    • 枚举值用 SMALLINT,注释写全,防止 DBA 看不懂。
  3. 跨域配置

    • 开发环境 Vite 代理 /api -> http://localhost:8080;
    • 上线 Nginx 统一端口,关闭 CORS,减少一次预检请求。
  4. 日志与监控

    • 日志用 Logback+ELK,AI 生成的 print 全部换成 log.info;
    • actuator + Prometheus,把“慢 SQL>500ms”打到钉钉群,方便回滚。

结尾:让 AI 当副驾驶,而不是代驾

走完一遍你会发现,AI 最擅长的是“把套路代码瞬间铺平”,最不擅长的是“判断业务到底需不需要这个字段”。把省下的时间拿去画 ER 图、写单元测试、准备答辩 PPT,才是本科生最该干的事。

动手复现:

  1. fork 仓库,把 BuildingController 跑通;
  2. 用 AI 生成“床位分配”算法,再人工加“同班同性”规则;
  3. 把代码推到服务器,用室友的学号当测试数据,体验一次“真上线”。

下次写毕设,先问 AI“我该写什么”,再问老师“我写得对不对”,最后问自己“我学会了什么”。祝你早点睡,不用通宵调 BUG。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 21:58:33

4步打造专业级WPF导航菜单:从设计理念到性能优化全指南

4步打造专业级WPF导航菜单&#xff1a;从设计理念到性能优化全指南 【免费下载链接】MahApps.Metro A framework that allows developers to cobble together a better UI for their own WPF applications with minimal effort. 项目地址: https://gitcode.com/gh_mirrors/ma…

作者头像 李华
网站建设 2026/5/23 21:58:31

深入解析 cmd latency histogram 与 err syntax error:新手避坑指南

背景与痛点&#xff1a;一条直方图命令把新手拦在门外 第一次做性能埋点时&#xff0c;我天真地以为只要把 cmd latency histogram 塞到监控脚本里就能拿到漂亮的 P99 曲线。结果日志里疯狂刷屏&#xff1a; err: err syntax error near histogram服务监控直接断点&#xff0…

作者头像 李华
网站建设 2026/5/3 8:34:08

3大触控难题终结:Win11Debloat定制化优化指南

3大触控难题终结&#xff1a;Win11Debloat定制化优化指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和改善你的W…

作者头像 李华
网站建设 2026/5/13 14:07:20

揭秘足球数据的开源宝藏:探索football.json的无限可能

揭秘足球数据的开源宝藏&#xff1a;探索football.json的无限可能 【免费下载链接】football.json Free open public domain football data in JSON incl. English Premier League, Bundesliga, Primera Divisin, Serie A and more - No API key required ;-) 项目地址: http…

作者头像 李华