基于Spring Boot+Vue的减肥健康管理系统设计和实现【原创】(BMI算法,协同过滤算法、图形化分析)

🎈系统亮点:图形化分析、BMI算法,协同过滤算法;

一.系统开发工具与环境搭建

1.系统设计开发工具

后端使用Java编程语言的Spring boot框架

项目架构:B/S架构

运行环境:win10/win11、jdk17

前端:

技术:框架Vue.js;UI库:ElementUI;

开发工具:Visual Studio Code;


后端:

技术:Java语言、mybatis plus、Spring boot框架;

开发工具:IDEA 2023.3.3版本;


数据库:

数据库:mysql5.7/8.0

数据库工具:Navicat12版本;


2.系统运行环境

  • Java运行环境:服务器安装Java17开发工具包,确保Spring Boot框架能够正常运行。JDK版本需与项目所依赖的版本相匹配。
  • 数据库管理系统:采用MySQL数据库管理系统,负责存储商城系统的所有数据,如商品信息、用户数据、订单记录等。确保数据的安全性和完整性。
  • 操作系统:支持主流的桌面操作系统Windows。
  • 浏览器:支持主流浏览器,Chrome。商城系统的前端页面需要在这些浏览器中正常显示和运行。

二.需求分析

2.1 功能需求

2.1.1 用户功能需求分析

  1. 减肥科普:用户可以浏览丰富的减肥知识库,也可以进行评价交流。

  2. 身体指标:用户可以记录和跟踪自己的体重,身高,血糖,腰围,血压等身体指标。

  3. 每日计划:根据用户选择的计划,系统会生成个性化的每日饮食和运动计划。

  4. 推荐食谱:系统提供多种健康美味的食谱餐谱。

  5. 体重计划:记录用户的体重计划。

  6. BIM计算:系统根据用户输入的身高和体重数据,自动计算出BMI值。

  7. 完成情况:系统将记录用户的饮食摄入、运动量等活动的完成情况。用户可以查看自己的完成情况报告,包括图表和数据分析,以清晰地了解自己的进步和需要改进的地方。

  8. 个人中心:用户可以在个人中心模块进行修改个人数据,可以查看自己的身体记录,减肥计划,身体指标计划,用户发表的话题管理以及收藏的话题。

2-1 用户用例图

2.1.2 管理员功能需求分析

  1. 用户管理:管理员可以查看、添加、编辑和删除系统中的用户信息。

  2. 封面管理:管理员可以上传、编辑和删除系统首页或特定页面的封面图片。

  3. 食谱管理:管理员可以添加、编辑和删除系统中的食谱信息。

  4. 减肥计划管理:管理员可以创建、编辑和删除针对不同用户的减肥计划。

  5. 减肥话题管理:管理员可以发布、编辑和删除系统中的减肥话题或文章。管理员可以审核话题内容,确保其真实性和正面性。

  6. 科普管理:管理员可以发布、编辑和删除关于减肥的科学知识、健康贴士等内容。

图2-2 管理员用例图


减肥管理系统主要分为两个角色,用户具有减肥科普,身体指标,每日计划,推荐食谱,体重计划,BIM计算,完成情况,个人中心功能。管理员具有用户管理,封面管理,食谱管理,减肥计划管理,减肥话题管理,科普管理功能。

三.系统实现

用户

1.登录界面

2.首页界面

详情界面

3.身体指标界面

4.体重计划

5.每日计划

6.完成情况

7.个人中心

7.1 我的个人信息
7.2 减肥计划
7.3 身体指标分析
7.4 身体计划
7.5 话题收藏
7.6 论坛

管理员

1.用户管理

2.减肥话题管理

2.1 减肥圈子

2.2 减肥话题

2.3 减肥评论

2.4话题浏览记录

3.食谱管理

四.数据库设计

1. 用户表

用户表用于存储用户的基本数据,主要包括用户主键,创建时间,创建人,密码,登录时间段,邮箱,角色,账号,手机号码,头像,出生年月,名称,体重,升高字段。

表3-1 用户表

