飞算JavaAI炫技赛:一天完成学生成绩综合统计分析系统研发(含源码)

news/2025/9/19 11:20:52/文章来源:https://www.cnblogs.com/tlnshuju/p/19100423

飞算JavaAI炫技赛:一天完成学生成绩综合统计分析系统研发(含源码)

2025-09-19 11:19  tlnshuju  阅读(0)  评论(0)    收藏  举报

目 录

  • 引言
  • 需求分析与规划
  • 飞算 JavaAI 开发实录
  • 优化与调试
  • 成果展示
  • 总结

引言

随着信息化教学的深入推进,学生成绩管理和分析系统已成为学校教学改革和质量提升的重要保障。这些系统可以帮助教师快速查询和分析考试成绩,从而识别学生的学习需求和差距,实施更加个性化的教学策略。

本项目正是在这种背景下产生的,旨在开发一个功能完备的学生成绩数据分析系统,实现成绩数据的统计、可视化和智能分析。 为了提高开发效率、减少重复劳动,我们在项目中引入了飞算 JavaAI 工具。飞算 JavaAI 是一款面向 Java 开发者的 AI 编程辅助工具,它能够通过智能对话帮助进行需求分析、功能设计并自动生成完整的项目源码。该工具支持一键生成可运行的 Spring Boot 工程,包括所有配置文件和代码骨架,并自动优化代码规范和逻辑错误。

这样,我们不仅可以省去大量样板代码的编写工作,还能够更专注于业务逻辑本身。同时,使用飞算 JavaAI 也符合我的个人学习目标:通过查看和优化工具生成的代码,深入理解 Spring Boot 的开发流程,并提高代码生成和优化能力。

需求分析与规划

学生成绩综合统计分析系统主要包括成绩录入、查询、统计分析和可视化展示等功能,核心模块涵盖用户管理(管理员、教师、学生角色及权限)、成绩管理(成绩录入、修改、查询、删除)和统计分析(平均分、排名等)及可视化(成绩分布图表)模块。

如示例项目所述,用户模块支持多角色登录与注册,学生模块支持教师或管理员批量导入学生并维护成绩。为满足以上需求:

例如:通过ECharts可直观展示成绩分布柱状图或饼图;Spring Security或SpringBoot内置认证可完成登录鉴权;数据库设计则包括用户表、学生信息表、课程/考试信息表和成绩记录表等,以支撑系统完整功能。

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=!%5Bhttps%3A%2F%2Fimg-home.csdnimg.cn%2Fimages%2F20230724024159.png%3Forigin_url%3Dsandbox%253A%252Fmnt%252Fdata%252Fdatabase_schema.png%26pos_id%3Dimg-Sh75xdkM-1756897663397%5D(https%3A%2F%2Fi-blog.csdnimg.cn%2Fdirect%2Fc88cfcafb3764a98b63c0b8972f175ca.png&pos_id=img-dImzKDUJ-1756897711924)
)

图1. 学生成绩综合统计分析系统数据库关系图

飞算 JavaAI 开发实录

输入提示词:

