学弟让我帮忙写一个学生管理系统的后端,我直接上科技

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

目录
一、飞算AI简介
二、系统开发
2.1 需求提出
2.2 系统模块的设计
2.3 数据库表格设计
2.4 接口规范设计
2.5 源码生成
三、总结
学弟这两天有一个小组合作的任务,应该是培训吧要写一个学生管理系统,他不想做让我帮忙写一个后端,本来不想写的无奈学弟给的到位,作为一名后端开发程序员,这样的任务实在是 太简单,自己写又太麻烦,干脆上科技。
我看到了IDEA右侧的一个插件,飞算AI,我灵机一动,很快就交付了作业。
这里直接给大家提供一个SWING版本的管理系统,有需要的同学自取:
SWING 学生管理系统SWING员工管理系统
SWING 学生信息管理系统
SWING 汽车租赁系统
再送一个Java进阶的课程吧,都是一些源码教学
Java架构师提升课程
评论区扣666 我送一个练手的SpringBoot项目,类似于网课售卖网站
一、飞算AI简介
飞算JavaAI 是飞算科技于2025年1月发布的全球首款聚焦Java语言的智能开发助手。该工具通过自然语言或语音输入开发需求,可自动完成需求分析、软件设计及完整工程代码生成全流程,输出包含配置类文件、Java源代码目录、资源文件及测试资源在内的整套工程源码。相较于片段式代码生成工具,其完整工程代码生成能力使开发效率提升10倍,有效降低重复编码工作量,助力开发者聚焦业务逻辑创新与系统架构优化。
详细说明文档参考链接:产品简介 | JavaAI
插件在这里我已经提前安装好了。
二、系统开发
飞算AI提供了四种使用场景。

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

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

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

2.3 数据库表格设计
接着我们生成对应的数据库表格。总共生成了十二个表格,十二个表格不在一一展示了。说实话,他的表格设计能力还算可以。数据库设计可以分为两类,第一种是基于已经存在的数据库进行设计,这时候会分析我们的数据库表格,进行专门的定制。还有一种就是新建数据库进行设计,我们就是完全遵循飞算AI给出的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还是很强大的。
@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作为一款插件,功能是同样强大的。


