选做题:编写ATM程序实现下述功能,数据来源于文件db.txt

1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改

import os
def invest():
    invest_user = input("请输入充值的账号:")
    while 1:
        invest_money = input("请输入充值多少钱:")
        if int(invest_money) > 0:
            break
        else:
            print("金额错误,请重新输入")
    invest_tag = 0
    with open("db.txt",mode="r",encoding="utf-8") as f1,\
        open("db.txt.swap",mode="w",encoding="utf-8") as f2:
        for line in f1:
            user,balance = line.strip().split(":")
            if invest_user == user:
                invest_tag = 1
                balance = float(balance)
                balance += float(invest_money)
                balance = str(balance)
            f2.write('{}:{}\n'.format(user,balance))
        if invest_tag == 0:
            print("充值失败,请检查充值账号是否正确")
        elif invest_tag == 1:
            print("充值成功")
    os.remove("db.txt")
    os.rename("db.txt.swap","db.txt")
# invest()

2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱

import os

def transfer():
    transfer_user1 = input("请输入扣钱的账号:")
    transfer_user2 = input("请输入充值的账号:")
    while 1:
        transfer_money = input("请输入转账数量:")
        if transfer_money.isdigit():
            transfer_money = int(transfer_money)
            if int(transfer_money) > 0:
                break
            else:
                print("金额错误,请重新输入")
        else:
            print("必须输入数字")
    transfer_tag = 0
    with open("db.txt",mode="r",encoding="utf-8") as f1:
        for line in f1:
            user, balance = line.strip().split(":")
            if transfer_user1 == user:
                transfer_tag += 1
            elif transfer_user2 == user:
                transfer_tag += 1
    if transfer_tag == 2:
        with open("db.txt", mode="r", encoding="utf-8") as f1,\
                open("db.txt.swap", mode="w", encoding="utf-8") as f2:
            f1.seek(0, 0)
            for line in f1:
                user, balance = line.strip().split(":")
                if transfer_user1 == user:
                    balance = str(float(balance)-transfer_money)
                elif transfer_user2 == user:
                    balance = str(float(balance)+transfer_money)
                f2.write("{}:{}\n".format(user,balance))
            print("转账成功")
        os.remove("db.txt")
        os.rename("db.txt.swap", "db.txt")
    else:
        print("账号错误,请重新输入")

# transfer()

3、提现功能:用户输入提现金额,db.txt中该账号钱数减少

import os

def cash_out():
    cash_out_user = input("请输入要提现的账号:")
    while 1:
        cash_out_money = input("请输入提现多少钱:")
        if cash_out_money.isdigit():
            if int(cash_out_money) > 0:
                break
            else:
                print("金额错误,请重新输入")
        else:
            print("必须输入数字")
    cash_out_tag = 0
    with open("db.txt",mode="r",encoding="utf-8") as f1,\
        open("db.txt.swap",mode="w",encoding="utf-8") as f2:
        for line in f1:
            user,balance = line.strip().split(":")
            if cash_out_user == user:
                if float(balance) > int(cash_out_money):
                    balance = str(float(balance)- float(cash_out_money))
                    cash_out_tag = 1
                else:
                    print("余额不足,无法提现")
            f2.write('{}:{}\n'.format(user,balance))
        if cash_out_tag == 0:
            print("提现失败,请检查充值账号是否正确")
        elif cash_out_tag == 1:
            print("提现成功")
    os.remove("db.txt")
    os.rename("db.txt.swap","db.txt")


# cash_out()

4、查询余额功能:输入账号查询余额

import os
def inquire():
    inquire_user = input("请输入要查询余额的账号:")
    with open("db.txt","r",encoding="utf-8") as f:
        for line in f:
            user,money = line.strip().split(":")
            if user == inquire_user:
                print(money)
                break
        else:
            print("账号不存在")

# inquire()

选做题中的选做题:登录功能

用户登录成功后,内存中记录下该状态,

上述功能以当前登录状态为准,必须先登录才能操作

tag = 1
while tag:
    inp_user = input("请输入账号").strip()
    with open("user_info3.txt", mode="r", encoding="utf-8") as f1, \
            open("user_info3_copy.txt", mode="w", encoding="utf-8") as f2:
        for line in f1:
            user, password, count = line.strip().split(":")
            count = int(count)
            if inp_user == user:
                if count == 3:
                    print("账号被锁定")
                else:
                    for i in range(3):
                        inp_psw = input("请输入密码").strip()
                        if inp_psw == password:
                            print("登陆成功")
                            tag = 0
                            break
                        count += 1
                        if count == 3:
                            print("密码错误三次,账号锁定")
                            break
                    else:
                        print("密码错误三次,账号锁定")
                        count = "3"
                    count = str(count)
            f2.write("{}:{}:{}\n".format(user, password, count))

    os.remove('user_info3.txt')
    os.rename("user_info3_copy.txt","user_info3.txt")
msg = """
0 退出
1 充值
2 转账
3 提现
4 查询
"""
while 1:
    cmd = input("{}".format(msg)).strip()
    if cmd.isdigit():
        if cmd == "0":
            break
        elif cmd == "1":
            invest()
        elif cmd == "2":
            transfer()
        elif cmd == "3":
            cash_out()
        elif cmd == "4":
            inquire()
        else:
            print("命令不存在")
    else:
        print("必须输入数字")
 posted on 2020-03-17 21:48  wwwpy  阅读(169)  评论(0编辑  收藏  举报