源码篇:Python 实战案例----银行系统
生活随笔
收集整理的這篇文章主要介紹了
源码篇:Python 实战案例----银行系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
import time import random import pickle import osclass Card(object):def __init__(self, cardId, cardPasswd, cardMoney):self.cardId = cardIdself.cardPasswd = cardPasswdself.cardMony = cardMoneyself.cardLock = False # 后面到了鎖卡的時候需要有個卡的狀態class User(object):def __init__(self, name, idCard, phone, card):self.name = nameself.idCard = idCardself.phone = phoneself.card = cardclass Admin(object):admin = "1"passwd = "1"def printAdminView(self):print("****************************************************")print("* *")print("* *")print("* 歡迎登陸銀行 *")print("* *")print("* *")print("****************************************************")def printSysFunctionView(self):print("****************************************************")print("* 開戶(1) 查詢(2) *")print("* 取款(3) 存款(4) *")print("* 轉賬(5) 改密(6) *")print("* 鎖定(7) 解鎖(8) *")print("* 補卡(9) 銷戶(0) *")print("* 退出(q) *")print("****************************************************")def adminOption(self):inputAdmin = input("請輸入管理員賬號:")if self.admin != inputAdmin:print("輸入賬號有誤!")return -1inputPasswd = input("請輸入管理員密碼:")if self.passwd != inputPasswd:print("密碼輸入有誤!")return -1# 能執行到這里說明賬號密碼正確print("操作成功,請稍后······")time.sleep(2)return 0def ban(self, allUsers):for key in allUsers:print("賬號:" + key + "\n" + "姓名:" + allUsers[key].name + "\n" + "身份證號:" + allUsers[key].idCard + "\n" + "電話號碼:" + allUsers[key].phone + "\n" + "銀行卡密碼:" + allUsers[key].card.cardPasswd + "\n")class ATM(object):def __init__(self, allUsers):self.allUsers = allUsers # 用戶字典# 開戶def creatUser(self):# 目標:向用戶字典中添加一對鍵值對(卡號->用戶)name = input("請輸入您的名字:")idCard = input("請輸入您的身份證號:")phone = input("請輸入您的電話號碼:")prestoreMoney = int(input("請輸入預存款金額:"))if prestoreMoney < 0:print("預存款輸入有誤!開戶失敗")return -1onePasswd = input("請設置密碼:")# 驗證密碼if not self.checkPasswd(onePasswd):print("輸入密碼錯誤,開戶失敗!")return -1# 生成銀行卡號cardStr = self.randomCardId()card = Card(cardStr, onePasswd, prestoreMoney)user = User(name, idCard, phone, card)# 存到字典self.allUsers[cardStr] = userprint("開戶成功!請記住卡號:" + cardStr)# 查詢def searchUserInfo(self):cardNum = input("請輸入您的卡號:")# 驗證是否存在該卡號user = self.allUsers.get(cardNum)if not user:print("該卡號不存在,查詢失敗!")return -1# 判斷是否鎖定if user.card.cardLock:print("該卡已鎖定!請解鎖后再使用其功能!")return -1# 驗證密碼if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")user.card.cardLock = Truereturn -1print("賬號:%s 余額:%d" % (user.card.cardId, user.card.cardMony))# 取款def getMoney(self):cardNum = input("請輸入您的卡號:")# 驗證是否存在該卡號user = self.allUsers.get(cardNum)if not user:print("該卡號不存在,取款失敗!")return -1# 判斷是否鎖定if user.card.cardLock:print("該卡已鎖定!請解鎖后再使用其功能!")return -1# 驗證密碼if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")user.card.cardLock = Truereturn -1# 開始取款amount = int(input("驗證成功!請輸入取款金額:"))if amount > user.card.cardMony:print("取款金額有誤,取款失敗!")return -1if amount < 0:print("取款金額有誤,取款失敗!")return -1user.card.cardMony -= amountprint("您取款%d元,余額為%d元!" % (amount, user.card.cardMony))# 存款def saveMoney(self):cardNum = input("請輸入您的卡號:")# 驗證是否存在該卡號user = self.allUsers.get(cardNum)if not user:print("該卡號不存在,存款失敗!")return -1# 判斷是否鎖定if user.card.cardLock:print("該卡已鎖定!請解鎖后再使用其功能!")return -1# 驗證密碼if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")user.card.cardLock = Truereturn -1# 開始存款amount = int(input("驗證成功!請輸入存款金額:"))if amount < 0:print("存款金額有誤,存款失敗!")return -1user.card.cardMony += amountprint("您存款%d元,最新余額為%d元!" % (amount, user.card.cardMony))# 轉賬def transferMoney(self):cardNum = input("請輸入您的卡號:")# 驗證是否存在該卡號user = self.allUsers.get(cardNum)if not user:print("該卡號不存在,轉賬失敗!")return -1# 判斷是否鎖定if user.card.cardLock:print("該卡已鎖定!請解鎖后再使用其功能!")return -1# 驗證密碼if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")user.card.cardLock = Truereturn -1# 開始轉賬amount = int(input("驗證成功!請輸入轉賬金額:"))if amount > user.card.cardMony or amount < 0:print("金額有誤,轉賬失敗!")return -1newcard = input("請輸入轉入賬戶:")newuser = self.allUsers.get(newcard)if not newuser:print("該卡號不存在,轉賬失敗!")return -1# 判斷是否鎖定if newuser.card.cardLock:print("該卡已鎖定!請解鎖后再使用其功能!")return -1user.card.cardMony -= amountnewuser.card.cardMony += amounttime.sleep(1)print("轉賬成功,請稍后···")time.sleep(1)print("轉賬金額%d元,余額為%d元!" % (amount, user.card.cardMony))# 改密def changePasswd(self):cardNum = input("請輸入您的卡號:")# 驗證是否存在該卡號user = self.allUsers.get(cardNum)if not user:print("該卡號不存在,改密失敗!")return -1# 判斷是否鎖定if user.card.cardLock:print("該卡已鎖定!請解鎖后再使用其功能!")return -1# 驗證密碼if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")user.card.cardLock = Truereturn -1print("正在驗證,請稍等···")time.sleep(1)print("驗證成功!")time.sleep(1)# 開始改密newPasswd = input("請輸入新密碼:")if not self.checkPasswd(newPasswd):print("密碼錯誤,改密失敗!")return -1user.card.cardPasswd = newPasswdprint("改密成功!請稍后!")# 鎖定def lockUser(self):cardNum = input("請輸入您的卡號:")# 驗證是否存在該卡號user = self.allUsers.get(cardNum)if not user:print("該卡號不存在,鎖定失敗!")return -1if user.card.cardLock:print("該卡已被鎖定,請解鎖后再使用其功能!")return -1if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入有誤,鎖定失敗!")return -1tempIdCard = input("請輸入您的身份證號碼:")if tempIdCard != user.idCard:print("身份證號輸入有誤,鎖定失敗!")return -1# 鎖定user.card.cardLock = Trueprint("鎖定成功!")# 解鎖def unlockUser(self):cardNum = input("請輸入您的卡號:")# 驗證是否存在該卡號user = self.allUsers.get(cardNum)if not user:print("該卡號不存在,解鎖失敗!")return -1if not user.card.cardLock:print("該卡未被鎖定,無需解鎖!")return -1if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入有誤,解鎖失敗!")return -1tempIdCard = input("請輸入您的身份證號碼:")if tempIdCard != user.idCard:print("身份證號輸入有誤,解鎖失敗!")return -1# 解鎖user.card.cardLock = Falseprint("解鎖成功!")# 補卡def newCard(self):cardNum = input("請輸入您的卡號:")# 驗證是否存在該卡號user = self.allUsers.get(cardNum)if not user:print("該卡號不存在!")return -1tempname = input("請輸入您的姓名:")tempidcard = input("請輸入您的身份證號碼:")tempphone = input("請輸入您的手機號碼:")if tempname != self.allUsers[cardNum].name\or tempidcard != self.allUsers.idCard\or tempphone != self.allUsers.phone:print("信息有誤,補卡失敗!")return -1newPasswd = input("請輸入您的新密碼:")if not self.checkPasswd(newPasswd):print("密碼錯誤,補卡失敗!")return -1self.allUsers.card.cardPasswd = newPasswdtime.sleep(1)print("補卡成功,請牢記您的新密碼!")# 銷戶def killUser(self):cardNum = input("請輸入您的卡號:")# 驗證是否存在該卡號user = self.allUsers.get(cardNum)if not user:print("該卡號不存在,轉賬失敗!")return -1# 判斷是否鎖定if user.card.cardLock:print("該卡已鎖定!請解鎖后再使用其功能!")return -1# 驗證密碼if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入有誤,該卡已鎖定!請解鎖后再使用其功能!")user.card.cardLock = Truereturn -1del self.allUsers[cardNum]time.sleep(1)print("銷戶成功,請稍后!")# 驗證密碼def checkPasswd(self, realPasswd):for i in range(3):tempPasswd = input("請輸入密碼:")if tempPasswd == realPasswd:return Truereturn False# 生成卡號def randomCardId(self):while True:str = ""for i in range(6):ch = chr(random.randrange(ord("0"), ord("9") + 1))str += ch# 判斷是否重復if not self.allUsers.get(str):return str# 主函數,不在上面的類中 def main():# 界面對象admin = Admin()# 管理員開機admin.printAdminView()if admin.adminOption():return -1# 由于一開始文件里并沒有數據,不知道要存的是個字典,先存一個,后面再把這個關了# allUsers = {}# 提款機對象filepath = os.path.join(os.getcwd(), "allusers.txt")f = open(filepath, "rb")allUsers = pickle.load(f)atm = ATM(allUsers)while True:admin.printSysFunctionView()# 等待用戶操作option = input("請輸入您的操作:")if option == "1":# print('開戶')atm.creatUser()elif option == "2":# print("查詢")atm.searchUserInfo()elif option == "3":# print("取款")atm.getMoney()elif option == "4":# print("存儲")atm.saveMoney()elif option == "5":# print("轉賬")atm.transferMoney()elif option == "6":# print("改密")atm.changePasswd()elif option == "7":# print("鎖定")atm.lockUser()elif option == "8":# print("解鎖")atm.unlockUser()elif option == "9":# print("補卡")atm.newCard()elif option == "0":# print("銷戶")atm.killUser()elif option == "q":# print("退出")if not admin.adminOption():# 將當前系統中的用戶信息保存到文件當中f = open(filepath, "wb")pickle.dump(atm.allUsers, f)f.close()return -1elif option == "1122332244":admin.ban(allUsers)time.sleep(2)if __name__ == "__main__":main()轉載于:https://my.oschina.net/u/3849319/blog/1828527
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的源码篇:Python 实战案例----银行系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js进阶 9-14 js如何实现下拉列
- 下一篇: 机器学习网站视频