1. 程式人生 > >Python銀行ATM模擬

Python銀行ATM模擬

目錄

 主介面

效果展示

ATM模擬專案簡介

*對於銀行ATM的模擬大致分為以下幾個方面:

 *對於開戶要考慮到手續費的扣除這就要求使用者在開戶的時候存款金額不得小於10元當初始化金額小於10元要給出使用者提示資訊並且讓使用者重新輸入

  *首先要考慮到現實銀行ATM對於使用者的存取款要進行一系列的處理,首先需要設定銀行密碼驗證,如果驗證成功則繼續進行下面的一系列操作,例如:存款,取款

 *如果驗證失敗我們要相應的給客戶一定的提示,提示客戶登入失敗的原因(如:賬戶不存在,密碼輸入錯誤)

 *對於使用者的存款規程我們只需要考慮到使用者密碼輸入的正確和錯誤,但是對於取款我們一方面要考慮使用者密碼的正確與否另一方面要考慮使用者賬戶裡餘額和取款金額的比較,如果取款金額異常要給出相應的提示資訊

 *使用者完成操作後要給與一定的歡迎語(請戴好你的隨身物品,歡迎下次光臨)

ATM模擬實現

class PasswordException(Exception):#自定義密碼異常

    def __init__(self):
        print("密碼賬戶錯誤請重試")
class JineException(Exception):#自定義取款金額異常
     def __init__(self):
         print("餘額不足,請重新輸入取款金額") 
class Bank:#定義一個Bank類
    flag=False#定義一個標誌器用於判斷使用者是否開過戶
    password=" "#成員變數的定義
    account=" "
    money=0
    def __init__(self):#實現類的無參構造方法
      pass
    def __init__(self,a,b,c):#實現類帶引數的方法
        self.password=a
        self.account=b
        self.money=c
        self.flag=True
        print("開戶成功當前餘額為%d元"% self.money)

存款方法的實現


    def cunkuan(self):
      if self.flag==True:
       while True: 
        try:  #丟擲異常一般和except 結合使用
          print("請輸入賬戶和密碼:")
          b=input("請輸入你的賬戶:")
          c=input("請輸入你的密碼:")
          if  b==self.account:
              if c==self.password:
                 d=int(input("請輸入存款金額:"))
                 self.money+=d
                 print("你已存入%d元當前餘額為%d元"%(d,self.money))
                 break
          else:
              raise  PasswordException#用raise關鍵字觸發異場
        except  PasswordException as e:#丟擲異常物件e
              print(e)
       else:
           print("請先進行開戶")

  取款方法實現


    def qukuan(self):
       if self.flag==True:
         while True:
          try:
             print("請輸入賬戶和密碼:")
             b=input("請輸入你的賬戶:")
             c=input("請輸入你的密碼:")
             if b==self.account:
                   if c==self.password:
                     while True:
                       try:
                         print("請輸入取款金額:")
                         e=int(input())#取款金額的輸入
                         if e>self.money:#取款金額與賬戶餘額的比較
                           raise JineException
                         else:
                           self.money-=e
                           print("你已取出%d元當前餘額為%d元"%(e,self.money))
                           break
                       except JineException as l:
                            print(l)#輸出取款金額異常的原因
                     break #結束迴圈
             else:
                 raise PasswordException
          except PasswordException as e:
                            print(e)
         else:
            print("請先進行開戶")

 主介面


print("-------------------歡迎來到中國招商銀行------------------")
print("***如果你未開戶請先進行開戶操作***")
while True:
 try:
      print("1,開戶\t2,存款\n3,取款\t4,退出")
      print("請輸入你想要辦理業務的編碼:")
      m=int(input())
      if m in (1,2,3,4):#判斷m是否在(1,2,3,4)序列中,通過不同的編號實現不同的功能
       if m==1:
          print("請輸入你的開戶賬號:")
          user=input()
          print("請輸入你的初始化密碼:")
          w=input()
          print("請輸入你的初始化金額:")
          while True:
              k=int(input())
              if k>10:
                k-=10
                b=Bank(w,user,k)
                break
              else:
                print("初始金額應大於10元請重新輸入初始化金額:")
       if m==2:
            b.cunkuan()
       if m==3:
            b.qukuan()
       if m==4:
            break
      else:
         print("你輸入的業務編碼不存在請重新輸入")
 except ValueError:

      print("輸入編碼有誤")

效果展示