用户管理系统
近期学了一点python的文件操作, 随手写了个用户系统, 学完类后再把代码用类封装起来, 目前看起来有些累赘
目前已有 注册, 登录, 转账, 查询, 充值, 提现等功能,
import time
import os.path
#判断是否登录, 默认未登录
is_sul = False
#记录登录的用户名
is_user=''
#记录注册失败的次数
is_register=0
if os.path.isfile("db.txt")==False:
with open('db.txt', 'w', encoding='utf-8')as f1:
f1.close()
def Drop_out():
print("已退出")
exit()
#记录注册总人数
r_num=0
#注册
def register():
global is_register
inp_usr = input("请输入用户名>>>")
with open('db.txt', 'r', encoding='utf-8')as f1:
for line in f1:
if line!=None:
usr, pad= line.strip('\n').split(':')
if (inp_usr == usr):
print("用户名已存在,请重新注册")
exit()
inp_pas = input("请输入密码>>>")
inp_pas_2 = input("再次输入密码>>>")
if (inp_pas == inp_pas_2):
print("注册成功")
file=f"{inp_usr}.txt"
with open(f'{file}', 'w', encoding='utf-8')as f:
info = f"{inp_usr}:0\n"
f.write(info)
f.close()
else:
inp_pas_2 = input("密码错误,再次输入密码>>>")
if (inp_pas == inp_pas_2):
print("注册成功")
file = f"{inp_usr}.txt"
with open(f'{file}', 'w', encoding='utf-8')as f:
info = f"{inp_usr}:0\n"
f.write(info)
f.close()
else:
print("密码错误,请重新注册")
is_register+=1
if is_register==3:
print("失败次数过多,请重新选择!")
select()
exit()
register()
with open('db.txt', 'a', encoding='utf-8')as f:
info = f"{inp_usr}:{inp_pas}\n"
f.write(info)
f.close()
select()
#登录
def login():
flag_1 = True
sum = 0
while flag_1:
inp_username = input("用户名>>>").strip()
inp_passwd = input("密码>>>").strip()
num = 0
n = 0
with open('db.txt', 'r', encoding='utf-8')as f:
for line in f:
#记录注册总人数
num += 1
f.close()
with open('db.txt', 'r', encoding='utf-8')as f:
for line in f:
n += 1 #用来判断遍历全部数据是否有符合数据的,如果遍历到等于注册总人数也没有查询到,就不存在
username, passwd= line.strip('\n').split(':')
if inp_username == username and inp_passwd == passwd:
print("登录成功")
global is_sul,is_user
is_sul = True
is_user = inp_username
flag_1 = False
print(f"当前登录的用户为:{is_user}")
select_sul()
exit()
elif num == n:
sum += 1
if sum == 3:
print("失败次数超过3次,请重新选择!")
select()
print(f"账户或密码错误,请重新登录,当前失败{sum}次,超过3次重新选择")
f.close()
#转账
def EFT():
file=f"{is_user}.txt"
Eft_user=input("请输入要转账的用户>>>")
Eft_moeny=float(input("请输入转账金额>>>"))
Eft_u=False
Eft_m = False
n=0
is_User_Money=0
with open('db.txt', 'r', encoding='utf-8')as f:
r_num=check_num()
for line in f:
n+=1
User, User_Money = line.strip('\n').split(':')
if User==Eft_user:
Eft_u=True
break
if n==r_num:
print(f"未找到{Eft_user}用户")
f.close()
with open(f'{file}','r',encoding="utf-8")as f:
for line in f:
User, is_User_Money = line.strip('\n').split(':')
if Eft_user==is_user:
print("不能转账给自己!")
exit()
if Eft_moeny<=float(is_User_Money) and Eft_u==True:
print("转账成功!")
is_User_Money =float(is_User_Money)- Eft_moeny
Eft_m=True
else:
print("余额不足")
exit()
f.close()
with open(f'{ file}','w',encoding='utf-8')as f:
f.write(f"{is_user}:{is_User_Money}\n")
f.close()
with open(f'{Eft_user}.txt','r',encoding="utf-8")as f:
for line in f:
User, User_Money = line.strip('\n').split(':')
User_Money = float(User_Money) + Eft_moeny
print(f"余额为{is_User_Money}")
f.close()
with open(f'{Eft_user}.txt', 'w', encoding="utf-8")as f:
f.write(f'{Eft_user}:{User_Money}\n')
f.close()
def Show_Any():
with open('db.txt','r',encoding='utf-8')as f:
for line in f:
User, User_Money = line.strip('\n').split(':')
print(User)
select_EFT()
def transfer():
if is_sul:
print(f'当前已登录,用户名为:{is_user},转账功能已启用')
select_EFT()
else:
print("当前未登录,请登录后再使用该功能!")
#查询
def check_num():
r_num = 0
with open('db.txt', 'r', encoding='utf-8')as f:
for line in f:
r_num += 1
f.close()
return r_num
def check():
if is_sul:
file = f"{is_user}.txt"
with open(file,'r',encoding='utf-8')as f:
for line in f:
User,User_Money=line.strip('\n').split(':')
print(f"<{User}>用户余额为{User_Money}元")
select_sul()
# r_num=0
# print(f'当前已登录,用户名为:{is_user},查询功能已启用')
# with open('db.txt', 'r', encoding='utf-8')as f:
# for line in f:
# r_num+=1
# print("正在查询...")
# time.sleep(1.5)
# print(f"当前注册总人数为{r_num}人")
# with open(f'is_sul.txt','w')
else:
print("当前未登录,请登录后再使用该功能!")
#提现
def withdraw():
if is_sul:
money = float(input("请输入你要提现的金额>>>"))
file = f"{is_user}.txt"
with open(f'{file}', 'r+', encoding='utf-8')as f:
for line in f:
User, User_Money = line.strip('\n').split(':')
User_Money=float(User_Money)
if money<=User_Money:
User_Money-=money
with open(f'{file}', 'w', encoding='utf-8')as f:
f.write(f"{is_user}:{User_Money}\n")
print("提现成功!")
select_sul()
exit()
else:
print("账户余额不足!")
else:
print("当前未登录,请登录后再使用该功能!")
#充值
def Amount():
Money=float(input("请输入你要充值的金额>>>"))
file=f"{is_user}.txt"
with open(f'{file}', 'r+', encoding='utf-8')as f:
for line in f:
if line!=None:
User,User_Money= line.strip('\n').split(':')
if is_user==User:
Money=float(User_Money)+Money
else:
Money+=0
with open(f'{file}', 'w', encoding='utf-8')as f:
f.write(f"{is_user}:{Money}\n")
f.close()
print(f"充值成功!当前账户余额{Money}元")
def Recharge():
if is_sul:
print(f'当前已登录,用户名为:{is_user},充值功能已启用')
select_Acu()
select_sul()
else:
print("当前未登录,请登录后再使用该功能!")
#未登录列表
func_dic={
'0':['---- 0.退出 ----',Drop_out],
'1':['---- 1.注册 ----',register],
'2':['---- 2.登录 ----',login],
'3':['---- 3.转账 ----',transfer],
'4':['---- 4.查询 ----',check],
'5':['---- 5.提现 ----',withdraw]
}
#登录列表
func_sul_dic={
'0':['---- 0.退出 ----',Drop_out],
'1':['---- 1.转账 ----',transfer],
'2':['---- 2.查询 ----',check],
'3':['---- 3.提现 ----',withdraw],
'4':['---- 4.充值 ----',Recharge]
}
#转账列表
func_EFT_dic={
'0':['---- 0.退出 ----',Drop_out],
'1':['---- 1.查看数据库所有用户 ----',Show_Any],
'2':['---- 2.转账 ----',EFT]
}
#查询列表
#提现列表
#充值列表
func_Rcg_dic={
'0':['---- 0.退出 ----',Drop_out],
'1':['---- 1.充值金额 ----',Amount],
}
flag=True
#未登录的选择
def select():
for k in func_dic:
print(func_dic[k][0])
choice = input("请选择>>>")
if choice in func_dic:
func_dic[choice][1]()
else:
print("输入有误!")
#登录后的选择
def select_sul():
for k in func_sul_dic:
print(func_sul_dic[k][0])
choice = input("请选择>>>")
if choice in func_sul_dic:
func_sul_dic[choice][1]()
else:
print("输入有误!")
#充值界面
def select_Acu():
for k in func_Rcg_dic:
print(func_Rcg_dic[k][0])
choice = input("请选择>>>")
if choice in func_Rcg_dic:
func_Rcg_dic[choice][1]()
else:
print("输入有误!")
#转账界面
def select_EFT():
for k in func_EFT_dic:
print(func_EFT_dic[k][0])
choice = input("请选择>>>")
if choice in func_EFT_dic:
func_EFT_dic[choice][1]()
else:
print("输入有误!")
select()