av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

python實(shí)現(xiàn)銀行實(shí)戰(zhàn)系統(tǒng)

瀏覽:85日期:2022-08-06 11:19:32

本文實(shí)例為大家分享了python實(shí)現(xiàn)銀行實(shí)戰(zhàn)系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

先附上源代碼:

│ admin.py 管理員界面│ alluser.txt 保存用戶信息│ atm.py 銀行的各部分操作方法(存錢取錢等等)│ card.py 定義卡的類│ main.py 主程序 while True│ user.py 用戶的類

main.py的源代碼

'人類名:User屬性:姓名 身份證號(hào) 電話號(hào) 卡行為:卡類名:Card屬性:卡號(hào) 密碼 余額行為:提款機(jī)類名:ATM屬性:用戶字典行為:開戶 查詢 取款 存款 轉(zhuǎn)賬 改密 鎖定 解密 補(bǔ)卡 銷戶 退出管理員類名:Admin屬性:行為:管理員界面 管理員驗(yàn)證 系統(tǒng)功能界面'import osimport pickleimport adminfrom atm import ATMdef main(): # 管理員對(duì)象 admin1 = admin.Admin() # 管理員開機(jī) admin1.printAdminView() if admin1.adminOption(): return -1 # 提款機(jī)對(duì)象 filepath = os.path.join(os.getcwd(), 'alluser.txt') f = open(filepath, 'rb') allUsers = pickle.load(f) f.close() atm = ATM(allUsers) while True: admin1.printFunctionView() # 等待用戶的操作 option = input('請(qǐng)輸入您的操作:') if option == '1' or option == '開戶': atm.creatUser() elif option == '2' or option == '查詢': atm.searchUserInfo() elif option == '3' or option == '取款': atm.withdrawals() elif option == '4' or option == '存款': atm.saveMoney() elif option == '5' or option == '轉(zhuǎn)賬': atm.transferMoney() elif option == '6' or option == '改密': atm.changePasswd() elif option == '7' or option == '鎖定': atm.lockUser() elif option == '8' or option == '解鎖': atm.unlockUser() elif option == '9' or option == '補(bǔ)卡': atm.newCard() elif option == '0' or option == '銷戶': atm.killUser() elif option == 't' or option == '退出': if not admin1.adminOption(): # 將當(dāng)前系統(tǒng)中的用戶信息保存到文件中 f = open(filepath, 'wb') pickle.dump(atm.allUsers, f, 2) f.close() return -1 else: print('指令錯(cuò)誤,請(qǐng)重新輸入!!') admin.timeFlush()if __name__ == ’__main__’: main()

admin.py的源代碼

import timedef timeFlush(): sum = 2 # 設(shè)置倒計(jì)時(shí)時(shí)間 timeflush = 0.25 # 設(shè)置屏幕刷新的間隔時(shí)間 for i in range(0, int(sum / timeflush)): list = ['', '|', '/', '—'] index = i % 4 print('r操作成功!請(qǐng)稍等 {} '.format(list[index]), end='') time.sleep(timeflush)class Admin(object): admin = '1' passwd = '1' def printAdminView(self): print('*****************************************************************') print('* *') print('* *') print('* 歡迎登錄csdn銀行 *') print('* *') print('* *') print('*****************************************************************') def printFunctionView(self): print('r*****************************************************************') print('* 開 戶(1) 查 詢(2) *') print('* 取 款(3) 存 款(4) *') print('* 轉(zhuǎn) 賬(5) 改 密(6) *') print('* 鎖 定(7) 解 鎖(8) *') print('* 補(bǔ) 卡(9) 銷 戶(0) *') print('* 退 出(t) *') print('*******************************************************************') def adminOption(self): inputAdmin = input('請(qǐng)輸入管理員賬號(hào):') if self.admin != inputAdmin: print('賬號(hào)輸入有誤?。?) return -1 inputPasswd = input('請(qǐng)輸入管理員密碼:') if self.passwd != inputPasswd: print('密碼輸入有誤!!') return -1 # 能執(zhí)行到這里說明賬戶密碼正確?。?timeFlush() return 0

user.py的源代碼

class User(object): def __init__(self, name, idCard, phone, card): self.name = name self.idCard = idCard self.phone = phone self.card = card

card.py的源代碼

class Card(object): def __init__(self, cardId, cardPasswd, cardMoney): self.cardId = cardId self.cardPasswd = cardPasswd self.cardMoney = cardMoney self.cardLock = False

atm.py的源代碼

