1 绪论
1.1课题背景
亚健康如今普遍是人们健康水平的常态,饮食不均、熬夜、体重超标等一些列问题,都会导致人们身体负担的加重,早期需也能够通过自身免疫机制的调节缓解,一旦平衡打破,人们的疾病将会随之而来,对身体造成难以磨灭的伤害,所以呼吁人们重视自身健康,是十分有必要的。
为了促进人们对自身健康水平有更加积极的管理,本文设计了一款个人运动健康管理系统,辅助人们对自身健康有一个更加全面的认知,同时也能通过本系统掌握更加合理的健康方式,收获更多的健康幸福。
1.2发展现状
健康管理系统发展早期都是通过人工管理,大多由健身房承担主要任务,由健身教练主要负责健康管理。
到中期衍生出了许多医美机构,许多人通过医美这种方式,收获自身的健康。
到现在,更多的人们开始重视自身的健康,通过锻炼等方式充实健康体魄,所以打造出了许许多多互联网的健康产品,知名的产品比如“Keep”App。
1.3目的和意义
当健康这一观念和互联网相互结合时,人们在注重自身健康的同时,对于自身的数据也格外敏感。谁都不希望自己的体重和电话号码会被第三方知晓,然后每天都有不同的减肥机构给自己打电话。所以互联网系统对于个人信息的安全性必须做到恰当的防护。
开发一款个人运动健康管理系统,有利于提升用户的自我健康意识,用户可以通过系统掌握更加全面的健康知识,并且通过系统可以合理安排饮食、睡眠习惯等方式,通过每日运动等提醒,收获一个更加健康的身体。
1.4系统设计理念
本个人运动健康管理系统主要采取前后端分离编程设计,将页面交互、页面渲染、操作提示等和用户操作之间相关联的互动,放置前端处理,将用户信息、用户数据和用户具体的操作移至后端运行,通过数据库存储用户机密,在保证用户良好操作反馈的同时,给予用户信息最大的安全保障。打造一款用户操作便捷,用户反馈优良,用户信息安全的可靠系统。
2 关键技术介绍
2.1开发框架
本系统的开发框架选择Spring Boot框架,Spring Boot框架是Spring家族体系中全新的一款框架。框架的创建和开发更多的是为了简化Spring程序所产生的影响,化繁为简,让Java项目的开发变得更加简单迅速。
Spring Boot的四大核心为自动配置、起步依赖、Actuator和命令行界面。Spring Boot的主要特性为
- 能够快速创建Sprint程序,让程序的开发变得更为便捷。
- 无需额外部署war包,可以在Java main方法中镶嵌Tomcat直接运行。
- 提过starter POM简化Maven配置,让其变得更为简单。
- 自动检查Maven依赖配置,自动配置Spring、Spring MVC等。
2.2开发工具
本系统的开发工具使用IntelliJ IDEA开发工具,以下简称IDEA。IDEA是一个强大的JAVA集成开发环境,工具内部搭配了JAVA编译器,实现了编码调试一体化。并且IDEA提供了许多丰富的编码技巧,诸如自动代码完成功能、代码重构、代码分析、代码调试以及代码测试等。可以极大的提高编码人员的容错效率,大幅的提升编码人员的开发效率。最便捷的在于IDEA是一款开源软件,还支持多种语言编辑,可以同时支持前端HTML语言的编码和后端JAVA的编码完成。
2.3系统开发语言的选择
后端编程语言首选Java语言,Java语言相较于其他后端语言有许多优势。例如:
跨平台性:Java语言编写的代码会在编译时转换成字节编码,可以在Java虚拟机(JVM)上运行,这意味着编程人员只需要将代码写一次,就可以在任意的平台上运行,极大程度的提升了Java 语言的便利性,是为数不多的跨操作系统语言。
安全性:Java语言对于安全性也有着较高的保护,Java内置许多安全机制,如内存管理和安全检查等,可以防止很多危险操作的发生。
对象导向性:Java语言是一款面向对象的编程语言,主要特征为封装、继承和多态,这使得Java代码对于代码的维护性、扩展性和重用性。
大量开发工具和框架:Java作为国内编码语言的领头羊,旗下的生态链是最为丰富全面的,能给予Java编程很大程度的便捷。
2.4系统数据库的选择
用户数据存储选择MySQL数据库,MySQL数据库具有开源、性能稳定、用户群体大等特点,是一款非常流行的关系型数据库。通过MySQL数据库存储数据可以和Java语言一样,对于跨平台性有着良好的兼容,对于性能也有着充分程度的保障,对于扩展性也有良好的集成。
2.5计算机配置要求
硬件要求:
CPU:Inter5代及以上
内存: 4G以上
软件要求:
操作系统版本:Windows7及以上
开发工具:IDEA
后台服务器:Tomcat9.0
开发语言:Java
3.1个人运动健康管理系统目标分析
个人运动健康管理系统主要针对自身身体健康有着一定程度注重的用户,可以通过本系统获得较为全面的健康知识体系,掌握合理的锻炼方式,保持身体健康状态一直维持在稳定的水平。
3.2个人运动健康管理系统的需求分析
系统需求分析主要针对软件系统进行梳理、分析、整理和规范化,确保软件系统需要满足的功能以及需要具备的性能和约束条件,为后期代码实现节约大量的工作成本。通过以下分析可以得出,结合对操作群体的用户行为分析,可以得出本系统需要对用户权限进行分类,分为管理员和普通用户两大类。管理员拥有:
- 首页
- 个人中心
- 用户管理
- 食物分类管理
- 食物信息管理
- 运动类型管理
- 运动项目管理
普通用户拥有:
- 首页
- 个人中心
- 睡眠方式管理
- 音乐种类管理
- 健康记录管理
- 每日运动管理
- 营养配餐管理
3.2.1需求收集
本系统通过软件工程为导向,实现软件工程学科的实践落地,对用户需求进行合理的调查、整理、分析和说明,形成独居本系统特色的功能用例点,保障深入了解用户的痛点,并予以解决。
3.2.2需求分析
本系统主要通过问卷等形式完成用户需求的收集,并针对用户反馈的问卷统一汇总形成汇总数据,针对数据进行额外的用户需求分析,挖掘用户深处的需求,而不光是停留在用户需求的表面程度。
3.2.3需求文档
通过对用户需求汇总的分析结果,可以对数据进行归纳总结,形成特定的需求文档,为后续理论提供先行条件的支撑,保障系统的整个开发工程始终目标对其。
3.3系统功能用例分析
首页是用户登录到系统所看到的第一个页面,该模块的主要功能在于展示信息,可以放置类似每日提醒的窗口,提醒用户今日的适宜,方便用户更加清晰的记忆。该功能的用例图如图3-1。

