当前位置: 移动技术网 > IT编程>脚本编程>Python > 选做题 - ATM机

选做题 - ATM机

2020年07月20日  | 移动技术网IT编程  | 我要评论
帅兰# 选做题:编写ATM程序实现下述功能,数据来源于文件db.txt# 1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改# 2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱# 3、提现功能:用户输入提现金额,db.txt中该账号钱数减少# 4、查询余额功能:输入账号查询余额# 选做题中的选做题:登录功能# 用户登录成功后,内存中记录下该状态,上述功能以当前登录状态为准,必须先登录才能操作# 全实现import timed

帅兰

# 选做题:编写ATM程序实现下述功能,数据来源于文件db.txt
# 1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改
# 2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱
# 3、提现功能:用户输入提现金额,db.txt中该账号钱数减少
# 4、查询余额功能:输入账号查询余额

# 选做题中的选做题:登录功能
# 用户登录成功后,内存中记录下该状态,上述功能以当前登录状态为准,必须先登录才能操作

# 全实现
import time

dic = {}


def homepage(x):
    t = True
    while t:
        print(f'''欢迎您{x}先生
    1.充值
    2.转账
    3.提现
    4.查询余额
    5.退出当前账号
    ''')
        nbr = input('请输入功能对应的数字:').strip()
        if nbr == '1':
            recharge(x)
        elif nbr == '2':
            transfer_accounts(x)
        elif nbr == '3':
            withdrawal(x)
        elif nbr == '4':
            balance(x)
        elif nbr == '5':
            t = False
            func()
        else:
            print('请输入正确的指令')


def transfer_accounts(x):
    print('转账功能')
    nbr4 = input('请输入对方账号的用户名:').strip()
    if nbr4 == x:
        print('不能给自己转账')
    if nbr4 not in dic:
        print('用户不存在')
    else:
        nbr5 = input('请输入转账金额:').strip()
        nbr5 = int(nbr5)
        if dic[x][1] < nbr5:
            print('账户余额不足')
        else:
            dic[nbr4][1] += nbr5
            dic[x][1] -= nbr5
            print(f'已向{nbr4}转账{nbr5}元')
    homepage(x)


def recharge(x):
    print('充值功能')
    nbr6 = input('请输入充值的金额:').strip()
    if nbr6.isdigit():
        nbr6 = int(nbr6)
        dic[x][1] += nbr6
        print(f'已成功充值{nbr6}元')
    elif dic[x][1] < nbr6:
        print('账号余额不足')
    else:
        print('请输入正确的数字类型')
    homepage(x)


def withdrawal(x):
    print('提现功能')
    nbr7 = input('请输入提现金额:')
    if nbr7.isdigit():
        nbr7 = int(nbr7)
        dic[x][1] -= nbr7
        print(f'已提现{nbr7}元')
    elif dic[x][1] < nbr7:
        print('账号余额不足')
    else:
        print('请输入正确的数字类型')
    homepage(x)


def balance(x):
    print('查询余额')
    print(f'当前账号余额为{dic[x][1]}')
    homepage(x)


def login():
    print('''登入功能
    什么还没有账号?
    赶紧注册一个吧
    在输入账号区域输入数字‘1’即可注册
    ''')
    name1 = input('请输入您的账号:').strip()
    if name1 == '1':
        register()
    pwd1 = input('请输入您的密码:').strip()
    with open('a.txt', mode='rt', encoding='utf-8')as f1:
        for i3 in f1:
            name2, pwd2, count = i3.strip().split(':')
            dic.setdefault(name2, [pwd2, int(count)])
        if name1 in dic and pwd1 == dic[name1][0]:
            print('登入成功')
            with open('b.txt', mode='a+t', encoding='utf-8') as a1:
                msg = time.strftime("%Y-%m-%d %H:%M:%S")
                a1.write(f'用户{name1}于{msg}登入了ATM\n')
                homepage(name1)

        else:
            print('账号或密码错误')
    func()


def register():
    list1 = []
    tag = True
    while tag:
        print('注册功能')
        name = input('请输入您的账号:').strip()
        pwd = input('请输入您的密码:').strip()
        for i in range(33, 47):
            list1.append(chr(i))

        for i1, i2 in zip(name, pwd):
            if i1 in list1 or i2 in list1:
                print('账号密码不能含有特殊字符')
                break

            if len(name) < 6 and len(pwd) < 6:
                print('账号密码长度不能小于六位')
                break

        else:
            with open('a.txt', mode='at', encoding='utf-8') as f, open('a.txt', mode='rt', encoding='utf-8')as f7:
                for g in f7:
                    name9, pwd9, count6 = g.strip().split(':')
                    if name9 == name:
                        print('当前用户名已存在')
                        break
                else:
                    f.write(f'{name}:{pwd}:{0}\n')
                    print('注册成功')
                    tag = False

    func()


def func():
    b = True
    while b:
        print('''尊敬的先生请先登入
        1.登入
        2.注册
        3.退出
        ''')
        nbr1 = input('请输入功能对应的数字:')
        if nbr1 == '1':
            login()
        elif nbr1 == '2':
            register()
        elif nbr1 == '3':
            print('已退出')
            return
        else:
            print('请输入正确的指令')


func()

本文地址:https://blog.csdn.net/msmso/article/details/107447603

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网