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),购物程序调用信用卡程序接口支付

模拟实现ATM+购物商城的程序

python基础作业------模拟实现一个ATM + 购物商城程序

atm

模拟实现ATM+购物商城程序

ATM:模拟实现一个ATM + 购物商城程序