图3-1首页管理用例图
个人中心管理模块,主要提供两个功能:一个是展示个人信息,用户可以在此模块下面浏览自己的个人信息,方便同时进行修改等操作,及时更新个人信息。另一个则是密码修改模块,防止用户密码被盗,可以及时进行密码修改等。本功能的用例图如图3-2。

图3-2 个人中心管理用例图
用户管理则可以对登录用户进行新增,修改和删除等操作。图3-3为用户管理的用例图。

图3-3 用户管理用例图
食物分类管理主要展示对食物类型的划分,一项基础数据管理模块。图3-4为食物分类管理的用例图。

图3-4 食物分类管理用例图
食物信息管理模块主要展示食物名称,食物分类,卡路里,碳水化合物,脂肪,蛋白质以及食物图片等基本信息。图3-5为食物信息管理的用例图。

图3-5 食物信息管理用例图
健康记录管理模块主要展示用户账号,用户姓名,身高,体重,血压,心率,记录日期等用户健康的基础信息。图3-6为健康记录管理的用例图。

图3-6健康记录管理用例图
音乐种类模块主要展示音乐基础种类,是管理音乐种类的基础类型功能模块。图3-7为音乐种类管理的用例图。

图3-6音乐种类管理用例图
运动类型模块主要展示运动基础类型,是管理运动类型的基础类型功能模块。图3-8为运动类型管理的用例图。

图3-8运动类型管理用例图
运动项目功能模块主要展示基础运动项目类型,用户可以自定义基础运动项目,方便后续的每日运动项目管理模块定制个性化的运动模式,适合每一位用户。图3-9为运动项目管理的用例图。

图3-9运动项目管理用例图
每日运动管理模块,主要结合运动项目管理模块的基础运动数据,进行用户化的个性定制,为每一位用户打造专属的运动模式。图3-10为每日运动管理的用例图。

图3-10每日运动管理用例图
营养配餐管理主要展示适宜用户的配餐,方便用户通过此模块合适的找到自己的专属配餐,通过饮食搭配运动更加合理科学的锻炼身体。图3-11为营养配餐管理的用例图。

图3-11营养配餐管理用例图
4.1 系统功能结构设计
本个人运动健康管理系统对操作用户进行了大规模的数据调查,总结并得出用户所需要的功能点,对功能点进行整合划分,将功能点凝聚形成如下功能模块:首页管理、个人中心、用户管理、食物分类管理、食物信息管理、健康记录管理、睡眠方式管理、音乐种类管理、运动类型管理、运动项目管理、每日运动管理、营养配餐管理,各模块之间操作上相互独立,内部信息共享。如图4-1所示。

