初始化
This commit is contained in:
@@ -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. 享受实时查看考勤数据的便利!🚀
|
||||
Reference in New Issue
Block a user