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