图4-1 功能结构图
4.2系统功能模块设计
图4-2为首页管理功能的主要流程图,主要描述了在首页中能够查看首页信息的功能点。

图4-2 首页管理流程图
图4-3为个人中心管理模块的流程图,个人中心主要针对用户个人信息进行便捷操作,并且将修改密码等用户信息相关操作整合其中。

图4-3 个人中心流程图
图4-4为食物分类管理的主要流程图,主要表述了用户对食物类型的基础信息进行增删改查的基本操作。

图4-4 食物分类管理流程图
图4-5为食物信息功能的主要流程图,主要表述了用户对食物信息的操作。

图4-5食物信息管理流程图
图4-6为健康记录管理的主要流程图,主要表述了用户对健康记录信息操作的功能。

图4-6健康记录管理流程图
图4-7为睡眠方式管理功能的主要流程图,主要表述了用户对睡眠方式基础信息进行信息编辑等功能。

图4-7睡眠方式管理流程图
图4-8为音乐种类管理功能的主要流程图,主要表述了用户对音乐种类基础信息编辑等功能。

图4-8音乐种类管理流程图
图4-9为运动类型管理功能的主要流程图,主要表述了用户对运动类型基础信息编辑等功能。

图4-9运动类型管理流程图
图4-10为运动项目管理功能的主要流程图,主要表述了用户对运动项目进行信息编辑等功能。

图4-11运动项目管理流程图
图4-12为每日运动功能的主要流程图,主要表述了用户对每日运动进行信息编辑等功能。

图4-12每日运动管理流程图
图4-13为营养配餐管理功能的主要流程图,主要表述了用户对营养配餐进行信息编辑等功能。

图4-13营养配餐管理流程图
4.3数据库设计
一个数据库设计的是否合理往往决定了开发进度。各实体之间的联系是通过E-R模型图来进行实现的。E-R图的三大基本元素是:实体、属性和关系。

图4-14 E-R模型图图例
4.3.1概念模型设计
通过需求分析产生的主要功能包括:首页管理、个人中心、用户管理、食物分类管理、食物信息管理、健康记录管理、睡眠方式管理、音乐种类管理、运动类型管理、运动项目管理、每日运动管理、营养配餐管理。结合MySQL关系型数据库模型,可以确认在数据库存储时,需要创建对应的实体,主要包括:个人信息、食物分类信息、食物信息、健康记录信息、音乐种类信息、运动类型信息、运动项目信息、每日运动信息、营养配餐信息等。具体E-R图见图4-15。

