标签:
接收 信用卡类 的信用卡可用可用余额,
返回消费金额
接收上次操作后,信用卡可用余额,总欠款,剩余欠款,存款
其中: 1.每种交易类型不单独处理金钱,也不单独记录流水账,每种交易类型调用处理金钱的函数(传入交易类型,交易金额)
2.处理金钱的函数,调用配置文件中关于每种交易类型的加减钱和利率
返回本次操作后信用卡可用余额,总欠款,剩余欠款,存款
银行管理员注册登陆
普通用户注册登陆
发送需求:注册、登陆、交易类型、交易金额
调用购物类,创建购物对象(购物接口)
调用信用卡(ATM)类,处理还款,转账等操作,对利息按月记录,写入文件
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) #配置文件的上层目录
DB_DIR=os.path.join(BASE_DIR,‘db‘) #数据文件夹
ADMIN=os.path.join(DB_DIR,‘admin‘)
ALL_USERS=os.path.join(DB_DIR,‘allusrs‘)
A=os.path.join(BASE_DIR,‘db‘,‘s‘)
LOG=os.path.join(BASE_DIR,‘log‘)
TRANSACTION={
‘repay‘:{‘action‘:‘plus‘,‘interest‘:0}, #还款
‘withdraw‘:{‘action‘:‘minus‘,‘interest‘:0.05},#取现
‘transfer‘:{‘action‘:‘minus‘,‘interest‘:0.05},#转账
‘consume‘:{‘action‘:‘minus‘,‘interest‘:0},#消费
‘saving‘:{‘action‘:‘plus‘,‘interest‘:0} #存款
}
‘‘‘
credit 信用卡额度
interest:利息
balance 资产(可消费总额)
debt 欠款
amount 交易数额
remaining debt剩余欠款
管理员:alex 123
用户:1001 123
‘‘‘
3.2.1购物类
class buy:
goods=[
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
def __init__(self,money,consumption,shopping_cart,):
self.money=money
self.consumption=consumption
self.shopping_cart=shopping_cart
def gouwu(self): #购物模块
print(‘您的当前余额为:%d‘ %self.money)
num=int(input(‘请输入商品序号:‘))
num-=1
if self.goods[num]["name"] in self.shopping_cart.keys(): #goods[num]["name"]取商品名
self.shopping_cart[self.goods[num]["name"]][‘n‘]+=1 #商品数量+1
else:
self.shopping_cart[self.goods[num]["name"]]={"price":self.goods[num]["price"],‘n‘:1,} # 创建购物车字典 {keys{"price":价格,数量:1}}
self.money-=self.shopping_cart[self.goods[num]["name"]]["price"]*self.shopping_cart[self.goods[num]["name"]][‘n‘] #单价*数量
self.consumption+=self.shopping_cart[self.goods[num]["name"]]["price"]*self.shopping_cart[self.goods[num]["name"]][‘n‘]
def yichu(self): #移除购物车模块
c=int(input(‘ 请输入0/1选择是否移除购物车商品, 移除请输入1:‘))
if c==1:
e=int(input(‘ 请输入要移除的商品序号:‘))
d=self.goods[e-1]
if d in self.shopping_cart.keys(): #判断要移除的商品是否在购物车内
self.shopping_cart.remove(d) #移除商品
self.money=self.money+self.goods[self.goods.index(d)]["price"] #余额增加
self.consumption=self.consumption-self.goods[self.goods.index(d)]["price"] #消费总额减少
else:
print(‘商品不存在‘)
def chongzhi(self): #充值模块
pay=int(input(‘请输入充值金额‘))
self.money=self.money+pay
print(‘您的当前余额为:%d‘ % self.money) #显示当前余额
def main(self):
print(‘商品清单:‘)
for m,n in enumerate(self.goods,1):
print(m)
for v in n.values():
print(v)
print(‘=============‘)
#消费总额清零
self.consumption=0
buy=True #定义默认一直购物
while buy:
price=0 #定义初始价格
b=1 #定义默认不退出购物或充值状态
if self.money>=price:
#消费模块;金钱大于货物价格时,才能开始购物
while self.money>=price:
#计价模块,有钱就可以一直购物
self.gouwu()
#移除购物车商品模块
self.yichu()
if self.money>=0:
print(‘您的当前余额为:%d‘ %self.money) #显示当前余额
b=int(input(‘ 请输入0/1选择是否继续购物, 购物请输入1:‘))
if b==0: #
break #退出计价模块
if b==0: #如果不购物
break #不购物退出整个购物程序
#充值模块
else:
while self.money<price: #金钱不足,可多次充钱,直到能买得起货物
a=int(input(‘ 您的余额不足,请输入0/1选择是否充值,充值请输入1:‘))
if a==1:
self.chongzhi()
else:
break #退出充值模块
if a==0:
break #不充值退出程序
#打印购物车商品名、商品价格、消费总额、余额
print(‘您的消费清单为:‘)
for m,n in self.shopping_cart.items():
print(m,n[‘price‘],n[‘n‘])
#打印消费清单
print(‘=============‘)
print(‘您的当前余额为:%d,您的消费总额为:%d‘ % (self.money,self.consumption) ) #打印消费总额
return self.consumption
3.2.2 信用卡ATM类
class Atm:
credit=15000 #信用卡额度
def __init__(self,balance,debt,remaining_debt,interest,saving,id):
self.id=id #信用卡id
self.balance=balance #信用卡可用金额
self.debt=debt #总欠款
self.remaining_debt=remaining_debt #剩余欠款
self.interest=interest #利息
self.saving=saving #存款
self.now_time=time.strftime("%Y-%m-%d %H:%M:%S")
def account_info(self):#打印账户信息
return ‘账户id%s 信用卡额度%s;信用卡可用金额%s;总欠款%s;剩余欠款%s;利息%s‘%(self.id,self.credit,self.balance,self.debt,self.remaining_debt,self.interest)
def ret_account_info(self):
return [self.id,self.credit,self.balance,self.debt,self.remaining_debt,self.interest]
def repay(self,amount):#还款
self.handel_money(‘repay‘,amount)
def withdraw(self,amount): #取现
self.handel_money(‘withdraw‘,amount)
def transfer(self,amount): #转账
self.handel_money(‘transfer‘,amount)
def consume(self,amount): #消费
self.handel_money(‘consume‘,amount)
def saves(self,amount):
self.handel_money(‘saving‘,amount)
def transaction(self,a,amount):
dic={
‘1‘:self.repay,
‘2‘:self.withdraw,
‘3‘:self.transfer,
‘4‘:self.consume,
‘5‘:self.saves
}
print("debug: a:",type(a),"amount:",type(amount))
print(a)
print(dic[a])
print(dic["5"])
dic[a](amount)
print("end debug")
def handel_money(self,transaction,amount): #交易类型,
amount=int(amount)
interest=amount*settings.TRANSACTION[transaction][‘interest‘] #利息计算
if settings.TRANSACTION[transaction][‘action‘]==‘plus‘:
if amount<=self.remaining_debt:
self.remaining_debt-=amount
else:
self.remaining_debt=0
self.saving+=amount-self.remaining_debt
else:
if self.saving<amount:
self.balance-=amount+interest
self.debt+=amount+interest
self.remaining_debt+=amount+interest
a=‘time:%s id:%s transaction: %s amount:%s interest %s \n‘%(self.now_time,self.id,transaction,amount,interest)
print(a)
path=os.path.join(settings.ALL_USERS,‘l‘+str(self.id))
print(path)
with open(path,‘a‘)as f:
print("open file already")
f.write(a)
print("write complete")
# json.dump(a,open(path,‘a‘))
s=[self.balance,self.debt,self.remaining_debt,self.interest,self.saving,]
pickle.dump(s,open(‘s1001‘,‘wb‘))
标签:
原文地址:http://www.cnblogs.com/wanghzh/p/5588580.html