Python学习:一个简单的登录系统演示了如何使用Python处理JSON数据来管理用户信息

闲来无事,学习一下python

AI里搜索:python做一个登录系统json添加删除读取修改

以下是过程和结果:

'''
@Python学习
@环境,window10,Python 3.10.6,pip 24.0
@一个简单的登录系统演示了如何使用Python处理JSON数据来管理用户信息
@实现登录系统管理用户的基本功能:增删查改登录
@根据AI生成的代码,修改成自己想要的代码,效率确实提高了
@Author:MIKE <1515544573@qq.com>
@2024-5-27

'''
import json
import getpass
import hashlib

#配置信息
USER_DATA_FILE = 'user.json'

def has_password(password):
    return hashlib.sha256(password.encode('utf-8')).hexdigest()


# 用户信息结构体
class User:
    def __init__(self, id, username, password):
        self.id  = id
        self.username = username
        self.password = has_password(password)

# 登录系统类
class LoginSystem:

    def __init__(self, filepath=USER_DATA_FILE):
        self.filepath = filepath
        self.load_users()

    def load_users(self):    
        try:
            with open(self.filepath,'r') as file:
                self.users = {user['id']: user for user in json.load(file)}
        except FileNotFoundError:
            self.users = {}

    # 添加用户
    def add_user(self, user):
        #print(user)
        #return False
        
        if user.id in self.users:
            print(f"用户ID {user.id} 已存在。")
        else:
            self.users[user.id] = user.__dict__
            self.save_users()
            print(f"用户 {user.username} 添加成功!")

    # 删除用户
    def delete_user(self, user_id):
        try:
            if user_id in self.users:
                self.users.pop(user_id)
                self.save_users()
                print(f"用户ID {user_id} 已被删除!")
                return True
            else:
                print(f"用户ID {user_id} 不存在")
                return False

        except FileNotFoundError:
            print(f"用户ID {user_id} 不存在。")
            return False

    # 保存用户信息
    def save_users(self):
        with open(self.filepath,'w') as file:
            json.dump(list(self.users.values()),file)

    def change_password(self, user_id, new_password):
        if user_id in self.users:
            self.users[user_id]['password'] = has_password(new_password)
            self.save_users()
            print(f"用户ID {user_id} 的密码已修改")
        else:
            print(f"用户ID {user_id} 不存在")

    def show_users(self):
        print(self.users)
        return False


    # 用户登录
    def login(self, username, password):
        try:
            for user in self.users.values():
                if user['username'] == username and user['password'] == has_password(password):
                    print("登录成功!")
                    return True    
            print("用户名或者密码错误。")
            return False

        except FileNotFoundError:
            print("用户不存在,请先注册。")
            return False


#主菜单
def main_menu():

    # 使用示例
    system = LoginSystem()
    # 添加用户
    # 登录验证
    # 修改密码
    # 删除用户
    # 查看用户

    print("1. 添加用户")
    print("2. 登录验证")
    print("3. 修改密码")
    print("4. 删除用户")
    print("5. 查看用户")
    choice = input("请选择(1/2/3/4/5):")


    if choice == '1':

        user_id = input("用户ID:")
        username = input("用户名:")
        password = getpass.getpass("密码:")

        # 添加用户
        system.add_user(User(id=user_id, username=username, password=password))

    elif choice == '2':
        username = input("用户名:")
        password = getpass.getpass("密码:")

        # 登录验证
        system.login(username,password)

    elif choice == '3':
        user_id = input("用户ID:")
        password = input("请输入新密码:")
        # 修改密码
        system.change_password(user_id,password)

    elif choice == '4':
        user_id = input("请输入要删除的用户ID:")
        choice = input("请想要删除账号吗?(y/N)")

        if choice.lower() == 'y':
            # 删除用户
            system.delete_user(user_id)
        else:
            return False
    elif choice == '5':
        system.show_users()
    else:
        print("无效选项,退出。")


#执行
if __name__ == "__main__":
    main_menu()





'''

import json
 
# 用户信息结构体
class User:
    def __init__(self, id, username, password):
        self.id = id
        self.username = username
        self.password = password
 
# 登录系统类
class LoginSystem:
    def __init__(self, filepath='users.json'):
        self.filepath = filepath
        self.load_users()
 
    # 加载用户信息
    def load_users(self):
        try:
            with open(self.filepath, 'r') as file:
                self.users = {user['id']: user for user in json.load(file)}
        except FileNotFoundError:
            self.users = {}
 
    # 添加用户
    def add_user(self, user):
        if user.id in self.users:
            print(f"用户ID {user.id} 已存在。")
        else:
            self.users[user.id] = user.__dict__
            self.save_users()
            print(f"用户 {user.username} 添加成功。")
 
    # 删除用户
    def delete_user(self, user_id):
        if user_id in self.users:
            self.users.pop(user_id)
            self.save_users()
            print(f"用户ID {user_id} 已删除。")
        else:
            print(f"用户ID {user_id} 不存在。")
 
    # 保存用户信息
    def save_users(self):
        with open(self.filepath, 'w') as file:
            json.dump(list(self.users.values()), file)
 
    # 修改用户密码
    def change_password(self, user_id, new_password):
        if user_id in self.users:
            self.users[user_id]['password'] = new_password
            self.save_users()
            print(f"用户ID {user_id} 的密码已修改。")
        else:
            print(f"用户ID {user_id} 不存在。")
 
    # 登录验证
    def login(self, username, password):
        for user in self.users.values():
            if user['username'] == username and user['password'] == password:
                print("登录成功。")
                return True
        print("用户名或密码错误。")
        return False
 
# 使用示例
system = LoginSystem()
 
# 添加用户
system.add_user(User(id='001', username='user1', password='pass1'))
 
# 登录验证
system.login('user1', 'pass1')
 
# 修改密码
system.change_password('001', 'new_pass1')
 
# 删除用户
system.delete_user('001')


在这个示例中,我们定义了一个User类来表示用户信息,以及一个LoginSystem类来管理用户的添加、删除、读取和修改。用户信息以JSON格式存储在文件中,使得系统重启后用户数据仍然保留。这个简单的登录系统演示了如何使用Python处理JSON数据来管理用户信息。

提示:AI自动生成,仅供参考

python做一个登录系统json添加删除读取修改

'''

以上代码登录系统的文件保存在user.py,用户信息存储在user.json中,两个文件在同一个目录。思考:如果是多个文件,多个类,怎么调用,用数据库存储要如何实现,就像一个cms系统那样,下一步再研究

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值