QQ__3786649731头像
基于SpringBoot个人运动健康管理系统-附源码封面图

基于SpringBoot个人运动健康管理系统-附源码

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!

摘要

日常运动缺乏记录与目标约束,训练计划、饮食摄入、身体变化分散在不同 App 与备忘录中,难以形成完整的健康数据闭环。本系统基于 SpringBoot 框架开发,以 MySQL 作为数据库,面向普通用户、健身教练、系统管理员三类角色,围绕个人运动记录、训练计划与健康目标管理业务设计。系统包含用户档案与身体数据登记、运动项目库、运动打卡记录、训练计划制定、健康目标跟踪、饮食热量与营养记录、睡眠与体重趋势、运动教程与动作库、好友打卡排行、数据统计图表、教练在线指导、后台资讯与规则管理等功能模块。用户录入身高体重等基础数据,选择跑步、骑行、力量训练等项目记录每次运动时长与消耗,按周制定训练计划,记录每日饮食热量,查看体重、运动频次与消耗的趋势曲线;健身教练查看授权用户数据,调整训练计划与饮食建议;管理员维护运动项目与动作库、配置热量参考标准、发布健康资讯、统计平台活跃数据。系统把运动、饮食、身体数据集中到统一档案,帮助用户量化日常活动、坚持训练计划、直观看到变化趋势,为个人健身与健康管理提供可追溯的数据支撑。

技术栈

后端采用 SpringBoot 作为核心框架,结合 MyBatis-Plus 简化数据库操作,快速实现运动记录、计划、饮食、目标等业务数据持久化。MySQL 存储用户、身体档案、运动记录、训练计划、饮食记录、目标、教程等业务数据,Redis 缓存运动项目库、今日打卡、排行榜、登录 token,提升查询与排行响应速度。前端使用 Vue3 搭配 Element Plus 组件库搭建运动记录与计划页面,支持打卡日历与趋势图展示,ECharts 实现体重变化、周运动频次、热量摄入与消耗对比等数据可视化。项目通过 Maven 管理依赖,JWT 实现多角色身份认证,区分普通用户、教练、管理员权限。运动消耗与饮食热量按内置参考规则辅助计算并给出区间提示,集成 OSS 存储动作示范图与教程资料,定时任务推送打卡提醒与目标进度提醒,EasyExcel 导出运动与饮食记录报表,全局异常处理器统一处理接口异常。整套技术方案成熟稳定,数据维度完整,便于后续拓展智能手表数据接入、运动社区等功能。

系统设计

系统采用表现层、业务逻辑层、数据访问层三层架构,按业务划分为六大模块。用户模块实现注册登录、身体档案、病史与运动禁忌登记、数据授权设置;运动模块维护运动项目与动作库,记录运动类型、时长、距离、消耗与打卡;计划模块支持按周制定训练计划、安排训练日与休息、跟踪计划完成进度;目标模块设定减重、增肌、耐力提升等目标,记录起始与目标值、阶段进度;饮食模块记录餐次、食物与估算热量,对比每日摄入与消耗;后台管理模块实现运动项目与标准配置、动作教程维护、资讯发布、教练授权查看与平台数据统计。三类角色权限相互隔离,用户侧重记录、计划、目标与查看趋势;教练侧重查看授权数据、调整计划与给出建议;管理员拥有内容配置与账号管理权限。各模块低耦合,通过接口交互,便于后续拓展设备数据接入、运动社区等功能。

具体实现截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

核心代码

@RestController
@RequestMapping("/fitness")
public class FitnessController {
    @Autowired
    private ISportRecordService recordService;
    @Autowired
    private ITrainPlanService planService;

    // 保存运动打卡记录
    @PostMapping("/saveRecord")
    public Result saveRecord(@RequestBody SportRecord record) {
        if (record.getSportType() == null || record.getDuration() == null) {
            return Result.error("运动类型与时长不能为空");
        }
        boolean flag = recordService.saveRecord(record);
        return flag ? Result.success("运动记录保存成功") : Result.error("记录保存失败,请核对数据");
    }

    // 查询近30天运动趋势
    @GetMapping("/trend")
    public Result trend(@RequestParam Long userId) {
        List<SportRecord> list = recordService.list(Wrappers.<SportRecord>lambdaQuery()
                .eq(SportRecord::getUserId, userId)
                .ge(SportRecord::getRecordDate, LocalDate.now().minusDays(30))
                .orderByAsc(SportRecord::getRecordDate));
        return Result.success(list);
    }

    // 更新训练计划完成进度
    @PostMapping("/updatePlan")
    public Result updatePlan(@RequestParam Long planId, @RequestParam BigDecimal progress) {
        boolean flag = planService.updateProgress(planId, progress);
        return flag ? Result.success("计划进度更新成功") : Result.error("计划更新失败");
    }
}

数据库设计

数据库基于 MySQL 设计,根据运动健康管理业务实体建立数据表,设置关联关系保证数据完整性。核心数据表包括用户表 user,存储账号、密码、昵称、性别、出生日期、身高、角色、创建时间;身体档案表 fitness_profile,关联用户 id,记录体重、体脂率、运动禁忌、基础数据更新时间;运动项目表 sport_type,保存项目名称、单位、参考消耗系数、状态;运动记录表 sport_record,关联用户 id 与项目 id,记录日期、时长、距离、消耗热量、备注;训练计划表 train_plan,关联用户 id,保存计划名称、周期、训练安排、完成进度;目标表 health_goal,记录目标类型、起始值、目标值、截止日期、当前进度;饮食记录表 diet_record,关联用户 id,保存餐次、食物名称、估算热量、记录日期;教程表 tutorial,保存动作名称、示范图、动作要领、分类。所有数据表统一设置自增主键,添加创建时间、更新时间字段,针对用户 id、记录日期、计划状态查询建立索引,优化查询性能,减少数据冗余,满足运动健康记录与分析业务的数据存储需求。

系统测试

系统采用单元测试结合黑盒功能测试开展测试工作。单元测试重点对数据合理区间校验、目标进度计算、训练计划状态流转、教练数据授权访问、权限拦截等核心逻辑编写测试用例,验证明显异常的时长或体重数据被正确提示、未授权教练无法查看用户记录。黑盒测试模拟普通用户、健身教练、管理员三类角色,依次测试注册登录、身体档案登记、运动打卡记录、制定训练计划、跟踪计划进度、设定健康目标、记录饮食热量、查看运动与体重趋势、教练查看授权数据并调整计划、管理员维护动作教程与热量标准、导出运动记录报表等完整业务流程。同时覆盖异常场景,同一天重复打卡同一项运动、空表单提交、填写超出合理范围的时长、越权查看他人运动数据、未授权教练访问记录、非法参数等,记录接口返回、页面展示与数据变化,及时修复发现的缺陷。经过多轮测试,系统运行稳定,运动与饮食记录准确,趋势图表与进度统计正确,提醒机制可用,权限控制有效,数据读写无误,页面交互流畅,满足个人运动健康管理系统的业务需求。本系统仅用于日常运动记录与计划管理,相关身体指标异常请结合专业医疗检查判断。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2501_90360747/article/details/170609126

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--