
📝个人主页:哈__
期待您的关注

目录
[2.1 需求提出](#2.1 需求提出)
[2.2 系统模块的设计](#2.2 系统模块的设计)
[2.3 数据库表格设计](#2.3 数据库表格设计)
[2.4 接口规范设计](#2.4 接口规范设计)
[2.5 源码生成](#2.5 源码生成)
学弟这两天有一个小组合作的任务,应该是培训吧要写一个学生管理系统,他不想做让我帮忙写一个后端,本来不想写的无奈学弟给的到位,作为一名后端开发程序员,这样的任务实在是 太简单,自己写又太麻烦,干脆上科技。
我看到了IDEA右侧的一个插件,飞算AI,我灵机一动,很快就交付了作业。
一、飞算AI简介
飞算JavaAI 是飞算科技于2025年1月发布的全球首款聚焦Java语言的智能开发助手。该工具通过自然语言或语音输入开发需求,可自动完成需求分析、软件设计及完整工程代码生成全流程,输出包含配置类文件、Java源代码目录、资源文件及测试资源在内的整套工程源码。相较于片段式代码生成工具,其完整工程代码生成能力使开发效率提升10倍,有效降低重复编码工作量,助力开发者聚焦业务逻辑创新与系统架构优化。
详细说明文档参考链接:产品简介 | JavaAI
插件在这里我已经提前安装好了。
二、系统开发
飞算AI提供了四种使用场景。
|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 模块 | 用途 |
| 智能引导 | 智能引导模块可用于代码生成 |
| Java chat | Java chat 通过自然语言交互为开发者提供全流程编码支持。系统具备代码智能生成、多维度上下文关联、版本快照回溯等核心能力,覆盖需求分析、代码优化、缺陷修复等典型研发场景。此外,还提供代码解释、生成单元测试、优化现有代码、补全代码以及提出优化建议,助您高效完成编程任务。您可以使用Java chat帮您分析和优化现有的项目工程和代码重构等操作。 |
| 智能问答 | 无论是需要解释代码、添加代码注释,还是生成单元测试,飞算JavaAI都能助您一臂之力。此外,在遇到编译失败等问题时,您只需选中相应的错误代码或错误日志信息,并通过飞算JavaAI插件启动对话,提供您的问题详情。飞算JavaAI将为您提供解决方案和指导,帮助您快速克服难题。这样的支持确保了您的开发流程更加顺畅高效。 |
| SQL chat | SQL chat 它利用自然语言处理技术将自然语言问题转化为SQL查询。作为用户,您只需简单地输入您的问题,SQL chat就能帮您自动生成相应的SQL查询。 |

这里主要是使用到了智能引导,来看看飞算AI的项目解析和生成能力吧。
2.1 需求提出
这里我提出了需求,我没有进行需求描述,一切按照他自己理解来。

接下来飞算AI就给出了他自己对于学生管理系统的理解。他将任务分为十六个需求点,将任务切割以便于我们进行调整,看起来他对于项目的理解还算到位,就按照这个思路让他开始设计。

2.2 系统模块的设计
这里总共设计了八个接口实现十六个任务点。功能确实对应具体的模块,感觉项目不会有什么严重的耦合。

2.3 数据库表格设计
接着我们生成对应的数据库表格。总共生成了十二个表格,十二个表格不在一一展示了。说实话,他的表格设计能力还算可以。数据库设计可以分为两类,第一种是基于已经存在的数据库进行设计,这时候会分析我们的数据库表格,进行专门的定制。还有一种就是新建数据库进行设计,我们就是完全遵循飞算AI给出的SQL进行表格创建,这里我选择的是新创建数据库。
sql
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
password VARCHAR(255) NOT NULL COMMENT '密码',
email VARCHAR(100) UNIQUE COMMENT '邮箱',
phone_number VARCHAR(20) UNIQUE COMMENT '手机号',
role ENUM('teacher', 'student', 'admin') NOT NULL COMMENT '用户角色',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='用户管理';
CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '学生ID',
user_id INT NOT NULL COMMENT '用户ID',
name VARCHAR(50) NOT NULL COMMENT '姓名',
age INT COMMENT '年龄',
gender ENUM('male', 'female') COMMENT '性别',
major VARCHAR(100) COMMENT '专业',
class_id INT COMMENT '班级ID',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='学生信息管理';
CREATE TABLE teachers (
teacher_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '教师ID',
user_id INT NOT NULL COMMENT '用户ID',
name VARCHAR(50) NOT NULL COMMENT '姓名',
gender ENUM('male', 'female') COMMENT '性别',
title VARCHAR(50) COMMENT '职称',
department VARCHAR(100) COMMENT '所属部门',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='教师信息管理';
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '课程ID',
name VARCHAR(100) NOT NULL COMMENT '课程名称',
description TEXT COMMENT '课程描述',
teacher_id INT COMMENT '教师ID',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='课程信息管理';
CREATE TABLE classes (
class_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '班级ID',
name VARCHAR(50) NOT NULL COMMENT '班级名称',
grade VARCHAR(20) COMMENT '年级',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='班级信息管理';
CREATE TABLE scores (
score_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '成绩ID',
student_id INT NOT NULL COMMENT '学生ID',
course_id INT NOT NULL COMMENT '课程ID',
score DECIMAL(5,2) COMMENT '分数',
teacher_id INT COMMENT '教师ID',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='成绩管理';
CREATE TABLE announcements (
announcement_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '公告ID',
title VARCHAR(100) NOT NULL COMMENT '公告标题',
content TEXT NOT NULL COMMENT '公告内容',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='公告管理';
CREATE TABLE notifications (
notification_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '通知ID',
sender_id INT NOT NULL COMMENT '发送者ID',
receiver_id INT NOT NULL COMMENT '接收者ID',
title VARCHAR(100) NOT NULL COMMENT '通知标题',
content TEXT NOT NULL COMMENT '通知内容',
is_read BOOLEAN DEFAULT FALSE COMMENT '是否已读',
send_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='通知管理';
CREATE TABLE schedules (
schedule_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '课表ID',
teacher_id INT NOT NULL COMMENT '教师ID',
student_id INT COMMENT '学生ID',
course_id INT NOT NULL COMMENT '课程ID',
class_id INT NOT NULL COMMENT '班级ID',
day_of_week ENUM('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday') NOT NULL COMMENT '星期几',
start_time TIME NOT NULL COMMENT '开始时间',
end_time TIME NOT NULL COMMENT '结束时间',
location VARCHAR(100) COMMENT '地点',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='课表管理';
CREATE TABLE leave_requests (
request_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '请假申请ID',
student_id INT NOT NULL COMMENT '学生ID',
teacher_id INT COMMENT '教师ID',
reason TEXT NOT NULL COMMENT '请假原因',
start_date DATE NOT NULL COMMENT '开始日期',
end_date DATE NOT NULL COMMENT '结束日期',
status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending' COMMENT '状态',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='请假申请管理';
CREATE TABLE attendance_records (
record_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '考勤记录ID',
student_id INT NOT NULL COMMENT '学生ID',
course_id INT NOT NULL COMMENT '课程ID',
date DATE NOT NULL COMMENT '日期',
status ENUM('present', 'absent') NOT NULL COMMENT '状态',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='考勤记录管理';
CREATE TABLE logs (
log_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '日志ID',
user_id INT COMMENT '用户ID',
action VARCHAR(100) NOT NULL COMMENT '操作',
details TEXT COMMENT '详情',
ip_address VARCHAR(45) COMMENT 'IP地址',
log_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '日志时间'
) COMMENT='操作日志管理';
2.4 接口规范设计
飞算AI在设计完数据库表格后,会进行接口的规范设计,如果觉得这些规范不合适,我们可以自行调整。

2.5 源码生成
将之前的步骤设计完后,就可以生成源码了,不过源码生成我觉得有一点慢。但比我自己去写好

随后可以生成对应的代码结构。看起来没问题,还可以模块的划分也比较清晰。

看一下生成的用户管理下的用户注册功能。基本的校验逻辑都有,同时他竟然还在方法上加上了事务管理注解,看起来这个AI还是很强大的。
java
@Override
@Transactional
public RestResult register(UserRegisterDTO userRegisterDTO) {
if (userRepository.findByUsername(userRegisterDTO.getUsername()) != null) {
return new RestResult("000001", "用户名已存在", null);
}
if (userRegisterDTO.getEmail() != null && userRepository.findByEmail(userRegisterDTO.getEmail()) != null) {
return new RestResult("000001", "邮箱已存在", null);
}
if (userRegisterDTO.getPhoneNumber() != null && userRepository.findByPhoneNumber(userRegisterDTO.getPhoneNumber()) != null) {
return new RestResult("000001", "手机号已存在", null);
}
UserDO user = new UserDO();
user.setUsername(userRegisterDTO.getUsername());
user.setPassword(userRegisterDTO.getPassword());
user.setEmail(userRegisterDTO.getEmail());
user.setPhoneNumber(userRegisterDTO.getPhoneNumber());
user.setRole(Role.valueOf(userRegisterDTO.getRole()));
user.setCreateTime(new Date());
user.setUpdateTime(new Date());
userRepository.save(user);
return new RestResult("000000", "调用成功", user);
}
其他模块我就不再展示了。
三、总结
用了这款AI,不仅可以在项目上帮助我们,其实在实际的开发过程中,也是有帮助的,飞算AI提供的其他模块同样强大,SQL chat模块可以帮我们处理复杂的SQL,我感觉相比于Cursor,飞算AI作为一款插件,功能是同样强大的。