一、技术选型
使用 Spring Boot 3.x 作为后端框架
数据库使用 MySQL,请给出建表语句
使用 MyBatis-Plus 作为 ORM 框架
接口设计遵循 RESTful API 风格,统一返回 JSON
使用 Lombok 简化实体类开发
使用 Swagger/OpenAPI 自动生成接口文档
项目构建工具:Maven
二、工程结构
请生成标准分层架构,目录结构如下:
src/main/java/com/example/studentgrades
├── controller // 控制层,处理 REST 接口请求
├── service // 服务层,业务逻辑
│ └── impl // 服务实现类
├── mapper // Mapper 接口(MyBatis-Plus)
├── entity // 实体类(数据库表映射)
├── dto // 数据传输对象
├── vo // 返回给前端的视图对象
├── config // 配置类(Swagger、MyBatis等)
└── util // 工具类
src/main/resources
├── application.yml // 数据源及全局配置
├── mapper // MyBatis 映射文件(如有)
└── static/templates // 静态资源(如需要)
三、数据库设计
请生成以下建表语句:
用户表(user)
id(主键)
username(用户名)
password(密码,需加密存储)
role(角色:ADMIN、TEACHER、STUDENT)
create_time
学生表(student)
id(主键,学号或UUID)
name(姓名)
age(年龄)
class_name(班级)
create_time
课程表(course)
id(主键)
name(课程名称)
teacher_id(授课教师ID)
成绩表(score)
id(主键)
student_id(学生ID,外键)
course_id(课程ID,外键)
score(成绩值,float/int)
exam_date(考试日期)
四、功能模块
1. 用户管理模块
用户注册(管理员可创建教师、学生账户)
用户登录(JWT 认证或 Session 管理)
角色鉴权(不同角色拥有不同权限)
2. 学生管理模块
学生信息的增删改查(单个/批量导入)
按班级、学号查询学生信息
3. 成绩管理模块
教师录入/修改学生成绩(单个或批量)
按学生、课程、班级查询成绩
统计:平均分、最高分、最低分、及格率、排名
4. 统计分析模块
班级平均成绩对比
单科成绩分布(适配 ECharts JSON 数据格式)
学生成绩走势(折线图数据)
五、接口示例
用户管理
POST /api/users/register 用户注册
POST /api/users/login 用户登录
学生管理
POST /api/students 新增学生
GET /api/students/{id
} 查询学生信息
PUT /api/students/{id
} 修改学生信息
DELETE /api/students/{id
} 删除学生
成绩管理
POST /api/scores 新增成绩
GET /api/scores/student/{studentId
} 查询学生成绩
GET /api/scores/course/{courseId
}/rank 查询某课程成绩排名
GET /api/scores/average 查询全体学生平均成绩
统计分析
GET /api/charts/scoreDist 成绩分布数据
GET /api/charts/classAvg 班级平均分对比
GET /api/charts/studentTrend/{studentId
} 学生成绩走势
六、其他要求
生成完整 Spring Boot 工程,可直接运行
在 application.yml 中配置 MySQL 数据源(示例即可)
所有接口需返回统一响应结构:code, message, data
核心代码添加必要的注释,类名/方法名要规范
生成 Swagger 配置,支持接口在线调试
⚡ 请根据以上要求生成一个可运行的 Spring Boot 项目代码骨架,并包含对应的数据库表 SQL 建表语句。

将提示词输入后,他立马进行理解需求,并进行整理为以下模块

在这里插入图片描述

点击下一步,让他给我们设计接口,这里给我们了四个接口方案,看了一下,没有太大的问题

在这里插入图片描述

这里继续下一步,根据我们的需求设计数据库表,这里设计了三个表结构,是符合我们需求的

CREATE TABLE `users` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户唯一标识',
`username` VARCHAR(50) NOT NULL COMMENT '用户名',
`password` VARCHAR(255) NOT NULL COMMENT '用户密码(加密后)',
`role` ENUM('ADMIN', 'TEACHER', 'STUDENT') NOT NULL COMMENT '用户角色:ADMIN-管理员,TEACHER-教师,STUDENT-学生',
`status` TINYINT DEFAULT 1 COMMENT '用户状态:1-启用,0-禁用',
`create_by` VARCHAR(50) COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(50) COMMENT '修改人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE INDEX `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';
CREATE TABLE `students` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学生唯一标识',
`student_no` VARCHAR(20) NOT NULL COMMENT '学号',
`name` VARCHAR(50) NOT NULL COMMENT '学生姓名',
`class_id` VARCHAR(20) NOT NULL COMMENT '班级编号',
`gender` TINYINT COMMENT '性别:1-男,2-女',
`phone` VARCHAR(20) COMMENT '联系电话',
`email` VARCHAR(100) COMMENT '电子邮箱',
`create_by` VARCHAR(50) COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(50) COMMENT '修改人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE INDEX `idx_student_no` (`student_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';
CREATE TABLE `scores` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '成绩记录唯一标识',
`student_id` BIGINT NOT NULL COMMENT '关联学生ID',
`course_name` VARCHAR(50) NOT NULL COMMENT '课程名称',
`score` DECIMAL(5,1) NOT NULL COMMENT '成绩分数',
`exam_date` DATE COMMENT '考试日期',
`semester` VARCHAR(20) COMMENT '学期',
`create_by` VARCHAR(50) COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(50) COMMENT '修改人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成绩信息表';

在这里插入图片描述
我们继续进行下一步,让他们为我们处理逻辑接口

