基于Python的人脸识别考勤系统(毕设)

一个菜鸟搞毕业设计的过程分享,可能对迷茫的你起到一点点作用!

序言

在着手开发项目之前我们一定要对系统进行一个初步的规划,比如系统可以实现什么功能,是否需要开发GUI页面(大部分导师都会让你搞一个,仅仅少的导师不用你搞),如果需要可以对GUI页面就行一个简单的规划设计。当我们已经确定好了系统的大致框架开始配置开发环境,下载所需要的包,这里本人在做的时候花费大量的时间。

最后,在这里说一下(仅对小白\菜鸟)多查多看多参考着去做。开源精神YYDS!!!

系统设计——初级阶段

系统名称:睿课人脸识别课堂考勤系统v2.0

系统Logo(设计系统的Logo可以寻找一下外援,在这里本人找了热爱画画的小姐姐!)

 说明:在这里本人设计了两个logo,联名的形式。左一:白泽,右一:睿课,主要logo。

该系统本人设计了五大功能模块(不含登录和注册功能模块),分别是课堂考勤功能模块、信息采集功能模块、数据分析功能模块、使用指南功能模块(简易)、意见反馈功能模块(简易)、融媒体功能模块、数据与账户仓储功能模块、随机抽检功能模块。

 系统设计——中级阶段

一、搭配开发环境

完成了系统的规划,之后我们就可以着手开发了。首先,搭配我们的开发环境。其次,下载所需要的包,这里我不进行阐述安装与配置教程,遇到打开CSDN都可以解决。最后,当我们调试开发环境的时候已经下载这个包了,但是系统还是报错,我们可以尝试重启一下电脑试一下(亲测有效)。

 二、绘制GUI界面

本人绘制GUI页面所使用的工具是 QtDesigner。

1.欢迎界面设计:欢迎界面一般都是设计自动关闭跳到登录\注册功能模块,但是这里我采用了手动。设计与运行效果图如下所示。

 2.登录功能模块:图一登录页面为设计效果图,图二为登录页面运行结果图。

功能说明:对于登录界面主要承担的任务校验使用者所输入的账户与密钥是否合规、是否能与数据库中信息匹配成功,如果校验成功将跳转至主界面。同时该功能模块还具有跳转至注册账户界面的功能以及用户操作提示信息功能。当出现账户或者密钥为空与不对的情况下将弹出对话框加以提示。

  3.注册功能模块:这里只展示设计效果图了,不在展示运行效果图了(以下均是)。

功能说明:注册模块分成了两个GUI界面,这里我们把它称为注册_1界面与注册_2界面。注册_界面主要功能是检索用户设置的账户名称是否合规以及设置账户密钥的功能。在数据库中对设置的账户进行检索是否与其有重复的,如果出现重复了的情况系统将会给出提示信息对话框,当然注册成功系统也将会给出提示信息对话框。

除了上述的功能之外,当单击“返回”按钮时将返回至登录界面,单击“下一页”按钮时将把使用者设置的账户信息与密码信息写入到数据库中,并跳转至注册_2界面。

注册_2界面的功能主要是采集注册者的基本个人信息,当单击“注册”按钮时校验注册者重复录入的账号与密钥。当重复录入的账号与密钥信息相匹配时,将会把个人信息写入到数据库中,并会弹出提示信息对话框。如果出现错误将拒绝把个人信息写入到数据中,并且也会弹出相应错误信息的提示信息对话框,给使用者加以参考。

另外,当使用者单击“注册”按钮时除了上述的功能外还具有跳转至登录界面的功能。当单击“退出”按钮时将会中止注册,并且退出睿课系统。

 4.主界面功能模块: 主界面模块的功能主要是实现考勤功能模块、信息采集功能模块、数据分析模块、随机抽检功能模块、账号仓储功能模块等共计十大功能模块之间的跳转功能以及一键退出系统的功能。

 5.课堂考勤功能模块:对于考勤功能模块,主要设计实现人脸识别、重置考勤、简略统计出勤信息的功能。当使用者单击“开始考勤”命令按钮时系统调用设备上的摄像头,实时获取人脸信息,对比人脸,结束考勤时系统将自动统计出勤信息反馈给使用者。当使用者单击“重置考勤”命令按钮之后,系统将会给出提示信息,是否将所有已经标记为出勤的人员更改为未出勤,如果用户选择了“NO”将会取消本次操作反之执行。除此之外,该界面还设置了实时显示系统时间与日期。

 6.信息采集功能模块:对于信息采集功能模块,主要设计实现采集人脸信息、收集个人基本信息、训练人脸图像数据模型的功能。当使用者单击“人脸采集”命令按钮时系统调用设备上的摄像头,抓取人脸信息并将以保存。当点击“确认”命令按钮系统将会检查用户录入的个人信息是否符合规定,假若不符合标准将会拒绝用户的操作并给出错误信息加以参考,反之系统将会把个人的基本信息写入数据仓库之中并给出提示信息告知使用者操作成功。当单击“取消”命令按钮时系统将视为用户放弃了个人信息采集流程,将会中止数据库的写入曹操,并且清除用户录入的信息。 

另外,当单击“Home”命令按钮时将会回到主界面。

7.数据分析功能模块:数据分析模块承担了分析综合出勤数据情况、分析个人出勤情况、列出缺勤的学生名单的这些主要功能。当用户使用了分析个人出勤情况功能时,系统不但反馈给用户该生的出勤次数,出勤率,而且系统还会计算出出勤评分,当评分小于7.0时系统将会显示标签“重点关注”来提示用户。

