??📝個人主頁:哈__
期待您的關注?
目錄
一、飛算AI簡介
二、系統開發
2.1 需求提出?
2.2 系統模塊的設計?
2.3 數據庫表格設計
2.4 接口規范設計
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進行表格創建,這里我選擇的是新創建數據庫。
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作為一款插件,功能是同樣強大的。