关注

用飞算 JavaAI 开发高校设备管理系统!从需求到上线,毕业设计 3 天搞定

前言

在高校教学与科研活动中,大型实验设备是重要的资源支撑,但传统人工管理模式常面临设备信息不透明、预约流程繁琐、使用记录难追溯等问题。为解决这一痛点,我以“高校大型实验设备管理与预约信息系统”作为毕业设计主题,借助飞算JavaAI工具完成系统开发。本文将详细记录从需求分析到代码生成、优化调试的全过程,分享飞算JavaAI在实际开发中的应用体验。

一、需求分析与规划

1. 功能需求

高校大型实验设备管理与预约信息系统需满足三类用户(管理员、教师、学生)的核心需求,具体拆解如下:

  • 管理员端:设备信息管理(新增、编辑、删除设备型号、规格、存放位置、故障状态等)、用户管理(新增教师/学生账号、分配权限)、预约审核(审核教师/学生的设备预约申请)、使用统计(按设备类型、时间段统计使用频次、预约成功率);
  • 教师端:设备查询(按设备名称、类型、可用状态筛选)、预约申请(选择设备、预约日期与时间段、填写使用用途)、预约记录查看(已通过/待审核/已拒绝的预约记录)、使用反馈(提交设备使用后的状态、故障问题);
  • 学生端:设备查询(仅查看可用设备信息)、预约申请(需选择指导教师,且预约时间段需与教师账号绑定)、预约记录跟踪、使用须知查看(设备操作规范、预约违约规则)。

2. 核心模块

基于需求分析,系统划分为5个核心模块,各模块职责明确且相互联动:

模块名称核心功能关联模块
用户管理模块账号注册、登录、权限分配、信息编辑所有模块(权限控制)
设备管理模块设备信息维护、状态更新、故障上报预约管理模块(设备可用性判断)
预约管理模块预约申请提交、审核流程、预约取消用户管理模块(权限校验)、设备管理模块(设备状态同步)
记录统计模块使用记录查询、预约数据统计、报表导出设备管理模块(设备数据)、预约管理模块(预约数据)
系统通知模块预约审核结果推送、设备故障提醒、预约到期提醒预约管理模块(审核/预约状态)、设备管理模块(故障状态)

3. 技术选型

借助飞算JavaAI的“智能引导”功能,结合毕业设计的开发难度与可实现性,确定技术栈如下:

  • 后端框架:Spring Boot 2.7.x(轻量化、易上手,适合快速开发);
  • 数据库:MySQL 8.0(开源免费,支持复杂查询,满足设备与预约数据存储需求);
  • 前端框架:Vue 3 + Element Plus(组件丰富,可视化效果好,降低前端开发难度);
  • 开发工具:IntelliJ IDEA 2023.1 + 飞算JavaAI插件(插件直接集成在IDEA中,可实时生成代码)。

二、飞算JavaAI开发实战

本次开发全程依赖飞算JavaAI的“智能引导”功能,从需求输入到源码生成共分为6个关键步骤,每个步骤均通过插件可视化操作完成,以下为详细流程与实操记录:

输入提示词(明确开发需求)

打开IntelliJ IDEA,启动飞算JavaAI插件,在“智能引导”的“需求输入”界面,输入详细提示词:
“请帮我开发高校大型实验设备管理与预约信息系统的后端代码,基于Spring Boot 2.7.x和MySQL 8.0,需包含用户管理(管理员/教师/学生三类角色)、设备管理(设备信息CRUD、状态更新)、预约管理(预约申请、审核、取消)三大核心模块,要求生成实体类、Mapper接口、Service层、Controller层代码,且符合RESTful API规范。”

****

理解需求(需求拆解与确认)

点击“确认提交”后,飞算JavaAI自动进入“需求理解”环节,约10秒后生成需求拆解报告,内容包含:

  • 需求匹配度分析:明确系统是围绕用户、设备、预约展开的管理系统,涉及多角色权限与多种预约相关操作,与常见的管理系统开发需求适配。
  • 模块拆解确认:将需求细化为用户管理模块(涵盖管理员、教师、学生三类角色的权限控制与身份认证)、设备信息管理模块(支持设备信息的增删改查及状态更新)、预约管理模块(包含预约申请、审核、取消等子功能,以及预约状态跟踪)。

