摘 要
本文旨在设计并实现一款基于Spring Boot的居家健身锻炼APP,以满足现代人对便捷、高效健身方式的需求。该APP利用Spring Boot框架的轻量级和易扩展性,结合MySQL数据库和Tomcat服务,构建了一个稳定、安全的后端服务,为用户提供个性化的健身计划、健身课程以及丰富的健身资讯。在研究中,我们深入分析了市场需求和用户行为,设计了易于使用的界面和交互方式,优化了用户体验。此外,我们还关注了数据安全和隐私保护,采取了多种措施确保用户信息的安全。该APP的推出不仅有助于推动大众健身运动的普及和发展,还能提升用户的生活质量,促进健康生活方式的形成。因此,本研究具有重要的现实意义和应用价值。
关键词:居家健身锻炼APP;Java;MySQL;springboot
Abstract
This article aims to design and implement a home fitness and exercise app based on Spring Boot to meet the needs of modern people for convenient and efficient fitness methods. This app utilizes the lightweight and scalability of the Spring Boot framework, combined with MySQL database and Tomcat services, to build a stable and secure backend service, providing users with personalized fitness plans, courses, and rich fitness information. In our research, we conducted in-depth analysis of market demand and user behavior, designed user-friendly interfaces and interaction methods, and optimized the user experience. In addition, we have also focused on data security and privacy protection, and taken various measures to ensure the security of user information. The launch of this app not only helps to promote the popularization and development of mass fitness, but also improves the quality of life for users and promotes the formation of healthy lifestyles. Therefore, this study has important practical significance and application value.
Keywords: Home fitness exercise app; Java; MySQL; Springboot
1 引言
1.1 选题背景
随着现代生活节奏的加快,越来越多的人开始关注自身的健康状况和身体素质。同时,由于疫情等因素的影响,居家健身逐渐成为了一种趋势和新的生活方式。人们更加倾向于在家中进行健身锻炼,这既符合了当前社会的健康需求,也满足了人们追求便捷、高效的生活方式。移动互联网技术的快速发展为居家健身锻炼APP的兴起提供了有力支持。智能手机、平板电脑等移动设备的普及,使得人们可以随时随地通过手机APP进行健身锻炼。同时,各种先进技术的运用,如AI、大数据等,也使得APP能够更好地满足用户的个性化需求,提供更为精准、科学的健身指导。Spring Boot作为一种轻量级的Java框架,具有简化配置、快速开发等特点,非常适合用于构建健身锻炼APP的后端服务。通过使用Spring Boot,开发者可以更加专注于业务逻辑的实现,而无需花费过多时间在繁琐的配置和部署上。居家健身锻炼APP的设计与实现还需要考虑到用户体验、安全性、稳定性等多方面因素。例如,如何设计易于使用的界面、如何保障用户数据的安全、如何确保APP的稳定运行等,都是设计与实现过程中需要重点考虑的问题,对于促进人们健康生活方式的形成和推动健身行业的发展具有重要意义。
1.2 研究意义
从健康促进的角度来看,该APP的设计与实现有助于推动大众健身运动的普及和发展。通过提供便捷、个性化的健身服务,鼓励更多人在家中进行锻炼,从而提高国民的整体健康水平,减少因缺乏运动而导致的健康问题。
从技术创新的角度来看,该APP的研究有助于推动移动互联网、大数据、人工智能等先进技术在健身领域的应用。通过整合这些技术,可以实现更为精准的用户画像构建、健身计划制定和效果评估,提升用户体验和健身效果。
从产业发展的角度来看,该APP的研究有助于推动健身产业的数字化转型和升级。通过构建智能化的健身服务平台,可以优化资源配置,提高服务效率,促进健身产业的可持续发展。
该研究还具有一定的社会价值。在当前社会背景下,越来越多的人面临着工作压力和生活节奏加快的问题,缺乏足够的时间和精力去健身房进行锻炼。而居家健身锻炼APP的出现,正好满足了这部分人群的需求,有助于缓解他们的身心压力,提升生活质量。
从学术研究的角度来看,该研究有助于丰富和完善健身锻炼APP设计与实现的理论体系和实践经验。通过深入探讨用户需求、技术选型、系统设计等方面的问题,可以为后续相关研究提供有益的参考和借鉴。
综上所述,基于Spring Boot的居家健身锻炼APP的设计与实现具有重要的研究意义,不仅有助于推动大众健身运动的普及和发展,还有助于促进技术创新和产业发展,提升人们的生活质量和健康水平。
1.3论文结构与章节安排
本文共分为六章,章节内容安排如下:
第一章:引言。第一章主要介绍了课题研究的背景与意义以及技术和本文的研究内容与主要工作。
第二章:系统需求分析。第二章主要从系统的可行性、功能等方面进行需求分析。
第三章:系统总体设计。第三章主要对系统功能模块、数据库进行功能设计。
第四章:系统详细设计。第四章主要介绍了系统各个普通用户的功能、系统界面的实现。
第五章:系统测试。第五章主要对系统的部分界面进行测试并对主要功能进行测试。
2 系统需求分析
2.1可行性分析
基于Spring Boot框架的居家健身锻炼APP设计与开发的可行性分析,可以从以下几个方面进行考量:
2.1.1 技术可行性分析
Spring Boot框架以其快速开发、简化配置、智能化管理等特点,非常适合用于构建这样的健身锻炼APP。它提供了丰富的自动化配置和约定大于配置的方式,使得开发者可以专注于业务逻辑的开发,而无需过多关注底层技术实现。此外,Spring Boot还具有极佳的兼容性和可扩展性,可以与现有的技术和系统进行集成,同时也支持未来的扩展和增强。
2.1.4操作可行性分析
随着健康意识的提高和移动互联网的普及,居家健身已经成为了一种趋势。市场调研数据也显示,运动健身APP的用户群体在不断扩大,且用户对于健身APP的功能和服务需求也在不断增加。因此,设计和实现一个基于Spring Boot的居家健身锻炼APP,具有广阔的市场前景和潜在的用户群体。
2.1.2 经济可行性分析
考虑到成本和收益,使用Spring Boot进行APP的开发可以降低开发成本,提高开发效率。同时,由于市场需求旺盛,该APP有可能实现快速的用户增长和盈利。此外,通过提供个性化的健身计划、专业的健身指导等服务,还可以增加用户的黏性和付费意愿,进一步提升经济效益。
2.1.3 社会可行性分析
该APP的推出符合当前社会对于健康生活方式的倡导,有助于推动大众健身运动的普及和发展。同时,通过提供便捷、个性化的健身服务,也可以帮助用户改善身体状况,提高生活质量。因此,从社会角度来看,该APP的设计和实现也是可行的。
2.2功能需求分析
居家健身锻炼APP的主要目的分为三个。
首先:可以通过该APP可以很好的居家健身锻炼管理。以前通过传统的健身锻炼方式有个最大的问题就是流程繁琐,而且各种信息容易丢失,有了这样一个居家健身锻炼APP,那么则可以很容易的把居家健身锻炼信息都放到数据库中,如果再对数据库进行备份处理,那么这样就可以很好的对健身信息进行保存。
该APP需要很好的功能扩充性和可维护性。由于该APP是涉及的普通用户比较多,对管理员来说同样也是一个信息管理APP,包括普通用户信息,居家健身锻炼信息,工作评价信息等。而且,随着普通用户数量的增加,必然对程序的更新迭代要求更高,所有在开发的时候就需要注意程序的可维护性和可拓展性。
2.3用例分析
图2-2 普通用户角色用例图
图2-3 商家用户角色用例图
2.4系统流程分析
2.4.1增加数据流程
系统中的所有普通用户(管理员、普通用户、商家用户)都可以实现增加数据功能,所谓的增加、修改、删除数据,图2.5显示的就是在增加数据时的流程。
图2.4增加数据流程图
2.4.2修改数据流程
人无完人,每个人都有出错的时候,在录入系统信息的时候如果信息有错,可以对系统中的数据进行编辑。图2.5显示的就是修改数据的流程。
图2.5修改数据流程图
2.4.3删除数据流程
在系统中经常会出现一些过期的数据,那就可以直接删除这些数据,图2.6就是删除数据时的流程图。
图2.6删除数据流程图
3系统总体设计
3.1 系统开发架构的选择
如今随着web系统功能的不断完善,越来越多的项目选择web系统,同样居家健身锻炼APP也是通过浏览器来访问系统主页面的。Web系统与app相比(后者主要是C/S架构),可以通过浏览器来规避很多问题,依靠浏览器让项目的开发变得简单,不再担心项目的版本跟新带来的数据传输等一系列的问题。值得注意的是B/S架构的项目,浏览器与服务器的数据的交互是通过http协议进行的,同样,服务器与数据库的数据交互也是通过http协议,统一的格式让信息的交互更加的简便与快捷。下图是具体的b/s架构图:
图3-1 系统B/S结构
3.1系统功能模块设计
居家健身锻炼APP的整体架构确定以后,再来看居家健身锻炼APP的主要功能模块图。整体的功能模块包括前台和后台,前台只要实现了普通用户,主要的首页页面,包括首页、健身课程、健身资讯、用户数据、健身计划等页面。后台的模块主要实现了管理员用户,有系统用户、健身课程管理、通知公告管理、课程类型管理、用户数据管理、健身计划管理、课程等级管理、资源管理、系统管理等。确定了模块以后,再设计各个模块的功能特点,方便抽取出各个模块的公共部分来。
图3.1居家健身锻炼APP功能模块图
3.1.1 前台页面设计
本居家健身锻炼APP的前台页面所有的页面设计主要是上中下的结构,这样的好处是让所有的页面更加的整洁。主题的页面颜色采用淡色为主,为突出页面的美观。主页面上分为导航栏,导航栏的每个导航项目设计为一张jsp页面,除此之外,还有就是普通用户中心页面,后台管理的页面了。后台管理页面已简单的上下结构为主。
3.1.2 普通用户模块设计
(1)普通用户模块结构图
本APP的用户包括管理员和普通用户模块。两种普通用户模块的功能基本是相同的,普通用户模块比管理员多了一个注册功能,所以以普通用户模块的结构图为例进行分析,如下图:
图3.2普通用户模块结构图
(2)各个结构的具体业务逻辑
a.查询普通用户信息:设计最基础的查询功能,主要就是根据普通用户id查询普通用户信息。该功能主要体现在管理员用户信息查询和普通用户自己查询信息的时候。
b.修改普通用户信息:普通用户可以根据情况,对自己的基本信息进行修改,包括名字修改、密码修改、头像修改等操作。
c.增加普通用户:普通用户可以通过注册来获得账号
d.删除普通用户信息:管理员没有权利进行删除信息的删除,最多把普通用户加入到黑名单中,禁止普通用户进行登录操作。
3.1.3 健身资讯模块设计
(1)健身资讯模块结构图
居家健身锻炼APP需要存储普通用户的居家健身锻炼申请数据项,所以需要专门设计一个健身资讯管理模块,具体的结构图如下:
图3.3健身资讯模块结构图
(2)各个结构的具体业务逻辑
a.查询健身资讯:设计最基础的查询功能,主要就是根据普通用户id查询该普通用户下的所有健身资讯信息。
b.重置健身资讯:普通用户可以根据情况,重置健身资讯。
c.删除健身资讯:管理员进行删除健身资讯信息。
3.1.4健身课程模块设计
(1)健身课程模块结构图
居家健身锻炼APP是中需要存储不少健身课程信息,普通用户可以添加,修改,删除健身课程,管理员可以审核通过等,具体的结构图如下:
图3.4健身课程模块结构图
(2)各个结构的具体业务逻辑
a.添加健身课程:普通用户可以对健身课程进行添加。
b.修改健身课程:普通用户可以对健身课程进行修改。
c.删除健身课程:普通用户可以对健身课程进行删除。
d.审核健身课程:管理员可以搜索健身课程信息,进行健身课程审核。
3.2数据库设计
3.2.1数据库概要设计
居家健身锻炼APP根据上面的E-R实体图,就再找到实体与实体之间的关系来,制作总的E-R图,实体之间的关系一共有4种,也就是一对一,多对一,一对多和多对多,总的E-R图是设计数据库表格的依据,如下图是APP的总E-R图。
图3.5系统总体E-R图
3.2.2数据库逻辑设计
根据上面的E-R图,继而设计数据库表格,注意的是数据库表格遵从三范式标准,这样以后操作也会更加简单一些。
系统的各个数据库表如下。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | course_level_id | int | 10 | 0 | N | Y | 课程等级ID | |
2 | course_level | varchar | 64 | 0 | Y | N | 课程等级 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | course_type_id | int | 10 | 0 | N | Y | 课程类型ID | |
2 | course_type | varchar | 64 | 0 | Y | N | 课程类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | fitness_courses_id | int | 10 | 0 | N | Y | 健身课程ID | |
2 | merchant_users | int | 10 | 0 | Y | N | 0 | 商家用户 |
3 | merchant_name | varchar | 64 | 0 | Y | N | 商家名称 | |
4 | course_name | varchar | 64 | 0 | Y | N | 课程名称 | |
5 | course_type | varchar | 64 | 0 | Y | N | 课程类型 | |
6 | course_level | varchar | 64 | 0 | Y | N | 课程等级 | |
7 | course_cover | varchar | 255 | 0 | Y | N | 课程封面 | |
8 | course_video | varchar | 255 | 0 | Y | N | 课程视频 | |
9 | dietary_planning | text | 65535 | 0 | Y | N | 饮食规划 | |
10 | course_explanation | text | 65535 | 0 | Y | N | 课程讲解 | |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | fitness_plan_id | int | 10 | 0 | N | Y | 健身计划ID | |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | fitness_plan | text | 65535 | 0 | Y | N | 健身计划 | |
5 | dietary_planning | text | 65535 | 0 | Y | N | 饮食规划 | |
6 | remarks | text | 65535 | 0 | Y | N | 备注信息 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | merchant_users_id | int | 10 | 0 | N | Y | 商家用户ID | |
2 | merchant_name | varchar | 64 | 0 | Y | N | 商家名称 | |
3 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
4 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_data_id | int | 10 | 0 | N | Y | 用户数据ID | |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | user_age | int | 10 | 0 | Y | N | 0 | 用户年龄 |
6 | user_height | varchar | 64 | 0 | Y | N | 用户身高 | |
7 | user_weight | varchar | 64 | 0 | Y | N | 用户体重 | |
8 | exercise_time | varchar | 64 | 0 | Y | N | 运动时间 | |
9 | sports_type | varchar | 64 | 0 | Y | N | 运动类型 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
4系统详细实现
居家健身锻炼APP的详细设计与实现主要是根据前面的居家健身锻炼APP的需求分析和居家健身锻炼APP的总体设计来设计页面并实现业务逻辑。主要从居家健身锻炼APP界面实现、业务逻辑实现这两部分进行介绍。
4.1普通用户功能实现
4.1.1普通用户功能实现
普通用户进入首页之后会显示如下的一个窗口。系统以上下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,再往下是各种各样的功能模块信息,其主界面展示如下图4.1所示。
如下图:
图4.1居家健身锻炼APP主界面
4.1.2普通用户注册功能实现
当普通用户点击右上角的“注册”的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号+选择身份登信息后,后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可注册成功。前台注册的部分包括了系统用户的注册,其用注册界面展示如下图4.2所示。
图4.2居家健身锻炼APP用户注册界面
普通用户注册的关键代码如下。
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "普通用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
4.1.3 登录功能实现
居家健身锻炼APP中的前台上注册后的是可以通过自己的账户名和密码进行登录的,当输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的普通用户信息是否一致,只有在一致后将会登录成功并自动跳转到居家健身锻炼APP的首页中;否则将会提示相应错误信息,普通用户登录界面如下图4.3所示。
图4.3居家健身锻炼APP登录界面
普通用户登录的关键代码如下。
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
4.1.4用户数据功能实现
普通用户可以在用户数据界面上传身高、体重、年龄等信息,新增用户数据,以便开展居家健身锻炼活动,界面如图4.4所示:
图4.4居家健身锻炼APP用户个人信息界面
4.1.5健身资讯功能实现
普通用户进登录后,点击进入健身资讯详细界面,可以查看资讯内容,对内容点赞、收藏、评论,具体的实现界面如下图4.5所示:
图4.5健身资讯界面
商家用户模块:
4.1.6健身课程功能实现
当普通用户点击“健身课程”界面时候,可以添加新的健身课程信息,填写课程名称、类型、等级,上传课程视频等信息。具体的实现界面如下图4.6所示:
图4.6健身课程界面
4.2管理员功能实现
4.2.1管理员登录功能实现
居家健身锻炼APP中的后台的管理员是可以通过自己的账户名和密码进行登录的,当输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的普通用户信息是否一致,只有在一致后将会登录成功并自动跳转到居家健身锻炼APP的首页中;否则将会提示相应错误信息,普通用户登录界面如下图4.7所示。
![](https://i-blog.csdnimg.cn/direct/34a1398819104ea2b612d4202650d54b.png)
图4.7管理员登录界面
4.2.2系统用户功能实现
管理员在系统用户模块,可以对普通用户信息进行管理,系统用户模块由管理员,系统用两部分组成组成,这里以系统用户为例,具体的实现界面如下图:
![](https://i-blog.csdnimg.cn/direct/71567b3a4f12403b8ff7bfd0db0de4b7.png)
图4.8系统用户界面
4.2.3健身课程管理功能实现
管理员点击“健身课程管理”,管理员可以查看健身课程管理列表,也可以通过填写课程名称、等级、类型、饮食规划等信息添加健身课程项目,具体的实现界面如下图:
![](https://i-blog.csdnimg.cn/direct/5646ecef902748749edb85e2bb6b6fb8.png)
图4.9健身课程管理界面
4.2.4课程类型管理功能实现
管理员在“课程类型管理”界面可以查看课程类型管理列表,也可以添加课程类型信息,具体的实现界面如下图:
![](https://i-blog.csdnimg.cn/direct/d1ae771e977b4dca805d42e1b57b4da1.png)
图4.10课程类型管理界面
4.2.5课程等级管理功能实现
管理员在“课程等级管理”界面可以查看到课程等级管理列表,具体的实现界面如下图:
![](https://i-blog.csdnimg.cn/direct/8048956aa8864efd8e83124a85be1389.png)
图4.11课程等级管理界面
5系统测试
5.1 系统测试目的
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
5.2 系统可用性测试
APP的可用性测试是测试APP最基本的功能,比如鼠标点击是否可用,页面跳转是否正常等。下面是具体的测试结果。
表5-1居家健身锻炼APP可用性测试
测试项 | 测试人员评价 |
窗口移动、改变大小、关闭等操作是否正常 | 好 |
操作模块是否友好 | 好 |
模块和提示内容等文字描述是否正确 | 好 |
模块布局是否合理、协调 | 好 |
模块的状态是否正确(对选中项能否发生对应切换) | 好 |
键盘操作是否支持 | 好 |
所需的数据项是否正确显示 | 好 |
操作流程是否合理 | 好 |
是否提供帮助信息 | 好 |
5.3 系统典型测试用例
对APP的主要页面和功能点的测试用例如下:
(1) 普通用户登陆APP测试用例如表 5-2 所示。
表5-2普通用户登录APP测试用例
用例名称 | 普通用户登录APP |
目的 | 测试普通用户通过正确的普通用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的普通用户名和密码 |
预期结果 | 普通用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
(2)通知公告信息测试用例如表 5-3 所示
表5-3 通知公告测试用例
用例名称 | 通知公告 |
目的 | 测试通知公告功能 |
前提 | 无 |
测试流程 | 打开通知公告界面 |
预期结果 | 可以进行查看通知公告详细 |
实际结果 | 实际结果与预期结果一致 |
(3)健身课程测试用例如表 5-4所示
表5-4健身课程测试用例
用例名称 | 健身课程 |
目的 | 测试健身课程模块功能 |
前提 | 无 |
测试流程 | 普通用户在健身课程界面点赞、评论。 |
预期结果 | 健身课程提交以后,可以查看到自己的课程信息 |
实际结果 | 实际结果与预期结果一致 |
(4)课程类型添加信息测试用例如表 5-5 所示
表5-5 课程类型添加测试用例
用例名称 | 课程类型添加 |
目的 | 测试课程类型添加功能 |
前提 | 无 |
测试流程 | 管理员点击课程类型添加,输入课程类型信息 |
预期结果 | 提交课程类型后可以查看课程类型信息,普通用户可以查看个人课程类型信息 |
实际结果 | 实际结果与预期结果一致 |
5.4 测试总结
通过系统的调试,能够检测项目的稳定性,为项目正式运行、稳定运行提供了可预测性的维护备案。能够帮助普通用户熟悉整个项目,并对项目可能出现的错误有所了解。本文提供了部分调试用例及调试日志,可以帮助普通用户解决简单的错误问题,也加深了开发者对于此框架下的项目编写的了解度,为后期开发者顺利完成项目、发布项目提供了非常大的帮助。
总结
本次设计中,我还学会了很多,例如良好的编程思想和完善的规划思想。在着手编程之前需要罗列出程序框架的大概,脑海中构建出程序的主题框架。做好这一步我们才能胸有成竹的经行开发项目。当设计框架了熟于心之后,需要思考本次编程所需的主要知识点和技术点,并充分学习。如此一来项目的开发才能循序渐进、如丝般顺滑,长久以往就能养成良好的开发习惯。一个程序好不好还要看出的bug多不多,如果在项目完成前做好bug的查验与预防可能发生的事故才能保证程序的稳定长久性运行。如果项目在完工后出现各种问题自己,那么在进入社会后,不仅会给公司团队带来麻烦和增加不必要的工作,还会导致客户流失,公司对自己的评价下降。
在本次项目中我也暴露了诸多问题。对于Java的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。
参考文献
[1]申皓月. 健身类APP居家体育锻炼实施方法 [J]. 新体育, 2024, (08): 7-9.
[2]戴建成,王华,范玉婷. 基于SpringBoot+VUE的高校廉政档案管理系统设计与实现 [J]. 产业与科技论坛, 2023, 22 (21): 58-60.
[3]徐剑,王少杰. 基于SpringBoot的配电房监控系统设计[J]. 信息与电脑(理论版), 2023, 35 (20): 120-123.
[4]屈晓,周挺,吴楷,等. 一种SpringBoot基于嵌入式设备的辅助医疗App的设计与实现 [J]. 电脑知识与技术, 2023, 19 (29): 55-58+66.
[5]黄永芳,郭永刚,李峰. 基于SpringBoot的藏东南滑坡灾害管理系统设计与实现 [J]. 科学技术创新, 2023, (24): 100-103.
[6]谢欣,赵家琪,杨卫明. 基于SpringBoot的中国传统节日推广平台设计与实现 [J]. 信息与电脑(理论版), 2023, 35 (19): 91-94.
[7]史倩玉. 健美健身在全民健身中的价值体现及开发利用分析 [J]. 文体用品与科技, 2023,(17): 28-30.
[8]钟军,闫语,徐剑. “刘畊宏热”现象对青少年居家健身的影响及启示 [J]. 体育科技文献通报, 2023, 31 (07): 138-140.
[9]刘平,苑廷刚,程泓人,等. 新冠肺炎下居家健身锻炼的科学化探索 [J]. 体育科技文献通报, 2021, 29 (11): 22-25.
[10]陈宇,祝家东,王梦囡. 基于物联网技术的健身运动监测系统研究 [J]. 当代体育科技, 2021, 11 (21): 232-234.
[11]周德超,周长根. 有氧运动强度下不同运动方式的能量消耗及健身锻炼效果评价 [J].安徽师范大学学报(自然科学版), 2021, 44 (02): 197-204.
[12]陆奕阳,李小荣. 试论健身运动系统性原则的运用 [J]. 江西电力职业技术学院学报, 2020, 33 (04): 146-147.
[13]冯嘉. 健康信息传播对大学生健身锻炼行为倾向的影响调查 [J]. 新闻研究导刊, 2019, 10 (23): 215-216.
[14]顾志勇. 老年人功能康复训练与健身锻炼过程中的常见误区及改进措施 [J]. 中国老年学杂志, 2018, 38 (22): 5629-5631.
[15]黄东晋,姚院秋,丁友东,等. 基于Kinect的虚拟健身跑锻炼系统 [J]. 图学学报, 2017, 38 (05): 789-795.
[16]李浩,袁晓玲. 公共健身服务供给、生态环境质量对城市居民健身行为影响的实证分析——基于CFPS数据 [J]. 天津体育学院学报, 2017, 32 (04): 332-337. DOI:10.13297/j.cnki.issn1005-0000.2017.04.009.
[17]陈磊. 浅谈健身与健美运动对大学生的健康作用 [J]. 科技视界, 2016, (18): 148+169. DOI:10.19694/j.cnki.issn2095-2457.2016.18.110.
[18] Patents; Researchers Submit Patent Application, "Exercise System for Physical Rehabilitation and Fitness", for Approval [J]. Computer Weekly News, 2014,
[19]靳超丽. 对晋中市榆次区中老年人健身锻炼“科学性”的调查 [J]. 体育研究与教育, 2013, 28 (S2): 41-43. DOI:10.16207/j.cnki.2095-235x.2013.s2.022.
[20] Anonymous . PCE Health and Fitness; Exercise is Medicine(R) Partners With IHP Online System for Physicians to Prescribe Exercise [J]. Computers, Networks & Communications, 2011,
致 谢
至此论文结束,感谢您的阅读。在此我要感谢我的导师,虽然我在实习期间很忙,论文撰写总是停停改改,但是导师依然十分负责,时不时的询问我的任务进展情况,跟进我的论文进度。虽然我在实习期间很忙,以至于很晚才开始进行论文撰写和编写程序的工作,但是在指导老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识,和经验,这些知识和经验令我受益匪浅。也从导师身上看到了自己的不足,不论是在即使层面上还是在对待工作的态度上,倒数如同明镜一般照出了我的缺点我的不足。此外,我还要感谢在我实习期间在论文和程序上帮助过我的同学和社会人士,此前我对于框架及JQuery和BootSatrp方面的一些知识还不了解,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测。没有他们我是不能顺利完成本次毕业设计的。至此,我的毕业设计就花上了一个圆满的句号了。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~