温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与意义
自闭症谱系障碍是一种广泛性发育障碍,近年来发病率呈上升趋势。由于自闭症儿童在社交沟通、行为模式等方面存在特殊需求,其家庭往往面临康复资源获取难、信息不对称、日常管理负担重等现实问题。传统的线下服务模式难以满足家长对康复指导、课程预约、成长记录等服务的即时性需求。
本课题基于 Java Spring Boot 技术栈,设计并实现一个关爱自闭症儿童服务平台,旨在整合康复机构、专业教师与家长三方资源,为自闭症儿童提供个性化的康复训练管理、课程预约、成长档案记录与家庭指导服务,帮助提升康复过程的连续性和可追踪性。
2. 系统需求分析
2.1 用户角色分析
本平台面向三类核心用户角色,各角色拥有不同的功能权限与使用场景:
- 家长用户:注册登录后可为孩子建立档案,查看康复课程、预约课程、记录日常训练情况、查看教师反馈与成长报告。
- 康复教师:负责发布课程、管理课程安排、填写儿童训练记录、上传评估报告,并与家长进行在线沟通。
- 系统管理员:负责平台基础数据维护、用户审核与管理、课程分类管理、数据统计与系统配置。
2.2 功能需求
系统核心功能模块划分如下:
- 用户管理模块:实现家长、教师、管理员的注册、登录、个人信息维护与权限控制。
- 儿童档案模块:家长可添加和管理儿童基本信息、诊断情况、过敏史、兴趣爱好等档案资料。
- 课程管理模块:教师发布康复训练课程,支持按类别、适用年龄、训练目标等条件检索。
- 预约管理模块:家长在线预约课程,教师确认或调整预约时间,系统自动处理冲突检测。
- 成长记录模块:记录儿童每次训练的详细情况、进步表现与教师评语,形成连续成长档案。
- 家庭指导模块:平台推送家庭康复训练指导文章与视频资源,支持家长在线学习。
- 数据统计模块:管理员查看平台用户增长、课程预约量、训练完成率等统计数据。
2.3 非功能需求
- 安全性:用户密码加密存储,敏感数据访问权限严格控制,防止儿童隐私信息泄露。
- 易用性:界面简洁友好,操作流程清晰,兼顾家长群体中不同年龄层次的使用习惯。
- 可扩展性:系统采用分层架构设计,便于后续功能模块的扩展与维护。
- 性能要求:常规操作响应时间控制在 2 秒以内,支持一定规模的并发访问。
3. 系统总体设计
3.1 系统架构设计
系统采用前后端分离的 B/S 架构。前端使用 Vue.js 框架构建用户界面,后端基于 Spring Boot 提供 RESTful API 接口,数据存储采用 MySQL 数据库,缓存层使用 Redis 提升热点数据访问性能。整体架构分为表现层、业务逻辑层、数据访问层和基础设施层四个层次。
flowchart TD A[前端 Vue.js] --> B[Nginx 反向代理] B --> C[Spring Boot 后端服务] C --> D[业务逻辑层 Service] D --> E[数据访问层 Mapper] E --> F[(MySQL 数据库)] C --> G[Redis 缓存] C --> H[文件存储服务]3.2 技术选型
| 技术方向 | 选型方案 | 说明 |
|---|---|---|
| 后端框架 | Spring Boot 2.7.x | 快速构建独立运行的微服务应用 |
| 持久层框架 | MyBatis-Plus | 简化数据库操作,提供通用 CRUD 能力 |
| 数据库 | MySQL 8.0 | 存储业务结构化数据 |
| 缓存 | Redis | 缓存热点数据,提升系统响应速度 |
| 安全框架 | Spring Security + JWT | 实现认证授权与无状态会话管理 |
| 前端框架 | Vue.js 3 + Element UI | 构建响应式管理界面 |
| 接口文档 | Swagger / Knife4j | 自动生成在线接口文档 |
3.3 数据库设计
系统核心数据表包括用户表、儿童档案表、课程表、预约表、训练记录表和指导文章表。以下为部分核心表结构设计:
CREATE TABLE child_profile ( id BIGINT PRIMARY KEY AUTO_INCREMENT, parent_id BIGINT NOT NULL COMMENT '关联家长用户ID', child_name VARCHAR(50) NOT NULL COMMENT '儿童姓名', gender TINYINT COMMENT '性别 0-女 1-男', birth_date DATE COMMENT '出生日期', diagnosis_type VARCHAR(100) COMMENT '诊断类型', allergy_info VARCHAR(255) COMMENT '过敏信息', interest_tags VARCHAR(255) COMMENT '兴趣标签', created_time DATETIME DEFAULT CURRENT_TIMESTAMP, updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE course_info ( id BIGINT PRIMARY KEY AUTO_INCREMENT, teacher_id BIGINT NOT NULL COMMENT '授课教师ID', course_name VARCHAR(100) NOT NULL COMMENT '课程名称', course_type VARCHAR(50) COMMENT '课程类别', target_age VARCHAR(50) COMMENT '适用年龄', training_goal VARCHAR(255) COMMENT '训练目标', duration_minutes INT COMMENT '课时时长(分钟)', max_students INT DEFAULT 1 COMMENT '最大容纳人数', course_status TINYINT DEFAULT 1 COMMENT '状态 0-下架 1-上架', created_time DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE reservation_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, course_id BIGINT NOT NULL COMMENT '课程ID', child_id BIGINT NOT NULL COMMENT '儿童档案ID', parent_id BIGINT NOT NULL COMMENT '家长用户ID', reserve_date DATE NOT NULL COMMENT '预约日期', time_slot VARCHAR(20) COMMENT '时间段', status TINYINT DEFAULT 0 COMMENT '状态 0-待确认 1-已确认 2-已完成 3-已取消', created_time DATETIME DEFAULT CURRENT_TIMESTAMP );4. 系统核心功能实现
4.1 项目环境搭建
首先创建 Spring Boot 项目并引入核心依赖。在pom.xml中配置相关依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency>4.2 用户认证与权限控制
系统采用 JWT 实现无状态认证。用户登录成功后,后端生成包含用户角色信息的 Token 返回给前端,前端在后续请求中携带该 Token。通过 Spring Security 过滤器链统一校验请求合法性。
@Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Autowired private PasswordEncoder passwordEncoder; @Override public LoginResponse login(LoginRequest request) { User user = userMapper.selectByUsername(request.getUsername()); if (user == null || !passwordEncoder.matches(request.getPassword(), user.getPassword())) { throw new BusinessException("用户名或密码错误"); } if (user.getStatus() == 0) { throw new BusinessException("账号已被禁用,请联系管理员"); } String token = JwtUtil.generateToken(user.getId(), user.getRole()); return new LoginResponse(token, user.getRole(), user.getNickname()); } }4.3 儿童档案管理
家长登录后可以添加和管理儿童档案。档案信息包含儿童基本信息、诊断情况、过敏史和兴趣标签等,为教师制定个性化训练方案提供参考依据。
@RestController @RequestMapping("/api/child") public class ChildProfileController { @Autowired private ChildProfileService childProfileService; @PostMapping("/add") public Result<Void> addChild(@RequestBody ChildProfileVO vo, @RequestAttribute("userId") Long parentId) { childProfileService.addChild(vo, parentId); return Result.success(); } @GetMapping("/list") public Result<List<ChildProfileVO>> listMyChildren( @RequestAttribute("userId") Long parentId) { return Result.success(childProfileService.listByParentId(parentId)); } @PutMapping("/update") public Result<Void> updateChild(@RequestBody ChildProfileVO vo) { childProfileService.updateChild(vo); return Result.success(); } }4.4 课程预约功能
课程预约是平台的核心业务。家长浏览课程列表后选择合适的课程和时间段提交预约,系统需校验该时间段是否已被占用,避免冲突。
@Service public class ReservationServiceImpl implements ReservationService { @Autowired private ReservationMapper reservationMapper; @Autowired private CourseMapper courseMapper; @Override @Transactional(rollbackFor = Exception.class) public void createReservation(ReservationRequest request, Long parentId) { CourseInfo course = courseMapper.selectById(request.getCourseId()); if (course == null || course.getCourseStatus() == 0) { throw new BusinessException("课程不存在或已下架"); } // 校验同一时间段是否已被预约 int count = reservationMapper.countByCourseAndTime( request.getCourseId(), request.getReserveDate(), request.getTimeSlot()); if (count >= course.getMaxStudents()) { throw new BusinessException("该时间段预约已满,请选择其他时间"); } ReservationRecord record = new ReservationRecord(); record.setCourseId(request.getCourseId()); record.setChildId(request.getChildId()); record.setParentId(parentId); record.setReserveDate(request.getReserveDate()); record.setTimeSlot(request.getTimeSlot()); record.setStatus(0); reservationMapper.insert(record); } }4.5 成长记录与反馈
教师每次训练结束后填写训练记录,包括训练内容、儿童表现、进步情况和后续建议。家长可以随时查看孩子的成长轨迹,了解康复进展。
@Service public class TrainingRecordServiceImpl implements TrainingRecordService { @Autowired private TrainingRecordMapper recordMapper; @Override public void addRecord(TrainingRecordVO vo, Long teacherId) { TrainingRecord record = new TrainingRecord(); record.setChildId(vo.getChildId()); record.setTeacherId(teacherId); record.setCourseId(vo.getCourseId()); record.setTrainDate(vo.getTrainDate()); record.setTrainContent(vo.getTrainContent()); record.setChildPerformance(vo.getChildPerformance()); record.setProgressNote(vo.getProgressNote()); record.setTeacherAdvice(vo.getTeacherAdvice()); recordMapper.insert(record); } @Override public List<TrainingRecordVO> listByChildId(Long childId) { return recordMapper.selectListByChildId(childId); } }5. 系统测试
5.1 测试环境
系统测试在本地开发环境完成,后端服务运行于 JDK 1.8 与 Spring Boot 2.7 环境,数据库使用 MySQL 8.0,接口测试工具采用 Postman 与 Swagger 在线调试。
5.2 功能测试
针对用户登录、儿童档案管理、课程发布、课程预约、成长记录等核心功能编写测试用例,验证各接口的输入校验、业务逻辑和异常处理是否符合预期。测试结果表明,核心业务流程均可正常走通,预约冲突检测、权限拦截等关键逻辑工作正常。
5.3 性能测试
使用 JMeter 对课程列表查询、预约提交等高频接口进行并发压测。在 200 个并发线程的模拟场景下,接口平均响应时间保持在 1.5 秒以内,系统运行稳定,未出现数据库连接异常或服务崩溃等问题。
6. 总结与展望
本文基于 Java Spring Boot 技术栈设计并实现了一个关爱自闭症儿童服务平台,覆盖了用户管理、儿童档案、课程管理、在线预约、成长记录和家庭指导等核心功能模块。系统采用前后端分离架构,通过 JWT 实现安全认证,借助 Redis 提升热点数据访问性能,整体满足平台的基本业务需求。
后续可以从以下方向继续完善:一是引入机器学习算法,根据儿童成长记录自动生成个性化训练建议;二是增加在线视频课程与远程康复指导功能,扩大服务覆盖范围;三是完善数据可视化大屏,为康复机构和管理部门提供更直观的决策支持。