Files
bishe-QT_MainWindow/README.md
T
2026-05-01 10:51:39 +08:00

8.6 KiB
Raw Blame History

人脸识别考勤系统 - 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官网 下载Qt 5.15
    • 安装时确保选择 MinGW 或 MSVC 编译器
  2. 打开项目

    - 启动 Qt Creator
    - 打开 QT/AttendanceViewer.pro
    - 选择合适的Kit (Qt 5.15 + MinGW/MSVC)
    
  3. 编译运行

    • 点击左下角的 "运行" 按钮(绿色三角形)
    • 或按快捷键 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
  • 时间段设置: 快速打开时间段设置对话框
  • 统计报表: 快速打开统计报表对话框
  • 清空记录: 清空所有签到记录(危险操作)

自动刷新机制

程序采用双重刷新机制确保数据实时性:

  1. 定时刷新: 每5秒自动检查并更新数据
  2. 文件监视: 当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文件读取和解析
  • 数据筛选逻辑(学号、姓名、日期)
  • 表格动态更新
  • 统计信息计算
  • 文件监视和自动刷新
  • 数据导出

📝 开发说明

添加新功能

示例:添加成绩统计图表

  1. 在 CMakeLists.txt 中添加 Qt Charts 模块(已包含)
  2. 在 MainWindow.h 中添加图表成员变量
  3. 在 MainWindow.cpp 中实现图表绘制逻辑

自定义样式

可以在 MainWindow::setupUI() 中修改界面样式:

// 修改表格样式
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"

解决方案:

# 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. 享受实时查看考勤数据的便利!🚀