# -*- 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()