用户管理
用户登录
创建教师账户
创建学生账户
修改用户状态
学生信息管理
删除学生信息
修改学生信息
查询学生信息列表
批量导入学生数据
成绩管理
修改成绩记录
删除成绩记录
记录按条件查询成绩
获取成绩统计分析结果
统计分析
获取单科成绩分布情况
获取学生成绩趋势变化数据

在这里插入图片描述

点击下一步之后,这里直接点击“开始生成”按钮

在这里插入图片描述

等待生成项目后,勾选打开项目进行部署即可,中途可能会下载相应的包,会比较慢,耐心等待即可

在这里插入图片描述

优化与调试

尽管飞算JavaAI生成了大量模板代码,但在实际使用中也遇到了一些问题,需要结合手工优化和工具辅助调试。首先,自动生成的代码结构有时不够合理或不符合最佳实践,我们需要根据项目实际情况手工重构包结构或接口划分。其次,一些依赖或注解可能遗漏,需要手动在 pom.xml 中添加相应依赖或在类上添加注解来保证代码可编译运行。此外,部分自动生成的SQL查询语句效率不高,我们会借助MySQL的 EXPLAIN 等分析工具查看执行计划,优化SQL语句和索引设计。在开发过程中,我们充分利用飞算JavaAI的行间会话(智能会话)功能:当遇到复杂逻辑或不明确的问题时,选中相关代码片段并提问插件,它可以根据上下文给出优化建议或实现思路。例如,对复杂的成绩计算逻辑描述需求后,飞算JavaAI往往能提供可行方案,甚至直接给出示例代码。此外,针对旧项目或遗留代码,通过行间会话询问某段代码的业务作用,插件能快速分析并解释逻辑。最后,我们使用Postman等API测试工具验证接口正确性,通过实际调用发现问题并调整代码逻辑。综合使用飞算JavaAI与传统的调试工具(数据库分析器、Postman、IDE日志等),提升了问题定位和修复效率。

在这里插入图片描述
图2. 系统功能模块结构示意图

成果展示

在这里插入图片描述

整个项目按照典型的Spring Boot分层架构组织,src/main/java 下按包区分控制层、服务层、数据访问层等;src/main/resources 包含配置文件和静态资源;编译输出在 target 目录。

核心模块类名所属层/功能说明
UserController控制器层(用户管理)管理员/教师登录、用户信息管理的Web接口
StudentController控制器层(学生管理)学生信息增删改查、查询成绩的接口
ScoreService服务层(成绩统计)实现计算平均分、方差、成绩分布等业务逻辑
ChartController控制器层(可视化)提供成绩分布、成绩变化图表数据的REST接口
Student实体类(数据模型)学生基本信息(学号、姓名、年龄等)
ScoreRecord实体类(数据模型)学生成绩记录(学号、课程、成绩等字段)

在这里插入图片描述
图3. 成绩录入流程示意图

核心API接口示例(基于REST):

POST /api/users/register 用户注册
POST /api/users/login 用户登录
POST /api/students 新增学生
GET /api/students/{id} 查询学生信息
PUT /api/students/{id} 修改学生信息
DELETE /api/students/{id} 删除学生
POST /api/scores 新增成绩
GET /api/scores/student/{studentId} 查询学生成绩
GET /api/scores/course/{courseId}/rank 查询某课程成绩排名
GET /api/scores/average 查询全体学生平均成绩
GET /api/charts/scoreDist 成绩分布数据
GET /api/charts/classAvg 班级平均分对比
GET /api/charts/studentTrend/{studentId} 学生成绩走势

在这里插入图片描述
图4. 接口调用流程(前端→后端→数据库)

下面这个文件涵盖了四个部分server 部分、spring.datasource 部分、spring.jpa 部分、jwt 部分

1、server 部分

  • port: 8080 → 指定应用运行的端口号为 8080。
  • context-path: /JavaProject → 设置 Web 应用的上下文路径,访问时需要加 /JavaProject 前缀

2、spring.datasource 部分

  • 配置数据库连接信息。
  • url → MySQL 数据库连接地址,这里连接本地的 testdb 数据库。
  • username、password → 数据库账号和密码。
  • driver-class-name → MySQL 驱动类。

