Python OpenCV开发MR智能人脸识别打卡系统(二、文件系统、数据实体模块设计)

需要源码请点赞关注收藏后评论区留言私信~~~

整体系统讲解如下

Python OpenCV开发MR智能人脸识别打卡系统(一、需求分析与系统设计)

Python OpenCV开发MR智能人脸识别打卡系统(三、工具模块设计)

Python OpenCV开发MR智能人脸识别打卡系统(四、服务模块设计)

Python OpenCV开发MR智能人脸识别打卡系统(五、程序入口设计与测试)

一、文件系统设计

本程序没有使用任何数据库保存数据,而是采用直接读写文件的方式来保存数据,项目中的所有数据文件都保存在data文件夹下

程序使用的数据文件及文件夹信息如下图所示

Python OpenCV开发MR智能人脸识别打卡系统(二、文件系统、数据实体模块设计)

 下面详细介绍每种数据文件的内容格式

1:employee_data.txt文件以字符串的形式保存所有员工的数据,数据之间用英文逗号隔开,一行保存一个员工

编号1,姓名1,特征码1

2:lock_record.txt文件以字符串的形式保存数据,数据格式为打卡记录字典的字符串内容,格式如下

{姓名 a:[日期 list],姓名 b:[日期 list],…. 

3:work_time.txt文件以字符串的形式保存数据 格式如下 

08:00:00/16:00:00

前一个为上班时间,后一个时间为下班时间,系统以这两个事件标准判断员工是否出现迟到,早退

4:user_password.txt文件以字符串的形式保存数据,数据格式为管理员账号密码字典的字符串内容

{管理员账号:管理员密码} 

用户可以在这个文件夹中手动修改管理员账号和密码

5:/data/face文件夹下保存的是所有员工的照片文件

二、数据实体模块设计

 entity包下的organization文件用于封装数据模型,该文件中设计了员工类,并提供一些维护数据的方法 接下来进行详细介绍

1:构建员工类

创建Employee类作为员工类,并创建三个包含参数的构造方法,三个参数分别是员工编号,员工姓名和员工特征码,员工类将作为系统的最重要的数据模型,以对象的方式保存每一位员工的信息

# 员工类
class Employee:
    def __init__(self, id, name, code):
        self.name = name  # 员工编号
        self.id = id  # 员工姓名
        self.code = code  # 员工的特征码

2:全局变量

organizations.py中的全局变量较多,主要用来当作系统缓存保存所有数据

3:增删员工

organizations.py提供了添加新员工和删除员工的方法,其他模块需要调用这些方法来进行增删操作,不应该直接修改Employee列表中的数据

def add(e: Employee):
    EMPLOYEES.append(e)
def remove(id):
    for emp in EMPLOYEES:
        if str(id) == str(emp.id):
            EMPLOYEES.remove(emp)  # 员工列表中删除员工
            if emp.name in LOCK_RECORD.keys():  # 如果存在该员工的打卡记录
                del LOCK_RECORD[emp.name]  # 删除该员工的打卡记录
            break

4:分配ID

员工编号是员工的唯一标识,有新员工加入时,应为其分配最新编号,其生成规则为当前最大的员工编号+1,这样可以保证所有编号都不重复

# 获取新员工的ID
def get_new_id():
    global MAX_ID  # 调用全局变量
    MAX_ID += 1  # 当前最大的ID + 1
    return MAX_ID

创作不易 觉得有帮助请点赞关注收藏~~~

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年2月25日 下午8:18
下一篇 2023年2月25日 下午8:22

相关推荐