atm类: 对象:名字 身份证 电话号码 卡 1234567class User(): def __init__(self,name,idcard,phonenum,card): self.name = name self.idcard = idcard self.phonenum = phonenum self.card = card card类 对象: 卡号,密码,钱,锁卡与否 123456class Card: def __init__(self,cardnum,password,money,islock=False): self.cardnum = cardnum self.password = password self.money = money self.islock = islock atm类 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197#Card 类 和 User 类 所在的位置from 作业.ATM.card import Cardfrom 作业.ATM.user import Userimport randomclass ATM: userDict={} #是否登录 islogin = None #尝试密码的次数 changshicishu = 0 @staticmethod def welcome(): print(''' ********************** * * * welcome to bank * * * ********************** ''') #静态方法 :普通方法和类无关 @staticmethod def select(): print(''' ********************** * 1.登陆 2.开户 * * 3.查询 4.取款 * * 5.存款 0.退出 * * 6.转账 7.改密 * * 8.注销 9.解锁 * ********************** ''') num = input("请选择服务项目:") return num @staticmethod def getcardnum(): cardnum = "" for x in range(6): cardnum += str(random.randrange(0,10)) return cardnum #开户 类方法: 给类使用 第一个参数为 cls @classmethod def openUser(cls): name = input("请输入您的姓名:") idcard = input("请输入您的身份证号码:") phonenum = input("请输入您的电话号码:") psd = input("请设置您的密码:") psd2 = input("请确认您的密码:") if psd == psd2: mon = int(input("请输入您的预存余额:")) if mon>0: cardnum = cls.getcardnum() card = Card(cardnum,psd,mon) user = User(name,idcard,phonenum,card) cls.userDict[cardnum] = user print("开卡成功,您的卡号为%s,请牢记..."%cardnum) else: print("预存余额非法,开卡失败...") else: print("两次输入密码不一致,开卡失败...") #登录 @classmethod def login(cls): cardnum = input("请输入您的卡号:") user = cls.userDict.get(cardnum) if user: while True: psd = input("请输入您的密码:") if psd == user.card.password: print("恭喜你,登录成功!!!") cls.changshicishu = 0 cls.islogin = cardnum break else: cls.changshicishu += 1 如果尝试次数大于三 将锁卡 if cls.changshicishu >= 3: print("卡已被锁,请先解锁") cls.islogin = False print(cls.islogin) break else: print("密码错误,请重新输入,还有%d次将锁卡"%(3-cls.changshicishu)) else: print("卡号不存在,请查证后登录。。。") # 查询 @classmethod def search(cls): print(cls.islogin) if cls.islogin: print("您当前的余额为%d"%(cls.userDict.get(cls.islogin).card.money)) else: print("请先登录") #取钱 @classmethod def setmoney(cls): if cls.islogin: money = int(input("请输入您要取的金额:")) print(cls.userDict.get(cls.islogin).card.money) if cls.islogin: if cls.userDict.get(cls.islogin).card.money - money >= 0 : print("取款%d成功!"%money) cls.userDict.get(cls.islogin).card.money -= money print("您卡里的余额为%d"%cls.userDict.get(cls.islogin).card.money) else: print("余额不足,取款失败!") else: print("未登录,请登录后再试") else: print("请先登录") #存钱 @classmethod def getmoney(cls): if cls.islogin: while True: gmoney = int(input("请输入您要存储的款项:")) if gmoney > 0 : cls.userDict.get(cls.islogin).card.money += gmoney print("您卡上的余额为%d"%cls.userDict.get(cls.islogin).card.money) break else: print("输入有误,请重新输入金额") else: print("请先登录!") #转账 @classmethod def zhuanzhang(cls): if cls.islogin: while 1: kahao = input("您需要转到的卡号为:") for x in cls.userDict.keys(): if x == kahao : print("您要转的卡号为%s,持卡人为%s"%(x,cls.userDict[x].name)) amoney = int(input("您需要转的金额为")) #转账人卡内余额减少 cls.userDict.get(cls.islogin).card.money -= amoney #被转账人卡内余额增加 cls.userDict.get(x).card.money += amoney else: continue print("卡号有误,请重新输入") break else: print("请先登录!") #改密码 @classmethod def gaimi(cls): if cls.islogin: mima1 = input("请输入您需要修改的密码:") mima2 = input("请再次输入修改的密码:") if mima1 == mima2: cls.userDict.get(cls.islogin).card.password = mima1 print("您的新密码为%s"%mima1) else: print("请先登录") #锁卡 @classmethod def suoka(cls): if cls.changshicishu >=3: print("卡以被锁,请先解锁") #解锁 @classmethod def jiesuo(cls): print("请输入您的卡号和密码") kahao1 = input("请输入卡号:") mima3 = input("请输入密码:") for x in cls.userDict.keys(): if kahao1 == x: if mima3 == cls.userDict.get(x).card.password: print("解锁成功") cls.islogin = cls.userDict.get(x).card.cardnum else: print("账号或者密码不正确,请重试") else: print("账号或者密码不正确,请重试") #注销 @classmethod def zhuxiao(cls): cls.islogin = False print("注销成功") main类 123456789101112131415161718192021222324252627282930313233343536373839#ATM类和 time类 所在位置from 作业.ATM.atm import ATMimport timeif __name__ == '__main__': ATM.welcome() while True: time.sleep(1) print(ATM.userDict) num = ATM.select() if num == "2": print("开户") ATM.openUser() elif num == "0": print("退出") break elif num == "1": print("登录") ATM.login() ATM.suoka() elif num == "3": print("查询") ATM.search() elif num == "4": ATM.setmoney() elif num == "5": ATM.getmoney() elif num == "6": ATM.zhuanzhang() elif num == "7": ATM.gaimi() elif num == "8": ATM.zhuxiao() elif num == "9": ATM.jiesuo() else: print("选择有误请重新选择...")