设计接口(RESTful API规划)

确认需求后,插件自动跳转至 “接口设计” 界面,围绕用户管理、设备管理、预约管理这几大模块,生成了对应接口的详细说明,涉及接口在用户注册登录、设备增删改查、预约申请审核等场景下的功能定位与核心作用阐述。

  • 用户管理接口相关:明确用户管理的职责是对系统中管理员、教师、学生三类角色进行注册、登录、权限验证及信息维护,包含用户身份认证与授权机制,以确保不同角色有不同操作权限,为后续设计具体的用户管理相关 RESTful API 提供了功能范围和目标方向。
  • 设备管理接口相关:确定设备管理要实现对实验设备信息全生命周期的管理,涵盖设备的新增、修改、删除和查询功能,还支持设备状态(如可用、维修中、已预约等)的实时更新,为设计设备管理类的 RESTful API 划定了功能边界。
  • 预约管理接口相关:指出预约管理需支持用户提交设备预约申请、管理员审核预约请求,以及用户或管理员取消已批准预约记录,同时要保障预约流程的状态流转控制和数据一致性,为预约管理相关的 RESTful API 设计明确了核心功能和要求。

表结构设计(数据库表生成)

完成接口设计后,自动推导所需数据库表,并生成表结构(含字段名、数据类型、长度、主键、外键、备注),同时也支持手动编辑修改表结构。核心表结构如下:

  • user_info 表(用户信息表):user_id(BIGINT,主键,自动递增,用户唯一标识)、user_name(VARCHAR (50),非空,用户名)、password(VARCHAR (100),非空,用户密码(加密存储))、role_type(TINYINT,非空,角色类型:1 - 管理员,2 - 教师,3 - 学生)、email(VARCHAR (100),邮箱地址)、phone(VARCHAR (20),手机号码)、status(TINYINT,默认 1,账户状态:1 - 启用,0 - 禁用)、create_by(BIGINT,创建人 ID)、create_time(DATETIME,默认当前时间戳,创建时间)、update_by(BIGINT,修改人 ID)、update_time(DATETIME,默认当前时间戳且更新时自动更新,修改时间);
  • device_info 表(设备信息表):device_id(BIGINT,主键,自动递增,设备唯一标识)、device_name(VARCHAR (100),非空,设备名称)、device_model(VARCHAR (50),设备型号)、location(VARCHAR (100),设备所在位置)、status(TINYINT,默认 1,设备状态:1 - 可用,2 - 维修中,3 - 已预约)、description(TEXT,设备描述信息)、create_by(BIGINT,创建人 ID)、create_time(DATETIME,默认当前时间戳,创建时间)、update_by(BIGINT,修改人 ID)、update_time(DATETIME,默认当前时间戳且更新时自动更新,修改时间);
  • reservation_info 表(预约信息表):reservation_id(BIGINT,主键,自动递增,预约记录唯一标识)、user_id(BIGINT,非空,申请人 ID)、device_id(BIGINT,非空,设备 ID)、start_time(DATETIME,非空,预约开始时间)、end_time(DATETIME,非空,预约结束时间)、status(TINYINT,默认 1,预约状态:1 - 待审核,2 - 已批准,3 - 已拒绝,4 - 已取消)、remark(TEXT,备注信息)、apply_reason(TEXT,申请原因)、create_by(BIGINT,创建人 ID)、create_time(DATETIME,默认当前时间戳,创建时间)、update_by(BIGINT,修改人 ID)、update_time(DATETIME,默认当前时间戳且更新时自动更新,修改时间)。

处理逻辑(接口实现思路生成)

点击“下一步”后,插件进入“处理逻辑”界面,针对每个接口生成详细的业务处理流程,明确参数校验、数据库操作、异常处理的核心逻辑。以“预约管理”为例,处理逻辑如下:

