十月之前推荐来的27届同学,推荐者和被推荐者都有🧧优惠(50-200/人不等,无上限)

members only

个人原创项目

请输入访问密码后查看项目内容。

原创项目合集 c3

基于 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;
  2. 安装依赖:
    pip install -r requirements.txt
  3. 配置数据库连接,创建 .env 文件:
    DB_HOST=localhost
    DB_USER=your_username
    DB_PASSWORD=your_password
    DB_NAME=smart_sign_system
  4. 初始化数据库:
    mysql -u your_username -p smart_sign_system < database/schema.sql
  5. 运行系统:
    python main_window.py

默认管理员账号

  • 用户名:admin
  • 密码:admin

注意事项

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

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

微信二维码
Jay 微信二维码