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}\033}\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")


二:函数
#导入原始列表
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()

三:文件
#导入原始列表
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()

pwp 发表于 2023-5-17 22:43

{:1_921:}非常实用于学习,学习了。期待大佬开发存储到数据库版本的,方便存储数据

woYaoGuoSiJi 发表于 2023-5-17 22:57

楼主太厉害了 学习了

chen0527 发表于 2023-5-18 08:10

666,感谢大佬分享

shiyanwei 发表于 2023-5-18 09:19

感谢大佬分享

echoaku 发表于 2023-5-18 09:22

不错,感谢分享

hushxh 发表于 2023-5-18 09:43

厉害,学习了

starkcccc 发表于 2023-5-18 09:48

如果大一学生能看到,他们会很感谢楼主的{:1_918:}

SYSTEM316 发表于 2023-5-18 09:49

有大一学妹就好用了 哈哈哈哈哈

laustar 发表于 2023-5-19 11:41

谢谢@Thanks!
页: [1] 2
查看完整版本: 利用Python实现账户管理系统