图4-15个人信息E-R图
4.3.2数据库逻辑模型设计
根据对E-R图的分析,对于数据库的创建,应满足以下几个条件。
(1)每一个实体要转换成一个关系;
(2)所有的主键必须定义非空(NOT NULL);
(3)对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。
本系统应用到的数据表较多,个人信息表主要记录个人信息,表结构如表4-1所示。
表4-1个人信息表
|
字段名称 |
数据类型 |
字段大小 |
必填字段 |
|
id |
int |
10 |
是 |
|
username |
varchar |
15 |
是 |
|
password |
varchar |
5 |
是 |
|
sex |
varchar |
2 |
是 |
|
phone |
varchar |
11 |
是 |
|
createtime |
datetime |
是 | |
|
age |
int |
10 |
是 |
|
phone |
varchar |
255 |
是 |
食物分类信息主要记录用户登录情况,表结构如4-2所示。
表4-2 食物分类信息表
|
字段名称 |
数据类型 |
字段大小 |
必填字段 |
|
id |
int |
10 |
是 |
|
foodtype |
int |
10 |
是 |
食物信息主要记录食物基本信息情况,表结构如表4-3所示。
表4-3 食物信息表
|
字段名称 |
数据类型 |
字段大小 |
必填字段 |
|
id |
int |
10 |
是 |
|
foodname |
varchar |
255 |
否 |
|
foodtype |
int |
10 |
否 |
|
Calorie |
varchar |
255 |
否 |
|
carbohydrate |
varchar |
255 |
否 |
|
fat |
varchar |
255 |
否 |
|
protein |
varchar |
255 |
否 |
|
photo |
varchar |
255 |
否 |
健康记录信息表主要记录用户健康信息,表结构如表4-4所示。
表4-4 健康记录信息表
|
字段名称 |
数据类型 |
字段大小 |
必填字段 |
|
id |
int |
10 |
是 |
|
userid |
int |
8 |
否 |
|
height |
varchar |
255 |
否 |
|
weight |
varchar |
255 |
否 |
|
heartrate |
varchar |
255 |
否 |
|
bloodressure |
varchar |
255 |
否 |
|
time |
datetime |
8 |
否 |
音乐种类表主要记录基本音乐类型,表结构如表4-5所示。
表4-5 音乐种类表
|
字段名称 |
数据类型 |
字段大小 |
必填字段 |
|
id |
int |
10 |
是 |
|
musictype |
int |
10 |
否 |
运动类型表主要记录基本运动类型,表结构如表4-6所示。
表4-6 运动类型信息表
|
字段名称 |
数据类型 |
字段大小 |
必填字段 |
|
Id |
int |
10 |
是 |
|
sporttype |
int |
10 |
否 |
运动项目表主要记录的是运动项目信息,表结构如表4-7所示。
表4-7 运动项目信息表
|
字段名称 |
数据类型 |
字段大小 |
必填字段 |
|
Id |
int |
10 |
是 |
|
project |
int |
10 |
否 |
|
name |
varchar |
255 |
是 |
|
photo |
varchar |
255 |
否 |
|
sporttype |
int |
10 |
是 |
|
equipment |
varchar |
255 |
否 |
|
sporttime |
datetime |
是 | |
|
time |
datetime |
否 |
每日运动信息表主要记录的是用户每天运动详情信息,表结构如表4-8所示。
表4-8 每日运动信息表
|
字段名称 |
数据类型 |
字段大小 |
必填字段 |
|
Id |
int |
10 |
是 |
|
userid |
int |
10 |
否 |
|
username |
varchar |
255 |
是 |
|
time |
datetime |
否 | |
|
today |
varchar |
255 |
是 |
|
process |
varchar |
255 |
是 |
|
sporttime |
datetime |
否 |
运动类型信息表主要记录的是基本运动类型信息,表结构如表4-9所示。
表4-9 运动类型信息表
|
字段名称 |
数据类型 |
字段大小 |
必填字段 |
|
Id |
int |
10 |
是 |
|
name |
int |
10 |
否 |
|
photo |
varchar |
255 |
是 |
|
time |
datetime |
是 | |
|
people |
varchar |
255 |
是 |
|
impact |
varchar |
255 |
否 |
系统实现是项目编码最终开始的环节,是检验用户需求通过代码实现是否一致的关键步骤。
5.1系统登录页面实现
登陆页面是本系统进行安全防护的关键步骤之一,用户必须输入正确的用户名和密码才能进入到系统内部当中,保障内部用户的个人信息安全,防止用户隐私泄露。当用户输入了错误的用户名和密码导致用户无法正常登录时,系统也会进行友好的交互提示。具体的登录页面如图5-1所示。

