原创项目合集 基于 Python 的人脸识别考勤打卡系统

基于 Python 的人脸识别考勤打卡系统

一、项目概述

智能打卡系统是一个基于PyQt5和OpenCV的人脸识别考勤系统,具有员工管理、考勤记录、报表生成和数据可视化等功能。系统采用现代化的界面设计,提供直观的用户体验,并实现了基于权限的访问控制。

二、系统架构

系统采用分层架构设计,包括表示层、业务逻辑层、数据访问层和数据存储层。

系统功能模块

系统由以下主要功能模块组成:

1. 主窗口模块 (main_window.py)

主窗口是系统的核心界面,负责整合各个功能模块并提供导航功能。

主要功能:

  • 侧边栏菜单导航
  • 页面切换管理
  • 权限控制逻辑
  • 管理员登录验证
基于 Python 的人脸识别考勤打卡系统项目截图1

2. 打卡模块 (clock_page.py)

打卡模块是系统的核心功能,负责员工日常考勤打卡。

主要功能:

  • 实时摄像头预览
  • 人脸识别和匹配
  • 打卡记录保存
  • 打卡状态显示
基于 Python 的人脸识别考勤打卡系统项目截图1

3. 员工管理模块 (employee_page.py)

员工管理模块负责员工信息的增删改查,包括新员工注册和照片采集。

主要功能:

  • 员工信息表格显示
  • 添加新员工(含人脸照片采集)
  • 删除员工
  • 员工数据管理
  • 人脸特征码生成和存储

4. 记录查看模块 (record_view_page.py)

记录查看模块负责显示员工信息和考勤记录。

主要功能:

  • 员工信息查看
  • 考勤记录查看
  • 数据分类显示
  • ![](https://cdn.nlark.com/yuque/0/2026/png/40419809/1784475909393-1fce69c0-ba4f-4a46-afd4-3ae47b342d9c.png)

5. 考勤报表模块 (report_page.py)

考勤报表模块负责生成和导出考勤报表。

主要功能:

  • 日/月报表切换
  • 日期选择
  • 报表查询
  • 报表导出

6. 管理员登录模块 (admin_login_dialog.py)

管理员登录模块负责验证管理员身份。

主要功能:

  • 管理员账号验证
  • 密码加密存储
  • 登录状态管理
基于 Python 的人脸识别考勤打卡系统项目截图1

7. 管理员设置模块 (admin_settings_dialog.py)

管理员设置模块负责修改管理员账号和密码。

主要功能:

  • 显示当前管理员信息
  • 修改管理员用户名
  • 修改管理员密码
  • 密码确认验证

8. 数据可视化模块 (visualization_page.py)

数据可视化模块负责对考勤数据进行图表展示和统计分析。

主要功能:

  • 考勤数据趋势图表
  • 出勤率统计分析
  • 迟到早退可视化展示
  • 部门/个人考勤对比
  • 数据导出功能
基于 Python 的人脸识别考勤打卡系统项目截图1 基于 Python 的人脸识别考勤打卡系统项目截图2 基于 Python 的人脸识别考勤打卡系统项目截图3

三、数据存储

系统使用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/

本项目为个人原创,结构清晰,功能完整,适合课程设计、毕业设计和个人学习使用。如需购买项目成品或定制化需求可以联系作者。

微信二维码
Jay 微信二维码