健康管理app安卓
- 系统的需求分析
1.1系统目标
随着科技的快速发展和人们生活水平的不断提高,健康问题日益受到人们的关注。现代生活节奏快、工作压力大,导致许多人在饮食、运动等方面难以做到科学合理,从而引发各种健康问题[1][2]。因此,开发一款能够帮助用户进行健康管理的App显得尤为重要。基于安卓Android平台的个人健康管理系统App,旨在通过个性化的健康管理功能,为用户提供便捷、高效的健康管理服务,帮助用户更好地了解和管理自己的健康状况,实现健康目标。
1.2功能需求
运动记步功能:利用手机传感器或外部设备实时监测并记录步数,提供历史数据查询以帮助用户了解运动习惯;
健康档案功能:为用户建立包含体重、心率、卡路里等信息的个人健康档案,用户可以随时查看和更新;
饮食记录功能:让用户记录饮食情况,App计算热量摄入并与健康目标对比;同时提供食物热量表查询;
- 系统的概要设计
该软件是一款是基于Android开发的手机应用,简单实用,易于上手。
2.1 运行环境
客户端操作系统:Android 8.0.0
客户端开发工具:Android Studio 3.1.4
2.2 数据库表设计
表1-1 用户表(user)
|
字段 |
类型 |
描述 |
默认值 |
主键/外键 |
|
id |
INT |
用户id |
自增长 |
主键 |
|
account |
String |
用户账号 |
null |
/ |
|
password |
String |
用户密码 |
null |
/ |
|
name |
String |
用户名 |
null |
/ |
|
sex |
String |
用户性别 |
null |
/ |
|
phone |
String |
用户电话 |
null |
/ |
|
address |
String |
用户地址 |
null |
/ |
|
photo |
LONGBLOB |
用户头像 |
默认头像.jpg |
/ |
表1-2 菜单表(menu)
|
字段 |
类型 |
描述 |
默认值 |
主键/外键 |
|
id |
INT |
菜单项id |
自增长 |
主键 |
|
typeId |
INT |
菜单类型id |
null |
外键 |
|
title |
String |
菜单项标题 |
null |
/ |
|
img |
LONGBLOB |
菜单项图片 |
默认图片.jpg |
/ |
|
url |
String |
菜单项链接 |
null |
/ |
表1-3 食物能量表(food_energy)
|
字段 |
类型 |
描述 |
默认值 |
主键/外键 |
|
id |
INT |
食物id |
自增长 |
主键 |
|
typeId |
INT |
食物类型id |
null |
外键 |
|
food |
String |
食物名称 |
null |
/ |
|
quantity |
real |
食物数量 |
0 |
/ |
|
heat |
real |
食物热量 |
0 |
/ |
|
fat |
real |
脂肪含量 |
0 |
/ |
|
protein |
real |
蛋白质含量 |
0 |
/ |
|
carbon |
real |
碳水含量 |
0 |
/ |
|
count |
INT |
食物计数 |
0 |
/ |
表1-4 体重记录表(weight_record)
|
字段 |
类型 |
描述 |
默认值 |
主键/外键 |
|
id |
INT |
体重记录id |
自增长 |
主键 |
|
userId |
INT |
用户id |
null |
外键 |
|
weight |
real |
体重数值 |
0 |
/ |
|
date |
date |
记录日期 |
CURRENT_DATE |
/ |
|
time |
time |
记录时间 |
CURRENT_TIME |
/ |
表1-5 饮食记录表(eat_record)
|
字段 |
类型 |
描述 |
默认值 |
主键/外键 |
|
id |
INT |
饮食记录id |
自增长 |
主键 |
|
userId |
INT |
用户id |
null |
外键 |
|
time |
time |
饮食记录时间 |
CURRENT_TIME |
/ |
|
date |
date |
饮食记录日期 |
CURRENT_DATE |
/ |
表1-6饮食记录详情表(eat_record_details)
|
字段 |
类型 |
描述 |
默认值 |
主键/外键 |
|
id |
INT |
饮食记录详情id |
自增长 |
主键 |
|
eatRecordId |
INT |
饮食记录id |
null |
外键 |
|
foodEnergyId |
INT |
食物id |
null |
外键 |
|
字段 |
类型 |
描述 |
默认值 |
主键/外键 |
|
id |
INT |
健康记录id |
自增长 |
主键 |
|
userId |
INT |
用户id |
null |
外键 |
|
kcal |
real |
卡路里销耗 |
0 |
/ |
|
weight |
real |
体重 |
0 |
/ |
|
heartRate |
real |
心率 |
0 |
/ |
|
date |
date |
记录日期 |
CURRENT_DATE |
/ |
|
time |
time |
记录时间 |
CURRENT_TIME |
/ |
表1-7健康记录详情表(health_record)
表1-8运动记录详情表(sport_record)
|
字段 |
类型 |
描述 |
默认值 |
主键/外键 |
|
id |
INT |
运动记录id |
自增长 |
主键 |
|
userId |
INT |
用户id |
null |
外键 |
|
step |
INT |
运动步数 |
0 |
/ |
|
remark |
String |
运动备注 |
null |
/ |
|
date |
date |
运动日期 |
CURRENT_DATE |
/ |
|
time |
time |
运动时间 |
CURRENT_TIME |
/ |
- 设计与实现部分
3.1健康管理模块
健康管理系统的任务管理主要包括:
1. 运动记录管理:记录每日步数、运动距离和消耗的卡路里
2. 饮食记录管理:记录每日饮食情况,包括食物名称、卡路里、用餐类型(早餐/午餐/晚餐)
3.. 健康档案管理:维护用户的基本健康信息
具体可见图3-1。
图3-1 健康管理模块流程图
核心代码
下面以运动管理模块为例。运动管理模块主要用于管理用户的运动记录数据,包括新增、读取、删除等操作。该模块的核心功能是将运动记录数据保存到本地数据库(SQLite),并提供对数据的读取和管理功能。以下是运动管理模块核心代码的实现步骤。
新增运动记录:
首先创建一个 ExerciseRecord 对象,并使用 set() 方法将步数、距离、卡路里等信息设置到对象中:
ExerciseRecord record = new ExerciseRecord();
record.setUserId(getCurrentUserId());
......
读取运动记录数据,从数据库中查询当前用户的运动记录,并遍历结果集进行处理:
String userId = getCurrentUserId();
Cursor cursor = db.query("exercise", null, "user_id=?", new String[]{userId}, null, null, "record_date DESC");
if (cursor.moveToFirst()) {
do {
int stepCount = cursor.getInt(cursor.getColumnIndex("step_count"));
......
// 处理查询到的运动记录数据
} while (cursor.moveToNext());
}
cursor.close();
删除运动记录数据,通过指定记录的 ID,从数据库中删除对应的运动记录:
db.delete("exercise", "id=?", new String[]{String.valueOf(recordId)});
数据库帮助类的实现:
|
public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "health_management.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建用户表 ...... // 创建运动记录表 db.execSQL("CREATE TABLE exercise (" + "id INTEGER PRIMARY KEY AUTOINCREMENT," + "user_id INTEGER," + "step_count INTEGER," + "distance REAL," + "calories REAL," + "record_date DATE," + "FOREIGN KEY(user_id) REFERENCES users(id))"); // 其他表的创建... } } |
下面来展示运行截图:
1.添加新的食物及其热量值
管理员在热量管理界面点击“添加”按钮,如图3-2,进入添加界面,填写新的食物名称和对应的热量值以及其他数据,如图3-3,然后点击“确定”按钮。系统在热量管理界面的列表中显示新增的食物热量信息,如图3-4,并将新添加的食物热量信息存储到数据库中,以供后续的查询和管理使用。
图3-2 热量管理界面 图3-3 填写数据 图3-4 成功添加
2.修改现有食物的热量数据
管理员在热量管理界面找到需要修改的食物热量信息,点击对应的食物出现菜单,如图3-5,再次点击编辑按钮。在编辑界面,管理员可以更新食物的名称和热量值,如图3-6,修改完成后点击“确定”按钮。系统应更新数据库中对应食物的热量信息,如图3-7,并在热量管理界面的列表中显示最新的食物热量数据确保热量信息的准确性和时效性。
图3-5 菜单界面 图3-6 修改热量 图3-7 修改成功
3. 删除不再适用的食物热量记录
当某些食物不再适用或需要从系统中移除时,管理员在热量管理界面找到对应的热量记录,点击“删除”按钮,系统将从数据库中删除该食物的热量记录,如图3-8并在热量管理界面的列表中移除相应的条目,如图3-9,确保热量信息的整洁和准确性。
图3-8 数据库食物信息更新
图3-9 删除成功
4.饮食记录功能
用户在主界面点击“饮食记录”功能模块,进入饮食记录界面。用户可以添加每餐的饮食情况,从已有的选项中选取,完成后点击右上角“√”,如图3-10,在饮食记录界面显示用户的饮食情况和已摄入的热量,如图3-11,点击右上角进行饮食记录分析,分析结果会展示用户的饮食结构,如图3-12所示:
图3-10 记录饮食情况 图3-11 查看饮食情况 图3-12分析饮食情况
5. 运动记录功能:
用户点击“运动”功能模块,进入记录步数的页面,如图3-13和3-14所示,不仅可以进行实时记录步数,还可以进行打卡,记录步数记录。
图3-13 记录步数情况 图3-14 打卡记录情况
5. 健康记录功能:
用户点击“健康”功能模块,为用户建立包含体重、心率、卡路里等信息的个人健康档案,用户可以随时查看和更新如下图3-15和3-16。
图3-15 健康情况记录情况 图3-16 健康档案记录分析
3.2 登录模块
本系统实现了双角色登录机制,分为管理员登录和普通用户登录。登录流程如下:
1. 用户在登录界面输入账号和密码。
2. 系统首先验证输入的合法性。
3. 通过SQLite数据库查询用户信息和角色权限。
4. 根据用户角色(role字段,0为普通用户,1为管理员)跳转到不同的功能界面:管理员跳转到管理后台,可以进行食物热量管理、食谱管理和用户管理;普通用户跳转到用户主界面,可以使用运动记步、体重记录等功能。
使用SharedPreferences保存登录状态,支持自动登录
具体流程如图3-5所示。
图3-5 登录模块流程图
核心代码
实现流程包括获取用户输入信息、在数据库中验证用户身份,以及根据验证结果跳转到不同的界面。以下是核心代码的详细说明:
用户输入和登录验证,在登录按钮的点击事件中,首先获取用户输入的用户名和密码,并去除首尾空格。为避免阻塞主线程,在子线程中执行数据库查询,验证用户身份信息。
btnLogin.setOnClickListener(v -> {
String username = etUsername.getText().toString().trim();
String password = etPassword.getText().toString().trim();
new Thread(() -> {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("users", null,
"username = ? AND password = ?",
new String[]{username, password},
null, null, null);
if (cursor.moveToFirst()) {
int role = cursor.getInt(cursor.getColumnIndex("role"));
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putBoolean("success", true);
bundle.putInt("role", role);
msg.setData(bundle);
handler.sendMessage(msg);
}
cursor.close();
}).start();
});
- 心得体会
经过数天的精心研发与反复测试,成功打造了这款基于安卓Android的个人健康管理系统App。在项目启动之初,面对众多功能模块和复杂的技术要求,既充满期待又略感迷茫。为了迅速理清思路,我们广泛搜集资料,深入研究健康管理领域的前沿动态,借鉴了众多优秀App的设计理念和功能实现方式,还从Github等平台下载并体验了一些开源项目,汲取了大量宝贵经验。
在开发过程中,我们首先完成了App的整体架构搭建和主要界面设计,为后续功能开发奠定了坚实基础。随后,针对热量管理、食谱管理、用户管理等后台功能,以及体重记录、健康档案等用户端功能,逐一攻克技术难题。在热量管理模块,实现了食物热量信息的精准维护,方便用户查询和规划饮食;食谱管理模块则提供了丰富的健康食谱资源,助力用户合理搭配膳食;用户管理模块则确保了用户数据的安全性和准确性。运动记步模块实时监测并记录运动数据,帮助用户了解运动习惯;健康档案模块则全面收集用户健康数据,方便随时查看和更新。
整个开发过程充满挑战,但也收获满满。从最初的架构设计到功能实现,再到后期的测试优化,每当攻克一个技术难题或完成一个重要功能模块,那种成就感和喜悦感都激励着我继续前行。如今,这款App已具备完善的健康管理功能,能够为用户提供全方位、个性化的健康服务,助力用户更好地关注和管理自身健康。

浙公网安备 33010602011771号