模拟实现一个ATM + 购物商城程序
1.额度 15000或自定义
2.实现购物商城,买东西加入 购物车,调用信用卡接口结账
3.可以提现,手续费5%
4.每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息
5.支持多账户登录
6.支持账户间转账
7.记录每月日常消费流水
8.提供还款接口
9.ATM记录操作日志
10.提供管理接口,包括添加账户、用户额度,冻结账户等。。。
11.用户认证用装饰器
功能:4,8,10 没有实现
参数解释:
购物车账户:admin 密码:123
信用卡转账账户:xinyongka 密码:456
流程图:
目录结构图:
代码:
start.py 模块def start_shop():
login()
while True:
print ('''
#################################################################
# 1.购物
# 2.余额查询
# 3.转账
# 4.还款
# 5.操作记录查询
# 6.账户流水
# 7.登录后台系统
#################################################################
''')
number=input('请输入您要执行的操作:').strip()
if number == "1":
buy_shop()
elif number == "2":
time.sleep(1)
money_query()
elif number == "3":
time.sleep(1)
Transfer()
elif number == "4":
time.sleep(1)
huankuan()
elif number == "5":
time.sleep(1)
log_sys()
elif number == "6":
time.sleep(1)
monye_logs()
elif number == "7":
Backstage()
else:
print ('您输入有误,请重新输入:')
time.sleep(3)
start_shop()
shop.py 模块
import time
import datetime
import os,sys
buy_shop_list=[]
shop_list= [{"name": "上衣", "price": 300},
{"name": "下衣", "price": 350},
{"name": "鞋子", "price": 270},
{"name": "帽子", "price": 150},
]
def buy_shop():
print('您的默认信用卡额度为:15000元')
wages = 15000
wages = int(wages)
print('您的账户额度为%s ' % wages)
# while True:
for index, item in enumerate(shop_list): #给商品列表增加序号
print ('以下是您可购买的商品列表,请输入商品号购买')
print (index,item) #打印可以购买的商品列表
while True: # 输入商品ID进行购买
shop_number=input('请输入商品号: ').strip() #商品购买
shop_number=int(shop_number)
buy_shop_list.append(shop_list[shop_number]) #将购买的商品添加到购物车
buy=input('输入Y/y继续购买,输入N/n进行结算: ') #输入y/n是否继续购买
if buy == 'Y' or buy == 'y':
pass
else:
money=0
for i in buy_shop_list:
money_total=(i["price"])
money += money_total
# 当商品购买商品价格总额大于账户总额,进行账户充值或者直接退出
if money > wages:
print ('您的消费上商品清单%r \n您总共消费 %s 元 ,账户余额%s 元 ,余额不足请此卡转账或者充值' %(i,money,wages))
money_less=input('请输入Y/y 登录新账户对此购物车账号进行转账,输入N/n 不买了: ')
if money_less == Y or money_less == y:
log_other()
else:
if money_less == N or money_less == n:
sys.exit()
else: # 当商品大于价格总额小于账户总额购买结束
print ('您购买了%s 物品,\n消费了%s 元' %(buy_shop_list,money))
# 存储账户的消费记录文件record.txt
with open(r'D:\python_version\python_dir\ATM\log\record.txt','a',encoding='utf-8') as f: # 记录当天的消费流水
time_t=(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
f.write(time_t)
f.write(' 您消费人民币 %s 元 \n' %money )
with open(r'D:\python_version\python_dir\ATM\log\balance1.txt', 'w', encoding='utf-8') as k:
# 存储账户余额的文件balance.txt
xiaofei=(wages - money)
money=str(money)
k.write('{\'total_money\':%s,\'shengyu\':%s}'%(wages,xiaofei))
sys.exit()
转账模块:zhuangzhan.py
from ATM.core.shop import buy_shop
import time,sys,os
def Transfer():
while True:
other_id=input('请输入你其他银行账户信息:') # 其他银行账户信息
other_pwd=input('请输入你其他银行账户密码:') #其他银行账户密码
if other_id == 'xinyongka' and other_pwd == '456':
print ('您已经成功登录,请输入你要像此admin 账户的转账金额:')
jine=input('转账额:').strip() #登录后输入项admin账户的转账金额
jine=int(jine) # 转化为×××(int)
print ('您需要转账的金额为 %s 元: ,正在转账中....' % jine)
time.sleep(3)
with open(r'D:\python_version\python_dir\ATM\log\balance.txt', 'r+', encoding='utf-8') as file:
file_name = eval(file.readline())
syje=(file_name['shengyu'])
syje=int(syje)
new_money=jine+syje #将转账金额与剩余金额相加
print ('您想admin账户转账 %s 元' % jine)
file.write('\n')
file.write('{\'total_money\':%s,\'shengyu\':%s}\n'%(file_name['total_money'],new_money)
sys.exit()