需要源码请点赞关注收藏后评论区留言私信~~~
整体系统讲解如下
Python OpenCV开发MR智能人脸识别打卡系统(一、需求分析与系统设计)
Python OpenCV开发MR智能人脸识别打卡系统(三、工具模块设计)
Python OpenCV开发MR智能人脸识别打卡系统(四、服务模块设计)
Python OpenCV开发MR智能人脸识别打卡系统(五、程序入口设计与测试)
一、文件系统设计
本程序没有使用任何数据库保存数据,而是采用直接读写文件的方式来保存数据,项目中的所有数据文件都保存在data文件夹下
程序使用的数据文件及文件夹信息如下图所示
下面详细介绍每种数据文件的内容格式
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
创作不易 觉得有帮助请点赞关注收藏~~~
文章出处登录后可见!