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

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

目 录

引言

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

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

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

需求分析与规划

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

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

  • 技术选型方面可使用后端Spring Boot框架结合MySQL数据库存储数据;
  • 前端可使用Thymeleaf或JavaFX实现界面逻辑,ECharts负责数据可视化图表展示。

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

图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 建表语句。 

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

在这里插入图片描述

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

在这里插入图片描述

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

CREATETABLE`users`(`id`BIGINTUNSIGNEDNOTNULLAUTO_INCREMENTCOMMENT'用户唯一标识',`username`VARCHAR(50)NOTNULLCOMMENT'用户名',`password`VARCHAR(255)NOTNULLCOMMENT'用户密码(加密后)',`role`ENUM('ADMIN','TEACHER','STUDENT')NOTNULLCOMMENT'用户角色:ADMIN-管理员,TEACHER-教师,STUDENT-学生',`status`TINYINTDEFAULT1COMMENT'用户状态:1-启用,0-禁用',`create_by`VARCHAR(50)COMMENT'创建人',`create_time`DATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`update_by`VARCHAR(50)COMMENT'修改人',`update_time`DATETIMEDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENT'修改时间',PRIMARYKEY(`id`),UNIQUEINDEX`idx_username`(`username`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4 COMMENT='用户信息表';CREATETABLE`students`(`id`BIGINTUNSIGNEDNOTNULLAUTO_INCREMENTCOMMENT'学生唯一标识',`student_no`VARCHAR(20)NOTNULLCOMMENT'学号',`name`VARCHAR(50)NOTNULLCOMMENT'学生姓名',`class_id`VARCHAR(20)NOTNULLCOMMENT'班级编号',`gender`TINYINTCOMMENT'性别:1-男,2-女',`phone`VARCHAR(20)COMMENT'联系电话',`email`VARCHAR(100)COMMENT'电子邮箱',`create_by`VARCHAR(50)COMMENT'创建人',`create_time`DATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`update_by`VARCHAR(50)COMMENT'修改人',`update_time`DATETIMEDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENT'修改时间',PRIMARYKEY(`id`),UNIQUEINDEX`idx_student_no`(`student_no`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4 COMMENT='学生信息表';CREATETABLE`scores`(`id`BIGINTUNSIGNEDNOTNULLAUTO_INCREMENTCOMMENT'成绩记录唯一标识',`student_id`BIGINTNOTNULLCOMMENT'关联学生ID',`course_name`VARCHAR(50)NOTNULLCOMMENT'课程名称',`score`DECIMAL(5,1)NOTNULLCOMMENT'成绩分数',`exam_date`DATECOMMENT'考试日期',`semester`VARCHAR(20)COMMENT'学期',`create_by`VARCHAR(50)COMMENT'创建人',`create_time`DATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`update_by`VARCHAR(50)COMMENT'修改人',`update_time`DATETIMEDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENT'修改时间',PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=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:8080servlet:context-path: /JavaProject spring:datasource:url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC&characterEncoding=utf8username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver jpa:hibernate:ddl-auto: update show-sql:trueproperties:hibernate:dialect: org.hibernate.dialect.MySQLDialect format_sql:trueopen-in-view:falsejwt:secret: mySecretKeyForTokenGeneration1234567890 expiration:86400# seconds (1 day)
在这里插入图片描述

总结

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

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

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

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

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

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

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

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

Read more

微调模型成本太高,用RAG技术,低成本实现AI升级

微调模型成本太高,用RAG技术,低成本实现AI升级

文章目录 * 大模型 RAG 技术深度解析:从入门到进阶 * 一、大语言模型(LLM)的三大痛点 * 1.1 幻觉问题:一本正经地胡说八道 * 1.2 时效性问题:知识更新不及时 * 1.3 数据安全问题:敏感信息泄露风险 * 二、RAG 技术:检索增强生成 * 2.1 RAG 的定义 * 2.2 RAG 的架构 * 2.2.1 检索器模块 * 2.2.2 生成器模块 * 三、使用 RAG 的八大优势 * 3.1 可扩展性:减少模型大小和训练成本 * 3.

By Ne0inhk
人工智能:计算机视觉的基础与应用

人工智能:计算机视觉的基础与应用

第十二篇:计算机视觉的基础与应用 学习目标 💡 理解计算机视觉的基本概念和重要性 💡 掌握计算机视觉中的图像处理技术、特征提取方法、常用模型与架构 💡 学会使用计算机视觉库(OpenCV、PIL、PyTorch、TensorFlow)进行图像处理、特征提取和模型训练 💡 理解图像分类、目标检测、语义分割等任务的实现方法 💡 通过实战项目,开发一个完整的计算机视觉应用 重点内容 * 计算机视觉的基本概念 * 图像处理技术(图像预处理、增强、滤波) * 特征提取方法(HOG、SIFT、ORB) * 常用模型与架构(LeNet、AlexNet、VGG、ResNet、YOLO) * 实战项目:计算机视觉应用开发(图像分类、目标检测等) 一、计算机视觉基础 1.1 计算机视觉的基本概念 计算机视觉(Computer Vision)是人工智能的一个重要分支,它涉及计算机与图像之间的交互。其目标是让计算机能够理解和解释图像内容,

By Ne0inhk
如何把 AI 大语言模型接入个人项目

如何把 AI 大语言模型接入个人项目

通过 Python 把 AI 大语言模型接入自己的项目 本文以开源项目 HuluAiChat 为例,说明如何用 Python 将任意「OpenAI 兼容」的 AI 聊天模型接入到自己的应用里。读完你将掌握:如何用 openai 库的每一类参数与用法、最小可运行示例、以及如何复用到你的项目中。 目录 * 一、为什么要自己接入 AI 聊天? * 二、用 Python 调用 AI 聊天:参数、函数与用法详解(核心) * 三、HuluChat 项目简介 * 四、整体架构:分层与职责 * 五、流式发送消息的完整流程 * 六、核心代码解析:Chat 抽象与 OpenAI 实现

By Ne0inhk
ArXiv投稿详细操作指南 & AI论文写作最佳实践

ArXiv投稿详细操作指南 & AI论文写作最佳实践

arXiv投稿详细操作指南 & AI论文写作最佳实践 简单来说,arXiv 不是一个传统意义上的论文发表“平台”或“期刊”,而是一个全球知名的、免费开放的科学文献预印本(Preprint)数据库。 1. 核心概念:什么是“预印本”?在传统学术出版中,一篇论文从投稿到正式发表,往往需要经过漫长的“同行评审”流程,可能长达数月甚至一年。* 预印本 (Preprint): 指研究人员在将论文提交给学术期刊进行评审之前,先将论文的初稿(手稿)上传到 arXiv 这样的服务器上。* 目的: 为了抢占学术首发权(通过时间戳证明谁先做出了成果),并快速与同行交流最新发现,避免重复劳动。 2. arXiv 的关键特点特性 说明所属机构 由美国康奈尔大学(Cornell University)维护和管理,起源于洛斯阿拉莫斯国家实验室。覆盖领域 主要集中在理工科:物理学、数学、计算机科学、

By Ne0inhk