跳转至

实验 2-2:Vibe Coding 及 Vibe Learning —— 基于 AI 辅助的图书管理系统开发

实验信息

  • 实验学时:2 学时
  • 实验类型:验证性 + 设计性
  • 核心目标:使用 Trae AI IDE,通过 Vibe Learning(AI 引导学习)+ Vibe Coding(AI 辅助编码)双模式,完成一个完整的校园图书管理系统后端开发。

🧪 实验目的

  1. Vibe Learning:利用 Trae AI IDE 学习 JDBC、数据库连接池、Servlet 等 Java Web 核心技术,掌握"AI 引导 + 自己编码"的高效学习模式。
  2. Vibe Coding:通过 AI 辅助完成一个完整的后端系统开发,理解 MVC 架构、分层设计(Controller / Service / DAO)、RESTful API 设计等工程实践。
  3. Agent Skill 概念:了解和使用 AI Agent 的 Skill 配置,为后续使用更强大的 AI 编程工具打下基础。
  4. 接口测试:掌握 Postman 接口测试方法,理解前后端分离开发中的联调流程。
  5. 业务建模:理解图书管理系统的借阅业务规则,实现完整的业务逻辑闭环。

📋 实验前准备

  • 已完成 实验 2-1,掌握 Servlet 创建与 Session 管理等基础技能。
  • 已安装 Trae AI IDE 并登录账号。
  • 已安装 Postman(用于 API 接口测试)。
  • 本地 MySQL 已启动并创建数据库 book_management(或使用实验提供的远程数据库)。
  • Java 和 Maven 命令行可直接调用(验证:java -versionmvn -version)。

🗺️ 项目结构预览

lab2_2/
├── vibe_learning/                             # 模块 1:Vibe Learning 学习环境
│   ├── .trae/skills/                          # 预置的 AI Agent Skills
│   │   ├── ai-assisted-jdbc-learning/          # JDBC 学习引导 Skill(8 步结构化工作流)
│   │   └── frontend-design/                    # 前端 UI 设计 Skill
│   ├── src/main/java/                          # 学生练习代码目录
│   └── pom.xml
├── book_template/                              # 模块 2:图书管理系统模板工程
│   ├── src/main/java/                          # 后端 Java 代码(学生在此开发)
│   ├── src/main/webapp/                        # 前端页面(已提供,无需修改)
│   │   ├── user/                               # 用户端页面
│   │   ├── admin/                              # 管理员端页面
│   │   └── js/common.js                        # 公共 API 工具模块(Fetch API)
│   ├── src/main/resources/db.properties        # 数据库配置文件
│   ├── doc/ui界面设计/                          # UI 设计参考图
│   ├── API.md                                  # API 接口文档(重要)
│   ├── 项目需求及设计文档.md                     # 完整的需求和设计说明(重要)
│   ├── A-校园图书管理系统.postman_collection.json # Postman 测试集合
│   └── pom.xml
└── README.md

👣 实验步骤


模块 1:Vibe Learning —— AI 引导学习 JDBC 与 Servlet

任务一:配置 Agent Skill

什么是 Agent Skill?

Agent Skill 是 AI 编程助手的可复用能力模块。每个 Skill 定义一个 SKILL.md 文件,描述 AI 在特定场景下的行为模式。配置完成后,只需简短指令即可触发专业工作流。

实验已预置的 Skill

Skill 名称 文件 用途
AI 辅助 JDBC 学习 ai-assisted-jdbc-learning/SKILL.md 8 步结构化工作流引导学习 Java Web 开发
前端 UI 设计 ui-ux-pro-max/SKILL.md 生成高质量、独特风格的前端界面

验证步骤

  1. 用 Trae AI IDE 打开 vibe_learning 目录。
  2. 在 Trae 的 AI 对话框中输入 /skills(或对应指令)查看 Skill 列表。
  3. 确认上述两个 Skill 已正确加载。

📸 截图 1(提交物)

Trae 中 Skill 列表加载成功的截图,重命名为 skill_loaded.png


任务二:AI 引导学习 JDBC 与数据库连接池

利用 ai-assisted-jdbc-learning Skill,按照 "概念讲解 → 最小示例 → 代码讲解 → 引导重构 → 代码审核 → 工程化升级 → 练习生成 → 作业审核" 的 8 步循环完成以下学习路径:

