python作业1

# -*- coding: UTF-8 -*-
# Author:WangDaWei

USER_LIST = {'LOGIN': False, 'privileges': '2'}
INF = []
with open('inf', 'r', encoding='utf-8') as f:
    for line in f:
        str1 = line.strip().split('|')
        INF.append(str1)


def outer1(func):  # 普通用户的注册用户和修改密码时,必须登录用户的权限验证
    def inner(*args, **kwargs):
        if USER_LIST['LOGIN']:
            ret = func(*args, **kwargs)
            return ret
        else:
            print('请先登录一个已经存在的用户,然后进行其他操作.')
    return inner


def outer2(func):  # 管理员的一些特殊权限验证
    def inner(*args, **kwargs):
        if USER_LIST['privileges'] == '1':
            ret = func(*args, **kwargs)
            return ret
        else:
            print('您不是管理员,没有权限.')
    return inner


def login():  # 验证当前登录的用户是否存在
    user = input('请输入你要登录的用户:')
    pwd = input('请输入你要登录用户的密码:')
    for i in INF:
        if user == i[0] and pwd == i[1]:
            USER_LIST['LOGIN'] = True
            USER_LIST['CURRENT'] = i[0]
            USER_LIST['privileges'] = i[3]
            print('欢迎 %s 登录.' % USER_LIST['CURRENT'])
            break
        else:
            USER_LIST['LOGIN'] = False
    if not USER_LIST['LOGIN']:
        print('用户密码错误,请重新登录.')


@outer1
def register():  # 注册新的用户
    print('欢迎 %s 进行注册新的用户.' % USER_LIST['CURRENT'])
    user = input('请输入你要新注册的用户:')
    # 判断用户是否已经存在
    for i in INF:
        if i[0] == user:
            # 注册的用户已经存在,退出register函数
            print('您注册的用户 %s 已经存在' % user)
            return None
    pwd = input('请输入你要新注册的用户%s的密码:' % user)
    email = input('请输入你要新注册的用户%s的邮箱:' % user)
    privilege = input('请输入你要新注册的用户%s的级别(1为管理员,2为普通用户):' % user)
    # 新注册的用户信息拼接为新的列表并加入到INF列表中
    a = [user, pwd, email, privilege]
    INF.append(a)


@outer1
def ch_pwd():  # 为当前登录用户修改密码
    print('欢迎 %s 登录进行修改密码.' % USER_LIST['CURRENT'])
    new_pwd = input('请输入新的密码:')
    for i in INF:
        if i[0] == USER_LIST['CURRENT']:
            i[1] = new_pwd
            print('您的用户 %s 密码修改成功.' % USER_LIST['CURRENT'])
            break


@outer2
def del_user():  # 管理员删除用户
    for i in INF:
        print(i[0], i[-1])
    user = input('请输入你要删除的用户(其中1代表权限为管理员,2代表权限为普通用户):')
    delete_flag = 0
    for i in INF:
        if i[0] == user:
            INF.remove(i)
            delete_flag = 1
            print('用户 %s 删除成功' % i[0])
            # 如果当前管理员将自己删除,则需要强制重新登录用户
            if USER_LIST['CURRENT'] == user:
                print('当前登录用户 %s 已被删除,请重新登录其他用户' %user)
                login()
    if not delete_flag:
        print('指定删除的用户不存在.')


@outer2
def ch_prv():  # 管理员修改用户的权限
    for i in INF:
        print(i[0], i[-1])
    user = input('请输入你要修改权限的用户:')
    privileges = input('请输入你要修改的权限(其中1为管理员,2为普通用户):')
    change_flag = 0
    for i in INF:
        if i[0] == user:
            i[-1] = privileges
            change_flag = 1
            print('用户 %s 权限修改成功' % i[0])
            # 如果当前管理员将自己的权限修改,则对应的USER_LIST['privileges']需要进行修改,如果不重新登录
            if USER_LIST['CURRENT'] == user:
                USER_LIST['privileges'] = privileges
    if not change_flag:
        print('指定修改权限的用户不存在.')


@outer2
def view():  # 管理员查看所有用户的信息
    for i in INF:
        print('用户:%s,邮箱:%s,权限:%s(其中1为管理员,2为普通用户)' % (i[0], i[2], i[-1]))


def main():
    while True:
        inp = input('''请输入你的选择:
        1,用户登录
        2,用户注册
        3,用户修改密码
        4,管理员删除用户
        5,管理员修改用户权限
        6,管理员查看所有用户和对应信息
        s,保存当前修改
        t,退出):
        ''')
        if inp == '1':
            login()
        elif inp == '2':
            register()
        elif inp == '3':
            ch_pwd()
        elif inp == '4':
            del_user()
        elif inp == '5':
            ch_prv()
        elif inp == '6':
            view()
        elif inp == 's':
            with open('inf', 'w', encoding='utf-8') as f1:
                for p in INF:
                    str3 = '|'.join(p) + '\n'
                    f1.write(str3)
            print('保存成功.')
        else:
            with open('inf', 'w', encoding='utf-8') as f1:
                for p in INF:
                    str3 = '|'.join(p) + '\n'
                    f1.write(str3)
            exit()
main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值