美文网首页
员工管理系统,改进,且动态加盐

员工管理系统,改进,且动态加盐

作者: 晨颜 | 来源:发表于2023-03-12 22:28 被阅读0次
import  os
import re
import json
import time
import sys
import hashlib
import random

is_login={'is_login':False}
super_purview={'super_purview':'普通用户'}
id_employee_dict={}
path1=os.path.abspath(os.path.join(os.path.abspath('core'), "..\\.."))
print('test:psth1=',path1)
sys.path.append(path1)
sys.path.append(path1+'\\lib')
# 装饰器权限检测
def login_purview(func):
    def auth(*args,**kwargs):
        if super_purview.get('super_purview')=="管理员" or super_purview.get('super_purview')=="超级管理员":
            res = func(*args,**kwargs)
            return res
        else:
            print('权限不足')
    return auth
# 装饰器超级权限检测
def login_super_purview(func):
    def auth(*args,**kwargs):
        if super_purview.get('super_purview')=='超级管理员':
            res = func(*args,**kwargs)
            return res
        else:
            print('权限不足')
    return auth
def statstics_time(func_name):
    # func_name = index
    def get_time(*args, **kwargs):
        # 1. 在函数执行之前,要记录一下此时的时间
        start_time = time.time()
        # 2. 开始执行函数
        func_name(*args, **kwargs)
        # 3. 函数执行完毕之后,再次记录此时的时间
        end_time = time.time()
        # 4. 统计函数的执行时间
        print('执行了%s秒' % (end_time - start_time))
    return get_time
@statstics_time
def login():
    '''
    # 转注册
    while True:
        input_chhoose=input("无账号?选择1进入注册,选择其他则继续登录")
        if input_chhoose!='1':
            break
        else:
            register()'''
    # 输入并校验员工编号
    while True:
        input_employee_id=input("请输入员工编号:")
        if is_exist(input_employee_id):
            break
        else:
            print('错误,重来')
    # 输入并校验密码
    while True:
        input_employee_pwd=input("请输入密码:")
        read_file(input_employee_id)
        res=id_employee_dict.get('校验码')
        pwd = input_employee_pwd + res
        md5 = hashlib.md5()
        md5.update(pwd.encode('utf-8'))
        cryptograph_pwd = md5.hexdigest()
        # print("测试,密文=", cryptograph_pwd)
        if id_employee_dict.get('密码')==cryptograph_pwd:
            print('成功登录')
            break
        else:
            print('错误,重来')
    # 修改登录状态
    global is_login
    is_login['is_login']=True
    # 检测并获得相应权限
    super_purview['super_purview']=id_employee_dict.get('权限')
def login_auth(func):
    def auth(*args,**kwargs):
        if is_login.get('is_login'):
            res = func(*args,**kwargs)
            return res
        else:
            print('未登录,请先登录')
            while 1:
                cmd=input('1.登录 2.注册')
                if cmd=='1':
                    login()
                    break
                elif cmd=='2':
                    register()
                    print('注册成功,请登录')
                    login()
                    break
                else:
                    print('好好输入')
    return auth
def is_id(input_id):
    res=re.findall('^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$',input_id)
    if res==[]:
        print("test notid")
        return 0
    else:
        print("test id")
        return 1
def is_phone(input_phone):
    res=re.findall('^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$',input_phone)
    if res==[]:
        return 0
    else:
        return 1
