基于 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

安装与运行

  1. 安装MySQL数据库并创建数据库:
CREATE DATABASE smart_sign_system;
  1. 安装依赖:
pip install -r requirements.txt
  1. 配置数据库连接:
    创建 .env 文件并设置以下环境变量:
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=smart_sign_system
  1. 初始化数据库:
mysql -u your_username -p smart_sign_system < database/schema.sql
  1. 运行系统:
python main_window.py

默认管理员账号

  • 用户名: admin
  • 密码: admin

注意事项

  • 首次运行时会自动创建必要的数据目录
  • 管理员可以通过"管理员设置"功能修改账号和密码
  • 系统需要摄像头支持才能使用打卡功能
  • 确保MySQL服务已启动并正确配置
  • 确保已安装所有必要的Python包

本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求欢迎评论或私信。

个人网址:https://michael-jay.pages.dev/

posted on 2026-08-02 23:42  Jay8059  阅读(4)  评论(0)    收藏  举报

导航