另外,当用户从主界面跳转至数据分析界面时,综合数据分析看板区域将会实现数据的可视化分析。在使用者单击“数据分析”命令按钮后系统将会统计出勤人数,缺课人数,显示缺勤名单。除此之外,系统将会根据出勤率评判本节课的出勤情况。当出勤率大于等于90%时系统将会评定为优秀,大于等于80%评定为良好,大于等于70%评定为一般,小于70%系统将会弹出提示信息提醒当堂授课教师,并且系统评定为危险。

 8.随机抽检功能模块:本系统设置随机抽检的功能模块是为了防着出现“考勤不出勤”的现象,简单来说是学生只来参加考勤环节,等待考勤结束便离开教室而参加剩下的教学活动。为了避免此类情况的发生,所以本系统设置了该功能模块。当使用者单击“随机抽检”命令按钮之时,系统将会从数据库查询考勤状态被标记为“出勤”的学生进行筛选,从而在这部分人里面进行随机选择。假若被抽检到的该生恰好是“考勤不出勤”使用者就可以通过单击“改为缺勤”命令按钮将其的考勤状态变更为缺勤。如若抽检到的该生出勤了,使用者却误操作将该生设置成立未出勤,也可通过单击“撤销操作”命令按钮。该功能模块不仅有上述的功能之外,还可以显示被抽检学生的姓名、学号、班级、性别、出勤次数、出勤率的信息。

 9.数据仓储功能模块:数据仓储模块的功能主要包括对学生个人信息方面的变更;例如,学院、专业、姓名、班级、E-mail等个人信息,但是性别与学号字段是不允许用户进行变更的,为只读信息。在进行变更学生个人信息之前,操作者必须完成信息校验,只用通过了信息校验才有权操作编辑个人信息,否则系统将不允许操作者的任何请求。

当单击“信息变更”命令按钮时,系统将会检验使用者录入的信息是否合规,一个区域内的信息项是关联的不允许有空项,所以系统也会对是否含有空项。假若含有则会驳回操作者的请求,并给出相应的错误信息进行参考。

 10.账户仓储功能模块:

对于账户仓储功能模块的设计意图与数据仓储功能模块是一样的,只不过账户仓储面向教职工服务,而数据仓储面向学生服务。该模块所具有的功能如下所示:

账户保护:该功能主要是提升账户等级,开启账户保护功能后所有人都不能对该账户进行任何操作,包括这个账户的所有者,该账户只能所用于登录。

注销账户:当使用者触发该功能信号,系统将会执行对应的槽函数。将其在数据库中的所有信息删除,这个账号将不乏存在,不能在用于登录本系统了。

变更账户: 该功能主要是支持使用者修改账户名。

变更密钥:该功能主要是支持使用者修改账户密钥。

信息变更:主要包括对教职工个人信息方面的修改;例如,教职工ID、姓名、学院的个人信息修改,但是性别与学校字段是不允许用户进行变更的,为只读信息。

 11.其他模块:对于融媒体、使用指南以及意见反馈功能模块的设计其实没有什么实质性的意义,在设计之初是为了主界面布局合理些等作用。所以这里就不在阐述功能说明,只放上一些图。

使用指南↑

 意见反馈↑

  系统设计——尾声阶段(重要阶段)

一、将设计的GUI界面转换成.py脚本文件

这里我们将涉及到PyUIC与PyRCC。

使用Qt Designer所设计的GUI将会生成格式为.ui、.qrc的文件,Python是不能够识别的,所以我们要使用PyUIC和PyRCC这两个工具分别将.ui、.qrc格式的文件转换称为Python所能够执行的.py格式的文件。

详细的配置方法移步搜索学习一下,这里简单叙述一下。

 首先,单击“+”按钮,在弹出的编辑设置框中的“名称”一栏中填写参数“PyUIC”;“程序”一栏中填写python.exe可执行程序的文件路径。其次,在“实参”一栏中填写“-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py”命令。最后,在“工作目录”一栏中填写“$FileDir$”,均输入完毕之后单击“确定”按钮完成配置。PyUIC配置过程如图下所示。

 PyRCC工具以类似 PyUIC的方式来配置,同样在“外部工具”设置中单击“+”按钮,在设置框中“名称”一栏填写参数“PyRcc”;在弹出的编辑设置框中“名称”一栏中填写“PyRCC”;“程序”一栏中填写python.exe程序的文件路径;“实参”一栏中填写“$FileName$ -o $FileNameWithoutExtension$_rc.py”命令。最后在“工作目录”一栏中填写“$FileDir$”,均输入完毕之后单击“确定”按钮完成配置。PyUIC配置过程如图下所示。

 二、编写代码

按照模块依次完成。遇到困难利用好网络,开源精神YYDS!!

我将自己组合的粗略代码(非常之低级)整合后发布在标题为:基于Python的人脸识别课堂系统(毕设)——附录

三、系统测试

在毕业设计中,系统测试是一个非常关键的环节。它的重要意义是对整个系统的开发过程进行最终的审查,以保证系统的质量和可靠性。虽然对整个系统的开发过程都进行了严格的技术审核,但我们还是期望能够在系统测试的过程中,及早的发现和纠正这些问题。在正式启用之前,若不能及时发现并修正错误,将会给整个考勤系统带来很大的影响。

 

物联沃分享整理
物联沃-IOTWORD物联网 » 基于Python的人脸识别考勤系统(毕设)

发表评论