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

  📝个人主页:哈__

期待您的关注 

目录

一、飞算AI简介

二、系统开发

2.1 需求提出 

2.2 系统模块的设计 

2.3 数据库表格设计

2.4 接口规范设计

2.5 源码生成 

三、总结


学弟这两天有一个小组合作的任务,应该是培训吧要写一个学生管理系统,他不想做让我帮忙写一个后端,本来不想写的无奈学弟给的到位,作为一名后端开发程序员,这样的任务实在是 太简单,自己写又太麻烦,干脆上科技。

我看到了IDEA右侧的一个插件,飞算AI,我灵机一动,很快就交付了作业。

一、飞算AI简介

飞算JavaAI 是飞算科技于2025年1月发布的全球首款聚焦Java语言的智能开发助手。该工具通过自然语言或语音输入开发需求,可自动完成需求分析、软件设计及完整工程代码生成全流程,输出包含配置类文件、Java源代码目录、资源文件及测试资源在内的整套工程源码。相较于片段式代码生成工具,其完整工程代码生成能力使开发效率提升10倍,有效降低重复编码工作量,助力开发者聚焦业务逻辑创新与系统架构优化。

详细说明文档参考链接:产品简介 | JavaAI

 插件在这里我已经提前安装好了。

二、系统开发

飞算AI提供了四种使用场景。

模块用途
智能引导智能引导模块可用于代码生成
Java chatJava chat 通过自然语言交互为开发者提供全流程编码支持。系统具备代码智能生成、多维度上下文关联、版本快照回溯等核心能力,覆盖需求分析、代码优化、缺陷修复等典型研发场景。此外,还提供代码解释、生成单元测试、优化现有代码、补全代码以及提出优化建议,助您高效完成编程任务。您可以使用Java chat帮您分析和优化现有的项目工程和代码重构等操作。
智能问答无论是需要解释代码、添加代码注释,还是生成单元测试,飞算JavaAI都能助您一臂之力。此外,在遇到编译失败等问题时,您只需选中相应的错误代码或错误日志信息,并通过飞算JavaAI插件启动对话,提供您的问题详情。飞算JavaAI将为您提供解决方案和指导,帮助您快速克服难题。这样的支持确保了您的开发流程更加顺畅高效。
SQL chatSQL chat 它利用自然语言处理技术将自然语言问题转化为SQL查询。作为用户,您只需简单地输入您的问题,SQL chat就能帮您自动生成相应的SQL查询。

这里主要是使用到了智能引导,来看看飞算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@Transactionalpublic 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作为一款插件,功能是同样强大的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88605.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《P3038 [USACO11DEC] Grass Planting G》

题目描述 给出一棵有 n 个节点的树,有 m 个如下所示的操作: 将两个节点之间的 路径上的边 的权值均加一。 查询两个节点之间的 那一条边 的权值,保证两个节点直接相连。 初始边权均为 0。 输入格式 第一行两个整数 n,m,含义…

NestJS

文章的地址 NestJShttps://equinox-primrose-ceb.notion.site/NestJS-22d4b8031e0f80b39fc7fe1ff111f802 不产生测试的.spec.ts文件的配置 "generateOptions": {"spec": false }创建模型 nest g m xx 创建服务 nest g s xx 创建处理 nest g c xx CRU…

vue入门学习教程

一、介绍 vue是一款用于构建用户界面的 JavaScript 框架。基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。 二、使用和安装 方法1&#xff1a;在html代码中直接使用<script>导入&…

C++类对象多态基础语法【超详细】

文章目录前言1. 虚函数1.1 现象1.2 多态1.3 析构函数1.4 override和final1.5 重载、隐藏、重写对比2. 抽象类2.1 抽象类特性2.2 抽象类的应用场景3. 多态实现的底层原理4. 静态绑定和动态绑定5. 总结前言 多态是面向对象三大特性之一&#xff0c;也是细节最多的语法之一。学习…

Flask 入门到实战(3):用 SQLAlchemy 优雅操作数据库

深入理解 Flask ORM&#xff1a;用 SQLAlchemy 优雅操作数据库一、前言&#xff1a;什么是 ORM&#xff1f;为什么要用它&#xff1f; 传统数据库操作要写 SQL&#xff0c;比如&#xff1a; SELECT * FROM users WHERE id 1;而使用 ORM 后&#xff0c;你可以这样写&#xff1a…

源表=电源+数字表?一文看懂SMU源表 2025-04-14

源表(Source Meter Unit, SMU)广泛用于半导体器件、材料、医疗、发光器件与光通信等行业,测量器件的伏安(I-V)特性曲线、绝缘材料的电阻值(电阻率)、电容的绝缘电阻(漏电流)、光电器件的暗电流或者L-I-V等。 源表的名称已经清晰的告诉我们,它包含了高精度电源输出和…

单片机STM32F103:DMA的原理以及应用

STM32F103系列微控制器&#xff08;基于ARM Cortex-M3内核&#xff09;集成了**DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09;**控制器&#xff0c;用于在存储器与外设、存储器与存储器之间高效传输数据&#xff0c;减少CPU的干预&#xff0c;从而…

Webview 中可用的 VS Code 方法

