用户系统(Python代码)

用户管理系统

近期学了一点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()
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值