图5-1登录页面
实现登录功能的关键代码如下。
@WebServlet("/loginServlet")
public void actionPerformed(ActionEvent event) {
if (event.getSource() == btnLogin) {
String username = txtUserName.getText();
String password = new String(txtPassword.getPassword());
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'");
if (rs.next()) {
JOptionPane.showMessageDialog(this, "登录成功!");
} else {
JOptionPane.showMessageDialog(this, "用户名或密码错误!");
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
5.2 后端页面管理
5.2.1个人中心
个人中心主要进行登录用户的个人信息修改,可以对登录用户的密码进行更新操作,保障用户信息安全。详细信息如图5-2所示。

5.2.2食物信息
食物信息展示用户基础食物信息,诺列了市面上普遍存在的食物,用户通过营养配餐可以查看每一种食物的营养价值,通过合理搭配饮食将自身的健康状况调整。通过一个界面就可以解决绝大多数问题,将食物的基础信息尽收眼底。详细信息如图5-3所示。

图5-3后端-食物信息页面
5.2.3健康记录
健康记录存储用户的每日基础信息,用户可以将每日的信息存入到系统当中,通过后期形成系统性的报表,可以激励自己,形成良好的导向性作用。详细信息如图5-4所示。

图5-4后端-健康记录页面
5.2.4运动项目
运动项目模块主要编辑基础运动项目,项目的基础时长等,用户可以通过运动项目的基础信息了解运动项目,找到更加适合自身的运动模式,打造专属运动模块。详细信息如图5-5所示。

图5-5后端-运动项目页面
5.2.5每日运动
每日运动需要结合运动项目模块,用户可以通过运动项目了解每一款运动项目的基础信息,方便更加深入了解是否适合自身,再通过合理的安排和训练可以进行随时调整随时变化,更加的人性化。详细信息如图5-6所示。

图5-6后端-每日运动页面
5.2.6营养配餐
营养配餐属于饮食方面的调节,用户在运动过后可以调节自身的饮食,实现负载均衡,从内到外的搭配,锻炼自己更加健康的身体模式。再次页面用户可以了解到每一款食物的详细信息,包括卡路里、脂肪等,方便用户选择适合自己的食物。详细信息如图5-7所示。

图5-7后端-营养配餐页面
5.3.1食物信息
食物信息前端页面,主要由用户进行直接操作,获得交互上更加友好的方式,更加便捷的操作,形成良好的用户循环体验。详细信息如图5-8、图5-9所示。

图5-8前端-食物信息列表页面

图5-9前端-食物信息详情页面
5.3.2睡眠方式
详细信息如图5-10、图5-11所示。

图5-10前端-睡眠方式列表页面

图5-11前端-睡眠方式详情页面
5.3.3营养配餐信息
详细信息如图5-12、图5-13所示。

图5-12前端-营养配餐列表页面

图5-13前端-营养配餐详情页面
5.3.4运动项目
详细信息如图5-14、图5-15所示。

图5-14前端-运动项目列表页面

图5-15前端-运动项目详情页面
6 系统测试
6.1系统测试目的
系统测试的主要目的在于检验开发出来的系统是否满足用户期望和需求,系统测试是指在系统开发过程中,结合预期的系统功能点,对系统进行验证和评估,以发现系统之中存在的缺陷、错误和不足。以此反馈给程序开发人员,从而提高系统的综合质量,保障系统的整体稳定性。
系统测试一般不由编程人员独立完成,因考虑到编程和测试人员一致的话,会有思维定式,在某些边界值和异常场景的测试下,可能会有遗漏,从而导致系统的稳定性下降,造成不好的用户体验。故专业的测试知识是十分必要的。
6.2测试过程
由于本系统要保证数据的安全性,所以针对此点,登录功能进行了多次测试,防止发生录入不合法数据也可以进行登录的错误情况。通过不断地测试不同模块,提高了整个系统的质量。
为确保数据的安全性,对登录模块以及权限分配模块进行了多次的测试。防止不合法的录入情况的发生。
本系统的主要测试如下:
- 打开系统登录页面
- 输入正确用户名和正确密码,进入系统首页
- 输入正确用户名,错误密码,提示用户名或密码错误。
- 输入错误用户名,正确密码,提示用户名或密码错误。
登录功能测试过程如表6-1所示。
表6-1 登录功能测试表
|
模块名称 |
测试用例 |
预期结果 |
实际结果 |
是否通过 |
|
登录模块 |
用户名:admin 密码:123456 |
成功进入首页 |
成功进入首页 |
通过 |
|
登录模块 |
用户名:admin 密码:null |
弹出错误提示,请输入密码 |
登录失败,提示请输入密码 |
通过 |
|
登录模块 |
用户名:123 密码:123456 |
弹出错误提示,用户名或密码错误 |
登录失败,提示用户名或密码错误 |
通过 |
- 点击运动项目功能模块
- 点击新增,输入正确信息,成功录入。
- 点击删除,成功删除。
- 点击编辑,输入正确信息,编辑成功。
运动项目测试过程如表6-2所示。
表6-2运动项目功能测试表
|
模块名称 |
测试用例 |
预期结果 |
实际结果 |
是否通过 |
|
运动项目模块 |
新增 |
添加成功 |
添加成功 |
通过 |
|
运动项目模块 |
删除 |
删除成功 |
删除成功 |
通过 |
|
运动项目模块 |
编辑 |
编辑成功 |
编辑成功 |
通过 |
7 结论
本论文以系统规范化的软件工程方法论为基础,在软件工程学科的铺垫下进行系统精密的项目实现。通过项目需求分析、质量保证和软件测试等方面,降低了项目实践的风险,降低了项目的管理复杂性,有利于开发项目周期的缩短,提升了项目的交付质量。软件工程学科在整个系统开发生命周期起到了十分重要的指导性作用。通过本项目的开发设计、编码实现以及最终的软件测试,充分补充了自身知识空缺,强化了编码技能,熟练掌握了软件测试的技巧,是一次十分宝贵的项目经验。
当然本项目的缺陷也是十分明显的,考虑到的用户基数较少、开发周期较短、功能交互较为单一,不利于系统的扩展和推广,在许多方面仍有很大的进步空间。而且项目需求、编码实现以及软件测试都是一人完成,思维或许存在定式,会有一定的漏洞需要排查。

被折叠的 条评论
为什么被折叠?