在 VS Code Webview 的 HTML 中&#xff0c;不能直接调用 VS Code 的 API&#xff08;如 vscode.window.showInformationMessage&#xff09;&#xff0c;但可以通过 acquireVsCodeApi() 获取一个受限的 vscode 对象&#xff0c;用于与插件主程序通信。以下是详细说明和示例&am…

Qt:布局管理器Layout

目录 布局管理器 QVBoxLayout QHBoxLayout QGirdLayout QFormLayout Spacer 布局管理器 在以往的界面操作上&#xff0c;都是程序员手动拖动控件来布局&#xff0c;这种方式有一些不足之处&#xff0c;比如不能很好的把握控件之间的距离&#xff0c;以及控件的大小&…

【Java编程动手学】深入剖析Java网络编程:原理、协议与应用

文章目录一、引言二、计算机网络基础1、计算机网络的概念2、网络地址的重要性三、套接字编程&#xff1a;网络通信的基石1、套接字的概念2、TCP通信编程示例四、TCP通信编程&#xff1a;可靠的数据传输1、TCP协议的特点2、实际应用中的TCP通信五、UDP通信编程&#xff1a;高效的…

vue3.2 前端动态分页算法

文章目录背景思路页面情况核心代码小结效果背景 1. 后台接口只是动态返回一个数组的数据&#xff0c;前端需要根据数据量的大小判断是否需要分页&#xff0c;页面高度固定2. 页面根据页数大小有不同的展示a. 只有一页 头部 内容 统计 尾部b. 多页i. 第一页 头部 内容 尾…

UC浏览器PC版自2016年后未再更新不支持vue3

win uc浏览器&#xff0c;点击页面触发异常。UC浏览器PC版自2016年后未再更新&#xff08;最新版本停留在Chromium 50内核&#xff09;。其内置内核版本较低&#xff08;如Trident/Blink旧版&#xff09;&#xff0c;无法支持Vue 3等现代前端框架的语法特性&#xff08;如ES6、…

亚古数据:澳大利亚公司的ABN和ACN号码是什么?

在跨国商业的迷宫中&#xff0c;了解目标市场的公司注册细节是一项不可或缺的技能。对于与中国企业有业务往来的朋友们来说&#xff0c;澳大利亚这片充满机遇的土地上&#xff0c;两个缩写——ABN与ACN&#xff0c;如同解锁合作之门的密钥&#xff0c;显得尤为重要。今天&#…

LangChain框架 Prompts、Agents 应用

目录 (Prompts)提示作用 Prompts 常见操作 基础 PromptTemplate 使用 Few-shot 提示模板 ChatPromptTemplate (对话提示模板) (Agents)代理作用 Agents 常见操作 基础 Agent 使用 自定义工具 Agent 高级应用示例 带记忆的对话代理 使用本地模型的代理 结构化输出代…

模拟实现unordered_map

1.定义unordered_map 是 C 标准库中的哈希表容器&#xff0c;特点是无序存储、平均 O (1) 时间复杂度的插入 / 查找 / 删除操作。其核心原理是通过哈希函数将关键字映射到哈希桶&#xff08;bucket&#xff09;&#xff0c;再通过链表或红黑树处理哈希冲突。2.实现原理1. 哈希表…

史上最详细Java并发多线程(面试必备,一篇足矣)

第一章&#xff1a;线程基础 1.1 线程与进程 进程&#xff1a;系统资源分配的基本单位&#xff0c;拥有独立的内存空间 线程&#xff1a;CPU调度的基本单位&#xff0c;共享进程内存空间 关系&#xff1a;一个进程可包含多个线程&#xff0c;线程切换成本远低于进程 1.2 线程的…

【DataFlow】数据合成流水线工具

1.整体解读 核心思想&#xff1a;以数据为中心的AI&#xff08;Data-Centric AI&#xff09; DataFlow 的核心目标是通过一系列自动化“流水线”&#xff08;Pipelines&#xff09;来处理和生成高质量的数据&#xff0c;从而提升大语言模型&#xff08;LLM&#xff09;在特定领…

Hangfire 调用报错解决方案总结

System.ArgumentNullException: 值不能为 null 错误在使用 Hangfire 时确实是一个常见问题&#xff0c;特别是在配置 Hangfire 服务器时。问题分析这个错误通常发生在以下情况&#xff1a;没有正确配置 Hangfire 服务器队列配置缺失或不正确连接字符串配置问题解决方案要点正确…

MySQL的使用

MySQL的使用一、mysql中的周边命令1. 检查版本2. 查看字符集3. 查看客户端连接4. 查看最后一条警告消息二、数据库、数据表的管理1. 语法规则2. 数据库2.1 查看数据库2.2 创建数据库2.3 选择数据库2.4 查看创建数据库命令2.5 创建库时添加字符集2.6 修改数据库字符集2.7 删除数…

2025Nginx最新版讲解/面试

维护系统多服务器部署&#xff0c;将我们请求代理到各个服务器。代理正向代理&#xff0c;代理对象是我们的客户端&#xff0c;目标对象不知道我们用户。VPN就是典型的正向代理。反向代理&#xff0c;代理对象是服务端&#xff0c;用户不知道服务端具体信息。而这正是Nginx所做…