331 lines
8.6 KiB
Markdown
331 lines
8.6 KiB
Markdown
# 人脸识别考勤系统 - Qt管理端
|
||
|
||
基于 Qt 5.15 的全功能考勤管理系统,用于管理STM32人脸识别考勤系统的签到数据。
|
||
|
||
## 📋 功能特性
|
||
|
||
### 📊 数据查看
|
||
✅ **实时数据显示** - 自动读取服务器端CSV数据库
|
||
✅ **自动刷新** - 每5秒自动刷新,支持文件监视
|
||
✅ **多条件筛选** - 按学号、姓名、日期筛选记录
|
||
✅ **统计信息** - 实时显示总记录数和今日签到数
|
||
|
||
### ⚙️ 系统管理
|
||
✅ **时间段设置** - 自定义签到时间段(上午/下午/晚上等)
|
||
✅ **记录管理** - 清空签到记录、导出备份
|
||
✅ **文件选择** - 支持切换不同的CSV数据文件
|
||
|
||
### 📈 统计分析
|
||
✅ **统计报表** - 按日期范围生成学生签到统计
|
||
✅ **多维度分析** - 总签到次数、今日签到、平均置信度
|
||
✅ **报表导出** - 支持导出统计报表为CSV格式
|
||
|
||
### 🎨 界面优化
|
||
✅ **菜单栏** - 文件、管理、帮助菜单
|
||
✅ **友好界面** - 清晰的表格展示,交替行颜色
|
||
✅ **颜色标识** - 成功/失败状态颜色区分
|
||
|
||
## 🛠️ 环境要求
|
||
|
||
- **Qt 5.15** 或更高版本
|
||
- **CMake 3.16** 或更高版本
|
||
- **C++17** 编译器
|
||
- Windows/Linux/macOS
|
||
|
||
## 📁 项目结构
|
||
|
||
```
|
||
QT/
|
||
├── CMakeLists.txt # CMake配置文件
|
||
├── AttendanceViewer.pro # qmake项目文件
|
||
├── build.sh / build.bat # 构建脚本
|
||
├── include/ # 头文件目录
|
||
│ ├── MainWindow.h # 主窗口类
|
||
│ ├── AttendanceRecord.h # 考勤记录数据模型
|
||
│ ├── TimeSlotConfig.h # 时间段配置管理
|
||
│ ├── SettingsDialog.h # 设置对话框
|
||
│ └── StatisticsDialog.h # 统计报表对话框
|
||
├── src/ # 源文件目录
|
||
│ ├── main.cpp # 程序入口
|
||
│ ├── MainWindow.cpp # 主窗口实现
|
||
│ ├── AttendanceRecord.cpp # 数据模型实现
|
||
│ ├── TimeSlotConfig.cpp # 时间段配置实现
|
||
│ ├── SettingsDialog.cpp # 设置对话框实现
|
||
│ └── StatisticsDialog.cpp # 统计报表实现
|
||
└── README.md # 本文档
|
||
```
|
||
|
||
## 🚀 编译和运行
|
||
|
||
### 方法1: 使用 Qt Creator(推荐)
|
||
|
||
1. **安装Qt 5.15**
|
||
- 从 [Qt官网](https://www.qt.io/download) 下载Qt 5.15
|
||
- 安装时确保选择 MinGW 或 MSVC 编译器
|
||
|
||
2. **打开项目**
|
||
```
|
||
- 启动 Qt Creator
|
||
- 打开 QT/AttendanceViewer.pro
|
||
- 选择合适的Kit (Qt 5.15 + MinGW/MSVC)
|
||
```
|
||
|
||
3. **编译运行**
|
||
- 点击左下角的 "运行" 按钮(绿色三角形)
|
||
- 或按快捷键 `Ctrl+R`
|
||
|
||
### 方法2: 使用 qmake (命令行)
|
||
|
||
#### Windows
|
||
|
||
```bash
|
||
cd QT
|
||
|
||
# 方法A: 使用构建脚本
|
||
build.bat
|
||
|
||
# 方法B: 手动编译
|
||
qmake AttendanceViewer.pro
|
||
mingw32-make
|
||
cd bin
|
||
AttendanceViewer.exe
|
||
```
|
||
|
||
#### Linux
|
||
|
||
```bash
|
||
cd QT
|
||
|
||
# 安装Qt5 (如果还没安装)
|
||
sudo apt-get install qt5-default
|
||
|
||
# 方法A: 使用构建脚本
|
||
chmod +x build.sh
|
||
./build.sh
|
||
|
||
# 方法B: 手动编译
|
||
qmake AttendanceViewer.pro
|
||
make
|
||
cd bin
|
||
./AttendanceViewer
|
||
```
|
||
|
||
### 方法3: 使用 CMake
|
||
|
||
#### Linux
|
||
|
||
```bash
|
||
cd QT
|
||
mkdir build && cd build
|
||
cmake ..
|
||
make
|
||
./AttendanceViewer
|
||
```
|
||
|
||
#### Windows
|
||
|
||
```bash
|
||
cd QT
|
||
mkdir build
|
||
cd build
|
||
cmake -G "MinGW Makefiles" ..
|
||
mingw32-make
|
||
cd Release
|
||
AttendanceViewer.exe
|
||
```
|
||
|
||
## 📊 使用说明
|
||
|
||
### 主界面功能
|
||
|
||
#### 1. 菜单栏功能
|
||
|
||
**文件菜单**
|
||
- **选择CSV文件**: 切换到不同的考勤数据文件
|
||
- **导出数据**: 导出当前筛选的记录为CSV
|
||
- **退出**: 关闭程序
|
||
|
||
**管理菜单**
|
||
- **时间段设置**: 自定义签到时间段
|
||
- **统计报表**: 生成考勤统计报表
|
||
- **清空签到记录**: 清空所有签到数据(危险操作,需二次确认)
|
||
|
||
**帮助菜单**
|
||
- **关于**: 显示软件版本和功能信息
|
||
|
||
#### 2. 统计信息栏
|
||
- **总记录数**: 显示数据库中的总签到记录数
|
||
- **今日签到**: 显示今天的签到人次
|
||
- **状态**: 显示当前程序状态(就绪/加载中/显示记录数)
|
||
|
||
#### 3. 筛选条件
|
||
- **学号**: 下拉选择特定学号,显示该学生的所有签到记录
|
||
- **姓名**: 输入姓名关键字进行模糊搜索
|
||
- **日期**:
|
||
- 全部:显示所有记录
|
||
- 今天:只显示今天的记录
|
||
- 最近7天:显示过去一周的记录
|
||
- 最近30天:显示过去一个月的记录
|
||
- **清除筛选**: 一键清除所有筛选条件
|
||
|
||
#### 4. 数据表格
|
||
显示筛选后的考勤记录,包含以下列:
|
||
- **签到时间**: 格式 `2026-02-01 11:06:41`
|
||
- **学号**: 学生学号
|
||
- **姓名**: 学生姓名
|
||
- **置信度**: 人脸识别置信度(百分比)
|
||
- **状态**: 签到状态(成功/失败),成功显示为绿色
|
||
|
||
#### 5. 底部操作按钮
|
||
- **刷新数据**: 手动刷新数据
|
||
- **导出数据**: 导出当前筛选的数据为CSV
|
||
- **时间段设置**: 快速打开时间段设置对话框
|
||
- **统计报表**: 快速打开统计报表对话框
|
||
- **清空记录**: 清空所有签到记录(危险操作)
|
||
|
||
### 自动刷新机制
|
||
|
||
程序采用双重刷新机制确保数据实时性:
|
||
|
||
1. **定时刷新**: 每5秒自动检查并更新数据
|
||
2. **文件监视**: 当CSV文件被修改时立即触发刷新
|
||
|
||
## 🔧 配置说明
|
||
|
||
### CSV文件路径
|
||
|
||
程序默认读取路径:`../server/attendance_database.csv`
|
||
|
||
如需修改路径,请编辑 `src/MainWindow.cpp` 中的 `getDefaultCsvPath()` 函数:
|
||
|
||
```cpp
|
||
QString MainWindow::getDefaultCsvPath()
|
||
{
|
||
// 修改为你的CSV文件路径
|
||
return "C:/path/to/your/attendance_database.csv";
|
||
}
|
||
```
|
||
|
||
### CSV文件格式
|
||
|
||
程序读取的CSV格式如下:
|
||
|
||
```csv
|
||
Timestamp,Student_ID,Name,Confidence,Status
|
||
2026-02-01 11:06:41,2,ID2,0.90,success
|
||
2026-02-01 11:06:58,1,ID1,0.87,success
|
||
```
|
||
|
||
字段说明:
|
||
- `Timestamp`: 签到时间(YYYY-MM-DD HH:MM:SS)
|
||
- `Student_ID`: 学号
|
||
- `Name`: 姓名
|
||
- `Confidence`: 置信度(0.0-1.0)
|
||
- `Status`: 状态(success/fail)
|
||
|
||
## 🎯 核心功能实现
|
||
|
||
### 数据模型 (AttendanceRecord)
|
||
|
||
负责解析和存储单条考勤记录:
|
||
- 从CSV行解析数据
|
||
- 时间戳格式转换
|
||
- 数据验证
|
||
|
||
### 主窗口 (MainWindow)
|
||
|
||
核心功能实现:
|
||
- UI界面构建(统计栏、筛选栏、表格、按钮)
|
||
- CSV文件读取和解析
|
||
- 数据筛选逻辑(学号、姓名、日期)
|
||
- 表格动态更新
|
||
- 统计信息计算
|
||
- 文件监视和自动刷新
|
||
- 数据导出
|
||
|
||
## 📝 开发说明
|
||
|
||
### 添加新功能
|
||
|
||
**示例:添加成绩统计图表**
|
||
|
||
1. 在 `CMakeLists.txt` 中添加 Qt Charts 模块(已包含)
|
||
2. 在 `MainWindow.h` 中添加图表成员变量
|
||
3. 在 `MainWindow.cpp` 中实现图表绘制逻辑
|
||
|
||
### 自定义样式
|
||
|
||
可以在 `MainWindow::setupUI()` 中修改界面样式:
|
||
|
||
```cpp
|
||
// 修改表格样式
|
||
m_tableWidget->setStyleSheet("QTableWidget { background-color: #f0f0f0; }");
|
||
|
||
// 修改按钮样式
|
||
m_refreshButton->setStyleSheet("QPushButton { background-color: #4CAF50; color: white; }");
|
||
```
|
||
|
||
## 🐛 故障排除
|
||
|
||
### 问题1: 找不到CSV文件
|
||
|
||
**现象**: 提示"找不到考勤数据文件"
|
||
|
||
**解决方案**:
|
||
1. 确认CSV文件路径是否正确
|
||
2. 检查 `../server/attendance_database.csv` 是否存在
|
||
3. 手动修改 `getDefaultCsvPath()` 函数中的路径
|
||
|
||
### 问题2: Qt Charts模块找不到
|
||
|
||
**现象**: 编译错误 `Could not find a package configuration file provided by "Qt5Charts"`
|
||
|
||
**解决方案**:
|
||
```bash
|
||
# Ubuntu/Debian
|
||
sudo apt-get install libqt5charts5-dev
|
||
|
||
# 或从CMakeLists.txt中移除Charts(如果不需要图表功能)
|
||
find_package(Qt5 REQUIRED COMPONENTS Core Widgets) # 删除Charts
|
||
```
|
||
|
||
### 问题3: 自动刷新不工作
|
||
|
||
**现象**: 数据不会自动更新
|
||
|
||
**解决方案**:
|
||
1. 检查文件权限,确保程序有读取权限
|
||
2. 某些网络驱动器可能不支持文件监视
|
||
3. 手动点击"刷新数据"按钮
|
||
|
||
## 📈 性能优化
|
||
|
||
- 使用 `QVector` 存储数据,高效访问
|
||
- 表格按需更新,避免全量刷新
|
||
- 文件监视避免频繁读取磁盘
|
||
- 筛选操作在内存中进行,速度快
|
||
|
||
## 🎓 扩展功能建议
|
||
|
||
- [ ] **图表统计** - 添加签到趋势图、人员统计图
|
||
- [ ] **数据库支持** - 支持SQLite/MySQL数据库
|
||
- [ ] **Excel导出** - 使用QXlsx库导出真正的Excel格式
|
||
- [ ] **打印功能** - 支持打印考勤报表
|
||
- [ ] **多语言支持** - 中英文切换
|
||
- [ ] **主题切换** - 明暗主题切换
|
||
|
||
## 📄 许可证
|
||
|
||
本项目与主项目使用相同的许可证,仅供学习和研究使用。
|
||
|
||
## 🙏 致谢
|
||
|
||
感谢使用本考勤系统Qt查看器!
|
||
|
||
---
|
||
|
||
**开始使用**:
|
||
1. 确保服务器端已生成 `attendance_database.csv` 文件
|
||
2. 编译并运行Qt程序
|
||
3. 享受实时查看考勤数据的便利!🚀
|