1.建立下面幾個py文件,然後編寫每一個類的屬性與方法,下面的註釋寫得很清楚,不懂可以留言,我一 一回復
card.py 卡類
class Card():
#初始化卡的屬性cardnum, password, money,islock是否上鎖 ,默認不上鎖
def __init__(self, cardnum, password, money, islock=False):
self.cardnum = cardnum
self.password = password
self.money = money
self.islock = islock
user.py 用戶類
class User():
#初始化用戶的屬性name,idcard,phone,card
def __init__(self,name,idcard,phone,card):
self.name = name
self.idcard = idcard
self.phone = phone
self.card = card
atm.py ATM系統
from day03.ATM.card import Card#導入card的構造方法
from day03.ATM.user import User#導入user的構造方法
import random
class ATM():
#判斷是否鎖卡了,鎖卡了不能進行其他操作
n = False
#這個字典存儲登錄的賬號和密碼
dict_l = {}
#這個字典存儲卡號和錢
dict_m = {}
#存儲所有信息
dict_c = {}
#默認是不登錄的,不登錄,只能進行1,2選項
islogin = False
@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 randomcard():
iccard_s = random.choices(['1', '2', '3', '4', '5', '6', '7', '8', '9'], k=6)
iccard = ''.join(iccard_s)
return iccard
#登錄
@classmethod
def login(cls):
card = input('請輸入你的卡號:')
psd = input('請輸入你的密碼')
if card in ATM.dict_l:
if psd == cls.dict_l[card]:
cls.islogin = card
print('登錄成功')
else:
print('卡號不存在,請開戶')
#開戶
@classmethod
def openUser(cls):
name = input('請輸入你的名字:')
idcard= input('請輸入你的身份證:')
phone= input('請輸入你的電話:')
psw1 = input('請輸入你的密碼')
psw2 = input('請確認你的密碼')
if psw1 == psw2:
cardnum = cls.randomcard()
money = int(input('請輸入金額:'))
card = Card(cardnum,psw1,money)
user = User(name, idcard, phone, card)
cls.dict_c ={cardnum:user}
dict_m1 = {cardnum:money}
cls.dict_l = {cardnum:psw1}
cls.dict_m.update(dict_m1)
print('開戶成功,你的賬號爲%s,密碼爲%s,請牢記!'%(cardnum,psw1))
print(cls.dict_m)
else:
print('輸入的密碼不一致,請重新輸入')
#查詢信息
@classmethod
def index(cls):
if cls.n:
print('卡已被鎖定')
return
print('查詢餘額')
for i in cls.dict_l:
pass
a = cls.dict_m[i]
print('餘額爲:%d'%a)
#取款
@classmethod
def draw(cls):
if cls.n:
print('卡已被鎖定')
return
qnum = int(input('請輸入你要取款的金額:'))
for i in cls.dict_l:
pass
cls.dict_m[i] -= qnum
print('您現在的餘額爲:',cls.dict_m[i])
print(cls.dict_m)
# 存款
@classmethod
def save(cls):
if cls.n:
print('卡已被鎖定')
return
qnum = int(input('請輸入你要存款的金額:'))
for i in cls.dict_l:
pass
cls.dict_m[i] += qnum
print('您現在的餘額爲:',cls.dict_m[i])
print(cls.dict_m)
#轉賬
@classmethod
def send(cls):
if cls.n:
print('卡已被鎖定')
return
zhanghao = input('請輸入要轉賬的號碼:')
znum = int(input('請輸入要轉賬的金額:'))
for i in cls.dict_l:
pass
cls.dict_m[i] -= znum
cls.dict_m[zhanghao] += znum
print(cls.dict_m)
print('轉賬成功')
#修改密碼
@classmethod
def change_psw(cls):
if cls.n:
print('卡已被鎖定')
return
for i in cls.dict_l:
pass
x_psw = input('請輸入你的新密碼:')
cls.dict_l[i] = x_psw
print('修改密碼成功,新密碼爲:%s'%x_psw)
#鎖卡
@classmethod
def suo(cls):
cls.n = True
print('鎖卡成功')
return
#開鎖
@classmethod
def opensuo(cls):
cls.n = False
print('開卡成功')
return
main.py 主方法
from day03.ATM.atm import ATM
import time
if __name__ == '__main__':
ATM.welcome()
time.sleep(1)
while True:
num = ATM.select()
#登錄
if num == '1':
ATM.login()
#開戶
elif num == '2':
ATM.openUser()
#退出系統
elif num == '0':
print('退出系統')
with open ('user.text','w') as f2:
f2.write(str(ATM.dict_c))
break
elif ATM.islogin:
#查詢
if num == '3':
print('查詢')
ATM.index()
#取款
if num == '4':
print('取款')
ATM.draw()
if num == '5':
print('存款')
ATM.save()
if num == '6':
print('轉賬')
ATM.send()
if num == '7':
print('改密碼')
ATM.change_psw()
if num == '8':
print('鎖卡')
ATM.suo()
if num == '9':
print('解鎖')
ATM.opensuo()
else:
print('未登錄,請登錄')
continue