原创项目合集 基于 Python 的教师-学生签到考勤系统

基于 Python 的教师-学生签到考勤系统

一、项目概述

本系统是一个基于Python开发的教师-学生签到考勤系统,采用人脸识别技术实现自动化签到考勤管理。系统针对学生、教师和管理员三种角色设计了不同的功能界面,支持人脸签到、考勤记录管理、课程管理、数据统计分析等功能。系统采用现代化的界面设计,提供直观的用户体验,并实现了基于角色的权限访问控制。

二、系统角色与功能

系统支持三种用户角色,每种角色具有不同的功能权限:

1. 学生端功能

  • 人脸签到:学生通过摄像头进行人脸识别完成课程签到
  • 签到记录查看:查看个人历史签到记录及统计信息,支持导出Excel

2. 教师端功能

  • 课程管理:创建、编辑和删除课程信息
  • 签到课程创建:为特定课程创建签到会话
  • 学生管理:管理课程中的学生信息
  • 考勤统计分析:查看和分析学生考勤数据,生成统计报表,支持导出Excel

3. 管理员端功能

  • 系统设置管理:管理系统基本配置和参数
  • 用户管理:管理所有教师和学生账号
  • 全局数据分析:查看和分析全校考勤数据
基于 Python 的教师-学生签到考勤系统项目截图1 基于 Python 的教师-学生签到考勤系统项目截图1 基于 Python 的教师-学生签到考勤系统项目截图1 基于 Python 的教师-学生签到考勤系统项目截图2 基于 Python 的教师-学生签到考勤系统项目截图3 基于 Python 的教师-学生签到考勤系统项目截图4 基于 Python 的教师-学生签到考勤系统项目截图5 基于 Python 的教师-学生签到考勤系统项目截图1 基于 Python 的教师-学生签到考勤系统项目截图1

三、系统架构

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

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

主窗口是系统的核心界面,负责整合各个功能模块并提供导航功能。根据不同用户角色(学生、教师、管理员)动态加载不同的功能界面。

主要功能:

  • 用户登录验证
  • 角色的侧边栏菜单导航
  • 页面切换管理
  • 权限控制逻辑

2. 登录模块 (login_page.py)

负责用户身份验证和登录处理。

主要功能:

  • 用户名和密码验证
  • 角色识别
  • 登录状态管理

3. 学生模块

3.1 学生签到页面 (student/student_sign_page.py)

学生通过人脸识别进行签到的核心功能页面。

主要功能:

  • 实时摄像头预览
  • 人脸识别和匹配
  • 签到状态显示和记录
3.2 学生记录页面 (student/student_record_page.py)

学生查看个人签到记录的页面。

主要功能:

  • 个人签到记录查询
  • 数据统计和显示
  • 签到记录导出Excel

4. 教师模块

4.1 课程管理页面 (teacher/teacher_course_page.py)

教师管理课程信息的页面。

主要功能:

  • 课程信息管理(增删改查)
  • 课程列表显示
4.2 签到会话管理页面 (teacher/teacher_session_page.py)

教师创建和管理签到会话的页面。

主要功能:

  • 创建签到会话
  • 管理签到状态
  • 手动签到操作
  • 签到会话详情支持导出Excel(已签到/未签到名单)
4.3 学生管理页面 (teacher/student_manage_page.py)

教师管理学生信息的页面。

主要功能:

  • 学生信息管理
  • 学生名单导入导出
4.4 数据统计页面 (teacher/teacher_stats_page.py)

教师查看考勤统计数据的页面。

主要功能:

  • 课程出勤率统计
  • 学生考勤分析
  • 数据可视化展示
  • 考勤数据导出Excel

5. 管理员模块

5.1 系统设置页面 (admin/admin_settings_page.py)

管理员管理系统设置的页面。

主要功能:

  • 系统参数配置
  • 用户管理
  • 数据备份恢复

四、数据模型设计

系统使用MySQL数据库存储数据,主要包括以下实体:

用户表 (Users)

  • 存储学生、教师和管理员的基本信息和登录凭证
  • 包含用户ID、用户名、密码哈希、姓名、角色、创建时间等字段

学生表 (Students)

  • 存储学生特有信息
  • 包含学生ID、学号、班级、专业、联系方式等字段

教师表 (Teachers)

  • 存储教师特有信息
  • 包含教师ID、工号、部门、职称等字段

课程表 (Courses)

  • 存储课程信息
  • 包含课程ID、名称、学分、学时、教师ID等字段

签到会话表 (SignSessions)

  • 存储教师创建的签到会话信息
  • 包含会话ID、课程ID、开始时间、结束时间、地点、状态等字段

