Files
2026-05-01 10:51:39 +08:00

331 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 人脸识别考勤系统 - 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. 享受实时查看考勤数据的便利!🚀