ATM购物商城程序(二)(学习作业四)

目前进度:(实在懒得做管理接口...10点只留了个管理员接口的没做,先接着学了不然赶不上学习进度了......)

新增ATM管理功能菜单等,实现提现,还款,查询余额,查询账单,账户间转账功能

√ 1.额度15000或自定义
√ 2.实现购物商城,买东西加入购物,调用信用卡接口结账
√ 3.可以提现,手续费5%
√ 5.支持多账户登录
√ 6.支持账户间转账
√ 7.记录每月日常消费流水
√ 8.提供还款接口
√ 9.ATM记录操作日志
  10.提供管理接口,包括添加账户、用户额度,冻结账户等。。。
√ 11.用户认证用装饰器(必须)

可直接跑,应该没什么bug?不过咱第一次系统学的,有bug请多包容一下...

import time

name = ['yy','xx']
passwd = ['abc123','bbc22']
usalary=[15000,12000]
transaction_history = [[] for _ in range(len(name))]  # 每个账户的消费流水
atm_logs=[]
def login(func):
    def user(*args, **kwargs):
        print("欢迎使用ATM购物商城程序,请登录!")
        username = input('Username:').strip()
        password = input('Password:').strip()
        index=name.index(username)
        if(username in name and password==passwd[index]):
            print('Welcome user %s come!!'%username)
            return func(index,*args,**kwargs)
        else:
            print('Invalid username or password!')
    return user

def shopping(a):
    salary=usalary[a]
    print('您的余额是',salary)
    goodslist1=[1,2,3,4,5]
    goodsname=["Iphone","Bike","Starbucks","Macbook","Glasses"]
    goodsprice=[8000,800,80,9999,1000]
    goodslist2=[]
    while(True):
        for i in range(len(goodsname)):
            print(goodslist1[i],".",goodsname[i]," ",goodsprice[i])
        goods=input("请选择您要购买的商品或商品编号:")
        if goods=="exit":
            break
        if goods.isdigit():
            goods=int(goods)
            goods-=1
            print("您要购买",goodslist1[goods],"号商品,您的余额为",salary)
            if salary>goodsprice[goods]:
                salary-=goodsprice[goods]
                print("您的余额足够,为",salary)
                goodslist2.append(goodsname[goods] + " " + str(goodsprice[goods]))#记得改数据格式
            else:
                print("您的余额不足")

        else:
            if goods in goodsname:
                index = goodsname.index(goods)
            print("您要购买",goodsname[index],",您的余额为",salary)
            if salary>goodsprice[index]:
                salary-=goodsprice[index]
                print("您的余额足够,为",salary)
                goodslist2.append(goodsname[index] + " " + str(goodsprice[index]))#记得改数据格式
            else:
                print("您的余额不足")
    usalary[a]=salary
    transaction_history[a].extend(goodslist2)
    print(goodslist2)

def atm_operations(a):
    while True:
        print("请选择您需要的操作:")
        print("1. 提现")
        print("2. 还款")
        print("3. 查询余额")
        print("4. 查询账单")
        print("5. 账户间转账")
        print("6. 退出")

        choice = input("请输入操作编号:")

        if choice == "1":
            cash(a)
        elif choice == "2":
            repay(a)
        elif choice == "3":
            print(f"当前余额:{usalary[a]} 元")
        elif choice == "4":
            print(f"消费流水:{transaction_history[a]}")
        elif choice == "5":
            transfer(a)
        elif choice == "6":
            break
        else:
            print("无效操作")
            atm_operations(a)
        time.sleep(2)

def cash(a):
    cash=float(input('请输入您要提现的金额:'))
    if(cash<=usalary[a]):
        fee=cash*0.05
        total=cash+fee
        if(total<=usalary[a]):
            usalary[a]-=total
            atm_logs.append(f"用户 {name[a]} 提现 {cash} 元,手续费 {fee} 元,实际到账 {cash} 元")
            print(f"提现成功!手续费 {fee} 元,实际到账 {cash} 元,当前余额 {usalary[a]} 元")
        else:
            print("余额不足以提现及支付手续费!")
    else:
        print("余额不足!")

def repay(a):
    amount = float(input("请输入还款金额:"))
    if amount <= usalary[a]:
        usalary[a] -= amount
        atm_logs.append(f"用户 {name[a]} 还款 {amount} 元")
        print(f"还款成功!当前余额 {usalary[a]} 元")
    else:
        print("余额不足以还款")

def transfer(a):
    tran = input("请输入转账目标用户名:")
    if tran in name:
        recipient_index = name.index(tran)
        amount = float(input("请输入转账金额:"))
        if amount <= usalary[a]:
            usalary[a] -= amount
            usalary[recipient_index] += amount
            atm_logs.append(f"用户 {name[a]} 向 {name[recipient_index]} 转账 {amount} 元")
            print(f"转账成功!当前余额 {usalary[a]} 元")
        else:
            print("余额不足以完成转账")
    else:
        print("用户名不存在")

def print_atm_logs():
    print("\nATM 操作日志:")
    for log in atm_logs:
        print(log)

@login
def index(a,*args,**kwargs):
    while True:
        print('welcome to index page!')
        print('请选择你想进入的页面:')
        choice=input("1.购物商城 2.切换账号 3.atm操作 4.退出")
        if choice=='1':
            result=shopping(a)
            if result:  # 如果返回 True,则跳回首页
                continue
        elif choice=='2':
            return index()
        elif choice=='3':
            atm_operations(a)
        elif choice == '4':
            print("退出系统...")
            break
        else:
            print(print("无效选择,请重新选择"))
        time.sleep(2)


index(0)
print_atm_logs()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值