# sport **Repository Path**: sodacat/sport ## Basic Information - **Project Name**: sport - **Description**: 安卓APP开发:运动ap demo - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-06-24 - **Last Updated**: 2023-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 手机软件开发大作业 **班级: 手机软件开发 20 级 4 班** **项目: Maintain健身打卡APP** **小组成员** Ping Ten Ray Mody ### **1 APP** 简介 **1. 1 APP** 介绍 《Maintain健身打卡》是一款功能丰富的健身打卡应用。该应用旨在帮助用 户记录健身进程、管理个人健康数据并提供健身指导。下面是该应用实现的功能 以及后续待扩展完善的方向的介绍: - **个人主页** 用户可以在个人主页上创建个人笔记并收藏喜欢的健身笔记。通过个人主页, 用户可以方便地管理和查看个人的健身笔记,并随时回顾和分享自己的健身心得。 后续的完善方向是实现视频内容的收藏,并将收藏的内容添加到个人主页,以进 一步丰富用户的个人健身记录。 - **个人工具** 该应用提供了一系列个人工具,包括BMI计算器、个人数据管理和健身计划。 用户可以使用BMI计算器来计算自己的身体质量指数,从而了解自己的身体健 康状况。通过个人数据管理,用户可以记录和跟踪自己的健身数据,例如体重、 身高、运动时间等。而健身计划功能可以帮助用户制定个性化的健身计划,并跟 踪计划的完成情况。后续的完善方向是开发更加智能化的健身计划算法,为用户 提供定制化的健身计划和个人指导 - **食谱相册** 该应用提供了食谱相册功能,用户可以浏览各种健康食谱,并获取健康饮食 的建议和灵感。这有助于用户在健身过程中获得均衡的饮食搭配和营养补充。后 续的完善方向是进一步扩展食谱相册,提供更多种类的食谱和定制化的饮食推荐。 - **视频学习界面** 用户可以在视频学习界面上浏览和观看健身相关的教学视频。这些视频提供 了丰富的健身知识和技巧,帮助用户学习正确的训练方法和姿势。后续的完善方 向是实现视频内容的收藏功能,并将收藏的视频内容添加到个人主页,使用户能 够方便地保存和回顾自己喜欢的健身视频。 - **侧边栏导航** 该应用提供了侧边栏导航功能,用户可以通过侧边栏切换不同的页面和功能 模块,提供更加便捷的导航体验。 《Maintain健身打卡》APP在当前版本已经实现了一系列功能,但仍有一些 后续待扩展和完善的方向,以进一步提升功能的丰富性。以下是具体的待扩展完 善的方向: - 收藏视频内容并添加到个人主页 目前应用中的视频学习界面提供了丰富的健身教学视频,但用户还无法将自 己喜欢的视频收藏并添加到个人主页。后续的改进中,可以引入收藏功能,使用 户能够方便地收藏喜欢的视频内容,并在个人主页上展示收藏的视频列表。这样, 用户可以随时回顾和学习自己收藏的视频内容。 - 健身计划算法定制 个人工具中的健身计划功能可以帮助用户制定个性化的健身计划。然而,当 前版本的健身计划是基于一般的健身原则和用户的基本信息生成的。为了提供更 加个性化和精准的健身计划,后续的发展方向是开发智能化的健身计划算法。这 样,应用可以根据用户的具体目标、身体状况和健身历史,生成更加符合用户需 求的定制化健身计划。 - 社交账号联动分享功能 为了增加用户之间的互动和社交体验,可以考虑将应用与社交账号(如微信、 微博等)进行联动。这样,用户可以方便地分享自己的健身进程、成就和笔记等 内容到社交平台,与他人进行交流和分享。这不仅可以增加用户的动力和参与度, 还可以建立健身社群,促进用户之间的互动和交流。 通过以上的完善方向,我们将进一步增强《Maintain健身打卡》应用的功能。 这些改进将使用户能够更加方便地收藏和管理视频内容,获得个性化的健身计划, 并与他人进行健身成果和心得的分享。 ### **2** 技术与数据说明 **2. 1** 主要使用技术 在开发该健身软件项目中,我们聚焦于界面设计和功能实现,并采用了一系 列 关 键 的 技 术 和 方 法 来 支 持 项 目 的 开 发 过 程。以下是我们在项目中主要使用的技术和方法的概述: - **SQLite数据库**:为了存储用户账户信息和课程数据,我们使用了SQLite数据 库。SQLite是一种轻量级的关系型数据库管理系统,适用于移动应用程序开 发。我们使用自定义的MySQLitOpenHelper类来创建数据库、定义表结构和 执行数据操作,实现对用户账户和课程数据的存储和查询。 - **多线程编程**:为了提高应用的响应性和用户体验,我们使用多线程编程技术。 通过在后台线程执行耗时的操作,如计时器的功能实现。我们确保主线程不 被阻塞,从而保持应用的流畅性。 - **适配器模式**:为了展示课程列表等数据,我们使用了适配器模式。适配器作 为数据源与界面之间的桥梁,将数据与界面进行绑定,实现数据的展示和交 互。在我们的项目中,例如在SlideshowFragment中,我们使用自定义的适 配器将数据库中的数据与GridView进行绑定,展示课程列表。 - **Android开发平台**:我们的健身软件是基于Android平台进行开发的,利用了 Android提供的丰富功能和库来构建用户友好的界面和实现各种功能。 - **XML布局**:我们使用XML布局文件来定义应用程序的界面布局。通过使用 Android的布局管理器和UI组件,我们能够创建出各种界面元素,实现丰富 多样的用户界面。 通过采用Android开发平台、SQLite数据库、多线程编程、XML布局和适配 器模式等关键技术,我们成功地实现了健身软件的界面设计和功能实现。这些技 术和方法在提升用户体验、数据存储和展示方面起到了重要作用。我们注重在项 目开发中选择合适的技术和方法,以满足健身软件的需求并提供良好的用户体验。 我们也意识到,持续学习和探索新的技术和框架对于项目的进一步改进和扩展至 关重要。 以上是我们在健身软件项目中主要使用的技术和方法的介绍。通过这些技术 的运用,我们能够为用户提供功能丰富、稳定可靠的健身应用。 **2. 2** 数据说明 **2. 2. 1** 数据库名称 mySport.db 2. 2. 2 表结构 - **Account表** 字段名 数据类型 说明 ``` id INTEGER 主键,自增 name TEXT 账户名 pwd TEXT 密码 email TEXT 邮箱 sex TEXT 性别 pic TEXT 头像 day INTEGER 打卡天数 quote TEXT 座右铭 follow INTEGER 关注数 fans INTEGER 粉丝数 collect TEXT 收藏数 ``` 该表用于存储用户的账户信息,每个用户在数据库中对应一条记录。每个记录包含以下字段: ``` id:整型,主键,自增长,用于唯一标识每个账户。 name:文本型,存储账户名。 pwd:文本型,存储密码。 email:文本型,存储邮箱。 sex:文本型,存储性别。 ``` - **AllCourses表** 列名 类型 描述 ``` title TEXT 视频标题 isLike INTEGER 是否喜欢 img TEXT 视频图片名称 ``` AllCourses 表存储了幻灯片展示界面 (SlideshowFragment) 中所使用的所有 视频的相关信息。每一行数据代表一个视频,其中包含视频的标题 (title)、是否 喜欢 (isLike) 以及视频图片的名称 (img)。通过查询 AllCourses表,应用能够获 取视频列表,并将其展示在幻灯片展示界面中供用户浏览。 **2. 2. 3 数据库操作** MySQLitOpenHelper类提供了以下数据库操作方法: ``` insertData(Accountaccount):向Account表中插入一条记录。 deleteByName(Accountaccount):根据账户名和密码删除Account表中的记录。 selectByName(Accountaccount):根据账户名查询Account表中的记录。 ``` updataData(Accountaccount):根据账户名更新Account表中的记录。 这些操作方法提供了对数据库的增加、删除、查询和更新功能,使得健身软 件能够管理和处理用户的账户信息。 此外,在MySQLitOpenHelper的构造函数中,指定了版本号为 1 ,表示当前 数据库的版本。关于数据库的创建和升级,在onCreate和onUpgrade方法中可 以实现数据库的创建和升级逻辑。 ### **3** 系统设计与实现 **3. 1** 项目结构介绍: 在该手机APP软件项目中,主要的项目结构如下: 1. **android.os.Bundle**: 这是Android框架提供的一个类,用于存储和传递数据。 在我们的项目中,它被广泛用于在不同的组件(如Activity和Fragment)之 间传递数据和保存状态。 2. **android.content.Intent**: 这是Android框架提供的一个类,用于在不同的组件 之间进行通信和启动其他组件。我们使用Intent来启动不同的屏幕和功能模 块,并在它们之间传递数据。 3. **androidx.fragment.app.FragmentManager 和 androidx.fragment.app.Fragment Transaction**: 这些类是AndroidJetpack库中的一部分,用于管理和操作 Fragment。Fragment是Android中可重用的UI组件,我们可以将其看作是一 个模块化的屏幕部分。通过使用FragmentManager和FragmentTransaction, 我们可以在Activity中添加、替换和移除不同的Fragment,从而实现屏幕的 切换和模块化。 4. **com.sport.pojo.Account**: 这是我们自定义的一个类,用于表示用户账户信息。 它可能包含用户的姓名、年龄、性别、健身目标等信息。在健身软件中,用 户账户信息对于个性化的健身计划和数据跟踪非常重要。 5. **com.sport.pojo.AllCourses**: 这是我们自定义的一个类,用于表示健身软件中 的所有课程信息。它可能包含课程的名称、描述、视频链接等。这些课程信 息可以用于展示给用户,并在用户选择课程时进行相关操作。 6. **com.sport.pojo.MySQLitOpenHelper**: 这是我们自定义的一个类,继承自 SQLiteOpenHelper,用于管理我们的数据库。数据库在健身软件中用于存储 用户账户信息、课程信息等数据。MySQLitOpenHelper类负责创建和更新数 据库,以及提供对数据库的读写操作。 除了上述常用的包和类之外,我们还使用了其他的Android框架和库,如 android.database.Cursor和android.database.sqlite.SQLiteDatabase用于在数据库中 进行查询和操作,java.util.ArrayList用于存储动态数组等。 这些不同的包和类相互协作,构成了我们健身软件的项目结构。它们提供了 管理界面、处理数据、数据库交互等核心功能。通过合理的架构和设计,我们能 够实现用户账户管理、课程展示和数据库操作等功能,从而为用户提供一个完整 的健身体验。 **3. 2** 核心类的实现说明 本部分以“视频学习”页面为例,简要说明了涉及该页面的三个文 件:”SlideshowFragment.java”,”fragment_slideshow.xml”,”recycleritemlike.xml”的 内容及其作用。 ![输入图片说明](image/image1.jpg) ![输入图片说明](image/image2.jpg) **1. SlideshowFragment.java:** - 该类是一个Fragment,用于展示视频学习页面的内容。 - 在onCreateView方法中,加载布局文件"fragment_slideshow.xml",初始化控 件并进行数据库查询。 - db_query方法用于获取MySport.db数据库中AllCourses表的所有内容,并将 其展示在fragment_slideshow.xml上。通过执行SQL查询,将查询结果存储 在coursesList中,然后使用适配器adapter将数据设置到GridView(gv)中, 最 后 通 过 gv.setAdapter((ListAdapter) adapter) 将 内 容 展 示 到 fragment_slideshow.xml上。 - MyAdapter的内容直接定义在SlideshowFragment.java文件中,而没有另外创 建一个独立的文件。这是因为适配器的逻辑相对简单,并没有特别复杂的定 制需求,直接在SlideshowFragment.java中定义适配器是一种简化的实现方式。 - MyAdapter中的getView方法用于设置每个视频项的布局和数据。 - 通过调用getimages方法,根据图片名称获取对应的资源ID。 - 通过coursesList和适配器将数据显示在GridView中。 **2. recycler_item_like.xml:** - 该布局文件用于展示视频学习页面中每个视频项的样式。 - 包含一个垂直方向的LinearLayout,内部包含一个ImageView和一个水平方 向的LinearLayout,包含一个TextView和一个Button。 - ImageView用于显示视频封面图片,TextView显示视频标题,Button用于表 示用户喜欢该视频。 **3. fragment_slideshow.xml:** - 该布局文件是"SlideshowFragment"的根布局,用于展示视频学习页面的整体 结构。 - 包含一个垂直方向的LinearLayout,作为页面的主容器。 - 内部包含一个垂直方向的LinearLayout,用于展示视频学习页面中的流图部 分。 - 在流图部分中,使用了一个Fragment,即"BottomFragment",用于展示底部 的内容。 综上所述,"视频学习"模块中的核心类包括"SlideshowFragment.java"、 "recycler_item_like.xml" 和 "fragment_slideshow.xml" 。 其 中 , "SlideshowFragment.java"作为Fragment类负责管理视频学习页面的逻辑和数据 展示 ,"recycler_item_like.xml"用于 定义 每个视 频项 的样 式,而 "fragment_slideshow.xml"则是整个视频学习页面的布局文件。 **3. 3** 运行结果说明 主要运行截图如下: **1. 用户登录** ![输入图片说明](image/image3.jpg) **2. 用户注册** ![输入图片说明](image/image4.jpg) **3 个人主页** ![输入图片说明](image/image5.jpg) **4. 个人主页 2** ![输入图片说明](image/image6.jpg) **5. 侧边栏** ![输入图片说明](image/image7.jpg) **6. 食谱相册** ![输入图片说明](image/image8.jpg) **7. 视频学习** ![输入图片说明](image/image9.jpg) **8. 工具界面** ![输入图片说明](image/image10.jpg) **9. BMI计算界面** ![输入图片说明](image/image11.jpg) **10. BMI计算演示** ![输入图片说明](image/image12.jpg) **11. 计划界面(计时)** ![输入图片说明](image/image13.jpg) **12. 计划选择** ![输入图片说明](image/image14.jpg) **13. 训练累计计时** ![输入图片说明](image/image15.jpg) #### 参与贡献 成员 1 Ping 25 % 负责内容:需求分析文档撰写、小组任务布置、layout界面设计与制作、PPT制作 成员 2 Ten 25 % 负责内容:需求分析文档撰写、layout界面设计与制作、java代码功能撰写、PPT制作 成员 3 Ray 25 % 负责内容:java代码功能撰写、数据库操作、PPT制作 成员 4 Mody 25 % 负责内容:需求分析文档撰写、实验内容整理、报告撰写、PPT制作、参与代码 调试