|-----------------|-------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 用户主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| Password | 密码 | varchar(512) | YES | - |
| LoginTimePeriod | 登录时间段 | varchar(512) | YES | - |
| Email | 邮箱 | varchar(512) | YES | - |
| RoleType | 角色 | int | YES | - |
| UserName | 账号 | varchar(512) | YES | - |
| PhoneNumber | 手机号码 | varchar(512) | YES | - |
| ImageUrls | 头像 | varchar(512) | YES | - |
| Birth | 出生年月 | timestamp | YES | - |
| Name | 名称 | varchar(512) | YES | - |
| W | 体重 | varchar(512) | YES | - |
| H | 升高 | varchar(512) | YES | - |

2. 资讯表

资讯表用于存储资讯的基本数据,主要包括资讯主键,创建时间,创建人,标题,发表者,封面,文章内容,文章类型,上架状态,是否推荐字段。

表3-2 资讯表

|---------------|------|---------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 资讯主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| Title | 标题 | varchar(1024) | YES | - |
| Author | 发表者 | varchar(1024) | YES | - |
| ImageUrls | 封面 | varchar(1024) | YES | - |
| Content | 文章内容 | longtext | YES | - |
| ArticleTypeId | 文章类型 | int | YES | - |
| IsPutaway | 上架状态 | varchar(1024) | YES | - |
| IsRecommand | 是否推荐 | tinyint(1) | YES | - |

3. 资讯收藏表

资讯收藏表用于存储用户收藏的资讯,主要包括资讯收藏主键,创建时间,创建人,收藏人,资讯字段。

表3-3 资讯收藏表

|---------------|--------|-----------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 资讯收藏主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| CollectUserId | 收藏人 | int | YES | - |
| ArticleInfoId | 资讯 | int | YES | - |

4. 资讯评论表

资讯评论表用于存储用户对资讯的评论,主要包括资讯评论主键,创建时间,创建人,文章,评论内容,昵称,头像字段。

表3-4 资讯评论表

|---------------|--------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 资讯评论主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| ArticleInfoId | 文章 | int | YES | - |
| Content | 评论内容 | longtext | YES | - |
| NickName | 昵称 | varchar(512) | YES | - |
| HeadImage | 头像 | varchar(512) | YES | - |

5. 资讯点赞表

资讯点赞表用于存储用户对资讯的点赞记录,主要包括资讯点赞主键,创建时间,创建人,点赞人,资讯字段。

表3-5 资讯点赞表

|---------------|--------|-----------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 资讯点赞主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| LikeUserId | 点赞人 | int | YES | - |
| ArticleInfoId | 资讯 | int | YES | - |

6. 资讯浏览记录表

资讯浏览记录表用于存储用户对资讯的浏览记录,主要包括资讯浏览记录主键,创建时间,创建人,资讯,用户字段。

表3-6 资讯浏览记录表

|---------------|----------|-----------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 资讯浏览记录主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| ArticleInfoId | 资讯 | int | YES | - |
| UserId | 用户 | int | YES | - |

7. 资讯类型表

资讯类型表用于存储资讯类型的信息,主要包括资讯类型主键,创建时间,创建人,资讯名称,封面字段。

表3-7 资讯类型表

|--------------|--------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 资讯类型主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| Title | 资讯名称 | varchar(512) | YES | - |
| ImageUrls | 封面 | longtext | YES | - |

8. 封面表

封面表用于存储封面的信息,主要包括封面主键,创建时间,创建人,封面,备注,标题,跳转路径字段。

表3-8 封面表

|--------------|------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 封面主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| ImageUrls | 封面 | varchar(512) | YES | - |
| Remark | 备注 | varchar(512) | YES | - |
| Title | 标题 | varchar(512) | YES | - |
| LinkUrl | 跳转路径 | varchar(512) | YES | - |

9. 身体指标表

身体指标表用于存储封面的信息,主要包括身体指标主键,创建时间,创建人,体重,身高,BMI指数,血压,血糖,用户,腰围,体脂率字段。

表3-9 身体指标表

