温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与意义
近年来,我国青少年近视率持续攀升,学生视力健康问题日益受到社会关注。传统的视力检测数据多依赖纸质记录或分散的Excel表格,存在数据易丢失、统计困难、难以追踪变化趋势等问题。开发一套基于SpringBoot的学生视力健康管理系统,能够实现视力数据的数字化采集、集中存储、智能分析和趋势追踪,为学校卫生管理部门和教师提供科学、便捷的数据支撑,助力学生视力健康的早期干预与精准防控。
2. 系统需求分析
本系统面向学校卫生室、班主任、校领导及学生家长等角色,核心需求包括学生信息管理、视力检测数据录入、历史数据查询、趋势分析与预警提醒等。系统需具备以下主要功能模块:
- 学生信息管理:维护学生基本信息,包括姓名、学号、班级、年级、性别等。
- 视力检测管理:支持左右眼裸眼视力、矫正视力、屈光度等数据的录入与修改。
- 数据查询与统计:按班级、年级、时间范围等维度查询视力数据,并生成统计报表。
- 趋势分析与预警:对比历次检测数据,识别视力下降趋势,自动生成预警提示。
- 系统管理:用户角色权限管理、数据备份与日志记录。
3. 技术选型
本系统采用前后端分离架构,后端基于SpringBoot框架构建,前端使用Vue.js配合Element UI组件库,数据库选用MySQL。具体技术栈如下:
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 后端框架 | SpringBoot 2.7 | 快速构建RESTful API服务 |
| 持久层 | MyBatis-Plus | 简化数据库操作,内置分页插件 |
| 数据库 | MySQL 8.0 | 存储学生与视力检测数据 |
| 前端框架 | Vue.js 3 + Element UI | 构建管理后台界面 |
| 权限认证 | Spring Security + JWT | 实现用户认证与接口鉴权 |
| 接口文档 | Swagger / Knife4j | 自动生成在线接口文档 |
4. 数据库设计
系统核心数据表包括学生信息表、视力检测记录表、用户表等。以下为主要表结构设计:
4.1 学生信息表(student)
CREATE TABLE student ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', student_no VARCHAR(20) NOT NULL COMMENT '学号', name VARCHAR(50) NOT NULL COMMENT '姓名', gender TINYINT COMMENT '性别:0-男,1-女', grade VARCHAR(20) COMMENT '年级', class_name VARCHAR(20) COMMENT '班级', birth_date DATE COMMENT '出生日期', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) COMMENT '学生信息表';4.2 视力检测记录表(vision_record)
CREATE TABLE vision_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', student_id BIGINT NOT NULL COMMENT '学生ID', check_date DATE NOT NULL COMMENT '检测日期', left_vision DECIMAL(3,1) COMMENT '左眼裸眼视力', right_vision DECIMAL(3,1) COMMENT '右眼裸眼视力', left_corrected DECIMAL(3,1) COMMENT '左眼矫正视力', right_corrected DECIMAL(3,1) COMMENT '右眼矫正视力', left_spherical DECIMAL(4,2) COMMENT '左眼球镜度数', right_spherical DECIMAL(4,2) COMMENT '右眼球镜度数', remark VARCHAR(255) COMMENT '备注', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', FOREIGN KEY (student_id) REFERENCES student(id) ) COMMENT '视力检测记录表';5. 核心功能实现
5.1 后端接口设计
系统后端提供RESTful接口,涵盖学生管理、视力记录管理、统计分析等核心功能。以下为视力记录新增接口的Controller实现示例:
@RestController @RequestMapping("/api/vision") public class VisionRecordController { @Autowired private VisionRecordService visionRecordService; @PostMapping("/record") public Result<Boolean> addRecord(@RequestBody VisionRecordDTO dto) { boolean success = visionRecordService.addRecord(dto); return success ? Result.success(true) : Result.error("录入失败"); } @GetMapping("/student/{studentId}") public Result<List<VisionRecord>> getRecordsByStudent(@PathVariable Long studentId) { return Result.success(visionRecordService.listByStudent(studentId)); } @GetMapping("/trend/{studentId}") public Result<List<VisionTrendVO>> getTrend(@PathVariable Long studentId) { return Result.success(visionRecordService.getVisionTrend(studentId)); } }5.2 视力趋势分析
系统通过对比学生历次检测数据,计算视力变化幅度,当连续两次检测视力下降超过设定阈值时,自动生成预警记录。核心分析逻辑如下:
public List<VisionTrendVO> getVisionTrend(Long studentId) { List<VisionRecord> records = visionRecordMapper.selectByStudentIdOrderByDate(studentId); List<VisionTrendVO> trendList = new ArrayList<>(); for (int i = 0; i < records.size(); i++) { VisionRecord record = records.get(i); VisionTrendVO vo = new VisionTrendVO(); vo.setCheckDate(record.getCheckDate()); vo.setLeftVision(record.getLeftVision()); vo.setRightVision(record.getRightVision()); if (i > 0) { VisionRecord prev = records.get(i - 1); vo.setLeftChange(record.getLeftVision() - prev.getLeftVision()); vo.setRightChange(record.getRightVision() - prev.getRightVision()); } trendList.add(vo); } return trendList; }6. 前端页面设计
前端采用Vue.js构建管理界面,主要页面包括学生管理页、视力录入页、数据统计页和趋势分析页。视力录入表单使用Element UI组件实现,示例代码如下:
<template> <el-form :model="form" label-width="100px"> <el-form-item label="学生姓名"> <el-select v-model="form.studentId" placeholder="请选择学生"> <el-option v-for="s in students" :key="s.id" :label="s.name" :value="s.id"></el-option> </el-select> </el-form-item> <el-form-item label="检测日期"> <el-date-picker v-model="form.checkDate" type="date"></el-date-picker> </el-form-item> <el-form-item label="左眼视力"> <el-input-number v-model="form.leftVision" :min="0" :max="5.0" :step="0.1"></el-input-number> </el-form-item> <el-form-item label="右眼视力"> <el-input-number v-model="form.rightVision" :min="0" :max="5.0" :step="0.1"></el-input-number> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交记录</el-button> </el-form-item> </el-form> </template>7. 系统部署与运行
系统打包部署流程如下:后端项目使用Maven构建,生成可执行Jar包;前端项目通过npm构建后由Nginx托管静态资源,并通过反向代理转发API请求。部署步骤简述:
- 在服务器安装JDK 8+、MySQL 8.0和Nginx。
- 执行数据库初始化脚本,创建数据库及数据表。
- 使用
mvn clean package构建后端Jar包,通过java -jar启动服务。 - 前端执行
npm run build生成dist目录,配置Nginx指向该目录并代理/api请求到后端服务。
8. 总结与展望
本文设计并实现了一套基于SpringBoot的学生视力健康管理系统,覆盖学生信息管理、视力数据录入、趋势分析与预警等核心功能,能够有效提升学校视力健康管理的信息化水平。后续可在现有基础上扩展家长端查看、视力异常自动通知、与区域卫生平台数据对接等功能,进一步发挥数据价值,助力青少年视力保护工作。