练习题:银行系统,类的方法

  • 一、主函数(MainTest)
'''
卡card:
       属性:卡号 密码 余额 是否锁定
       行为:
管理员:admin
        属性:账号 密码
        行为:登录
ATM机:atm
        属性:保存所有信息的表
        行为:登录页面 开户 查询 存储 取款 转账 改密 锁定 解锁 销户 退出
用户:user
        属性:姓名 身份证 电话 卡
        行为:
'''
from admin import Admin
from atm import ATM
import time
if __name__ == '__main__':
    ad=Admin('jxk',123)
    isSuf=ad.landUI()
    if isSuf==True:
        atm=ATM()
        time.sleep(2)
        while True:
            atm.printUI()
            key=input('请输入选项:')
            if key=='1':
                atm.kaihu()
            elif key=='2':
                atm.chaxun()
            elif key == '3':
                atm.qukuan()
            elif key=='4':
                atm.cunkuan()
            elif key == '5':
                atm.zhuanzhang()
            elif key == '6':
                atm.gaimi()
            elif key == '7':
                atm.suoding()
            elif key == '8':
                atm.jiesuo()
            elif key=='9':
                atm.xiaohu()
            else:
                atm.tuichu()
  • 二、ATM机类(atm)
​from card import Card
from user import User
import random
class ATM:
    def __init__(self):
        self.user_dic={}

    def printUI(self):
        print("************************************")
        print("*      开户(1)     查询(2)           *")
        print("*      取款(3)     存款(4)           *")
        print("*      转账(5)     改密(6)           *")
        print("*      锁定(7)     解锁(8)           *")
        print("*      销户(9)     退出(t)           *")
        print("************************************")

    def kaihu(self):
        name = input('请输入你的用户名:')
        IDnum = input('请输入你的身份证:')
        phonenum = input('请输入你的手机号')
        money = int(input('请输入你的预存款金额,不低于10块钱:'))
        if money >= 10:
            password = input('请设置你的密码:')
            password_again = input('请再次设置你的密码:')
            if password == password_again:
                kaihu_num = ''
                i = 1
                while i <= 6:
                    a = str(random.randint(0, 9))
                    kaihu_num += a
                    i += 1
                c = Card(kaihu_num, password, money)
                u = User(name, phonenum, IDnum, c)
                self.user_dic[kaihu_num] = u
                print('开户成功,卡号为:%s' % kaihu_num)
            else:
                print('前后密码不一样,开户失败')
        else:
            print('余额不足,开户失败')

    def chaxun(self):
        cardnum=input('请输入你的卡号')
        u=self.user_dic.get(cardnum)
        if u!=None:
            if u.card.isLock!=True:
                for i in range(3):
                    mima = input('请输入你的密码')
                    if mima == u.card.passwd:
                        print('卡号:%s 持卡人:%s 余额:%d'%(u.card.cardNum,u.name,u.card.yu))
                        break
                    else:
                        print('密码错误,查询失败')
                else:
                    print('机会用完,卡被锁定')
                    u.card.isLock=True
            else:
                print('卡被锁定,请解锁')
        else:
            print('卡号不存在,查询失败')

    def qukuan(self):
        '''
        1.输入卡号,检测是否有卡
        2.检测是否锁定
        3.输入密码 检测密码是否正确
        4.输入取款金额,判断是否大于余额
        5.扣钱 打印余额
        :return:
        '''
        cardnum=input('请输入卡号:')
        u=self.user_dic.get(cardnum)
        if u==None:
            print('没有此卡,取款失败')
            return False
        if u.card.isLock==True:
            print('卡被锁定,请去解锁')
            return False
        for i in range(3):
            mima = input('请输入密码:')
            if mima != u.card.passwd:
                print('密码错误,取款失败')
            else:
                break
        else:
            print('三次机会用完,卡已锁定,请去解锁')
            u.card.isLock=True
            return False
        money=int(input('请输入取款金额:'))
        if money>u.card.yu:
            print('余额不足,取款失败')
            return False
        u.card.yu-=money
        print('取款成功,卡%s的余额为%d'%(u.card.cardNum,u.card.yu))

    def cunkuan(self):
        cardnum = input('请输入卡号:')
        u = self.user_dic.get(cardnum)
        if u == None:
            print('没有此卡,存款失败')
            return False
        if u.card.isLock == True:
            print('卡被锁定,请去解锁')
            return False
        for i in range(3):
            mima = input('请输入密码:')
            if mima != u.card.passwd:
                print('密码错误,存款失败')
            else:
                break
        else:
            print('三次机会用完,卡已锁定,请去解锁')
            u.card.isLock = True
            return False
        money=int(input('请输入你的存款金额:'))
        u.card.yu+=money
        print('存款成功,卡%s的余额为%d' % (u.card.cardNum, u.card.yu))

    def zhuanzhang(self):
        cardnum = input('请输入你的卡号:')
        u = self.user_dic.get(cardnum)
        if u == None:
            print('没有此卡,转账失败')
            return False
        if u.card.isLock == True:
            print('卡被锁定,请去解锁')
            return False
        for i in range(3):
            mima = input('请输入密码:')
            if mima != u.card.passwd:
                print('密码错误,转账失败')
            else:
                break
        else:
            print('三次机会用完,卡已锁定,请去解锁')
            u.card.isLock = True
            return False
        other_cardnum=input('请输入对方卡号:')
        other_u=self.user_dic.get(other_cardnum)
        if other_u==None:
            print('没有此卡,转账失败')
            return False
        print('请确实收款人信息:')
        print('卡号:%s 持卡人:%s 身份证:%s'%(other_cardnum,other_u.name,other_u.ID))
        money=int(input('请输入转账金额:'))
        if money>u.card.yu:
            print('余额不足,转账失败')
            return False
        u.card.yu-=money
        other_u.card.yu+=money
        print('转账成功,本卡内余额还剩:%d'%(u.card.yu))

    def gaimi(self):
        cardnum = input('请输入卡号:')
        u = self.user_dic.get(cardnum)
        if u == None:
            print('没有此卡,取款改密失败')
            return False
        if u.card.isLock == True:
            print('卡被锁定,请去解锁')
            return False
        for i in range(3):
            mima = input('请输入密码:')
            if mima != u.card.passwd:
                print('密码错误,改密失败')
            else:
                break
        else:
            print('三次机会用完,卡已锁定,请去解锁')
            u.card.isLock = True
            return False
        print('请输入你的名字和身份证号码')
        name=input('名字:')
        id=input('身份证号码:')
        if name!=u.name or id!=u.ID:
            print('身份信息不匹配,改密失败')
            return False
        mima1=input('请输入新密码:')
        mima2=input('请再次输入密码:')
        if mima1!=mima2:
            print('前后密码不一致,改密失败')
            return False
        print('改密成功')
        u.card.passwd=mima1

    def suoding(self):
        cardnum = input('请输入卡号:')
        u = self.user_dic.get(cardnum)
        if u == None:
            print('没有此卡,锁定失败')
            return False
        print('锁定需要确认个人信息')
        name=input('姓名:')
        phone=input('手机号:')
        if name!=u.name or phone!=u.phone:
            print('信息不匹配,锁定失败')
            return False
        print('锁定成功,该卡不能操作,使用请解锁')
        u.card.isLock=True

    def jiesuo(self):
        cardnum = input('请输入卡号:')
        u = self.user_dic.get(cardnum)
        if u == None:
            print('没有此卡,解锁失败')
            return False
        print('解锁需要确认个人信息')
        name = input('姓名:')
        phone = input('手机号:')
        if name != u.name or phone != u.phone:
            print('信息不匹配,解锁失败')
            return False
        print('解锁成功,该卡可以正常使用')
        u.card.isLock = False

    def xiaohu(self):
        cardnum=input('请输入你的卡号:')
        u=self.user_dic.get(cardnum)
        if u==None:
            print('卡号不存在,销户失败')
            return False
        if u.card.isLock==True:
            print('卡被锁定,请去解锁')
            return False
        for i in range(3):
            mima = input('请输入密码:')
            if mima != u.card.passwd:
                print('密码错误,销户失败')
            else:
                break
        else:
            print('三次机会用完,卡已锁定,请去解锁')
            u.card.isLock=True
            return False
        print('销户需要你的全部个人信息,请输入')
        name=input('姓名:')
        id=input('身份证号:')
        phone=input('电话:')
        if name!=u.name or id!=u.ID or phone!=u.phone:
            print('信息确实错误,销户失败')
            return False
        print('当前卡内余额为%d,销户后余额将捐献给慈善机构'%u.card.yu)
        isY=input('是否确认销户,按n取消,其他任意键确认')
        if isY=='n':
            print('已取消销户操作')
            return False
        self.user_dic.pop(cardnum)
        print('销户成功')
    def tuichu(self):
        print('退出成功,请收好你的磁卡.....')
        exit()
  • 三、用户类(user)
class User:
    def __init__(self,name,phone,ID,card):
        self.name=name
        self.phone=phone
        self.ID=ID
        self.card=card


​​​​​

四、管理员类(admin)

class Admin:
    def __init__(self,name,passwd):
        self.name=name
        self.passwd=passwd

    def landUI(self):
        print("---------------------欢迎来到XXX银行------------------------")
        name = input("请输入管理员账号:")
        passwd = int(input("请输入管理员密码:"))
        if name == self.name and passwd == self.passwd:
            print("!!!!登陆成功!!!!请稍后。。。。")
            return True
        else:
            print("账号或密码错误,登陆失败")

五、卡类(card)

'''
卡:Card
    属性:卡号、密码、余额、是否锁定(True锁定了False未锁定)
    行为:
'''

class Card:

    def __init__(self,cardNum,passwd,yu):
        self.cardNum=cardNum
        self.passwd=passwd
        self.yu=yu
        self.isLock=False

你可能感兴趣的:(银行,类)