python作业之用户管理程序详解编程语言

数据库的格式化如下

分别为姓名|密码|电话号码|邮箱|用户类型

[email protected]|1
[email protected]|1
[email protected]|0
[email protected]|1
# 1、普通用户
# 登陆,注册,修改密码,查看本用户信息

# 2、管理员用户
# 登陆,注册,修改密码,查看本用户信息
# 删除普通虚拟机,添加普通用户信息
# 查看所有的普通用户,按照指定的关键字搜索用户信息
# 提高普通用户的权限

# 3、要求
# 权限用装饰器
# 用户信息,用文件存储

# 4、文件内容
# 用户名|密码|手机号码|邮箱地址|用户类型

代码如下

#Auther Bob 
#--*--coding:utf-8--*-- 
# 1、普通用户 
# 登陆,注册,修改密码,查看本用户信息 
 
# 2、管理员用户 
# 登陆,注册,修改密码,查看本用户信息 
# 删除普通虚拟机,添加普通用户信息 
# 查看所有的普通用户,按照指定的关键字搜索用户信息 
# 提高普通用户的权限 
 
# 3、要求 
# 权限用装饰器 
# 用户信息,用文件存储 
 
# 4、文件内容 
# 用户名|密码|手机号码|邮箱地址|用户类型 
 
login_dict = {"is_login": None, "login_type": None} 
login_list = [] 
user_list = [] 
tmpe_user_list = [] 
with open("db", "r", encoding="utf-8") as f: 
    for line in f: 
        tmpe_user_list = line.strip().split("|") 
        user_list.append(tmpe_user_list[0]) 
        tmpe_user_list = [] 
 
 
def manage_user(func): 
    def inner(*args, **kwargs): 
        if login_dict["is_login"] == "1" and login_dict["login_type"] == "1": 
            ret = func(*args, **kwargs) 
            return ret 
        elif login_dict["is_login"] == None: 
            print("请先登陆") 
            login() 
        elif login_dict["is_login"] == "1" and login_dict["login_type"] == None: 
            print("请使用管理员账号登陆") 
            login() 
        else: 
            pass 
 
    return inner 
 
 
def common_user(func): 
    def inner(*args, **kwargs): 
        if login_dict["is_login"] == None: 
            print("请先登陆") 
            login() 
        elif login_dict["is_login"] == "1": 
            ret = func() 
            return ret 
 
    return inner 
 
 
def login(): 
    user_name = input("请输入用户名:") 
    user_passwd = input("请输入%s的密码:" %(user_name)) 
    if user_name in user_list: 
        with open("db", "r", encoding="utf-8") as f: 
            for line in f: 
                login_list = line.strip().split("|") 
                # print(login_list[0]) 
                # print(login_list[1]) 
                if user_name == login_list[0] and user_passwd == login_list[1]: 
                    print('欢迎%s登陆管理平台' %(user_name)) 
                    if login_list[4] == "1": 
                        login_dict["is_login"] = "1" 
                        login_dict["login_type"] = "1" 
                        print(login_dict) 
                    else: 
                        login_dict["is_login"] = "1" 
                        login_dict["login_type"] = None 
                        print(login_dict) 
                    break 
            else: 
                print("用户名或者密码错误,请重新登陆:") 
                login_dict["is_login"] = None 
                login_dict["login_type"] = None 
                login() 
    else: 
        print("用户名或者密码错误,请重新登陆") 
        login_dict["is_login"] = None 
        login_dict["login_type"] = None 
        login() 
 
@common_user 
def regi_common(): 
    break_flag = False 
    while True: 
        if break_flag == True: 
            break 
        else: 
            login_name = input("请输入需要注册的用户名:") 
            if login_name in user_list: 
                print("该用户名已经存在,请重新输入注册的用户名") 
                regi_common() 
            else: 
                login_paswd = input("请输入%s的用户密码:" % (login_name)) 
                login_number = input("请输入%s的电话号码:" % (login_name)) 
                login_email = input("请输入%s的邮箱地址:" % (login_name)) 
                while True: 
                    if login_dict["is_login"] == "1" and login_dict["login_type"] == "1": 
                        option = input("请输入%s的用户类型/n1:管理员/n2:普通用户/n" % (login_name)) 
                        if option == "1": 
                            login_type = "1" 
                            with open("db","a",encoding="utf-8") as f1: 
                                user_info = "/n" + login_name + "|" + login_paswd + "|" + login_number + "|" + login_email + "|" + login_type 
                                f1.write(user_info) 
                            break_flag = True 
                            user_list.append(login_name) 
                            break 
                        elif option == "2": 
                            login_type = "0" 
                            with open("db", "a", encoding="utf-8") as f1: 
                                user_info = "/n" + login_name + "|" + login_paswd + "|" + login_number + "|" + login_email + "|" + login_type 
                                f1.write(user_info) 
                            break_flag = True 
                            user_list.append(login_name) 
                            break 
                        else: 
                            print("无效的输入,请重新输入") 
                            continue 
 
                    elif login_dict["is_login"] == "1" and login_dict["login_type"] == None: 
                        option = input("请输入%s的用户类型/n1:普通用户/n" % (login_name)) 
                        if option == "1": 
                            login_type = "0" 
                            with open("db", "a", encoding="utf-8") as f1: 
                                user_info = "/n" + login_name + "|" + login_paswd + "|" + login_number + "|" + login_email + "|" + login_type 
                                f1.write(user_info) 
                            break_flag = True 
                            user_list.append(login_name) 
                            break 
                        else: 
                            print("无效的输入,请重新输入") 
                    else: 
                        pass 
 
