初始化

This commit is contained in:
2026-05-01 10:51:39 +08:00
commit fe6e4e428a
25 changed files with 5763 additions and 0 deletions
+330
View File
@@ -0,0 +1,330 @@
# 人脸识别考勤系统 - 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. 享受实时查看考勤数据的便利!🚀