import randomfrom card import Cardfrom user import Userclass ATM(object): def __init__(self, allUsers): self.allUsers = allUsers # 開戶 def creatUser(self): # 向用戶字典中添加一對(duì)鍵值對(duì)(卡號(hào) -- 用戶) name = input('請(qǐng)輸入您的姓名:') idCard = input('請(qǐng)輸入您的身份證號(hào)碼:') phone = input('請(qǐng)輸入您的電話號(hào)碼:') prestoreMoney = int(input('請(qǐng)輸入預(yù)存儲(chǔ)金額:')) if prestoreMoney < 0: print('預(yù)存儲(chǔ)金額有誤!!開戶失敗') return -1 onePasswd = input('請(qǐng)?jiān)O(shè)置密碼:') # 驗(yàn)證密碼 if not self.checkPasswd(onePasswd): print('密碼輸入錯(cuò)誤?。¢_戶失敗') return -1 # 生成隨機(jī)的卡號(hào) cardId = self.randomCardId() # 生成卡的信息 card = Card(cardId, onePasswd, prestoreMoney) # 生成用戶信息 user = User(name, idCard, phone, card) # 存到字典里面 self.allUsers[cardId] = user print('您的卡號(hào)是%s, 請(qǐng)牢記卡號(hào)!!' % cardId) # 查詢 def searchUserInfo(self): cardNum = input('請(qǐng)輸入您的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) user = self.allUsers.get(cardNum) if not user: print('該卡號(hào)不存在!!查詢失敗') return -1 if user.card.cardLock: print('該卡已被鎖定?。≌?qǐng)解鎖后在進(jìn)行其他操作!') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯(cuò)誤??!該卡已被鎖定??!請(qǐng)解鎖后在進(jìn)行其他操作!') user.card.cardLock = True return -1 print('賬號(hào):%s 余額:%d' % (user.card.cardId, user.card.cardMoney)) # 取款 def withdrawals(self): cardNum = input('請(qǐng)輸入您的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) user = self.allUsers.get(cardNum) if not user: print('該卡號(hào)不存在!!查詢失敗') return -1 if user.card.cardLock: print('該卡已被鎖定!!請(qǐng)解鎖后在進(jìn)行其他操作!') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯(cuò)誤!!該卡已被鎖定!!請(qǐng)解鎖后在進(jìn)行其他操作!') user.card.cardLock = True return -1 # 進(jìn)行到這一步說明卡號(hào)信息都正確,進(jìn)行取款操作 theMoney = int(input('請(qǐng)輸入您需要取款的金額:')) if theMoney > user.card.cardMoney: print('余額不足??!') return -1 elif theMoney < 0: print('您輸入金額有誤!!') else: user.card.cardMoney -= theMoney print('取款成功?。?余額為:%d' % user.card.cardMoney) # 存款 def saveMoney(self): cardNum = input('請(qǐng)輸入您的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) user = self.allUsers.get(cardNum) if not user: print('該卡號(hào)不存在??!查詢失敗') return -1 if user.card.cardLock: print('該卡已被鎖定??!請(qǐng)解鎖后在進(jìn)行其他操作!') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯(cuò)誤!!該卡已被鎖定?。≌?qǐng)解鎖后在進(jìn)行其他操作!') user.card.cardLock = True return -1 # 進(jìn)行到這一步說明卡號(hào)信息都正確,進(jìn)行存款操作 theMoney = int(input('請(qǐng)輸入您需要存款的金額:')) if theMoney < 0: print('您輸入金額有誤!!') else: user.card.cardMoney += theMoney print('存款成功!! 余額為:%d' % user.card.cardMoney) # 轉(zhuǎn)賬 def transferMoney(self): cardNum = input('請(qǐng)輸入您的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) user = self.allUsers.get(cardNum) if not user: print('該卡號(hào)不存在??!查詢失敗') return -1 if user.card.cardLock: print('該卡已被鎖定??!請(qǐng)解鎖后在進(jìn)行其他操作!') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯(cuò)誤??!該卡已被鎖定!!請(qǐng)解鎖后在進(jìn)行其他操作!') user.card.cardLock = True return -1 # 到這里說明卡號(hào)信息正確,進(jìn)行轉(zhuǎn)賬操作 theOtherCardId = input('請(qǐng)輸入您需要轉(zhuǎn)賬的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) otheruser = self.allUsers.get(theOtherCardId) if not otheruser: print('該卡號(hào)不存在!!轉(zhuǎn)賬失敗') return -1 if otheruser.card.cardLock: print('該卡已被鎖定?。?) return -1 theOtherCardName = input('請(qǐng)輸入您需要轉(zhuǎn)賬人的姓名:') # 驗(yàn)證轉(zhuǎn)賬人的姓名是否正確 if otheruser.name != theOtherCardName: print('轉(zhuǎn)賬人姓名輸入錯(cuò)誤') return -1 print('您的賬戶為%s 您的余額為%d' % (user.card.cardId, user.card.cardMoney)) # 開始轉(zhuǎn)賬 theMoney = int(input('請(qǐng)輸入您需要轉(zhuǎn)賬的金額:')) if theMoney < 0: print('您輸入金額有誤!!') else: user.card.cardMoney -= theMoney otheruser.card.cardMoney += theMoney print('轉(zhuǎn)賬成功?。∧挠囝~為%d' % user.card.cardMoney) return -1 # 改密 def changePasswd(self): cardNum = input('請(qǐng)輸入您的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) user = self.allUsers.get(cardNum) if not user: print('該卡號(hào)不存在??!查詢失敗') return -1 if user.card.cardLock: print('該卡已被鎖定??!請(qǐng)解鎖后在進(jìn)行其他操作!') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯(cuò)誤??!該卡已被鎖定??!請(qǐng)解鎖后在進(jìn)行其他操作!') user.card.cardLock = True return -1 # 下面進(jìn)行改密操作 newPasswd = input('請(qǐng)輸入新密碼:') if newPasswd == user.card.cardPasswd: print('新舊密碼不能一致!!操作失敗') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(newPasswd): print('密碼輸入錯(cuò)誤?。?) return -1 user.card.cardPasswd = newPasswd print('密碼修改成功?。≌?qǐng)牢記您的密碼') # 鎖定 def lockUser(self): cardNum = input('請(qǐng)輸入您的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) user = self.allUsers.get(cardNum) if not user: print('該卡號(hào)不存在??!輸入錯(cuò)誤') return -1 if user.card.cardLock: print('該卡已被鎖定!!請(qǐng)解鎖后再使用其他功能') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯(cuò)誤?。℃i定失敗') return -1 tempIdCard = input('請(qǐng)輸入您的身份證號(hào)碼') if tempIdCard != user.idCard: print('身份證輸入錯(cuò)誤!!鎖定失敗') return -1 # 進(jìn)行到這一步說明信息輸入成功,鎖定開始 user.card.cardLock = True print('鎖定成功') # 解鎖 def unlockUser(self): cardNum = input('請(qǐng)輸入您的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) user = self.allUsers.get(cardNum) if not user: print('該卡號(hào)不存在?。≥斎脲e(cuò)誤') return -1 if not user.card.cardLock: print('該卡沒有被鎖定!!無需解鎖') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯(cuò)誤??!鎖定失敗') return -1 tempIdCard = input('請(qǐng)輸入您的身份證號(hào)碼') if tempIdCard != user.idCard: print('身份證輸入錯(cuò)誤?。℃i定失敗') return -1 # 進(jìn)行到這一步說明信息輸入成功,解鎖開始 user.card.cardLock = False print('解鎖成功') # 補(bǔ)卡 def newCard(self): cardNum = input('請(qǐng)輸入您的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) user = self.allUsers.get(cardNum) if not user: print('該卡號(hào)不存在??!查詢失敗') return -1 if user.card.cardLock: print('該卡已被鎖定??!請(qǐng)解鎖后在進(jìn)行其他操作!') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯(cuò)誤?。≡摽ㄒ驯绘i定!!請(qǐng)解鎖后在進(jìn)行其他操作!') user.card.cardLock = True return -1 CardName = input('請(qǐng)輸入您的姓名:') # 驗(yàn)證姓名是否正確 if user.name != CardName: print('姓名輸入錯(cuò)誤?。?) return -1 useridCard = input('請(qǐng)輸入您的身份證號(hào)碼:') # 驗(yàn)證身份證是否正確 if user.idCard != useridCard: print('身份證號(hào)碼輸入錯(cuò)誤??!') return -1 # 進(jìn)行到這一步說明信息都正確,下面進(jìn)行補(bǔ)卡操作,只換卡號(hào),其他信息都不換 newIdCard= self.randomCardId() self.allUsers[newIdCard] = self.allUsers.pop(user.card.cardId) user.card.cardId = newIdCard print('您的新卡號(hào)為:%s 請(qǐng)牢記??!' % user.card.cardId) # 銷戶 def killUser(self): cardNum = input('請(qǐng)輸入您的卡號(hào):') # 驗(yàn)證是否存在該卡號(hào) user = self.allUsers.get(cardNum) if not user: print('該卡號(hào)不存在!!查詢失敗') return -1 if user.card.cardLock: print('該卡已被鎖定!!請(qǐng)解鎖后在進(jìn)行其他操作!') return -1 # 驗(yàn)證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯(cuò)誤!!該卡已被鎖定??!請(qǐng)解鎖后在進(jìn)行其他操作!') user.card.cardLock = True return -1 CardName = input('請(qǐng)輸入您的姓名:') # 驗(yàn)證姓名是否正確 if user.name != CardName: print('姓名輸入錯(cuò)誤??!') return -1 useridCard = input('請(qǐng)輸入您的身份證號(hào)碼:') # 驗(yàn)證身份證是否正確 if user.idCard != useridCard: print('身份證號(hào)碼輸入錯(cuò)誤!!') return -1 answer = input('請(qǐng)問您確定要銷戶嗎?確定(1) 取消(2)') if answer == '1' or answer == '確定': del self.allUsers[cardNum] print('已銷戶') return -1 elif answer == '2' or answer == '取消': print('取消成功?。?) return -1 else: print('輸入錯(cuò)誤?。?) return -1 # 驗(yàn)證密碼 def checkPasswd(self, realPasswd): for i in range(3): tempPasswd = input('請(qǐng)?jiān)俅屋斎朊艽a:') cardq ccardCardq)�( cardIdqh cardPasswdqh cardMoneyq cardLockq�ububs.