def register():
    # 员工编号
    while True:
        input_employee_id = input("请输入员工编号:")
        if is_exist(input_employee_id):
            print('已经存在,重来')
        else:
            break
    # 姓名
    input_name = input("请输入姓名:")
    # 密码
    input_employee_pwd = input("请输入密码:")
    res=get_code(5)
    pwd=input_employee_pwd +res
    md5 = hashlib.md5()
    md5.update(pwd.encode('utf-8'))
    cryptograph_pwd=md5.hexdigest()
    print("测试,密文=",cryptograph_pwd)
    # 身份证号码
    while True:
        input_id = input("请输入身份证号码:")
        if is_id(input_id):
            break
        else:
            print('错误,重来')
    # 手机号码
    while True:
        input_phone = input("请输入手机号码:")
        if is_phone(input_phone):
            break
        else:
            print('错误,重来')
    # 部门
    department_dict={

    }
    # 职位
    job_dict={
        "1":"总经理(总裁)",
        "2":"副总经理",
        "3":"人力资源总监",
        "4":"财务总监(CFO)",
        "5":"营销总监",
        "6":"市场总监(CMO)",
        "7":"销售总监",
        "8":"生产总监",
        "9":"运营总监",
        "10":"技术总监(CTO)",
        "11":"总经理助理"
    }
    print(job_dict)
    while True:
        input_job = input("请选择职位:")
        if input_job in job_dict:
            job=job_dict[input_job]
            break
        else:
            print('错误,重来')
    # 合成字典
    id_employee_dict={"员工编号":input_employee_id,"姓名":input_name,"密码":cryptograph_pwd,"校验码":res,"职位":job,"手机号码":input_phone,"身份证号码":input_id,"权限":"普通用户"}
    # print("测试id_employee_dict=",id_employee_dict)
    # file_path=os.path.join(path1,"db",id_employee_dict.get("员工编号")+'.txt')
    write_file(add,id_employee_dict.get("员工编号"),id_employee_dict)

    run()

def read_file(employee_id):
    # path1=os.path.abspath(os.path.join(os.path.abspath('core'), "..\\.."))
    file_path=path1+'\\db\\'+employee_id+'.txt'
    # print(file_path)
    with open(file_path,'r',encoding='utf-8') as f:
        global id_employee_dict
        id_employee_dict=json.load(f)
        return id_employee_dict

def write_file(doing,employee_id,*args):
    if doing==add:
        # arg接收了员工字典
        with open(os.path.join(path1, "db", employee_id + '.txt'), 'w', encoding='utf-8') as f:
            json.dump(args[0],f,ensure_ascii=False)# ensure_ascii=False,不然,默认是True,会转为万国码
        print('成功')
    elif doing==delete:
        os.remove(os.path.join(path1, "db", employee_id + '.txt'))
        # with open(os.path.join(path1, "db", employee_id + '.txt'), 'w', encoding='utf-8') as f:
    elif doing==modify:
        pass

def change_purview():
    pass
@login_auth
def add():
    register()
@login_auth
def delete():
    while True:
        input_employee_id = input("请输入员工编号:")
        if is_exist(input_employee_id):
            write_file(delete,input_employee_id )
            break
        else:
            print('查无此人,重来')
@login_auth
def find():
    while True:
        input_employee_id = input("请输入员工编号:")
        if is_exist(input_employee_id):
            with open(os.path.join(path1,'db',input_employee_id+'.txt'),'r',encoding='utf-8') as f:
                id_employee_dict=json.load(f)
                print(id_employee_dict)
            break
        else:
            print('查无此人,重来')
# def is_exist(input_employee_id):
def employee_id_list():
    file_list=os.listdir(path1+'\\db')
    employee_id=[]
    for file_name in file_list:
        id=re.findall(('(.+).txt'),file_name)
        if id!=[]:
            # print('id=',id)
            employee_id.append(id[0])
        print('测试employee_id=',employee_id)
    return employee_id
def is_exist(input_employee_id):
    # path1=os.path.abspath(os.path.join(os.path.abspath('core'), "..\\.."))
    # print(path1)
    # employee_id_list()
    for employee_id in employee_id_list():
        if input_employee_id==employee_id:
            return 1
    else:
        return 0
