这是一个基于鸿蒙 API 17 + Node.js 后端的健身打卡应用。应用提供了完整的健身打卡功能,包括打卡记录管理、运动数据统计、运动计划制定等核心功能。
- 框架: HarmonyOS Stage 模型(基于 ArkTS 语言)
- 核心能力:
- @State 状态管理
- TextInput/Select 组件
- List 组件
- 关系型数据库(鸿蒙内置 relationalStore)
- 框架: Express(轻量 Web 框架)
- 数据库: MySQL(关系型数据库,与前端数据模型对齐)
- 交互方式: HTTP 接口(前端通过 fetch 调用后端接口)
- 打卡记录管理: 添加打卡、查看打卡列表
- 运动数据统计: 按周/月统计运动时长,可视化图表展示
- 运动计划制定: 创建/编辑运动计划(预留功能)
- 个人信息管理: 修改头像/昵称
- 打卡提醒设置: 开启/关闭定时提醒(预留功能)
- 首页: 包含"打卡""统计""计划"等入口
- 打卡添加页: TextInput(时长)+ Select(运动类型)+ 提交按钮
- 打卡列表页: List 组件展示所有打卡记录
- 统计页: 展示运动数据可视化图表
entry/src/main/ets/
├── model/
│ └── UserProfile.ets # 数据模型定义
├── pages/
│ ├── HomePage.ets # 首页
│ ├── CheckInAddPage.ets # 打卡添加页
│ ├── CheckInListPage.ets # 打卡列表页
│ ├── StatisticsPage.ets # 统计页面
│ ├── MainPage.ets # 主页面(导航)
│ └── ProfilePage.ets # 个人页面
├── utils/
│ ├── StorageUtil.ets # 存储工具
│ └── DatabaseTest.ets # 数据库测试工具
└── entryability/
└── EntryAbility.ets # 入口能力
export interface CheckIn {
id: number; // 主键
sportType: string; // 运动类型(如跑步、健身)
duration: number; // 运动时长(分钟)
checkInTime: string; // 打卡时间(格式:YYYY-MM-DD HH:mm:ss)
}CREATE TABLE check_in (
id INTEGER PRIMARY KEY AUTOINCREMENT,
sportType TEXT,
duration INTEGER,
checkInTime TEXT
)- 异步任务处理: 数据库操作使用异步处理,避免阻塞 UI 线程
- LazyForEach: 列表页用 LazyForEach 替代 ForEach,按需渲染列表项,减少内存占用
- 分页查询: 数据库查询时限制单次读取数量(如分页查询)
- 全局复用: 避免重复初始化数据库实例(全局复用 rdbStore)
- 内存缓存: 打卡数据写入后,通过内存缓存更新列表(无需重新全量查询数据库)
- 图片压缩: 图片资源(若有)使用压缩格式(如 WebP),并预加载常用图片
- 运动类型选择(跑步、健身、游泳、骑行、瑜伽、篮球、足球、网球)
- 运动时长输入(数字输入框)
- 数据验证和错误提示
- 数据库写入和成功反馈
- 列表展示所有打卡记录
- 统计信息显示(总次数、总时长、平均时长)
- 运动类型图标显示
- 时间倒序排列
- 总体统计(总次数、总时长、平均时长)
- 运动类型分布(饼图展示)
- 时间段统计(本周/本月)
- 可视化图表(柱状图)
# 使用 DevEco Studio 打开项目
# 选择设备或模拟器
# 点击运行按钮- 打开应用,进入首页
- 点击"打卡"按钮,进入打卡添加页
- 选择运动类型,输入运动时长
- 点击"提交打卡",数据保存到数据库
- 自动跳转到打卡列表页查看记录
- 点击"统计"按钮,查看运动数据统计
// 在代码中调用数据库测试
import { DatabaseTest } from '../utils/DatabaseTest'
// 测试数据库连接
const success = await DatabaseTest.testDatabase(this.context)
if (success) {
console.info('数据库测试成功')
}- 运动计划制定: 创建和编辑个人运动计划
- 打卡提醒设置: 设置定时提醒功能
- 计划分享: 分享运动计划给其他用户
- 个人设置: 修改个人信息和偏好设置
- 用户认证: 用户登录注册功能
- 数据同步: 前后端数据同步
- 云端存储: 数据备份和恢复
- 社交功能: 好友系统和运动分享
- 使用 TypeScript 严格模式
- 遵循鸿蒙开发最佳实践
- 组件化开发,模块化设计
- 异步处理耗时操作
- 合理使用内存缓存
- 优化列表渲染性能
- 数据库操作分页处理
- 遵循鸿蒙设计规范
- 响应式布局设计
- 统一的颜色和字体规范
- 良好的用户体验
- 检查数据库名称是否正确
- 确认安全级别设置
- 查看日志输出
- 检查路由配置是否正确
- 确认页面名称拼写
- 查看页面生命周期
- 使用 LazyForEach 优化列表
- 合理使用内存缓存
- 异步处理数据库操作
- ✅ 基础打卡功能
- ✅ 打卡列表展示
- ✅ 数据统计功能
- ✅ 性能优化实现
- 🔄 运动计划功能(预留)
- 🔄 提醒设置功能(预留)
欢迎提交 Issue 和 Pull Request 来改进这个项目。
本项目基于 MIT 许可证开源。