因?yàn)檫\(yùn)用pickle庫,要持久化存儲(chǔ)用戶信息(字典),故打開讀取寫入會(huì)亂碼,第一排中的123456是卡號(hào),其他信息全部是1,不要試圖pycharm中修改這個(gè)allUsers。txt文件,否則會(huì)產(chǎn)生無法啟動(dòng)程序的bug,這個(gè)筆者也不知道該如何改進(jìn)亂碼現(xiàn)象,希望讀者能優(yōu)化

如果遇到因?yàn)閍lluser.txt而無法運(yùn)行的情況:請(qǐng)往下看:

因?yàn)閜ickle庫的原因,開始我們是要讀取這個(gè)文件的,讀的到程序順利,讀不到程序涼涼,故我們必須要在alluser.txt里面有pickle庫可以識(shí)別的源代碼。如果您是在pycharm里面復(fù)制粘貼的因?yàn)閍lluser.txt代碼,故pycharm會(huì)自動(dòng)轉(zhuǎn)化為utf-8或者其他

我們要先把a(bǔ)lluser.txt刪除,讓pickle庫先不讀取,創(chuàng)建一個(gè)空字典,我們先開戶,然后退出程序是會(huì)自動(dòng)創(chuàng)建一個(gè)新的alluser.txt文件,會(huì)把我們剛剛創(chuàng)建好的用戶信息全部保存在txt文件中,這樣我們?cè)倩謴?fù),達(dá)到持久化保存的目的