3、spring.jpa 部分

  • ddl-auto: update → Hibernate 启动时自动根据实体类更新数据库表结构。
  • show-sql: true → 控制台输出执行的 SQL 语句,方便调试。
  • dialect: MySQLDialect → 指定使用 MySQL 的方言,让 Hibernate 生成符合 MySQL 语法的 SQL。
  • format_sql: true → 格式化 SQL 输出。
  • open-in-view: false → 避免 Open Session in View 的性能问题。

4、jwt 部分

  • secret → JWT(JSON Web Token)的签名密钥,用于生成和验证 token。

  • expiration: 86400 → token 的有效期,单位为秒,这里设置为 1 天。

server:
port: 8080
servlet:
context-path: /JavaProject
spring:
datasource:
url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
format_sql: true
open-in-view: false
jwt:
secret: mySecretKeyForTokenGeneration1234567890
expiration: 86400 # seconds (1 day)

在这里插入图片描述

总结

在整个项目开发过程中,我们深刻体会到智能辅助开发的优势与局限。

  • 一方面,飞算 JavaAI 的引入确实大幅提高了开发效率,根据统计类似项目效率可提升约 10 倍;
  • 另一方面,我们也发现人工经验和业务判断依然不可或缺。

工具生成的代码虽然格式规范、可读性好,但在一些特殊业务场景下仍需要人工介入进行细节调整。

比如,对于部分自定义查询逻辑,生成结果并不完全符合预期,我们需要手动修改 SQL 语句和业务代码来满足需求。总体而言,项目按期完成,开发效率和代码质量都有所提升,这与飞算 JavaAI 所宣称的效能相符。

对于飞算 JavaAI 工具的体验,我们认为它具有明显的优势,也存在一定的局限。

  • 优势方面,它能够快速生成工程结构和基础代码,帮助团队快速进入开发状态,特别适合应对开发周期紧张的项目场景。同时,生成的 Spring Boot 代码遵循行业规范,提升了代码的可维护性。
  • 工具也有局限:它目前主要依赖通用场景的数据训练,在处理特定业务需求或复杂需求时表现还需要提升,开发者仍需对生成结果进行审查和完善。

通过这次项目实践,我们认识到 AI 工具是强有力的辅助而非完全替代。总结而言,飞算 JavaAI 提供了一种新的开发范式,大幅降低了开发初期的重复劳动成本,但在后续的功能细化和业务实现中,仍需开发者投入专业知识进行补充和优化。

注:需要源码自取,自行开发
源码:https://github.com/Leterhong/study

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

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

相关文章

AI 赋能 APP 界面设计公司:从美学到交互的智能升级

AI 赋能 APP 界面设计公司:从美学到交互的智能升级在移动应用竞争日益激烈的今天,APP 界面设计公司不再只比拼视觉美感,而是必须在 效率、交互、个性化与智能化 上全面提升。随着人工智能(AI)技术的成熟,界面设计…

开源项目进度管理系统 PJMan:让技术项目进度可视化、数据化的利器

在软件项目管理过程中,进度不透明、任务卡点难定位、人员效率难量化是许多技术团队面临的痛点。今天为大家介绍一款开源项目进度管理系统 ——PJMan,其「项目概览」页面通过分层可视化与数据驱动的设计,将项目的 “…

【光照】[漫反射]UnityURP兰伯特能量守恒吗?

【从UnityURP开始探索游戏渲染】专栏-直达兰伯特漫反射的能量守恒性 ‌能量守恒基本原理‌ 在物理正确的渲染中,能量守恒要求:表面反射的光能总量 ≤ 入射光能 漫反射+高光反射 ≤ 1.0 没有能量凭空产生或消失‌经典…

Microsoft AI Genius 限时挑战赛:实战开启,等你应战!

通过 Microsoft AI Genius 系列 2.0 的实战专题课程,相信各位开发者对智能 GitHub Copilot 副驾驶 Agent Mode、Azure AI Foundry Agent Service(国际版)及 Copilot Studio 的理解与掌握达到了新高度。现在,是时候…

DevSecOps革命:测试工具如何重塑企业数字化转型的质量防线

DevSecOps革命:测试工具如何重塑企业数字化转型的质量防线 在数字化转型浪潮席卷全球的当下,软件质量保障体系正经历着前所未有的范式转变。DevSecOps作为这场变革的核心方法论,正在重新定义测试工具在企业技术栈中…

3.sysaux tablesace 清理

