ATM 面向對象 封裝寫法(一看就懂)

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章