Loading

代码百宝箱

1.员工管理系统V1.0版本

# 超级权限
root_name = 'alan'
root_pwd = '123'

# 认证登录,登录一次即可
is_login = {'is_login': False}


# 构建装饰器,添加一个认证功能
def out_func(func_name):
    def inner_func(*args, **kwargs):
        # 判断是否认证过,若认证过了,直接运行被装饰的函数
        if is_login.get('is_login'):
            get_return = func_name(*args, **kwargs)
            print('>>>>>>')
            return get_return
        print('需要管理员认证后才能继续操作')
        user_name = input('请输入管理员账号>>>').strip()
        user_pwd = input('请输入管理员密码>>>').strip()
        # 对比管理员数据
        if user_name == root_name and user_pwd == root_pwd:
            is_login['is_login'] = True
            get_return = func_name(*args, **kwargs)
            return get_return
        else:
            print('账号密码错误,认证失败!!!')

    return inner_func


# 注册
def sign(*args, **kwargs):
    print('注册中......')
    print('注册界面'.center(50, '*'))
    # 获取用户输入的注册信息
    user_name = input('请输入注册名>>>').strip()
    user_pwd = input('请设置密码>>>').strip()
    user_id = input('员工编号>>>').strip()
    # 信息格式化
    user_info = '%s|%s|%s' % (user_name, user_pwd, user_id)
    with open(r'info.txt', 'r', encoding='utf8') as read_f:
        # 将文件信息转换成列表
        for one_line in read_f:
            real_name, real_pwd, real_id = one_line.split('|')
            real_id = real_id.strip('\n')
            if user_id == real_id:
                print('%s编码已存在' % real_id)
                break
        else:
            with open(r'info.txt', 'a', encoding='utf8') as append_f:
                append_f.write(user_info + '\n')
            print(f'{user_name}注册成功!')


# 登录
def login(*args, **kwargs):
    print('登录中......')
    print('登录界面'.center(50, '*'))
    # 获取用户登录信息
    login_name = input('请输入用户名>>>').strip()
    login_pwd = input('请输入密码>>>').strip()
    # 对比信息
    with open(r'info.txt', 'r', encoding='utf8') as f:
        for line in f:
            real_name, real_pwd, real_id = line.split('|')
            if login_name == real_name and login_pwd == real_pwd:
                print('登录成功!')
                break
            else:
                print('用户或者密码错误')


# 查看员工,需要高级权限,语法糖
@out_func
def index_info(*args, **kwargs):
    # 查看全员信息还是个人信息
    input_cmd = input('需要查看全员信息还是个人信息(all/one)>>>')
    if input_cmd == 'all':
        print('👇全员信息如下👇'.center(50, '👇'))
        with open(r'info.txt', 'r', encoding='utf8') as f:
            for line in f:
                print(line.strip())
    elif input_cmd == 'one':
        find_name = input('请输入员工姓名')
        with open(r'info.txt', 'r', encoding='utf8') as f:
            for line in f:
                real_name, real_pwd, real_id = line.split('|')
                if find_name == real_name:
                    print(line)
                    break
            # 如果不倒缩进,会打印两次
            else:
                print('没有该员工')
    else:
        print('输入有误,请重新输入')
        index_info(*args, **kwargs)


# 管理员添加员工信息
@out_func
def insert_info(*args, **kwargs):
    print('添加用户信息中---')
    print('添加界面'.center(50, '*'))
    # 输入用户信息
    user_name = input('请输入员工姓名>>>').strip()
    user_pwd = input('请设置密码>>>').strip()
    user_id = input('请输入员工编号>>>').strip()
    user_info = '%s|%s|%s' % (user_name, user_pwd, user_id)
    cmd = input('请用户确认信息%s(y/n)>>>' % user_info)
    if cmd == 'y':
        with open(r'info.txt','r',encoding='utf8') as f:
            for line in f:
                real_name,real_pwd,real_id = line.split('|')
                if user_id == real_id:
                    print('该用户编号已存在,请重新输入')
                    break
            else:
                with open(r'info.txt','a',encoding='utf8') as f1:
                    f1.write(user_info + '\n')
                print('添加%s成功!!' % user_name)
    else:
        print('请重新输入>>>')
        insert_info(*args, **kwargs)


# 管理员删除员工
@out_func
def del_info(*args, **kwargs):
    print('删除界面'.center(50, '×'))
    del_name = input('请输入需要删除的员工姓名').strip()
    with open(r'info.txt', 'r+t', encoding='utf8') as f:
        for line in f:
            if del_name in line:
                continue
            f.write(line + '\n')
            print(f'员工{del_name}删除成功')


# 搭建系统框架
func_dic = {
    '1': sign,
    '2': login,
    '3': index_info,
    '4': insert_info,
    '5': del_info,
    'q': exit
}
while True:
    print('''
    1.员工注册
    2.员工登录
    3.查看员工信息
    4.添加员工
    5.删除员工
    q.退出系统
    ''')
    choice = input('请输入需要执行的功能编号>>>').strip()
    if choice in func_dic:
        if choice == 'q':
            print('退出系统')
            break
        else:
            func_name = func_dic.get(choice)
            func_name()
    else:
        print('请按提示输入功能编号>>>')

2.函数使用次数计数器

def out_func(func):
    def inner_func(*args, **kwargs):
        with open(r'a.txt', 'r', encoding='utf8') as f:
            count = f.read()
            count = int(count)
        func()
        count += 1
        with open(r'a.txt', 'w', encoding='utf8') as f:
            f.write('%s' % count)
        print('函数已运行%s次' % count)
    return inner_func

@out_func
def func(*args, **kwargs):
    pass

func()
posted @ 2021-11-22 00:17  木子乐乐  阅读(19)  评论(0)    收藏  举报