吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2210|回复: 17
收起左侧

[Python 原创] 利用Python实现账户管理系统

[复制链接]
fryant 发表于 2023-5-17 21:28
一:普通代码
[Python] 纯文本查看 复制代码
import sys
#导入原始列表
Data = [
    {"username": "张三", "password": "11235", "ident": "普通用户"},
    {"username": "李四", "password": "22344", "ident": "管理员"},
    {"username": "王五", "password": "48554", "ident": "会员"}
]

current_user = None #使开始运行程序时user状态为空
wrong_count = 0 #计错误次数
print("欢迎您使用XX登录系统,",end='')
while True:
    if current_user is None: #判断user状态是否为空
        username = input("请输入用户名:")
        password = input("请输入密码:")
        for d in Data: #在列表中核对username与password是否匹配
            if d["username"] == username and d["password"] == password:
                print("\033[31m登录成功!\033[0m")
                current_user = d
                print(f"当前用户:\033[31m{current_user['username']}\033[0m,用户身份为:\033[31m{current_user['ident']}\033[0m")
                break
        # for 临时变量 in 序列:
        #     重复执行的代码
        #     ......
        # else:
        #     循环正常结束后要执行的代码
        else:
            wrong_count += 1
            if 3-wrong_count!=0:
                print(f"用户名或密码错误!您还有{3-wrong_count}次机会,请重新输入!")
            if wrong_count >= 3:
                print("\033[31m输入密码错误次数过多,程序退出!\033[0m")
                break
            continue

    print("请选择操作:")
    print("1. 添加用户")
    print("2. 删除用户")
    print("3. 修改用户权限")
    print("4. 修改用户密码")
    print("5. 修改用户名")
    print("6. 退出登录")
    print("7. 退出程序")
    print("8. 打印所有账户")
    choice = input("请输入您的选择:")
    if choice == "1":
        if current_user["ident"] != "管理员":
            print("\033[31m只有管理员可以添加用户!\033[0m")
            continue
        username = input("请输入新用户的用户名:")
        for d in Data:
            if d["username"] == username:
                print("\033[31m该用户名已存在!\033[0m")
                break
        else:
            password = input("请输入新用户的密码:")
            ident = input("请输入新用户的权限身份(普通用户、管理员、会员):")
            Data.append({"username": username, "password": password, "ident": ident})
            print("添加用户成功!")
    elif choice == "2":
        if current_user["ident"] != "管理员":
            print("\033[31m只有管理员可以删除用户!\033[0m")
            continue
        username = input("请输入要删除的用户名:")
        for d in Data:
            if d["username"] == username:
                Data.remove(d)
                print("删除用户成功!")
                break
        else:
            print("\033[31m该用户名不存在!\033[0m")
    elif choice == "3":
        if current_user["ident"] != "管理员":
            print("只有\033[31m管理员\033[0m可以修改用户权限!")
            continue
        username = input("请输入要修改权限的用户名:")
        for d in Data:
            if d["username"] == username:
                ident = input("请输入新的权限身份(普通用户、管理员、会员):")
                d["ident"] = ident
                print("修改用户权限成功!")
                break
        else:
            print("\033[31m该用户名不存在!\033[0m")
    elif choice == "4":
        username = input("请输入要修改密码的用户名:")
        for d in Data:
            if d["username"] == username:
                password = input("请输入新的密码:")
                d["password"] = password
                print("修改密码成功!")
                break
        else:
            print("\033[31m该用户名不存在!\033[0m")
    elif choice == "5":
        if current_user["ident"] != "会员":
            print("只有\033[31m会员\033[0m可以修改自己的用户名!")
            continue
        for d in Data:
            if d["username"] == current_user["username"]:
                new_username = input("请输入新的用户名:")
                for d2 in Data:
                    if d2["username"] == new_username:
                        print("\033[31m该用户名已存在!\033[0m")
                        break
                else:
                    d["username"] = new_username
                    current_user = d
                    print("修改用户名成功!")
                    break
        else:
            print("\033[31m用户名不存在!\033[0m")
    elif choice == "6":
        current_user = None
        print("退出登录成功!")
    elif choice == "7":
        sys.exit(0)
    elif choice == "8":
        for u in Data:
            print(f"用户名:{u['username']},密码:{u['password']},身份:{u['ident']}")
    else:
        print("\033[31m输入有误,请重新输入!\033[0m")


