日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

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

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

先附上源代碼:

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

main.py的源代碼

'人類名:User屬性:姓名 身份證號 電話號 卡行為:卡類名:Card屬性:卡號 密碼 余額行為:提款機類名:ATM屬性:用戶字典行為:開戶 查詢 取款 存款 轉(zhuǎn)賬 改密 鎖定 解密 補卡 銷戶 退出管理員類名:Admin屬性:行為:管理員界面 管理員驗證 系統(tǒng)功能界面'import osimport pickleimport adminfrom atm import ATMdef main(): # 管理員對象 admin1 = admin.Admin() # 管理員開機 admin1.printAdminView() if admin1.adminOption(): return -1 # 提款機對象 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('請輸入您的操作:') 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 == '補卡': atm.newCard() elif option == '0' or option == '銷戶': atm.killUser() elif option == 't' or option == '退出': if not admin1.adminOption(): # 將當前系統(tǒng)中的用戶信息保存到文件中 f = open(filepath, 'wb') pickle.dump(atm.allUsers, f, 2) f.close() return -1 else: print('指令錯誤,請重新輸入!!') admin.timeFlush()if __name__ == ’__main__’: main()

admin.py的源代碼

import timedef timeFlush(): sum = 2 # 設(shè)置倒計時時間 timeflush = 0.25 # 設(shè)置屏幕刷新的間隔時間 for i in range(0, int(sum / timeflush)): list = ['', '|', '/', '—'] index = i % 4 print('r操作成功!請稍等 {} '.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('* 補 卡(9) 銷 戶(0) *') print('* 退 出(t) *') print('*******************************************************************') def adminOption(self): inputAdmin = input('請輸入管理員賬號:') if self.admin != inputAdmin: print('賬號輸入有誤!!') return -1 inputPasswd = input('請輸入管理員密碼:') 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): # 向用戶字典中添加一對鍵值對(卡號 -- 用戶) name = input('請輸入您的姓名:') idCard = input('請輸入您的身份證號碼:') phone = input('請輸入您的電話號碼:') prestoreMoney = int(input('請輸入預(yù)存儲金額:')) if prestoreMoney < 0: print('預(yù)存儲金額有誤!!開戶失敗') return -1 onePasswd = input('請設(shè)置密碼:') # 驗證密碼 if not self.checkPasswd(onePasswd): print('密碼輸入錯誤!!開戶失敗') return -1 # 生成隨機的卡號 cardId = self.randomCardId() # 生成卡的信息 card = Card(cardId, onePasswd, prestoreMoney) # 生成用戶信息 user = User(name, idCard, phone, card) # 存到字典里面 self.allUsers[cardId] = user print('您的卡號是%s, 請牢記卡號!!' % cardId) # 查詢 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 = True return -1 print('賬號:%s 余額:%d' % (user.card.cardId, user.card.cardMoney)) # 取款 def withdrawals(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 = True return -1 # 進行到這一步說明卡號信息都正確,進行取款操作 theMoney = int(input('請輸入您需要取款的金額:')) 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('請輸入您的卡號:') # 驗證是否存在該卡號 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 = True return -1 # 進行到這一步說明卡號信息都正確,進行存款操作 theMoney = int(input('請輸入您需要存款的金額:')) if theMoney < 0: print('您輸入金額有誤!!') else: user.card.cardMoney += theMoney print('存款成功!! 余額為:%d' % user.card.cardMoney) # 轉(zhuǎn)賬 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 = True return -1 # 到這里說明卡號信息正確,進行轉(zhuǎn)賬操作 theOtherCardId = input('請輸入您需要轉(zhuǎn)賬的卡號:') # 驗證是否存在該卡號 otheruser = self.allUsers.get(theOtherCardId) if not otheruser: print('該卡號不存在!!轉(zhuǎn)賬失敗') return -1 if otheruser.card.cardLock: print('該卡已被鎖定!!') return -1 theOtherCardName = input('請輸入您需要轉(zhuǎn)賬人的姓名:') # 驗證轉(zhuǎn)賬人的姓名是否正確 if otheruser.name != theOtherCardName: print('轉(zhuǎn)賬人姓名輸入錯誤') return -1 print('您的賬戶為%s 您的余額為%d' % (user.card.cardId, user.card.cardMoney)) # 開始轉(zhuǎn)賬 theMoney = int(input('請輸入您需要轉(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('請輸入您的卡號:') # 驗證是否存在該卡號 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 = True return -1 # 下面進行改密操作 newPasswd = input('請輸入新密碼:') if newPasswd == user.card.cardPasswd: print('新舊密碼不能一致!!操作失敗') return -1 # 驗證密碼 if not self.checkPasswd(newPasswd): print('密碼輸入錯誤!!') return -1 user.card.cardPasswd = newPasswd print('密碼修改成功!!請牢記您的密碼') # 鎖定 def lockUser(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('密碼輸入錯誤!!鎖定失敗') return -1 tempIdCard = input('請輸入您的身份證號碼') if tempIdCard != user.idCard: print('身份證輸入錯誤!!鎖定失敗') return -1 # 進行到這一步說明信息輸入成功,鎖定開始 user.card.cardLock = True print('鎖定成功') # 解鎖 def unlockUser(self): cardNum = input('請輸入您的卡號:') # 驗證是否存在該卡號 user = self.allUsers.get(cardNum) if not user: print('該卡號不存在!!輸入錯誤') return -1 if not user.card.cardLock: print('該卡沒有被鎖定!!無需解鎖') return -1 # 驗證密碼 if not self.checkPasswd(user.card.cardPasswd): print('密碼輸入錯誤!!鎖定失敗') return -1 tempIdCard = input('請輸入您的身份證號碼') if tempIdCard != user.idCard: print('身份證輸入錯誤!!鎖定失敗') return -1 # 進行到這一步說明信息輸入成功,解鎖開始 user.card.cardLock = False print('解鎖成功') # 補卡 def newCard(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 = True return -1 CardName = input('請輸入您的姓名:') # 驗證姓名是否正確 if user.name != CardName: print('姓名輸入錯誤!!') return -1 useridCard = input('請輸入您的身份證號碼:') # 驗證身份證是否正確 if user.idCard != useridCard: print('身份證號碼輸入錯誤!!') return -1 # 進行到這一步說明信息都正確,下面進行補卡操作,只換卡號,其他信息都不換 newIdCard= self.randomCardId() self.allUsers[newIdCard] = self.allUsers.pop(user.card.cardId) user.card.cardId = newIdCard print('您的新卡號為:%s 請牢記!!' % user.card.cardId) # 銷戶 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 = True return -1 CardName = input('請輸入您的姓名:') # 驗證姓名是否正確 if user.name != CardName: print('姓名輸入錯誤!!') return -1 useridCard = input('請輸入您的身份證號碼:') # 驗證身份證是否正確 if user.idCard != useridCard: print('身份證號碼輸入錯誤!!') return -1 answer = input('請問您確定要銷戶嗎?確定(1) 取消(2)') if answer == '1' or answer == '確定': del self.allUsers[cardNum] print('已銷戶') return -1 elif answer == '2' or answer == '取消': print('取消成功!!') return -1 else: print('輸入錯誤!!') return -1 # 驗證密碼 def checkPasswd(self, realPasswd): for i in range(3): tempPasswd = input('請再次輸入密碼:') cardq ccardCardq)�( cardIdqh cardPasswdqh cardMoneyq cardLockq�ububs.

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