|-------------------|--------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 身体指标主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| W | 体重 | double(20,5) | YES | - |
| H | 身高 | double(20,5) | YES | - |
| BMI | BMI指数 | double(20,5) | YES | - |
| BP | 血压 | double(20,5) | YES | - |
| GLU | 血糖 | double(20,5) | YES | - |
| UserId | 用户 | int | YES | - |
| WaistCircumferenc | 腰围 | double(20,5) | YES | - |
| BodyFatPercentage | 体脂率 | double(20,5) | YES | - |

10. 话题评论表

话题评论表用于存储话题的评论信息,主要包括话题评论主键,创建时间,创建人,话题,评论内容,昵称,头像,根评论,回复用户,发送用户字段。

表3-9 话题评论表

|---------------|--------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 话题评论主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| TopicId | 话题 | int | YES | - |
| Content | 评论内容 | longtext | YES | - |
| NickName | 昵称 | varchar(512) | YES | - |
| HeadImage | 头像 | varchar(512) | YES | - |
| RootCommentId | 根评论 | int | YES | - |
| TargetUserId | 回复用户 | int | YES | - |
| SendUserId | 发送用户 | int | YES | - |

11. 评论点赞记录表

评论点赞记录表用于存储话题的评论点赞记录,主要包括评论点赞记录主键,创建时间,创建人,话题,点赞评论,点赞人字段。

表3-11 评论点赞记录表

|--------------|----------|-----------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 评论点赞记录主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| TopicId | 话题 | int | YES | - |
| CommentId | 点赞评论 | int | YES | - |
| UserId | 点赞人 | int | YES | - |

12. 食谱表

食谱表用于存储食谱的信息,主要包括食谱主键,创建时间,创建人,名称,食谱内容,推荐起始体重,推荐截止体重,封面,推荐等级字段。

表3-12 食谱表

|------------------------|--------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 食谱主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| Name | 名称 | varchar(512) | YES | - |
| Content | 食谱内容 | longtext | YES | - |
| RecommendedBeginWeight | 推荐起始体重 | double(20,5) | YES | - |
| RecommendedEndWeight | 推荐截止体重 | double(20,5) | YES | - |
| Cover | 封面 | varchar(512) | YES | - |
| RecoomendLevel | 推荐等级 | int | YES | - |

13. 话题表

话题表用于存储话题的基本数据,主要包括话题主键,创建时间,创建人,标题,封面,主图,浏览数,内容,话题类型,审核状态,是否推荐,视频字段。

表3-13 话题表

|--------------|------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 话题主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| Title | 标题 | varchar(512) | YES | - |
| Cover | 封面 | varchar(512) | YES | - |
| ImageUrls | 主图 | longtext | YES | - |
| ViewCount | 浏览数 | int | YES | - |
| Content | 内容 | longtext | YES | - |
| TopicTypeId | 话题类型 | int | YES | - |
| AuditStatus | 审核状态 | int | YES | - |
| IsRecommand | 是否推荐 | tinyint(1) | YES | - |
| VideoUrls | 视频 | varchar(255) | YES | - |

14. 话题收藏表

话题收藏表用于存储话题的基本数据,主要包括话题收藏主键,创建时间,创建人,话题,收藏人字段。

表3-14 话题收藏表

|--------------|--------|-----------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 话题收藏主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| TopicId | 话题 | int | YES | - |
| UserId | 收藏人 | int | YES | - |

15. 话题浏览记录表

话题浏览记录表用于存储话题的浏览记录数据,主要包括话题浏览记录主键,创建时间,创建人,话题类型,话题,浏览人字段。

表3-15 话题浏览记录表

|--------------|----------|-----------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 话题浏览记录主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| TopicTypeId | 话题类型 | int | YES | - |
| TopicId | 话题 | int | YES | - |
| UserId | 浏览人 | int | YES | - |

16. 话题类型表

话题类型表用于存储话题的类型数据,主要包括话题类型主键,创建时间,创建人,名称,编码,封面,描述字段。

表3-16 话题类型表