1. 提交设备预约申请接口处理逻辑
  1. 接收前端传入的预约参数(含必填的 userId、deviceId、startTime、endTime,及可选的 applyReason、remark);
  2. 调用 UserService 查询用户信息,校验用户是否存在且账户状态为启用,若不满足则返回{"code":"000001","msg":"用户信息不存在或已被禁用","data":...}
  3. 调用 DeviceService 查询设备信息,校验设备是否存在且状态为可用,若不满足则返回{"code":"000001","msg":"设备不可用或不存在","data":...}
  4. 调用 ReservationService 查询该设备在 “startTime-endTime” 时间段内的已批准预约记录,若存在冲突则返回{"code":"000001","msg":"该时间段已有其他已批准的预约","data":...}
  5. 将预约参数封装为 ReservationInfo 实体,默认设置预约状态为 “1 - 待审核”,调用 ReservationService 保存至数据库;
  6. 返回{"code":"000000","msg":"调用成功","data":...}的成功响应。
2. 管理员审核预约申请接口处理逻辑
  1. 接收前端传入的审核参数(必填的 reservationId、status,status 取值为 2 - 已批准或 3 - 已拒绝);
  2. 调用 ReservationService 查询预约记录,校验 reservationId 对应的预约是否存在,若不存在则返回{"code":"000001","msg":"预约记录不存在","data":...}
  3. 校验当前预约状态是否为 “1 - 待审核”,若不是则返回{"code":"000001","msg":"仅待审核状态可进行审核操作","data":...}
  4. 若 status 为 “2 - 已批准”,调用 DeviceService 将对应设备状态更新为 “3 - 已预约”;
  5. 调用 ReservationService 更新预约记录的状态(已批准 / 已拒绝)及更新时间;
  6. 返回{"code":"000000","msg":"调用成功","data":...}的成功响应。
3. 取消已批准的预约接口处理逻辑
  1. 接收前端传入的预约取消参数(必填的 reservationId);
  2. 调用 ReservationService 查询预约记录,校验 reservationId 对应的预约是否存在,若不存在则返回{"code":"000001","msg":"预约记录不存在","data":...}
  3. 校验当前预约状态是否为 “2 - 已批准”,若不是则返回{"code":"000001","msg":"只有已批准的预约可以被取消","data":...}
  4. 调用 ReservationService 将预约状态更新为 “4 - 已取消”,并同步更新记录的修改时间;
  5. 调用 DeviceService 将对应设备的状态从 “3 - 已预约” 更新为 “1 - 可用”;
  6. 返回{"code":"000000","msg":"调用成功","data":...}的成功响应。
4. 查询用户的所有预约记录接口处理逻辑
  1. 接收前端传入的查询参数(必填的 userId);
  2. 调用 UserService 查询用户信息,校验 userId 对应的用户是否存在,若不存在则返回{"code":"000001","msg":"用户不存在","data":...}
  3. 调用 ReservationService 根据 userId 查询该用户的所有预约记录(含待审核、已批准、已拒绝、已取消状态),并按创建时间倒序排序;
  4. 将查询到的预约记录列表封装为数据对象;
  5. 返回{"code":"000000","msg":"调用成功","data":{预约记录列表}}的成功响应。
5. 查询设备的预约历史接口处理逻辑
  1. 接收前端传入的查询参数(必填的 deviceId);
  2. 调用 DeviceService 查询设备信息,校验 deviceId 对应的设备是否存在,若不存在则返回{"code":"000001","msg":"设备不存在","data":...}
  3. 调用 ReservationService 根据 deviceId 查询该设备的所有预约记录(含各状态),并按预约开始时间倒序排序;
  4. 将查询到的设备预约历史列表封装为数据对象;
  5. 返回{"code":"000000","msg":"调用成功","data":{设备预约历史列表}}的成功响应。

生成源码(完整工程代码输出)

确认处理逻辑后,点击“生成源码”,飞算JavaAI开始生成完整工程代码,约几分钟分钟后生成完成(根据项目大小生成所需时间有所差别),代码结构遵循MVC架构,包含:

**配置类:**src/main/java/xm_lab_equipment/config/WebConfig(用于 Web 相关配置,如跨域等);

**Controller 层:**src/main/java/xm_lab_equipment/controller/DeviceController.java、ReservationController.java、UserController.java(包含接口映射、参数接收、响应返回逻辑);

**DTO 类:**src/main/java/xm_lab_equipment/dto/request下的AdminReviewRequest、CancelReservationRequest、DeviceAddRequest等请求类,以及src/main/java/xm_lab_equipment/dto/response/RestResult响应类(用于封装接口请求和响应数据);

**实体类:**src/main/java/xm_lab_equipment/entity/DeviceDO.java、DeviceInfo.java、ReservationInfo.java、UserInfo.java(映射数据库表结构,存储数据);

**Repository 接口:**src/main/java/xm_lab_equipment/repository下的DeviceInfoRepository、DeviceRepository、ReservationInfoRepository、UserInfoRepository、UserRepository(用于数据库操作,提供数据访问能力);

**Service 层:**src/main/java/xm_lab_equipment/service下的DeviceService.java、ReservationService.java、UserService.java接口,以及src/main/java/xm_lab_equipment/service/impl下的DeviceServiceImpl.java、ReservationServiceImpl.java、UserServiceImpl.java实现类(包含业务逻辑实现);

**启动类:**src/main/java/xm_lab_equipment/XmLabEquipmentApplication.java(项目启动入口)。以下是项目结构的表格形式展示:

类别路径及文件说明
配置类src/main/java/xm_lab_equipment/config/WebConfig用于Web相关配置,如跨域等
Controller层src/main/java/xm_lab_equipment/controller/DeviceController.java包含设备相关接口映射、参数接收、响应返回逻辑
src/main/java/xm_lab_equipment/controller/ReservationController.java包含预约相关接口映射、参数接收、响应返回逻辑
src/main/java/xm_lab_equipment/controller/UserController.java包含用户相关接口映射、参数接收、响应返回逻辑
DTO类src/main/java/xm_lab_equipment/dto/request/AdminReviewRequest管理员审核请求数据封装类
src/main/java/xm_lab_equipment/dto/request/CancelReservationRequest取消预约请求数据封装类
src/main/java/xm_lab_equipment/dto/request/DeviceAddRequest设备添加请求数据封装类
…(其他请求类)其他接口请求数据封装类
src/main/java/xm_lab_equipment/dto/response/RestResult接口响应数据封装类
实体类src/main/java/xm_lab_equipment/entity/DeviceDO.java设备相关数据实体类(映射数据库表)
src/main/java/xm_lab_equipment/entity/DeviceInfo.java设备信息实体类(映射数据库表)
src/main/java/xm_lab_equipment/entity/ReservationInfo.java预约信息实体类(映射数据库表)
src/main/java/xm_lab_equipment/entity/UserInfo.java用户信息实体类(映射数据库表)
Repository接口src/main/java/xm_lab_equipment/repository/DeviceInfoRepository设备信息数据访问接口
src/main/java/xm_lab_equipment/repository/DeviceRepository设备数据访问接口
src/main/java/xm_lab_equipment/repository/ReservationInfoRepository预约信息数据访问接口
src/main/java/xm_lab_equipment/repository/UserInfoRepository用户信息数据访问接口
src/main/java/xm_lab_equipment/repository/UserRepository用户数据访问接口
Service层src/main/java/xm_lab_equipment/service/DeviceService.java设备相关业务逻辑接口
src/main/java/xm_lab_equipment/service/ReservationService.java预约相关业务逻辑接口
src/main/java/xm_lab_equipment/service/UserService.java用户相关业务逻辑接口
src/main/java/xm_lab_equipment/service/impl/DeviceServiceImpl.java设备相关业务逻辑实现类
src/main/java/xm_lab_equipment/service/impl/ReservationServiceImpl.java预约相关业务逻辑实现类
src/main/java/xm_lab_equipment/service/impl/UserServiceImpl.java用户相关业务逻辑实现类
启动类src/main/java/xm_lab_equipment/XmLabEquipmentApplication.java项目启动入口类

