ATM信用卡程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ATM信用卡程序相关的知识,希望对你有一定的参考价值。
一、要求
二、思路
1.购物类buy
接收 信用卡类 的信用卡可用可用余额,
返回消费金额
2.信用卡(ATM)类
接收上次操作后,信用卡可用余额,总欠款,剩余欠款,存款
其中: 1.每种交易类型不单独处理金钱,也不单独记录流水账,每种交易类型调用处理金钱的函数(传入交易类型,交易金额)
2.处理金钱的函数,调用配置文件中关于每种交易类型的加减钱和利率
返回本次操作后信用卡可用余额,总欠款,剩余欠款,存款
3.客户端
银行管理员注册登陆
普通用户注册登陆
发送需求:注册、登陆、交易类型、交易金额
4.服务器端
调用购物类,创建购物对象(购物接口)
调用信用卡(ATM)类,处理还款,转账等操作,对利息按月记录,写入文件
三、代码
3.1配置文件
#!/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公共类
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‘))
以上是关于ATM信用卡程序的主要内容,如果未能解决你的问题,请参考以下文章
Day22 小程序Credit Card(ATM),购物程序调用信用卡程序接口支付