步骤 学习内容 关键 API
1 JDBC 基础 ConnectionStatementResultSet
2 PreparedStatement 参数化查询,防止 SQL 注入
3 DAO 模式 数据访问对象模式,分离数据库操作与业务逻辑
4 数据库连接池 Druid 连接池的概念与使用

🤖 Prompt(提示词)

请使用 ai-assisted-jdbc-learning Skill,引导我学习 JDBC 和数据库连接池。


任务三:图书模块 CRUD 独立练习

vibe_learning 项目中,独立完成以下练习:

  1. 使用 AI 生成 SQL 建表语句,创建 books 表(字段:id, title, author, isbn, category, total_copies, available_copies)。
  2. 使用 AI 生成插入测试数据的 SQL。
  3. 使用 JDBC 实现图书的增删改查(DAO 层)。
  4. 使用 Servlet 实现图书列表和详情查询的 API。
  5. 使用 Druid 连接池优化数据库连接。

任务四:使用 Skill 优化前端 UI

使用 ui-ux-pro-max Skill 快速生成专业风格的界面。

🤖 Prompt

使用技能 ui-ux-pro-max,帮我修改登录页 login.html 的风格,采用正式、简洁的官方风格。

操作步骤:

  1. 在 Trae AI 对话框中输入上述 Prompt。
  2. 等待 AI 生成并预览修改后的页面效果。
  3. 满意后应用到实际项目中。

📸 截图 2(提交物)

AI 生成 UI 优化的前后对比截图,重命名为 ui_optimize.png


模块 2:Vibe Coding —— 图书管理系统后端开发

说明

若在之前的课程中已完成图书管理系统后端开发,可以使用自己之前的代码为基础继续。请使用 AI 生成你项目的 API 接口文档,并依据该文档生成 Postman 接口测试集合(JSON 文件),导入到 Postman 中进行接口测试。


任务五:数据库设计与建表

数据库选择(二选一)

方式 适用场景 说明
本地数据库(推荐) 已安装 MySQL 8.0+ 性能更好,开发调试方便
远程数据库 未安装 MySQL 使用实验提供的数据库服务器

本地数据库配置

CREATE DATABASE book_management DEFAULT CHARACTER SET utf8mb4;

远程数据库配置

配置 主机 端口 用户名 密码 数据库
校园网 10.50.79.225 3306 user_学号 学号 app_学号
外网 8.140.216.36 29206 user_学号 学号 app_学号

需要创建的三张表(参照 项目需求及设计文档.md 附录 B):

