银行系统(python基础实现)

银行提款机系统

首先应该明确有哪些类和哪些属性,方法

用户身份证类

class IdCard(object):
    def __init__(self, name, cardId):
        self.__name = name
        self.__cardId = cardId

    @property
    def name(self):
        return self.__name
    @name.setter
    def name(self, value):
        self.__name = value

    @property
    def cardId(self):
        return self.__cardId
    @cardId.setter
    def cardId(self, value):
        self.__cardId = value


银行类

此处假设只有一个银行,用单例实现


def single(cls):
    instance = {
   }
    def inner(*args, **kwargs):
        if cls not in instance:
            instance[cls] = cls(*args, **kwargs)
        return instance[cls]
    return inner


@single
class Bank(object):
    def __init__(self, name=None):
        self.name = name
        self.atmsList = []
        self.usersDict = {
   }
        self.cardsDict = {
   }

多个atm机类


from idCard import IdCard
from bank import Bank
from bankCard import BankCard
import random

class Atm(object):
    def __init__(self, atmId, money):
        self.atmId = atmId
        self.__money = money

    @property
    def money(self):
        if self.__money >= 0:
            return self.__money
        else:
            return 0
    @money.setter
    def money(self, value):
        self.__money = value

    # 开户
    def open_account(self):
        userName = input("输入您的姓名:")
        userCardId = input("输入您的身份证号码:")
        sunckBank = Bank()
        #判断银行中改用是否存储过信息
        user = sunckBank.usersDict.get(userCardId)
        if not user:
            # 创建身份证对象
            user = IdCard(userName, userCardId)
            sunckBank.usersDict[userCardId] = user

        #随机生成卡号
        bankCardId = self.getBankCardNum()
        passwd = input("设置密码:")
        if not self.checkPasswd(passwd):
            #验证密码失败
            print("两次密码不一致,开户失败")
            return
        phone = input("请输入您的手机号:")


        #创建银行卡
        bankCard = BankCard(bankCardId,passwd, phone, user)
        #将卡存入银行
        sunckBank.cardsDict[bankCardId] = bankCard
        print("开户成功,请牢记卡号%s"%(bankCardId))


    #插卡
    def insertCard(self):
        bankCardId = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值