目前进度:(实在懒得做管理接口...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()