python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!

用户登录模块

    • 前言&思维导图
    • 1.判断首次启动
    • 2.用户注册
    • 3、管理员信息&登录
    • 4.用户登录
    • 5.完整代码

前言&思维导图

用户登录模块是最基本的模块之一,主要设计的有当前用户存在判断,用户注册,用户登录名和密码的保存,用户信息输出等等;

python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!_第1张图片

1.判断首次启动

通过判断flag.txt是否存在,判断是不是首次启动;

这是一种简单而常见的手法,常在程序初始化的时候会有这样的需求。

判断一个特定文件存在与否,或者判断配置文件的值是否改变;

就能够判断出来当前是不是首次启动,是的话,初始化程序,不是则不变等等

(这是后续了,根据需求来,记住这个小方法即可!)

这里是判断flag.txt是否存在

2.用户注册

用户信息单独文件保存

# 用户注册 用户信息单独文件保存
def user_register():
    user_id = input('输入账户id:')
    user_pwd = input('输入用户密码:')
    user_name = input('输入用户昵称:')
    user = {'u_id': user_id, 'u_pwd': user_pwd, 'u_name': user_name}
    user_path = "./users/" + user_id # 新建文件夹保存信息
    file_user = open(user_path, 'w')  
    file_user.write(str(user))  
    file_user.close()  

在文件中保存的信息如下:
python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!_第2张图片

3、管理员信息&登录

管理员身份是写死的 名称 root 密码 123456

身份信息同样是新建一个文件,保存
python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!_第3张图片

# 初始化管理员
def init():
    if os.path.exists('users') == False:
        file = open('u_root.txt', 'w') 
        root = {'rnum': 'root', 'rpwd': "123456"}
        file.write(str(root)) 
        file.close()  
        os.mkdir('users')  

管理员登录;

# 管理员登陆
def root_login():
    while True:
        print('****管理员登陆****')
        root_number = input('请输入管理员账户名:')
        root_password = input('请输入管理员密码:')
        file_root = open('u_root.txt', 'r')  # 只读打开文件
        root = eval(file_root.read())  # 读取账户信息
     
        if root_number == root['rnum'] and root_password == root['rpwd']:
            print('管理员登陆成功!')
            break
        else:
            print('很遗憾!验证失败')

4.用户登录

选择是注册还是登录;

注册和 上述2 一样

登录和管理员登录类似,匹配信息就好了

# 普通用户登录
def user_login():
    while True:
        print('****普通用户登录****')
        user_id = input('请输入账户名')
        user_pwd = input('请输入密码:')

        user_list = os.listdir('./users')  # 遍历元组,判断user_id是否在元组中
        flag = 0
        for user in user_list:
            if user == user_id:
                flag = 1
                print('登录中····')
                # 打开文件
                file_name = './users/' + user_id
                file_user = open(file_name)
                # 获取文件内容
                user_info = eval(file_user.read())
                if user_pwd == user_info['u_pwd']:
                    print('登录成功!')
                    # 此处根据需求,可以跳转到登陆成功之后的操作
                    break

        if flag == 1:
            break
        elif flag == 0:
            print('您并没有注册!请您先注册用户')
            break

python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!_第4张图片

users文件夹下,就会新增 qqqqqq 用户的信息了!
python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!_第5张图片

在这里插入图片描述

5.完整代码

# 文件存储管理信息
import os

# 判断是否首次使用系统
def is_first_use():
    if os.path.exists('flag.txt') == False:
        print('首次启动')
        flag = open('flag.txt', 'w+')
        flag.write('1')
        flag.close()  # 关闭文件
        init()  # 初始化资源
        print_login_menu()  # 打印登录菜单
        user_select()  # 选择用户
    else:
        flag = open('flag.txt', 'r')
        word = flag.read()
        if len(word) == 1:
            init()  # 初始化资源
            print_login_menu()  # 打印登录菜单
            user_select()  # 选择用户


# 初始化管理员
def init():
    if os.path.exists('users') == False:
        file = open('u_root.txt', 'w')  # 创建并打开管理员账户文件
        root = {'rnum': 'root', 'rpwd': "123456"}
        file.write(str(root))  # 写入管理员信息
        file.close()  # 关闭管理员账户文件

        os.mkdir('users')  # 创建普通用户文件夹


# 打印登录菜单
def print_login_menu():
    print('----用户登录----')
    print('1-管理员登陆')
    print('2-普通用户登陆')
    print('--------------')
    print('请选择您的登陆身份')



# 用户选择
def user_select():
    while True:
        user_type_select = input('请选择用户类型')
        if user_type_select == '1':  # 管理员登陆验证
            root_login()
            break
        elif user_type_select == '2':  # 普通用户
            while True:
                select = input('是否需要注册?(y/n):')
                if select == 'y' or select == 'Y':
                    print('----用户注册----')
                    user_register()  # 用户注册
                    break
                elif select == 'n' or select == 'N':
                    print('----用户登录----')
                    break
                else:
                    print('输入有误,请重新选择')
            user_login()  # 用户登录
            break
        else:
            print('输入有误,请重新选择')


# 管理员登陆
def root_login():
    while True:
        print('****管理员登陆****')
        root_number = input('请输入管理员账户名:')
        root_password = input('请输入管理员密码:')
        file_root = open('u_root.txt', 'r')  # 只读打开文件
        root = eval(file_root.read())  # 读取账户信息
        # 信息匹配
        if root_number == root['rnum'] and root_password == root['rpwd']:
            print('管理员登陆成功!')
            break
        else:
            print('很遗憾!验证失败')


# 用户注册 用户信息单独文件保存
def user_register():
    user_id = input('输入账户id:')
    user_pwd = input('输入用户密码:')
    user_name = input('输入用户昵称:')
    user = {'u_id': user_id, 'u_pwd': user_pwd, 'u_name': user_name}
    user_path = "./users/" + user_id # 新建文件夹保存信息
    file_user = open(user_path, 'w')
    file_user.write(str(user))
    file_user.close()


# 普通用户登录
def user_login():
    while True:
        print('****普通用户登录****')
        user_id = input('请输入账户名')
        user_pwd = input('请输入密码:')

        user_list = os.listdir('./users')  # 遍历元组,判断user_id是否在元组中
        flag = 0
        for user in user_list:
            if user == user_id:
                flag = 1
                print('登录中····')
                # 打开文件
                file_name = './users/' + user_id
                file_user = open(file_name)
                # 获取文件内容
                user_info = eval(file_user.read())
                if user_pwd == user_info['u_pwd']:
                    print('登录成功!')
                    # 此处根据需求,可以跳转到登陆成功之后的操作
                    break

        if flag == 1:
            break
        elif flag == 0:
            print('您并没有注册!请您先注册用户')
            break


if __name__ == '__main__':
    is_first_use()

你可能感兴趣的:(#,python趣味编程实例,python,python编程,用户登录)