二:函数
[Python] 纯文本查看 复制代码
#导入原始列表
Data=[
    {'username': '张三', 'password': '11235', 'ident': '普通用户','user_state':'1','error_time':0},
    {'username': '李四', 'password': '22344', 'ident': '管理员','user_state':'1','error_time':0},
    {'username': '王五', 'password': '48554', 'ident': '会员','user_state':'1','error_time':0}
]

def login():    #登录函数
    username = input('请输入账号:')
    #error_time = 0
    #while error_time<3: #判断错误次数
    for di in Data:
        if di['username'] == username:  #判断是否找到用户名
            if di['user_state']==0:
                print('该账户已冻结!')
                return None
            error_time = 0
            while error_time<3: #判断错误次数
                password=input(f'请输入用户名\'{username}\'的密码:')
                if password == di['password']:
                    print("登录成功!")
                    print(f"欢迎您,{di['username']},您的身份是{di['ident']}。")
                    return di

                else:
                    error_time+=1
                    if error_time>=3:
                        di['user_state']=0  #冻结账户
                        print('该账户已冻结!')
                        return None
                    access_time=3-error_time
                    print(f'用户名\'{username}\'的密码错误!您还剩余{access_time}次机会!')
    else:
        print('用户名不存在!')
        return None

def add_user(): #添加账户
    username = input("请输入新用户的用户名:")
    for u in Data:
        if u["username"] == username:
            print("账号已存在,添加失败!")
            return
    password = input("请输入新用户的密码:")
    ident = input("请输入新用户的权限身份(普通用户、管理员、会员):")
    user_info = {"username": username, "password": password, "ident": ident}
    Data.append(user_info)
    print("用户信息添加成功!")

def del_user(current_user): #删除用户
    username = input("请输入要删除的账号:")
    if current_user['username']!=username:

        for u in Data:
            if u["username"] == username:
                Data.remove(u)
                print("用户信息删除成功!")
                return
        print("未找到该用户信息!")
    else:
        print('管理员不可以删除自己的账户!')
        return
def modify_ident(current_user): #修改权限
    username = input("请输入要修改权限的账号:")
    if current_user['username'] != username:
        for u in Data:
            if u["username"] == username:
                ident = input("请输入新的身份:")
                u["ident"] = ident
                print("用户身份修改成功!")
                return
        print("未找到该用户信息!")
    else:
        print('管理员不可以修改自己的权限!')
        return
def modify_password(current_user):  #修改密码
    username = input("请输入要修改密码的账号:")
    for u in Data:
        if u["username"] == username:
            if current_user["ident"] == "管理员" or current_user == u:
                password = input("请输入新的密码:")
                u["password"] = password
                print("密码修改成功!")
                return
            else:
                print("您只能修改自己的密码!只有管理员才可以任意修改密码!")
                return
    print("未找到该用户信息!")
def modify_username(current_user):  #修改账户用户名
    username = input("请输入您要修改的账号:")
    for u in Data:
        if u["username"] == username:
            if current_user["ident"] == "管理员" or current_user == u and u['ident']=='会员':
                new_username = input("请输入新的用户名:")
                u["username"] = new_username
                print("用户名修改成功!")
                return
            else:
                print("只有管理员和会员才可以修改用户名!")
                return
    print("未找到该用户信息!")
def modify_state(current_user): #修改状态
    username = input("请输入您要修改的账号:")
    for u in Data:
        if u["username"] == username:
            if current_user["ident"] == "管理员" and username!=current_user["username"]:
                new_state = input("请输入新的状态(1:解封 0:封禁):")
                if new_state=='1':
                    u["user_state"] = '1'
                    print('该账号已解封!')
                    return
                elif new_state=='0':
                    u["user_state"] = '0'
                    print('该账号已封禁!')
                    return
                else:
                    print("非法输入!")
                    return
            else:
                print("管理员不可以修改自己的状态!")
                return
    print("未找到该用户信息!")

def output_all_users(): #输出所有用户信息
    print("=" * 15)
    print("所有用户信息如下:")
    for u in Data:
        print(f"用户名:{u['username']},密码:{u['password']},身份:{u['ident']}")