签到记录表 (SignRecords)

  • 存储学生签到记录
  • 包含记录ID、学生ID、会话ID、签到时间、签到状态等字段

人脸特征表 (FaceFeatures)

  • 存储学生人脸特征数据
  • 包含特征ID、学生ID、特征向量数据、更新时间等字段

五、技术架构

系统采用模块化设计,主要使用以下技术和框架:

前端界面

  • GUI框架: PyQt5
  • 界面美化: QSS样式表
  • 动画效果: QPropertyAnimation

后端逻辑

  • 编程语言: Python 3.6+
  • 数据库访问: mysql-connector-python
  • 环境配置: python-dotenv

人脸识别

  • 图像处理: OpenCV
  • 人脸识别: face_recognition库和dlib
  • 数据处理: NumPy

数据可视化

  • 图表库: Matplotlib和PyQtChart
  • 数据分析: Pandas

六、系统结构

系统文件组织结构如下:

项目根目录/
│
├── main_window.py          # 主窗口
├── login_page.py           # 登录页面
│
├── student/                # 学生模块
│   ├── student_sign_page.py    # 学生签到页面
│   └── student_record_page.py  # 学生记录页面
│
├── teacher/                # 教师模块
│   ├── teacher_course_page.py  # 教师课程管理页面
│   ├── teacher_session_page.py # 教师签到会话页面
│   ├── teacher_stats_page.py   # 教师统计分析页面
│   └── student_manage_page.py  # 学生管理页面
│
├── admin/                  # 管理员模块
│   └── admin_settings_page.py  # 管理员设置页面
│
├── entity/                 # 实体类
│   └── user.py            # 用户实体类
│
├── dao/                    # 数据访问层
│   ├── user_dao.py        # 用户数据访问
│   ├── course_dao.py      # 课程数据访问
│   └── sign_dao.py        # 签到数据访问
│
├── service/                # 服务层
│   ├── auth_service.py    # 认证服务
│   ├── face_service.py    # 人脸识别服务
│   └── report_service.py  # 报表服务
│
├── util/                   # 工具类
│   ├── db_util.py         # 数据库工具
│   ├── export_util.py     # 考勤数据导出Excel工具
│   └── face_util.py       # 人脸识别工具
│
├── resources/              # 资源文件
│   ├── styles/            # 样式表
│   └── icons/             # 图标
│
├── database/               # 数据库脚本
│   └── tea-stu-sign.sql   # 数据库结构及初始数据
│
├── data/                   # 数据存储目录
│   └── faces/             # 人脸特征存储
│
└── cascades/               # OpenCV级联分类器

七、环境要求

  • 操作系统: Windows/Linux/macOS
  • Python: 3.6+
  • 数据库: MySQL 8.0+
  • 摄像头: 支持USB摄像头

依赖项

PyQt5==5.15.9
opencv-python==4.8.0
numpy==1.24.3
mysql-connector-python==8.0.33
python-dotenv==1.0.0
face_recognition==1.3.0
dlib==19.24.0
matplotlib==3.7.1
pandas==2.0.1
openpyxl
Pillow==9.5.0
PyQtChart==5.15.6

八、安装与运行

  1. 克隆仓库到本地
git clone https://github.com/yourusername/tea-stu-sign.git
cd tea-stu-sign
  1. 安装依赖项
pip install -r requirements.txt
  1. 安装MySQL数据库并执行初始化脚本
mysql -u your_username -p < database/tea-stu-sign.sql

脚本将自动创建数据库 tea-stu-sign、表结构及初始数据。

  1. 配置数据库连接

创建 .env 文件并设置以下环境变量(数据库名需为 tea-stu-sign):

DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=tea-stu-sign
  1. 运行系统
python main_window.py

九、默认账号与初始数据

执行 database/tea-stu-sign.sql 后,系统将预置以下测试账号及初始数据:

管理员账号

  • 用户名: admin
  • 密码: admin

教师账号(密码均为 123456)

  • teacher1 / 张老师
  • teacher2 / 李老师

学生账号(密码均为 123456)

  • student1 / 王小明
  • student2 / 李小红
  • student3 / 陈小华
  • student4 / 刘小强
  • student5 / 赵小芳

初始数据:包含 3 门课程(高等数学、线性代数、大学英语)、选课关系及部分历史签到会话与记录,便于快速体验系统功能。

十、注意事项

  • 首次运行时会自动创建必要的数据目录
  • 使用人脸识别功能时请确保摄像头工作正常
  • 确保MySQL服务已启动并正确配置
  • 建议在光线良好的环境下使用人脸识别功能,以提高识别准确率

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

微信二维码
Jay 微信二维码