select min(snap_id),max(snap_id) from dba_hist_snapshot; 查完后,记录min和max的值 select dbid from v$database; 18701与18953分别为min与max的snap_id的值,387090299为dbid的值,将这些值代入下面的语句执行 b…

2.LOCK session

select * from v$session_blockers; 或者 select * from gv$session_blockers; (在rac情况下) 通过 select count(1) from v$locked_object; 可以查出内容 首先询问客户能否提供lock table的session sid和serial#,如…

php本地搭建知识库实现rag遇到的一些问题解决方式

1、向量化的问题,中文的话,使用尽量使用国内的嵌入模型,国外的虽然支持中文,但是还是比不上国内专门针对中文的优化 本地使用ollama 搭建的话 ,我使用的是 quentinz/bge-large-zh-v1.5:latest2、不规则的pdf文件…

2025 ~ 2026 游击 - gfoi

2025/09/19 试了试 CSP-S 的历年题目,2019 年有 84.5 分。

【初赛】第二类斯特林数意义 - Slayer

第二类斯特林数(斯特林子集数) \(\begin{Bmatrix}n\\ k\end{Bmatrix}\),也可记做 \(S(n,k)\),表示将 \(n\) 个两两不同的元素,划分为 \(k\) 个互不区分的非空子集的方案数。 通项公式 \(\begin{Bmatrix}n\\m\end{…

在AI技术快速实现功能的时代,挖掘新需求成为核心竞争力——某知名Android面试题库需求洞察

该篇文章无摘要a.内容描述 该项目是一个专注于Android开发领域的技术面试题库,核心功能定位为提供全面的Android面试问题与答案集合,帮助开发者准备技术面试。关键应用场景包括Android开发者求职准备、技术知识查漏补…

php本地搭建知识库实现rag遇到的各种问题解决方式

1、向量化的问题,中文的话,使用尽量使用国内的嵌入模型,国外的虽然支持中文,但是还是比不上国内专门针对中文的优化 本地使用ollama 搭建的话 ,我使用的是 quentinz/bge-large-zh-v1.5:latest2、不规则的pdf文件…

docker操作包括使用docker制作为接口

Docker 化 Flask OCR 应用指南 1. 创建必要的文件 在你的 Flask 应用项目根目录下,你需要创建以下文件: 1.1 Dockerfile 这是一个文本文件,包含了构建 Docker 镜像所需的所有指令1 # 使用官方 Python 3.10 (Python…

BuildingSystemPlugin使用指南

使用自定义碰撞 1.启用Use Custom Overlay:2.修改Overlapping Box的BoxExtent来设置大小(不能设置Scale来设置大小):

openEuler 24.03 (LTS-SP2)安装mysql5.7.42

环境:OS:openEuler 24.03 (LTS-SP2)(安装时候没有图形界面的选择项可选)mysql:5.7.42 glib.2.17 操作系统下载https://www.openeuler.org/en/download/#openEuler%2024.03%20LTS%20SP2 查看系统glibc版本[root@localho…

Trae AI IDE与Gitee MCP深度整合:开启智能协作开发新时代

Trae AI IDE与Gitee MCP深度整合:开启智能协作开发新时代 在AI技术快速渗透软件开发领域的当下,字节跳动推出的Trae AI IDE凭借其创新的智能编码能力,正在重塑开发者的工作流程。这款国产AI编程工具通过深度整合Git…

【字节跳动】LLM大模型算法面试题:大模型 LLM的架构介绍? - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

LangChain 入门:从 0 到 1 搞懂 LLM 应用开发框架​

LangChain 入门:从 0 到 1 搞懂 LLM 应用开发框架​如果你常逛技术社区,大概率听过 “大语言模型(LLM)能做很多事”—— 写文案、答问题、编代码,但真要把它放进实际业务里,比如给公司做个智能客服、给团队搭个文…

cpu wa

cpu wa👌 我明白了,你需要的是把 两个文档合并:逐指标展开分析逻辑(cycles/instructions、context-switches、page-faults、syscalls 等 → 如何推导分支)。典型 %wa 场景说明(本地块设备、NFS/iSCSI、Swap、虚…

解码C语言指针

一、指针的定义与本质 1. 指针是什么? 指针是一种 存储变量内存地址 的特殊变量。所有数据存储在内存中,每个内存单元都有唯一地址(编号),指针通过记录地址实现对数据的间接访问。 2. 指针的核心作用直接操作内存…