Python實現ATM系統
阿新 • • 發佈:2020-02-17
今天偶爾在知乎上看到某大佬用Python寫的ATM系統案例,然後觀摩了下他的實現思路和原始碼,感覺受益頗多,於是就根據自己的思路和目前掌握的Python程式設計基礎將ATM實現了一下,以下是案例解析的過程:
案例剖析:
1.atm主頁面顯示.
2.賬號驗證.
3.查詢餘額.
4.存款.
5.取款.
6.修改密碼.
ps:我的思路是將以上的功能分成幾大塊,通過函式,迴圈和返回值來實現,話不多說直接上程式碼.
程式碼:
1.atm主頁面顯示
def index(nowUser): print('=' * 10,'自動存取款機','=' * 10) print(getName(nowUser),'歡迎登陸!') print('{:<10}{:^10}{:<10}'.format('1.修改密碼',' ','2.查詢餘額')) print('{:<10}{:^12}{:<10}'.format('3.存錢','4.取錢')) print('輸入\'exit\'退出操作')
ps:使用format來進行格式的定義.
2.賬號驗證
def getId(nowUser): '''獲取當前使用者在列表中的位置''' index = -1 for i in range(len(userList)): if userList[i]['cardid'] == nowUser: index = i # 如果使用者存在則返回它在列表中的下標 break return index # 如果使用者不存在則返回-1 def getName(nowUser): ''' 獲取使用者姓名''' index = getId(nowUser) return userList[index]['name'] def checkUser(cardid,password): '''自定義使用者檢測功能,包括卡號及密碼檢測''' index = getId(cardid) if index == -1: # 如果使用者不存在 return 'noCardId' # 卡號不存在 else: if userList[index]['cardid'] == cardid and userList[index]['password'] == password: # 使用者存在並且賬號密碼正確 return 'login' # 密碼正確 else: return 'errorPW' # 密碼錯誤
ps:使用迴圈和返回值來進行賬號的對比和檢測.
3.查詢餘額
def showMoney(nowUser): '''查詢餘額''' index = getId(nowUser) print('您當前的賬戶餘額為:',userList[index]['money'],'元')
4.存錢
def saveMoney(nowUser,money): '''存錢''' index = getId(nowUser) print("輸入的金額是:",money) userList[index]['money'] += int(money) print('存入成功!')
5.取錢
def drawMoney(nowUser,money): '''取錢''' index = getId(nowUser) nowMoney = userList[index]['money'] if nowMoney >= int(money): userList[index]['money'] -= int(money) print('已取出',money,'元') else: print('賬戶餘額不足!')
6.修改密碼
def changePW(nowUser,newPW): '''修改密碼''' index = getId(nowUser) userList[index]['password'] = newPW
7.定義使用者操作函式
# 使用者操作 def userChoice(nowUser): choices = ['1','2','3','4','exit'] # 迴圈獲取使用者操作 while True: index(nowUser) choice = input('請選擇操作:') if choice == '1': # 選擇修改密碼 oldPW = input('請輸入原始密碼:') flag = checkUser(nowUser,oldPW) if flag == "errorPW": # print('密碼錯誤!請重新輸入,或輸入\'back\'返回上一級') print('密碼錯誤!返回主介面') elif flag == 'login': changePW(nowUser,input('請輸入新密碼:')) print('修改密碼成功!') continue elif choice == '2': # 選擇查詢餘額 showMoney(nowUser) continue elif choice == '3': # 選擇存錢 saveMoney(nowUser,input('請輸入存入金額:')) continue elif choice == '4': # 選擇取錢 drawMoney(nowUser,input('請輸入取出金額:')) continue elif choice == 'exit': main() # 返回主介面 elif choice not in choices: print('錯誤操作,請重新輸入選項!') continue
8.定義main主函式
# 主介面 def main(): # 定義錯誤次數 errorTime = 0 if errorTime >= 3: # 錯誤次數達三次退出系統後清零 errorTime = 0 while True: # crs登陸主介面 print('=' * 10,'=' * 10) nowUser = '' # 使用者輸入卡號和密碼 cardid = input('請輸入卡號:') password = input('請輸入密碼:') # 判斷卡號密碼是否存在正確 # 卡號不存在 flag = checkUser(cardid,password) if flag == 'noCardId': print('卡號不存在!請重新輸入') continue # 密碼錯誤 elif flag == 'errorPW': errorTime += 1 print('密碼錯誤!錯誤次數達三次將自動退出本系統!') print("錯誤次數:",errorTime) if errorTime >= 3: # 錯誤次數達三次自動退出 print('密碼輸錯三次,自動退出系統!') exit(0) continue # 卡號密碼正確進入系統 else: nowUser = cardid userChoice(nowUser)
9.最後定義函式主入口,進行ATM系統的測試
if __name__ == '__main__': main()
收穫:
通過ATM案例,將之前學習的Python基礎重新進行了一次鞏固,梳理和融會貫通,個人感覺 Python的函式和返回值是個特別神奇的東西,當然這個案例還有很大的改進空間,大家有什麼好的建議也可以給我留言,我之後會慢慢進行改良噠!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。