银行提款机系统
首先应该明确有哪些类和哪些属性,方法
用户身份证类
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 =