def main():
    print("欢迎您使用XX登录系统,", end='')
    current_user=login()
    while True:
        while current_user == None:
            current_user = login()
        print("=" * 15)
        print("1. 添加用户信息")
        print("2. 删除用户信息")
        print("3. 修改用户权限")
        print("4. 修改用户密码")
        print("5. 修改用户名")
        print("6. 修改用户状态")
        print("7. 输出所有用户信息")
        print("8. 退出登录")
        print("9. 退出程序")
        print("=" * 15)

        choice = input("请输入您的选择:")

        if choice == "1":
            if current_user["ident"] != "管理员":
                print("您没有添加用户的权限!")
            else:
                add_user()
        elif choice == "2":
            if current_user["ident"] != "管理员":
                print("您没有删除用户的权限!")
            else:
                del_user(current_user)
        elif choice == "3":
            if current_user["ident"] != "管理员":
                print("您没有修改用户权限的权限!")
            else:
                modify_ident(current_user)
        elif choice == "4":
            modify_password(current_user)
        elif choice == "5":
            modify_username(current_user)
        elif choice == "6":
            if current_user["ident"] != "管理员":
                print("您没有修改用户的状态!")
            else:
                modify_state(current_user)
        elif choice == "7":
            if current_user["ident"] != "管理员":
                print("您没有查看所有用户信息的权限!")
            else:
                output_all_users()
        elif choice == '8':
            current_user = None
            print("退出登录成功!")
        elif choice == '9':
            print("退出程序成功!")
            return

if __name__ == '__main__':
    main()


三:文件
[Python] 纯文本查看 复制代码
#导入原始列表
import json

with open('../data.json', 'r', encoding='utf-8') as f:
    Data=json.load(f)

def login():    #登录函数
    username = input('请输入账号:')
    for di in Data:
        if di['username'] == username:  #判断是否找到用户名
            if di['user_state']==0:
                print('该账户已冻结!')
                return None
            error_time = 0
            while error_time<3: #判断错误次数
                password=input(f'请输入用户名\'{username}\'的密码:')
                if password == di['password']:
                    print("登录成功!")
                    print(f"欢迎您,{di['username']},您的身份是{di['ident']}。")
                    return di

                else:
                    error_time+=1
                    if error_time>=3:
                        di['user_state']=0  #冻结账户
                        print('该账户已冻结!')
                        return None
                    access_time=3-error_time
                    print(f'用户名\'{username}\'的密码错误!您还剩余{access_time}次机会!')
    else:
        print('用户名不存在!')
        return None

def add_user(): #添加账户
    username = input("请输入新用户的用户名:")
    if username=='Super':
        print('禁止添加Super账户!')
        return
    for u in Data:
        if u["username"] == username:
            print("账号已存在,添加失败!")
            return
    password = input("请输入新用户的密码:")
    ident = input("请输入新用户的权限身份(普通用户、管理员、会员):")
    user_info = {"username": username, "password": password, "ident": ident}
    Data.append(user_info)
    print("用户信息添加成功!")

def del_user(current_user): #删除用户
    username = input("请输入要删除的账号:")
    if username=='Super':
        print('禁止操作Super账户!')
        return
    if current_user['username']!=username:

        for u in Data:
            if u["username"] == username:
                Data.remove(u)
                print("用户信息删除成功!")
                return
        print("未找到该用户信息!")
    else:
        print('管理员不可以删除自己的账户!')
        return
def modify_ident(current_user): #修改权限
    username = input("请输入要修改权限的账号:")
    if username=='Super':
        print('禁止操作Super账户!')
        return
    if current_user['username'] != username:
        for u in Data:
            if u["username"] == username:
                ident = input("请输入新的身份:")
                u["ident"] = ident
                print("用户身份修改成功!")
                return
        print("未找到该用户信息!")
    else:
        print('管理员不可以修改自己的权限!')
        return
def modify_password(current_user):  #修改密码
    username = input("请输入要修改密码的账号:")
    if username=='Super':
        print('禁止操作Super账户!')
        return
    for u in Data:
        if u["username"] == username:
            if current_user["ident"] == "管理员" or current_user == u:
                password = input("请输入新的密码:")
                u["password"] = password
                print("密码修改成功!")
                return
            else:
                print("您只能修改自己的密码!只有管理员才可以任意修改密码!")
                return
    print("未找到该用户信息!")
