用户登录模块是最基本的模块之一,主要设计的有当前用户存在判断,用户注册,用户登录名和密码的保存,用户信息输出等等;
通过判断flag.txt是否存在,判断是不是首次启动;
这是一种简单而常见的手法,常在程序初始化的时候会有这样的需求。
判断一个特定文件存在与否,或者判断配置文件的值是否改变;
就能够判断出来当前是不是首次启动,是的话,初始化程序,不是则不变等等
(这是后续了,根据需求来,记住这个小方法即可!)
这里是判断flag.txt是否存在
用户信息单独文件保存
# 用户注册 用户信息单独文件保存
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()
管理员身份是写死的 名称 root 密码 123456
# 初始化管理员
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('很遗憾!验证失败')
选择是注册还是登录;
注册和 上述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
# 文件存储管理信息
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()