将生成的代码,全部合并到项目当中,代码无语法错误,可以直接运行测试。

三、优化与调试心得

1. 遇到的问题及解决方案

(1)问题1:预约冲突判断逻辑不精准

生成的ReservationService中,预约冲突判断仅比较“applyDate相同+startTime < 已预约endTime且endTime > 已预约startTime”,但未考虑“已预约时间段包含申请时间段”“申请时间段包含已预约时间段”的场景,导致存在冲突漏判。

解决方案:借助飞算JavaAI的“智能会话”功能,输入问题“如何优化MySQL中预约时间段冲突的查询逻辑?”,返回优化后的SQL查询条件:

SELECT COUNT(*) FROM reservation 
WHERE equipment_id = #{equipmentId} 
AND apply_date = #{applyDate} 
AND audit_status = 1 
AND (
    (start_time < #{endTime} AND end_time > #{startTime})  -- 部分重叠
    OR (start_time <= #{startTime} AND end_time >= #{endTime})  -- 已预约包含申请
    OR (start_time >= #{startTime} AND end_time <= #{endTime})  -- 申请包含已预约
)

将该SQL整合到ReservationMapper.xml的countConflictReservation方法中,解决冲突漏判问题。

(2)问题2:密码明文存储安全风险

生成的User实体类中,password字段未加密,用户注册时密码以明文形式存入数据库,存在安全隐患。

解决方案:手动引入Spring Security的BCryptPasswordEncoder,在UserServiceImpl的register方法中添加密码加密逻辑:

@Autowired
private BCryptPasswordEncoder passwordEncoder;

@Override
public Result register(User user) {
    // 密码加密
    String encodedPassword = passwordEncoder.encode(user.getPassword());
    user.setPassword(encodedPassword);
    // 其他逻辑...
    userMapper.insert(user);
    return Result.success("注册成功");
}

同时在登录接口(UserController的login方法)中添加密码校验逻辑,确保登录时使用加密后的密码比对。

(3)问题3:前端请求跨域问题

当前端Vue项目调用后端接口时,出现“Access-Control-Allow-Origin”跨域错误,生成的代码中未配置跨域支持。

解决方案:通过飞算JavaAI“智能会话”查询“Spring Boot解决跨域问题的配置”,AI返回跨域配置类代码,在工程中新增config/CorsConfig.java:

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("*")
                .maxAge(3600);
    }
}

添加后重启后端服务,跨域问题解决。

四、成果展示与总结

1. 系统成果展示

(1)工程结构完整性

生成的高校大型实验设备管理与预约信息系统工程,严格遵循 MVC 架构设计,目录结构清晰且层级分明,完整工程结构如下:

xm_lab_equipment/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── xm_lab_equipment/
│   │   │       ├── XmLabEquipmentApplication.java  // 项目启动入口,含@SpringBootApplication注解
│   │   │       ├── config/
│   │   │       │   └── WebConfig.java  // 配置跨域、资源映射等Web相关参数
│   │   │       ├── controller/
│   │   │       │   ├── DeviceController.java  // 设备管理接口(新增/编辑/查询设备)
│   │   │       │   ├── ReservationController.java  // 预约管理接口(申请/审核/取消预约)
│   │   │       │   └── UserController.java  // 用户管理接口(注册/登录/权限校验)
│   │   │       ├── dto/
│   │   │       │   ├── request/
│   │   │       │   │   ├── AdminReviewRequest.java  // 审核预约请求参数封装
│   │   │       │   │   ├── CancelReservationRequest.java  // 取消预约请求参数封装
│   │   │       │   │   └── DeviceAddRequest.java  // 新增设备请求参数封装
│   │   │       │   └── response/
│   │   │       │       └── RestResult.java  // 统一响应结果(含code、msg、data字段)
│   │   │       ├── entity/
│   │   │       │   ├── DeviceDO.java  // 设备数据对象(映射device_info表)
│   │   │       │   ├── DeviceInfo.java  // 设备信息实体(含设备状态、位置等属性)
│   │   │       │   ├── ReservationInfo.java  // 预约信息实体(映射reservation_info表)
│   │   │       │   └── UserInfo.java  // 用户信息实体(映射user_info表,含角色类型字段)
│   │   │       ├── repository/
│   │   │       │   ├── DeviceInfoRepository.java  // 设备信息数据访问接口(CRUD方法)
│   │   │       │   ├── DeviceRepository.java  // 设备数据对象访问接口
│   │   │       │   ├── ReservationInfoRepository.java  // 预约信息数据访问接口
│   │   │       │   ├── UserInfoRepository.java  // 用户信息数据访问接口
│   │   │       │   └── UserRepository.java  // 用户数据对象访问接口
│   │   │       ├── service/
│   │   │       │   ├── DeviceService.java  // 设备管理服务接口(定义设备操作方法)
│   │   │       │   ├── ReservationService.java  // 预约管理服务接口(定义预约操作方法)
│   │   │       │   └── UserService.java  // 用户管理服务接口(定义用户操作方法)
│   │   │       └── service/impl/
│   │   │           ├── DeviceServiceImpl.java  // 设备管理服务实现类(业务逻辑落地)
│   │   │           ├── ReservationServiceImpl.java  // 预约管理服务实现类
│   │   │           └── UserServiceImpl.java  // 用户管理服务实现类
│   │   └── resources/
│   │       ├── application.yml  // 核心配置文件(数据库连接、服务端口、日志级别)
│   │       └── db/ 

(2)核心功能可运行性

通过对接后端项目进行数据的展示,以下为用户预约申请场景和****管理员审核场景展示:

2. 飞算 JavaAI 使用体验总结

(1)核心优势

  1. 开发效率大幅提升:传统毕业设计开发需手动编写实体类、Mapper 接口、配置文件等基础代码,耗时约 3-5 天;而飞算 JavaAI 通过 “智能引导” 功能,1 小时内即可生成完整工程代码,且代码结构规范,直接跳过 “基础编码” 阶段,专注于业务逻辑优化。
  2. 需求匹配度高:输入详细提示词后,AI 能精准拆解需求(如识别 “三类用户角色”“设备状态流转” 等核心要点),生成的接口设计、表结构与实际业务场景高度契合,无需大规模调整基础设计。
  3. 辅助调试能力强:遇到 “预约冲突判断不精准”“跨域” 等问题时,通过 “智能会话” 功能输入问题,AI 能快速提供针对性解决方案(如优化 SQL 语句、生成跨域配置类),减少查阅资料的时间成本,尤其适合毕业设计中缺乏开发经验的学生。

(2)待优化方向

  1. 个性化逻辑支持有限:对于 “学生预约需绑定指导教师”“设备使用后需提交使用报告” 等个性化需求,AI 生成的基础代码未覆盖,需手动补充业务逻辑,若能在提示词中支持更细粒度的需求描述,可进一步减少手动开发量。
  2. 前端代码生成缺失:当前仅支持后端代码生成,前端 Vue 页面需手动开发,若后续能新增前端页面、组件的生成功能,可实现 “前后端代码一站式生成”,进一步降低毕业设计开发门槛。

(3)个人使用建议

  1. 提示词需精准详细:在输入需求时,需明确 “技术栈版本”“核心模块功能”“角色权限差异” 等关键信息(如 “基于 Spring Boot 2.7.x,学生预约需选择指导教师”),避免因需求模糊导致生成代码不符合预期。
  2. 生成后需二次校验:AI 生成的代码虽无语法错误,但需结合业务场景校验逻辑合理性(如本次开发中发现 “预约冲突判断不完整”),建议通过 Postman 逐一测试核心接口,确保功能符合需求。
  3. 善用 “智能会话” 功能:开发中遇到技术问题时,优先使用 AI 的 “智能会话” 功能,可针对性查询 “SQL 优化”“权限控制” 等具体问题,比通用搜索引擎更高效,且解决方案与当前工程代码风格适配。

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_62782025/article/details/151281968

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--