加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

500行Python代码打造刷脸考勤系统,其实也就那么简单

发布时间:2019-06-03 20:08:17 所属栏目:优化 来源:IT世界圈
导读:需求分析 员工刷脸考勤系统,采用Python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部信息,二是持久化地保存这些信息到数据库中去。更细地,还涉及表的设计;另一个基本要求

def loadDataBase(self,type):

  • 该模块函数完成从数据库读取数据的操作,包括读取员工信息和考勤信息,第二个参数type用于标识是加载员工信息还是考勤信息,一方面,可以统一接口,打开数据库和得到游标、关闭连接是一样的,将两个读取接口合二为一,提高代码复用度;另一方面,可以减少加载的工作量,减少IO,提高程序运行速度;最后,因为读取信息前对上一次读取的信息列表做了清空处理,用type标识可以避免读取一个表时对另一个表造成的误操作。

def insertARow(self,Row,type):

  • 该模块函数完成写数据库操作,第二个参数为准备写的一条记录,第三个参数type表示要对哪一个表进行写操作。

def adapt_array(self,arr):

  • 将提取的人脸特征信息(列表)压缩,入口参数就是待压缩的数据,出口参数是压缩后的数据,用于写入数据库。

def convert_array(self,text):

  • 将读取出来的数据解压缩成人脸特征信息,入口参数是待解压得数据,出口参数是解压后的数据。

def return_euclidean_distance(feature_1, feature_2):

  • 计算两个人脸的欧式距离,入口参数是两个人脸的特征数据,出口参数是判定的结果,欧式距离大于0.4判为不同,不大于判为相同。

def OnNewRegisterClicked(self,event):

  • 见名知义,菜单新建录入的监听事件,参数event为事件信息,其他几个菜单的(OnFinishRegisterClicked,OnStartPunchCardClicked, OnEndPunchCardClicked, OnOpenLogcatClicked,OnCloseLogcatClicked)类似,在此不再赘述。

def getDateAndTime(self):

  • 得到当前日期和时间,并组装成特定格式作为出口参数返回。

函数调用关系:箭头指向被调用者

500行Python代码打造刷脸考勤系统,其实也就那么简单

在线预览地址:

https://www.processon.com/view/link/5bbe0b0de4b0534c9bfbecb4

程序运行结果

程序主界面

500行Python代码打造刷脸考勤系统,其实也就那么简单

新建录入

500行Python代码打造刷脸考勤系统,其实也就那么简单
500行Python代码打造刷脸考勤系统,其实也就那么简单
500行Python代码打造刷脸考勤系统,其实也就那么简单

我们看到,信息栏有人脸数据重复警告,本次录入取消。

于是我们把数据库数据删了重来。

500行Python代码打造刷脸考勤系统,其实也就那么简单

下面是打印的日志信息(为保证格式,复制到记事本中截的图)

看到已经录入成功了。

开始打卡

500行Python代码打造刷脸考勤系统,其实也就那么简单

提示信息打印如下

500行Python代码打造刷脸考勤系统,其实也就那么简单

迟到与否的临界时间是9:00

展示日志

500行Python代码打造刷脸考勤系统,其实也就那么简单
500行Python代码打造刷脸考勤系统,其实也就那么简单

只有已经录入且第一次成功签到才会写进到数据库,无论迟到与否。

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读