@login_auth
@login_purview
@login_super_purview
def view_all():
    employee_file_name_list=[]
    file_list=os.listdir(os.path.join(path1,'db'))
    # print('测试file_list=',file_list)
    for file_name in file_list:
        employee_file_name=re.findall(('.+.txt'),file_name)
        if employee_file_name!=[]:
            # print('测试employee_file_name=',employee_file_name)
            employee_file_name_list.append(employee_file_name[0])
            res=os.path.join(path1,'db',employee_file_name[0])
            # print(res)
            with open(res,'r',encoding='utf-8')as f:
                # json.load(f)
                print(f.read())
            # json.load(open(os.path.join(path1,'db',employee_file_name),'r',encoding='utf-8'))
        # print('测试mployee_file_name_list=',employee_file_name_list)

#产生随机数
def get_code(n):
    code = ''  # 存储生成的随机验证码
    # 6位的验证码
    for i in range(n):
        # 1. 产生0-9之间的任意一个数据
        random_int = str(random.randint(0, 9))

        # 2. 产生大写字母
        random_upper = chr(random.randint(65, 90))  # A-Z

        # 3. 产生小写字母
        random_lower = chr(random.randint(97, 122))  # a-z

        # 4. 要从以上三种情况中随机选出一个字符来
        temp = random.choice([random_int, random_lower, random_upper])
        # print(temp,end='')
        code += temp
    return code
# res=get_code(6)
def menu():
    print("""
    欢迎来到员工管理系统,请输入选择:
    1.增加,2查找,3删除 4.查看全体⽤户数据功能 0退出
    请输入选项
    """)

fun_dict={
    '1':add,
    '2':find,
    '3':delete,
    '4':view_all,
    # '4':add,
    }
def run():
    while True:
        menu()
        cmd=input()
        if cmd in fun_dict:
            res=fun_dict[cmd]
            res()
        else:
            print('重来')
# run()
run()
# register()

相关文章

  • 2020-06-09

    云卡通人脸识别系统含盖:动态人脸识别门禁管理系统、动态人脸识别消费系统、动态人脸识别考勤系统。其中动态人脸识别消费...

  • Python3 EMS项目练习——添加员工

    EMS员工管理系统 练习 做一个命令行版的员工管理系统 功能:四个:1.查询显示当前系统中的所有员工2.添加将员工...

  • 基于swoole的php源码包升级原理实现

    场景:假设一个员工管理系统项目有如下功能 员工考勤管理 员工请假管理 薪资查询 员工报表统计 合同管理 项目的要求...

  • 员工培训管理系统怎么做

    员工培训管理系统对企业来说很重要,因为做好了员工培训管理系统,就能让员工培训完整有序地进行,也能了解员工培训的结果...

  • 机智云之物联网自助开发(产品服务)

    一、云平台: 1、运营系统(多租户管理,产品接入管理,动态计费管理,设备管理,用户管理,动态接入管理) 【1】行业...

  • 人事管理系统(功能介绍)

    系统功能简述 一、系统管理 用户管理 1.员工状态管理(待审核,实习,转正,离职,已开除) 2.员工离职管理a.员...

  • 【2021原创】java+swing+mysql员工工资管理系统

    本系统为java+swing+mysql的员工工资管理系统,包含员工和管理员,系统功能如下: 用户:登录;查看工资...

  • Python--列表序列练习--EMS员工管理系统

    一、EMS员工管理系统(Employee Manager System) 功能:1.查询--显示系统中的所有员工 ...

  • 2020-05-14

    云卡通人脸识别消费系统解决方案 云卡通人脸识别系统含盖:动态人脸识别门禁管理系统、动态人脸识别消费系统、动态人脸识...

  • 分钱,花钱,赚钱

    每个公司都有一个完成的管理系统, 激发善意只适用于小的团队, 领导更关注员工动态。 忙不开。 但效果却很好,能有...

网友评论

      本文标题:员工管理系统,改进,且动态加盐

      本文链接:https://www.haomeiwen.com/subject/xmvqrdtx.html