4.2 KiB
4.2 KiB
Qt 管理端 README
这是人脸识别考勤系统的 Qt 管理端,支持 Windows 桌面端和 Android 端。更完整的说明见:
../docs/04_Qt管理端文档.md
../docs/00_项目总文档.md
1. 功能概览
Qt 管理端用于连接考勤服务端,完成以下工作:
- 查看考勤记录。
- 按班级、学号、姓名和日期筛选记录。
- 导出考勤记录 CSV。
- 查看学生维度的统计分析。
- 导出统计 CSV。
- 配置服务端地址。
- 新增、编辑、删除、清空签到时间段。
- 配置学号到姓名、班级编号到班级名称的显示映射。
- 查看 K210 上传的人脸照片。
- 为 K210 face_id 绑定真实学号。
- 删除人脸信息,并可选择删除关联考勤记录。
2. 当前重要行为
2.1 默认服务端地址
http://127.0.0.1:8082
启动后会优先读取本地保存的 server/url。
2.2 默认签到时间段
当前默认签到时间段为空:
{
"time_slots": []
}
第一次使用时,需要在“配置中心”里新增时间段并保存同步到服务端。旧版本本地保存的四个默认时间段会被自动迁移为空配置。
2.3 API Token
Qt 每个请求都会带:
X-Api-Token: <Token>
默认 Token 写在 src/ApiClient.cpp。可以通过环境变量覆盖:
$env:ATTENDANCE_API_TOKEN="你的Token"
2.4 响应加密
服务端支持通过请求头 X-Encrypted-Response: true 返回 AES 加密响应,Qt 代码中保留了解密能力。
当前普通记录和统计请求没有默认开启这个请求头,实际按 JSON 明文解析。
3. 技术栈
| 分类 | 内容 |
|---|---|
| 语言 | C++17、QML |
| UI | Qt Quick / Qt Quick Controls 2 |
| Qt 模块 | Core、Gui、Qml、Quick、QuickControls2、Network |
| 构建 | CMake 3.16+ |
| 平台 | Windows 桌面端、Android |
4. 目录结构
QT/
├── android/ # Android 打包配置和图标
├── assets/ # 桌面端图标
├── cmake/ # 平台模板
├── qml/Main.qml # 主界面
├── src/
│ ├── ApiClient.* # HTTP API 客户端
│ ├── AppController.* # 业务逻辑中枢
│ ├── AttendanceTypes.h # 数据结构
│ ├── CryptoUtils.* # AES 解密兼容工具
│ └── *ListModel.* # QML 列表模型
├── CMakeLists.txt
├── LICENSE
├── README.md
└── main.cpp
5. 构建环境
基础要求:
- Qt 6.2 或更高。
- CMake 3.16 或更高。
- 支持 C++17 的编译器。
Windows 推荐使用 Qt 6.x MinGW 64-bit Kit。
Android 还需要:
- Qt for Android。
- Android SDK。
- Android NDK。
- JDK。
- Android 平台版本,例如
android-35。
6. Qt Creator 构建
- 打开 Qt Creator。
- 打开
QT/CMakeLists.txt。 - 选择 Desktop Qt 或 Android Kit。
- 等待 CMake 配置完成。
- 构建目标
apprewrite_qt。 - 桌面端直接运行;Android 端部署到设备或模拟器。
7. 命令行构建示例
Windows 示例:
cd D:\University\graduation\code\Reconstruct_Qt\QT
cmake -S . -B build\Desktop -DCMAKE_PREFIX_PATH=D:\Qt\6.10.0\mingw_64
cmake --build build\Desktop
Qt 安装路径需要按本机实际情况修改。
8. 本地数据
Qt 会保存这些本地数据:
| 数据 | 保存方式 |
|---|---|
| 服务端地址 | QSettings,键名 server/url |
| 时间段配置 | QStandardPaths::AppDataLocation/timeslot_config.json |
| 学生/班级映射 | QStandardPaths::AppDataLocation/mapping_config.json |
| 人脸照片缓存 | QStandardPaths::AppDataLocation/face_photos/*.jpg |
9. 常见问题
| 现象 | 处理 |
|---|---|
| 测试连接失败 | 检查服务端是否启动、地址是否正确、Token 是否一致 |
| 没有时间段 | 这是当前默认行为,需要手动新增并保存 |
| 识别成功但没有记录 | 检查 STM32 是否在时间段内、是否成功加密上传 |
| 人脸照片不显示 | 检查 K210 是否上传照片,服务端 faces/ 是否有图片 |
| Android 布局拥挤 | 当前 QML 已做窄屏自适应,若仍异常请检查实际设备宽度 |