表名 说明
users 用户表(存储管理员和普通用户)
books 图书表(含多复本管理:total_copiesavailable_copies
borrow_records 借阅记录表

🤖 Prompt(提示词)

根据以下需求,帮我生成完整的 MySQL 建表 SQL: - users 表:id(主键自增)、username(唯一)、password、name、email、role(admin/user) - books 表:id(主键自增)、title、author、isbn、category、total_copies、available_copies - borrow_records 表:id(主键自增)、user_id(外键)、book_id(外键)、borrow_date、due_date、return_date、status(borrowing/returned/overdue) 并插入初始数据(默认管理员 admin/123456 和 5 本测试图书)。

📸 截图 3(提交物)

数据库建表完成后,Navicat/DBeaver 中三张表的 ER 视图截图,重命名为 db_schema.png


任务六:项目配置及初始化

  1. 使用 Trae AI IDE 打开 book_template 目录(用于 AI 辅助编程)。
  2. 同时使用 IDEA 打开项目(用于运行调试)。
  3. 配置数据库连接:编辑 src/main/resources/db.properties

    1
    2
    3
    4
    5
    # 本地 MySQL 配置
    jdbc.url=jdbc:mysql://localhost:3306/book_management?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
    jdbc.username=root
    jdbc.password=你的MySQL密码
    jdbc.driver=com.mysql.cj.jdbc.Driver
    

任务七:使用 Trae AI IDE 生成后端代码(核心)

这是本实验的核心环节。你需要借助 AI 完成全部后端代码的开发。

需要完成的内容

层级 文件 说明
DAO UserDao.java 用户数据访问(登录验证、注册、查询)
DAO BookDao.java 图书数据访问(CRUD、搜索、复本管理)
DAO BorrowDao.java 借阅数据访问(借阅、归还、记录查询)
Servlet LoginServlet.java 用户登录
Servlet RegisterServlet.java 用户注册
Servlet BookServlet.java 图书管理(Action 分发模式)
Servlet BorrowServlet.java 借阅管理(借书/还书)
Filter AuthFilter.java 登录权限拦截
全部 25+ 个 API 接口 参照 API.md 文档

操作步骤

  1. 在 Trae AI IDE 中,将 API.md项目需求及设计文档.md 的内容提供给 AI 作为上下文。
  2. 输入核心 Prompt:

    🤖 Prompt

    根据项目需求及设计文档.md 中的需求及设计,以及 API.md 接口文档,帮我完成后端所有功能开发。技术栈:Java 17 + Servlet(Jakarta 6.0)+ JDBC + MySQL。项目结构参照已有的 Controller-Service-DAO 分层。

  3. 观察 Trae 右侧窗口的代码生成过程,逐个审查并采纳 AI 生成的代码。

  4. 在 IDEA 中运行项目,调试生成的代码。

📸 截图 4(提交物)

Trae AI IDE 生成代码过程的截图(对话界面),重命名为 vibe_coding.png


任务八:关键技术要点理解

以下内容可借助 AI Skill 学习,但必须自己理解和实现。

1. Session 认证

登录后将用户信息存入 Session,后续请求通过 Filter 检查 Session 有效性。管理员接口额外检查 role == "admin"

2. 密码加密

使用 MD5 对密码进行加密存储(教学简化方案):

String encryptedPassword = MD5Utils.md5(password);

3. 借阅业务规则

借阅检查流程:
 1. 用户是否已登录?          → 未登录返回 401
 2. 当前借阅数 < 5?          → 已达上限返回 400
 3. 有无超期未还记录?         → 有超期记录返回 400
 4. 图书可借复本 > 0?        → 无复本返回 400
 5. 校验通过                 → 创建借阅记录,available_copies - 1

归还流程:
 1. 查找借阅记录(status = 'borrowing')
 2. 更新 status = 'returned',return_date = NOW()
 3. 图书 available_copies + 1

4. 删除限制

  • 有借阅记录的用户不可删除。
  • 有借阅记录的图书不可删除(available_copies < total_copies)。
  • 管理员账号不可删除。

5. 编码规范

req.setCharacterEncoding("UTF-8");
resp.setContentType("application/json;charset=UTF-8");

任务九:Postman 接口测试

  1. 导入测试集合

    • 打开 Postman → Import → 选择 book_template/A-校园图书管理系统.postman_collection.json
    • 新建 Environment,配置以下变量:
      • ip = localhost
      • port = 8080
      • context = /book
  2. 按顺序测试

    模块 测试接口
    认证 注册 → 登录 → 验证 Session → 退出
    图书(用户) 浏览 → 搜索 → 查看详情
    借阅 借书 → 查看我的借阅 → 还书
    管理(admin) 图书 CRUD → 用户管理 → 借阅记录管理

📸 截图 5(提交物)

Postman 中完成全部接口测试的 Runner 汇总结果截图,重命名为 postman_summary.png

📸 截图 6(提交物)

浏览器访问图书管理系统,登录后图书列表页面截图,重命名为 browser_books.png


🚀 挑战任务(Optional - 加分项)

挑战 A:超期检测

在借阅归还接口中实现自动超期检测:如果 return_date > due_date,标记为逾期并计算逾期天数。

挑战 B:借阅历史分页

在借阅记录查询接口中实现分页功能(pagesize 参数 + LIMIT 分页)。

挑战 C:密码加密升级

使用 BCrypt 替代 MD5 进行密码加密存储与验证。


💾 作业提交

提交内容

  1. 完整项目代码book_template 目录下的全部后端实现)。
  2. 截图文件,放入 img 目录:

    文件名 内容说明
    skill_loaded.png Trae Skill 加载成功截图
    ui_optimize.png AI 生成 UI 优化对比截图
    db_schema.png 数据库三张表结构截图
    vibe_coding.png Trae AI IDE 生成代码对话截图
    postman_summary.png Postman 接口测试汇总结果
    browser_books.png 浏览器图书列表页面截图

学习通提交

将项目压缩为 ZIP(包含 vibe_learning 练习代码和 book_template 完整代码),上传至学习通对应作业入口。学习通提交的实验报告需额外包含:

  • 与 AI 的对话截图
  • SQL 建表及插入测试数据语句
  • 图书模块核心代码
  • Postman 或 IDEA HTTP Client 接口测试截图

📚 相关资源