filepath = os.path.join(os.getcwd(), 'alluser.txt') # 把之前的給注釋掉,不讓程序讀取 # f = open(filepath, 'rb') # allUsers = pickle.load(f) # f.close() # 創(chuàng)建一個(gè)新的空字典 allUsers = {} atm = ATM(allUsers)

然后我們進(jìn)行開戶操作,最后退出,會(huì)自動(dòng)創(chuàng)建一個(gè)全新的alluser.txt文件

filepath = os.path.join(os.getcwd(), 'alluser.txt') f = open(filepath, 'rb') allUsers = pickle.load(f) f.close() # 然后我們恢復(fù)它 # allUsers = {} atm = ATM(allUsers)

ok,完成了

運(yùn)行結(jié)果:

python實(shí)現(xiàn)銀行實(shí)戰(zhàn)系統(tǒng)

更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開發(fā)》。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日韩精品久久 | 日批av| 免费视频一区二区 | 欧美一区二区三区在线免费观看 | 亚洲综合一区二区三区 | 亚洲成人精品 | 精品久久久网站 | 国产精品久久毛片av大全日韩 | 精品视频一区二区三区四区 | 狠狠ri | 欧美成人影院 | 色视频www在线播放国产人成 | 日本精品久久 | 成人性生交大片免费看中文带字幕 | 国产精品视频一区二区三区, | 91久久久久久| 一区二区免费在线观看 | 97精品超碰一区二区三区 | 男女在线免费观看 | 人人玩人人干 | 亚洲精品99久久久久久 | 亚洲欧洲成人av每日更新 | 亚洲精品久久久久久下一站 | 黑人成人网 | 午夜成人免费视频 | 午夜精品久久久久久 | 亚洲精品色| 男女性毛片 | 中文字幕亚洲精品在线观看 | 色妹子综合网 | 中文字幕在线视频免费观看 | 中文字幕视频网 | av天天看| www.啪啪.com| 国产成人99久久亚洲综合精品 | 国产在线精品区 | 日日射影院| 久久国产精品视频观看 | 欧美性大战久久久久久久蜜臀 | 日本黄色免费大片 | 一级全黄视频 |