如果遇到因為alluser.txt而無法運行的情況:請往下看:

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

我們要先把alluser.txt刪除,讓pickle庫先不讀取,創(chuàng)建一個空字典,我們先開戶,然后退出程序是會自動創(chuàng)建一個新的alluser.txt文件,會把我們剛剛創(chuàng)建好的用戶信息全部保存在txt文件中,這樣我們再恢復(fù),達到持久化保存的目的

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

然后我們進行開戶操作,最后退出,會自動創(chuàng)建一個全新的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,完成了

運行結(jié)果:

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美网站| 亚洲福利国产| 亚洲区国产区| 亚洲我射av| 亚洲主播在线| 欧美中文字幕| 日韩av一区二区在线影视| 国产欧美日韩精品一区二区三区| 国产亚洲精品美女久久| 国产精品麻豆成人av电影艾秋 | 国产一区二区视频在线看| 韩国一区二区三区视频| 日韩欧美二区| 九一国产精品| 蜜臀91精品一区二区三区| 国产日韩一区二区三区在线| 日韩高清一级| 欧美久久天堂| 首页国产欧美久久| 麻豆一区二区三| 免费国产自久久久久三四区久久| 国产精品女主播一区二区三区| 亚洲精品乱码久久久久久蜜桃麻豆 | 日本精品在线播放| 久久三级中文| 99视频一区| 精品国内亚洲2022精品成人| 国产h片在线观看| 一区二区自拍| 久久久久伊人| 久久成人精品| 91视频久久| 日韩激情网站| 久久不射网站| 日韩另类视频| 国产精品久久国产愉拍| 亚洲一区激情| 国产一区一一区高清不卡| 蜜桃久久av一区| 美女网站视频一区| 国产精品久久久免费| 91久久黄色| 成人av三级| 老色鬼精品视频在线观看播放| 亚洲自啪免费| 国产99久久久国产精品成人免费| 国产精品久久久久久久久久白浆| 亚洲天堂免费| 欧美日韩国产亚洲一区| 欧产日产国产精品视频| 久久91视频| 精品少妇av| 精品欠久久久中文字幕加勒比| 日本不卡中文字幕| 中文字幕av一区二区三区人| 欧美1区免费| 久久精品高清| 欧美 日韩 国产精品免费观看| 粉嫩av一区二区三区四区五区 | av不卡在线看| 欧美一区二区三区高清视频 | 亚洲激情精品| 美女久久一区| 亚洲三级网站| 日韩一级欧洲| 性色一区二区| 日本免费新一区视频| 日韩高清一区| 精品高清久久| 四虎影视精品| 99亚洲视频| 婷婷精品久久久久久久久久不卡| 日韩精彩视频在线观看| 国产精品一线天粉嫩av| 国产va免费精品观看精品视频| 久久精品天堂| 久久国产日韩| 日韩三级精品| 久久精品午夜| 日韩精品2区| 久久亚洲欧美| 久久精品国产亚洲一区二区三区| 日韩激情一区| 日韩精品a在线观看91| 9999国产精品| 亚洲精选久久| 欧美日韩国产v| 丝瓜av网站精品一区二区| 欧美日韩一区二区三区在线电影| 卡一精品卡二卡三网站乱码| 亚洲性色视频| 日本天堂一区| 国产一区亚洲| 国产精品一卡| 成人免费网站www网站高清| 亚洲人成亚洲精品| 日韩不卡视频在线观看| 亚洲bt欧美bt精品777| 激情国产在线| 久久黄色影视| 免费成人在线影院| 日韩精品欧美激情一区二区| 亚洲精品无播放器在线播放| 久久精品国产www456c0m| 久久成人av| 在线精品视频一区| 久久青草久久| 欧美丰满日韩| 欧美私人啪啪vps| 91精品国产乱码久久久久久久 | 国产午夜久久av| 亚洲资源av| 欧美午夜精品一区二区三区电影| 精品一区视频| 国产精品久一| 麻豆国产精品一区二区三区| 欧美日韩1区2区3区| 婷婷成人av| 亚洲日产av中文字幕| 久久在线电影| 香蕉久久99| 图片区亚洲欧美小说区| 久久国产毛片| 蜜桃tv一区二区三区| 久久精品123| 久久久久久久久99精品大| 国产拍在线视频| 亚洲女同av| 欧美三区四区| 性欧美xxxx免费岛国不卡电影| 欧美aaaaaa午夜精品| 欧美精品影院| 麻豆视频观看网址久久| 久久香蕉网站| 国产一区二区三区四区二区| 福利一区和二区| 亚洲成人一区在线观看| 婷婷激情综合| 亚洲日产av中文字幕| 国产探花一区| 中文字幕在线看片| 91成人精品| 日韩精彩视频在线观看| 国产精品久久久久久久久久白浆 | 蜜臀久久久99精品久久久久久| 视频一区二区国产| 国产色99精品9i| 国产一二在线播放| 亚洲一区中文| 久久不见久久见免费视频7| 视频在线不卡免费观看| 伊人精品在线| 国产精品xxx| 不卡在线一区| 国产日韩欧美三区| 色老板在线视频一区二区| 视频一区二区欧美| 国产一区二区三区探花| 久久亚洲精品伦理| 久久成人av| 蜜桃av一区二区| 另类中文字幕国产精品| 日本不卡在线视频| 久久精品国产大片免费观看| 日本麻豆一区二区三区视频| 91视频一区| 国产精品亚洲片在线播放| jiujiure精品视频播放| 精品日本视频| 日韩精品导航| 亚洲免费在线| 欧美手机在线| 神马久久午夜| 老司机精品视频网| 视频在线观看国产精品| 激情丁香综合| 国产粉嫩在线观看| 国产精品magnet| 日韩av在线播放中文字幕| 国产毛片久久| 欧美日韩精品一本二本三本| 狠狠躁少妇一区二区三区| 国产精品videossex久久发布| 日韩av一区二区在线影视| 亚洲天堂免费| 亚洲免费毛片| 日本精品国产| 国产精品一区免费在线| 国产调教精品| 日韩精品视频网| 欧美精品影院| 国产精品玖玖玖在线资源| 国产欧美日韩| 欧美a级一区二区| 国内精品亚洲| 99精品网站| 一区二区亚洲精品| 日韩在线a电影| 亚洲18在线| 欧美久久精品|