def modify_username(current_user):  #修改账户用户名
    username = input("请输入您要修改的账号:")
    if username=='Super':
        print('禁止操作Super账户!')
        return
    for u in Data:
        if u["username"] == username:
            if current_user["ident"] == "管理员" or current_user == u and u['ident']=='会员':
                new_username = input("请输入新的用户名:")
                u["username"] = new_username
                print("用户名修改成功!")
                return
            else:
                print("只有管理员和会员才可以修改用户名!")
                return
    print("未找到该用户信息!")
def modify_state(current_user): #修改状态
    username = input("请输入您要修改的账号:")
    if username=='Super':
        print('禁止修改Super账户!')
        return
    for u in Data:
        if u["username"] == username:
            if current_user["ident"] == "管理员" and username!=current_user["username"]:
                new_state = input("请输入新的状态(1:解封 0:封禁):")
                if new_state=='1':
                    u["user_state"] = '1'
                    print('该账号已解封!')
                    return
                elif new_state=='0':
                    u["user_state"] = '0'
                    print('该账号已封禁!')
                    return
                else:
                    print("非法输入!")
                    return
            else:
                print("管理员不可以修改自己的状态!")
                return
    print("未找到该用户信息!")

def output_all_users(): #输出所有用户信息
    print("=" * 15)
    print("所有用户信息如下:")
    for u in Data:
        if u['username']=='Super':
            continue
        print(f"用户名:{u['username']},密码:{u['password']},身份:{u['ident']}")

def main():
    print("欢迎您使用XX登录系统,", end='')
    current_user=login()
    while True:
        while current_user == None:
            current_user = login()
        print("=" * 15)
        print("1. 添加用户信息")
        print("2. 删除用户信息")
        print("3. 修改用户权限")
        print("4. 修改用户密码")
        print("5. 修改用户名")
        print("6. 修改用户状态")
        print("7. 输出所有用户信息")
        print("8. 退出登录")
        print("9. 退出程序")
        print("=" * 15)

        choice = input("请输入您的选择:")

        if choice == "1":
            if current_user["ident"] != "管理员":
                print("您没有添加用户的权限!")
            else:
                add_user()
        elif choice == "2":
            if current_user["ident"] != "管理员":
                print("您没有删除用户的权限!")
            else:
                del_user(current_user)
        elif choice == "3":
            if current_user["ident"] != "管理员":
                print("您没有修改用户权限的权限!")
            else:
                modify_ident(current_user)
        elif choice == "4":
            modify_password(current_user)
        elif choice == "5":
            modify_username(current_user)
        elif choice == "6":
            if current_user["ident"] != "管理员":
                print("您没有修改用户的状态!")
            else:
                modify_state(current_user)
        elif choice == "7":
            if current_user["ident"] != "管理员":
                print("您没有查看所有用户信息的权限!")
            else:
                output_all_users()
        elif choice == '8':
            current_user = None
            print("退出登录成功!")
        elif choice == '9':
            with open('../data.json', 'w', encoding='utf-8') as z:
                Da=json.dumps(Data,ensure_ascii=False)
                z.write(Da)
            print("退出程序成功!")
            return

if __name__ == '__main__':
    main()

免费评分

参与人数 6吾爱币 +11 热心值 +6 收起 理由
w220913 + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
cch52pk + 1 + 1 我很赞同!
lizy169 + 1 + 1 谢谢@Thanks!
轩酱 + 1 热心回复!
echoaku + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pwp 发表于 2023-5-17 22:43
非常实用于学习,学习了。期待大佬开发存储到数据库版本的,方便存储数据
woYaoGuoSiJi 发表于 2023-5-17 22:57
chen0527 发表于 2023-5-18 08:10
shiyanwei 发表于 2023-5-18 09:19
感谢大佬分享
echoaku 发表于 2023-5-18 09:22
不错,感谢分享
hushxh 发表于 2023-5-18 09:43
厉害,学习了
starkcccc 发表于 2023-5-18 09:48
如果大一学生能看到,他们会很感谢楼主的
SYSTEM316 发表于 2023-5-18 09:49
有大一学妹就好用了 哈哈哈哈哈
laustar 发表于 2023-5-19 11:41
谢谢@Thanks!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-23 19:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表