基于 Python 的人脸识别考勤打卡系统(全套源码+数据集)
项目概述
智能打卡系统是一个基于PyQt5和OpenCV的人脸识别考勤系统,具有员工管理、考勤记录、报表生成和数据可视化等功能。系统采用现代化的界面设计,提供直观的用户体验,并实现了基于权限的访问控制。
系统架构
系统采用分层架构设计,包括表示层、业务逻辑层、数据访问层和数据存储层。
系统功能模块
系统由以下主要功能模块组成:
1. 主窗口模块 (main_window.py)
主窗口是系统的核心界面,负责整合各个功能模块并提供导航功能。
主要功能:
- 侧边栏菜单导航
- 页面切换管理
- 权限控制逻辑
- 管理员登录验证

2. 打卡模块 (clock_page.py)
打卡模块是系统的核心功能,负责员工日常考勤打卡。
主要功能:
- 实时摄像头预览
- 人脸识别和匹配
- 打卡记录保存
- 打卡状态显示

3. 员工管理模块 (employee_page.py)
员工管理模块负责员工信息的增删改查,包括新员工注册和照片采集。
主要功能:
- 员工信息表格显示
- 添加新员工(含人脸照片采集)
- 删除员工
- 员工数据管理
- 人脸特征码生成和存储
4. 记录查看模块 (record_view_page.py)
记录查看模块负责显示员工信息和考勤记录。
主要功能:
- 员工信息查看
- 考勤记录查看
- 数据分类显示
![]()
5. 考勤报表模块 (report_page.py)
考勤报表模块负责生成和导出考勤报表。
主要功能:
- 日/月报表切换
- 日期选择
- 报表查询
- 报表导出
6. 管理员登录模块 (admin_login_dialog.py)
管理员登录模块负责验证管理员身份。
主要功能:
- 管理员账号验证
- 密码加密存储
- 登录状态管理

7. 管理员设置模块 (admin_settings_dialog.py)
管理员设置模块负责修改管理员账号和密码。
主要功能:
- 显示当前管理员信息
- 修改管理员用户名
- 修改管理员密码
- 密码确认验证
8. 数据可视化模块 (visualization_page.py)
数据可视化模块负责对考勤数据进行图表展示和统计分析。
主要功能:
- 考勤数据趋势图表
- 出勤率统计分析
- 迟到早退可视化展示
- 部门/个人考勤对比
- 数据导出功能



数据存储
系统使用MySQL数据库存储数据,主要包括以下表:
employees: 存储员工基本信息- id: 员工ID
- name: 员工姓名
- feature_code: 人脸特征码
- created_at: 创建时间
- updated_at: 更新时间
clock_records: 存储打卡记录- id: 记录ID
- employee_id: 员工ID
- clock_time: 打卡时间
- status: 打卡状态(正常/迟到/严重迟到)
admins: 存储管理员信息- id: 管理员ID
- username: 管理员用户名
- password_hash: 密码哈希
- created_at: 创建时间
- updated_at: 更新时间
员工照片存储在本地文件系统中:
data/photos/: 存储员工照片
项目结构
.
├── main_window.py # 主程序入口
├── clock_page.py # 打卡页面
├── employee_page.py # 员工管理页面
├── record_view_page.py # 记录查看页面
├── report_page.py # 报表页面
├── visualization_page.py # 数据可视化页面
├── login_page.py # 登录页面
├── admin_login_dialog.py # 管理员登录对话框
├── admin_settings_dialog.py # 管理员设置对话框
├── dao/ # 数据访问层
├── entity/ # 实体类定义
├── service/ # 业务服务层
├── util/ # 工具类
├── data/ # 数据存储目录
├── database/ # 数据库相关文件
├── resources/ # 应用程序资源
├── cascades/ # 人脸检测级联分类器
├── web/ # Web版本实现
├── requirements.txt # Python依赖包列表
└── README.md # 项目说明文档
操作流程
管理员先注册新员工并采集人脸照片建立数据库,员工日常通过人脸识别完成考勤打卡,系统自动记录打卡时间和状态;管理员可登录查看考勤记录、生成报表并进行数据分析。
权限控制
系统实现了基于角色的权限控制:
- 普通用户只能访问打卡和退出功能
- 管理员可以访问所有功能,包括记录查看、员工管理和考勤报表
- 管理员设置功能需要管理员权限
技术栈
- GUI框架: PyQt5
- 图像处理: OpenCV
- 人脸识别: face_recognition
- 数据库: MySQL
- 密码安全: SHA-256哈希
- 数据可视化: Matplotlib/PyQtChart
运行环境
- Python 3.6+
- PyQt5 5.15.9
- OpenCV 4.8.0
- face_recognition 1.3.0
- dlib 19.24.0
- NumPy 1.24.3
- MySQL 8.0+
- mysql-connector-python 8.0.33
安装与运行
- 安装MySQL数据库并创建数据库:
CREATE DATABASE smart_sign_system;
- 安装依赖:
pip install -r requirements.txt
- 配置数据库连接:
创建.env文件并设置以下环境变量:
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=smart_sign_system
- 初始化数据库:
mysql -u your_username -p smart_sign_system < database/schema.sql
- 运行系统:
python main_window.py
默认管理员账号
- 用户名: admin
- 密码: admin
注意事项
- 首次运行时会自动创建必要的数据目录
- 管理员可以通过"管理员设置"功能修改账号和密码
- 系统需要摄像头支持才能使用打卡功能
- 确保MySQL服务已启动并正确配置
- 确保已安装所有必要的Python包
本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求欢迎评论或私信。

浙公网安备 33010602011771号