|--------------|--------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 话题类型主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| Name | 名称 | varchar(512) | YES | - |
| Code | 编码 | varchar(512) | YES | - |
| Cover | 封面 | varchar(512) | YES | - |
| Content | 描述 | varchar(512) | YES | - |

17. 减肥计划表

减肥计划表用于存储减肥计划数据,主要包括减肥计划主键,创建时间,创建人,计划,内容,整体难度,是否系统制订,开始日期,结束日期,用户字段。

表3-17 减肥计划表

|--------------|--------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 减肥计划主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| Name | 计划 | varchar(512) | YES | - |
| Content | 内容 | longtext | YES | - |
| Level | 整体难度 | int | YES | - |
| IsSystem | 是否系统制订 | int | YES | - |
| BeginDate | 开始日期 | timestamp | YES | - |
| EndDate | 结束日期 | timestamp | YES | - |
| UserId | 用户 | int | YES | - |

18. 减肥计划明细表

减肥计划明细表用于存储减肥计划数据,主要包括减肥计划明细主键,创建时间,创建人,计划,用户,主题,内容,是否完成,打卡次数,开始时间,结束时间字段。

表3-18 减肥计划明细表

|------------------|----------|--------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 减肥计划明细主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| WeightLossPlanId | 计划 | int | YES | - |
| UserId | 用户 | int | YES | - |
| Title | 主题 | varchar(512) | YES | - |
| Content | 内容 | longtext | YES | - |
| IsComplete | 是否完成 | tinyint(1) | YES | - |
| ClockCount | 打卡次数 | int | YES | - |
| BeginTime | 开始时间 | timestamp | YES | - |
| EndTime | 结束时间 | timestamp | YES | - |

19. 减肥计划记录表

减肥计划明细表用于存储减肥计划记录,主要包括减肥计划记录主键,创建时间,创建人,计划,计划明细,打卡时间,用户字段。

表3-19 减肥计划记录表

|---------------------|----------|-----------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 减肥计划记录主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| WeightLossPlanId | 计划 | int | YES | - |
| WeightLossPlanDetId | 计划明细 | int | YES | - |
| ClockTime | 打卡时间 | timestamp | YES | - |
| UserId | 用户 | int | YES | - |

20. 减肥提醒表

减肥提醒表用于存储减肥提醒的基本信息,主要包括减肥提醒主键,创建时间,创建人,计划,计划明细,提醒时间,提醒标题,提醒内容,用户,邮箱字段。

表3-20 减肥提醒表

|---------------------|--------|---------------|------|------|
| 字段名称 | 字段含义 | 字段类型 | 是否为空 | 是否PK |
| Id | 减肥提醒主键 | int | NO | PK |
| CreationTime | 创建时间 | timestamp | YES | - |
| CreatorId | 创建人 | int | YES | - |
| WeightLossPlanId | 计划 | int | YES | - |
| WeightLoosPlanDetId | 计划明细 | int | YES | - |
| RemindTime | 提醒时间 | timestamp | YES | - |
| Title | 提醒标题 | varchar(1024) | YES | - |
| Content | 提醒内容 | varchar(1024) | YES | - |
| UserId | 用户 | int | YES | - |
| Email | 邮箱 | varchar(1024) | YES | - |

编写制作不易,一键四连再走吧,您的支持永远是我最大的动力!

相关推荐
运维-大白同学4 分钟前
将django+vue项目发布部署到服务器
服务器·vue.js·django
Estar.Lee5 分钟前
时间操作[取当前北京时间]免费API接口教程
android·网络·后端·网络协议·tcp/ip
喜欢猪猪6 分钟前
Django:从入门到精通
后端·python·django
一个小坑货6 分钟前
Cargo Rust 的包管理器
开发语言·后端·rust
bluebonnet2711 分钟前
【Rust练习】22.HashMap
开发语言·后端·rust
古月居GYH11 分钟前
在C++上实现反射用法
java·开发语言·c++
uhakadotcom34 分钟前
如何实现一个基于CLI终端的AI 聊天机器人?
后端
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite