记得打卡 (PunchClock)
一个简洁易用的打卡考勤记录应用,用于记录工作时间,以及统计工作与加班情况。一直忘记打卡,肉疼,于是配合手机自动任务的地理围栏,写了这个程序,到办公室了就提醒我去打卡,还能顺便记录工作时间。作为安卓纯新手,此前在 V2EX 提问过技术栈,感谢小伙伴们的回复,我才最终完整了现在的这个版本。之前使用 Java 在 Ubuntu server w/o GUI 写的,现在这个是用 Kotlin 在 Android Studio 实现的。哦,对了,展示的数据都是我的真实上班时间。
GitHub 地址 uselibrary/PunchClock
📱 应用简介
记得打卡是一款基于 Android 平台的打卡时间管理应用,使用 Jetpack Compose 构建现代化 UI ,支持上下班打卡、历史记录查询、工作时间统计分析等功能。
✨ 主要功能
1. 打卡记录
- ✅ 上班打卡/下班打卡⏰ 实时显示当前时间📝 今日打卡状态预览✏️ 支持长按编辑打卡时间❌ 支持取消已打卡记录


2. 历史记录
- 📅 查看所有打卡历史🕐 显示上下班时间及工作时长📊 按日期倒序排列

3. 工作时间分析
- 📈 支持周视图和月视图切换📊 可视化图表展示每日工作时长🔍 点击图表查看单日详细信息📉 自动计算统计数据:
- 总工作时间平均每日工时周/月工作天数累计加班时间平均每日加班时间周/月加班天数占比



4. 数据备份与恢复
- 💾 导出打卡数据为 JSON 格式📥 导入备份数据恢复记录🔄 支持跨设备数据迁移
📊 数据说明
工作时长计算
- 正常工时: ≤8 小时/天 (绿色显示)加班工时: >8 小时/天 (橙色显示)8 小时红色虚线: 标准工作时长参考线
统计维度
周视图: 显示一周(周一至周日)工作情况
月视图: 显示整月工作情况
自动计算: 总工时、平均工时、加班统计等
🛠️ 技术栈
- 开发语言: KotlinUI 框架: Jetpack Compose架构组件:
- Navigation Compose (导航)Material 3 (Material Design 3)
📦 项目结构
app/src/main/java/com/qiecou/punchclock/├── MainActivity.kt # 主 Activity 和主界面├── WorkTimeAnalysisScreen.kt # 工作时间分析界面├── PunchRecord.kt # 打卡记录数据模型├── DatabaseHelper.kt # SQLite 数据库操作├── DataBackupManager.kt # 数据备份和导入导出管理└── ui/theme/ # UI 主题配置
