人脸识别考勤系统 - 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(推荐)
-
安装Qt 5.15
- 从 Qt官网 下载Qt 5.15
- 安装时确保选择 MinGW 或 MSVC 编译器
-
打开项目
- 启动 Qt Creator - 打开 QT/AttendanceViewer.pro - 选择合适的Kit (Qt 5.15 + MinGW/MSVC) -
编译运行
- 点击左下角的 "运行" 按钮(绿色三角形)
- 或按快捷键
Ctrl+R
方法2: 使用 qmake (命令行)
Windows
cd QT
# 方法A: 使用构建脚本
build.bat
# 方法B: 手动编译
qmake AttendanceViewer.pro
mingw32-make
cd bin
AttendanceViewer.exe
Linux
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
cd QT
mkdir build && cd build
cmake ..
make
./AttendanceViewer
Windows
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
- 时间段设置: 快速打开时间段设置对话框
- 统计报表: 快速打开统计报表对话框
- 清空记录: 清空所有签到记录(危险操作)
自动刷新机制
程序采用双重刷新机制确保数据实时性:
- 定时刷新: 每5秒自动检查并更新数据
- 文件监视: 当CSV文件被修改时立即触发刷新
🔧 配置说明
CSV文件路径
程序默认读取路径:../server/attendance_database.csv
如需修改路径,请编辑 src/MainWindow.cpp 中的 getDefaultCsvPath() 函数:
QString MainWindow::getDefaultCsvPath()
{
// 修改为你的CSV文件路径
return "C:/path/to/your/attendance_database.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文件读取和解析
- 数据筛选逻辑(学号、姓名、日期)
- 表格动态更新
- 统计信息计算
- 文件监视和自动刷新
- 数据导出
📝 开发说明
添加新功能
示例:添加成绩统计图表
- 在
CMakeLists.txt中添加 Qt Charts 模块(已包含) - 在
MainWindow.h中添加图表成员变量 - 在
MainWindow.cpp中实现图表绘制逻辑
自定义样式
可以在 MainWindow::setupUI() 中修改界面样式:
// 修改表格样式
m_tableWidget->setStyleSheet("QTableWidget { background-color: #f0f0f0; }");
// 修改按钮样式
m_refreshButton->setStyleSheet("QPushButton { background-color: #4CAF50; color: white; }");
🐛 故障排除
问题1: 找不到CSV文件
现象: 提示"找不到考勤数据文件"
解决方案:
- 确认CSV文件路径是否正确
- 检查
../server/attendance_database.csv是否存在 - 手动修改
getDefaultCsvPath()函数中的路径
问题2: Qt Charts模块找不到
现象: 编译错误 Could not find a package configuration file provided by "Qt5Charts"
解决方案:
# Ubuntu/Debian
sudo apt-get install libqt5charts5-dev
# 或从CMakeLists.txt中移除Charts(如果不需要图表功能)
find_package(Qt5 REQUIRED COMPONENTS Core Widgets) # 删除Charts
问题3: 自动刷新不工作
现象: 数据不会自动更新
解决方案:
- 检查文件权限,确保程序有读取权限
- 某些网络驱动器可能不支持文件监视
- 手动点击"刷新数据"按钮
📈 性能优化
- 使用
QVector存储数据,高效访问 - 表格按需更新,避免全量刷新
- 文件监视避免频繁读取磁盘
- 筛选操作在内存中进行,速度快
🎓 扩展功能建议
- 图表统计 - 添加签到趋势图、人员统计图
- 数据库支持 - 支持SQLite/MySQL数据库
- Excel导出 - 使用QXlsx库导出真正的Excel格式
- 打印功能 - 支持打印考勤报表
- 多语言支持 - 中英文切换
- 主题切换 - 明暗主题切换
📄 许可证
本项目与主项目使用相同的许可证,仅供学习和研究使用。
🙏 致谢
感谢使用本考勤系统Qt查看器!
开始使用:
- 确保服务器端已生成
attendance_database.csv文件 - 编译并运行Qt程序
- 享受实时查看考勤数据的便利!🚀