@manage_user 
def change_password(): 
    while True: 
        change_name = input("请输入需要修改密码的欧用户名") 
        if change_name in user_list: 
            # old_passwd = input("请输入%s的旧密码" %(change_name)) 
            change_passwd = input("请输入%s的新密码" %(change_name)) 
            with open("db","r",encoding="utf-8") as f1,open("temp","w",encoding="utf-8") as f2: 
                for line in f1: 
                    change_list = line.strip().split("|") 
                    if change_name == change_list[0]: 
                        new = line.replace(line.strip().split("|")[1],change_passwd) 
                        f2.write(new) 
                    else: 
                        f2.write(line) 
                    change_list = [] 
            with open("temp","r",encoding="utf-8") as f1,open("db","w",encoding="utf-8") as f2: 
                for line in f1: 
                    f2.write(line) 
                print("用户%s密码已经修改成功" %(change_name)) 
                break 
            # break 
 
        else: 
            print("%s不在用户列表中,请重新输入要修改的用户名:" %(change_name)) 
            option = input("是否要继续1:退出;2:继续") 
            if option == "1": 
                exit() 
            elif option == "2": 
                break 
            else: 
                continue 
 
@manage_user 
def view_user(): 
    while True: 
        print(user_list) 
        view_name_db = str(input("请输入要查询的用户名:")) 
        if view_name_db in user_list: 
            # print(view_name_db) 
            with open("db","r",encoding="utf-8") as f1: 
                for line in f1: 
                    view_list = line.strip().split("|") 
                    if view_name_db == view_list[0]: 
                        if view_list[4] == "1": 
                            view_type = "管理员" 
                        elif view_list[4] == "0": 
                            view_type = "普通用户" 
                        s = "%s的信息如下" %(view_name_db) 
                        print(s.center(100,"-")) 
                        view_info = "用户名:" + view_list[0] + "/n" + "密码:" + view_list[1] + "/n" + "电话号码:" + view_list[2] + "/n" + "邮箱地址:" + view_list[3] + "/n" + "用户类型:" + view_type 
                        print(view_info) 
                        option = input("是否需要继续查询用户名:/n1:是/n2:否") 
                        if option == "1": 
                            continue 
                        elif option == "2": 
                            return True 
                        else: 
                            continue 
                    # view_list = [] 
        else: 
            print("用户名%s不存在" %(view_name_db)) 
            option = input("是否需要重新查询用户名:/n1:是/n2:否") 
            if option == 1: 
                continue 
            elif option == 2: 
                break 
            else: 
                continue 
 
 
@manage_user 
def del_user(): 
    while True: 
        del_name = input("请输入需要删除的用户") 
        if del_name not in user_list: 
            option = input("用户名%s不存在,是否需要重新删除用户名:/n1:是/n2:否" %(del_name)) 
            if option == "1": 
                continue 
            elif option == "2": 
                break 
            else: 
                continue 
        else: 
            with open("db","r",encoding="utf-8") as f1,open("temp","w",encoding="utf-8") as f2: 
                for line in f1: 
                    if line.strip().startswith(del_name): 
                        continue 
                    else: 
                        f2.write(line) 
            with open("temp","r",encoding="utf-8") as f1,open("db","w",encoding="utf-8") as f2: 
                for line in f1: 
                    f2.write(line) 
                print("用户名%s已经删除成功" %(del_name)) 
                user_list.remove(del_name) 
            while True: 
                option = input("是否需要继续删除用户:/n1:是/n2:否") 
                if option == "1": 
                    break 
                elif option == "2": 
                    return True 
                else: 
                    print("无效的输入,请重新输入") 
 
 
def main(): 
    while True: 
        s = "请输入你要做什么" 
        print(s.center(100,"-")) 
        option = input("1、登陆/n2、查看用户/n3、删除用户/n4、修改密码/n5、注册用户") 
        if option == "1": 
            login() 
        elif option == "2": 
            view_user() 
        elif option == "3": 
            del_user() 
        elif option == "4": 
            change_password() 
        elif option == "5": 
            regi_common() 
        else: 
            while True: 
                option = input("无效的输入,是否需要继续:/n1、退出/n2、继续/n") 
                if option == "1": 
                    exit() 
                elif option == "2": 
                    break 
                else: 
                    continue 
 
main() 

  


原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/20902.html

(0)
上一篇 2021年7月19日 23:52
下一篇 2021年7月19日 23:52

相关推荐

发表回复

登录后才能评论