python面向對象實現簡易銀行管理員頁面系統

'''銀行管理員頁面系統設計:card 類: cardId  password  moneyuser 類:  username  phone   id  cards[]銀行的工作人員:  賬號  密碼   登錄    展現管理系統所有功能Bank類:開戶取錢存錢轉賬銷戶查賬解鎖...'''
import pickle
import random# 銀行卡
import time#card 類
class Card:def __init__(self, cardid, password, money):self.cardid = cardidself.password = passwordself.money = moneyself.cardlock = Falsedef __str__(self):return '卡號:{},余額:{}'.format(self.cardid, self.money)# 創建用戶類
class User:def __init__(self, uid, name, phone, card):  # 此時的card,而是一個card對象self.uid = uidself.name = nameself.phone = phoneself.card = carddef __str__(self):return '用戶名:{},聯系方式:{}'.format(self.name, self.phone)#創建銀行工作人員類
class BankWorker:__login_name = 'admina'__password = 'icbc111'def printWelcomePage(self):print('----------------------------')print('      歡迎使用ICBC管理系統        ')print('----------------------------')def workerLogin(self):login_name = input('輸入賬戶名:')password = input('輸入密碼:')if self.__login_name != login_name:print('賬戶名輸入有誤!')return -1if self.__password != password:print('密碼輸入有誤!')return -1print('登錄成功,加載中....')time.sleep(2)return 0def bankFunction(self):s = '''
功能如下:1.  開戶     2.  取錢      3.  存錢4.  轉賬     5.  銷戶      6.  查賬7.  解鎖     8.  改密      9.  修改信息10. 退出'''print(s)# 創建Bank類class Bank:def __init__(self, users):self.users = usersdef create_user(self):# uid, name, phone, carduid = input('輸入身份證號碼:')name = input('輸入姓名:')phone = input('輸入手機號碼:')# 對card 進行操作# 產生卡號cardid = self.generate_cardid()# 輸入密碼password = input('請輸入密碼:')repassword = input('再次輸入密碼:')if password and repassword:if password == repassword:print('密碼設置成功!')else:print('兩次密碼不一致!')return -1else:print('必須輸入密碼!')return -1# moneymoney = 0card = Card(cardid, password, money)user = User(uid, name, phone, card)# 通過字典將卡號與用戶進行綁定self.users[cardid] = userprint('恭喜{}開戶成功!卡號是:{}'.format(name,cardid))def generate_cardid(self):no = '62'for i in range(3):n = random.randint(0, 9)no += str(n)return nodef save_money(self):islogin, user = self.user_login()if not islogin:return -1# 輸入存款金額money = int(input('驗證成功!請輸入存款金額:'))# 存錢成功if money <= 0:print('存款金額必須大于0,存款失敗!')return -1user.card.money += moneyprint('您成功存款:{},賬戶余額是:{}'.format(money, user.card.money))def withdraw_money(self):islogin, user = self.user_login()if not islogin:return -1## 輸入取款金額money = int(input('驗證成功!請輸入取款金額:'))if money <= 0:print('取款金額必須要大于0!取款失敗!')return -1if money > user.card.money:print('卡中余額不足,取款失敗!')return -1user.card.money -= moneyprint('您成功取款:{},賬戶余額是:{}'.format(money, user.card.money))def transfer_accounts(self):islogin, user = self.user_login()if not islogin:return -1# 輸入轉賬金額money = int(input('驗證成功!請輸入轉賬金額:'))if money < 0 or money > user.card.money:print("金額輸入有誤或者賬戶金額不足,轉賬失敗!")return -1cardid = input('輸入收款人的卡號:')other_user = self.users.get(cardid)# 有沒有這個卡號對應用戶if not other_user:print('不存在此卡號,轉賬失敗!')return -1# 如果有這個用戶,此卡是否被鎖定if other_user.card.cardlock:print('該卡已經鎖定,無法完成轉賬')return -1print('轉賬中請稍后.....')user.card.money -= moneyother_user.card.money += moneytime.sleep(1)print('成功轉賬:{},卡中余額是:{}'.format(money, user.card.money))def user_login(self):cardid = input('輸入銀行卡號:')user = self.users.get(cardid, None)# 有沒有這個卡號對應用戶if not user:print('不存在此卡號,存款失敗!')return False, user# 如果有這個用戶,此卡是否被鎖定if user.card.cardlock:print('該卡已經鎖定,請解鎖...')return False, user# 如果沒有鎖定則需要輸入密碼,如果密碼輸入錯誤三次則鎖定此卡r = self.check_password(user.card.password)if not r:# 鎖定賬戶print('密碼連續3次輸入錯誤,此卡鎖定!')return False, userreturn True, userdef check_password(self, password):for i in range(3):pwd = input('輸入登錄密碼:')if pwd == password:return Truereturn Falsedef update_password(self):islogin, user = self.user_login()if not islogin:return -1# 修改密碼new_pwd = input('輸入新密碼:')renew_pwd = input('再次輸入新密碼:')if not new_pwd or not renew_pwd:print('密碼不能為空,修改密碼失敗!')return -1if new_pwd != renew_pwd:print('密碼不一致,修改密碼失敗!!')return -1user.card.password = new_pwdprint('修改密碼成功!')def update_msg(self):islogin, user = self.user_login()if not islogin:return -1# 修改手機號new_phone = input('輸入新密碼:')renew_phone= input('再次輸入新密碼:')if not new_phone or not renew_phone:print('手機號不能為空,修改失敗!')return -1if new_phone != renew_phone:print('輸入不一致,修改失敗!!')return -1user.card.phone = new_phoneprint('修改手機號成功!')def del_user(self):islogin, user = self.user_login()if not islogin:return -1answer = input('確認要注銷用戶嗎?(yes/no)')if answer == 'yes':del self.users[user.card.cardid]time.sleep(1)print('賬戶注銷成功!')def select_user(self):islogin, user = self.user_login()if not islogin:return -1print(user)print('卡號:{}的賬戶金額是:{}'.format(user.card.cardid, user.card.money))def unlock_user(self):cardid = input('輸入銀行卡號:')user = self.users.get(cardid, None)# 有沒有這個卡號對應用戶if not user:print('不存在此卡號,存款失敗!')return -1uid = input('輸入身份證號碼:')if user.uid != uid:print('無效的身份證號碼!解鎖失敗!')return -1user.card.cardlock = Falseprint('解鎖成功!')# 入口
def main():# 1. 創建銀行工作人員類bworker = BankWorker()# 2.加載歡迎頁面bworker.printWelcomePage()# 3.登錄r = bworker.workerLogin()if r == -1:return -1# 加載數據庫中的數據:# with open('users.txt', 'rb') as rs:#     users = pickle.load(rs)users = {}# print(users)
# 516237458697000bank = Bank(users)while True:bworker.bankFunction()choice = input('請選擇功能:')if choice == '1':print('----------開戶----------')bank.create_user()elif choice == '2':# 取錢print('----------取錢----------')bank.withdraw_money()elif choice == '3':# 存錢print('----------存錢----------')bank.save_money()elif choice == '4':# 轉賬print('----------轉賬----------')bank.transfer_accounts()elif choice == '5':print('----------銷戶----------')bank.del_user()elif choice == '6':print('----------查賬----------')bank.select_user()elif choice == '7':print('----------解鎖----------')bank.unlock_user()elif choice == '8':print('----------改密----------')bank.update_password()elif choice == '9':print('----------修改手機號----------')bank.update_msg()elif choice == '10':# 退出answer = input('是否確定退出?(yes/no)')if answer.lower() == 'yes':print('退出中.......')time.sleep(2)with open('users.txt', 'wb') as ws:pickle.dump(bank.users, ws)print('退出完成!')breakif __name__ == '__main__':main()

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456603.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456603.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456603.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單子模式

package test; class aceing { /** param args */ private static aceing ace; public aceing() { super(); System.out.println("aceing類中的無參構造器調用了"); } public static aceing getAceing() { if(ace null) { ace new aceing(); } return ace; }} pack…

《塑造互聯網思維的企業》一一第4章 全球商務向社會化媒體的轉變

第4章 全球商務向社會化媒體的轉變 塑造互聯網思維的企業社會化媒體在發達國家的廣泛采用已是我們所熟知的&#xff0c;它在社會和全球文化產生的大范圍變革中至關重要。為了完全了解其中的原因&#xff0c;有必要探究一下那些推動社會化商務的復雜且相互關聯的因素的共同影響…

大數據之SparkSQL簡介及DataFrame的使用

目錄前言&#xff1a;1、Spark SQL1.1、Spark SQL概述1.2、DataFrames1.3、DataFrame常用操作 總結&#xff1a; 目錄 前言&#xff1a; 本文主要介紹下SparkSQL以及SparkSQL的簡單使用。這里只是做了一個非常簡單的介紹&#xff0c;后續工作中如果有用到相關的知識&#xff…

python的各種推導式(列表推導式、字典推導式、集合推導式)

python的各種推導式&#xff08;列表推導式、字典推導式、集合推導式&#xff09; 推導式comprehensions&#xff08;又稱解析式&#xff09;&#xff0c;是Python的一種獨有特性。推導式是可以從一個數據序列構建另一個新的數據序列的結構體。 共有三種推導&#xff0c;在Pyt…

原生js實現jquery庫中選擇器的功能(jquery庫封裝一)

今天是2017.1.1&#xff0c;新的一天&#xff0c;新的一年&#xff0c;新的一年里繼續夯實基礎知識&#xff0c;在工作中多些項目&#xff0c;多思考&#xff0c;多總結&#xff0c;前端是不斷更新&#xff0c;在更新的過程中也是發現樂趣和挑戰自我的過程&#xff0c;希望年輕…

Ubantu下使用vi時,方向鍵變字母輸出、退格鍵無法刪除字符的解決辦法

目錄前言&#xff1a;一、編輯/etc/vim/vimrc.tiny二、安裝vim full版本三、添加”.vimrc”文件 目錄 前言&#xff1a; 最近由于要玩TensorFlow&#xff0c;所以把塵封已久的Ubantu給打開了&#xff0c;不過配置網絡的時候&#xff0c;算是一團糟&#xff0c;出現了在插入模…

《Python爬蟲開發與項目實戰》——第3章 初識網絡爬蟲 3.1 網絡爬蟲概述

本節書摘來自華章計算機《Python爬蟲開發與項目實戰》一書中的第3章&#xff0c;第3.1節&#xff0c;作者&#xff1a;范傳輝著&#xff0c;更多章節內容可以訪問云棲社區“華章計算機”公眾號查看 第3章 初識網絡爬蟲 從本章開始&#xff0c;將正式涉及Python爬蟲的開發。本章…

【python】解決:TypeError: can't send non-None value to a just-started generator

在一個生成器函數未啟動之前&#xff0c;是不能傳遞數值進去。必須先傳遞一個None進去或者調用一次next(g)方法&#xff0c;才能進行傳值操作 def product(c):# c.send(None)for i in range(5):print("生產者產生數據%d"%i)r c.send(str(i))print("消費者消費了…

Shell腳本與vi編輯器:vi啟動與退出、工作模式、命令大全

Vi簡介 Vi是一種廣泛存在于各種UNIX和Linux系統中的文本編輯程序。Vi不是排版程序&#xff0c;只是一個純粹的文本編輯程序。Vi是全屏幕文本編輯器&#xff0c;它沒有菜單&#xff0c;只有命令。Vi不是基于窗口的&#xff0c;所以&#xff0c;這個多用途編輯程序可以用于在任何…

windows環境下,如何在Pycharm下安裝TensorFlow環境

文章目錄目錄前言&#xff1a;1.安裝Anaconda2.安裝Tensorflow3.其他問題4.在pycharm中使用tensorflow目錄 前言&#xff1a; 最近由于工作需要要使用TensorFlow&#xff0c;所以只能狂補相關的知識。本來博主打算在Ubantu上玩&#xff0c;但是由于一些原因還是放棄了這個想法…

python面向對象實現簡易銀行管理員頁面系統【導入自定義模塊】

main.py 人 類名&#xff1a;Person 屬性&#xff1a;姓名 身份證號 電話 卡 行為&#xff1a;卡 類名&#xff1a;Card 屬性&#xff1a;卡號 密碼 余額 行為&#xff1a;銀行 類名&#xff1a;Bank 屬性&#xff1a;用戶列表 提款機提款機 類名&#xff1a;ATM 屬性&#xf…

[轉] dpkg-deb命令

點擊此處閱讀原文 軟件包管理 dpkg-deb命令是Debian Linux下的軟件包管理工具&#xff0c;它可以對軟件包執行打包和解包操作以及提供軟件包信息。 語法dpkg-deb(選項)(參數) 選項-c&#xff1a;顯示軟件包中的文件列表&#xff1b; -e&#xff1a;將主控信息解壓&#xff1b;…

《Effective Debugging:軟件和系統調試的66個有效方法》一第5條:在能夠正常運作的系統與發生故障的系統之間尋找差別...

本節書摘來自華章出版社《Effective Debugging&#xff1a;軟件和系統調試的66個有效方法》一書中的第1章&#xff0c;第1.5節&#xff0c;作&#xff3b;希&#xff3d;迪歐米迪斯斯賓奈里斯&#xff08;Diomidis Spinellis&#xff09;&#xff0c;更多章節內容可以訪問云棲社…

如何安裝多個Python版本以及在Pycharm中切換Python版本

目錄前言&#xff1a; 首先要切換不同的版本&#xff0c;你必須先下載不同的Python版本&#xff0c;整個步驟如下所示&#xff1a;1、下載Python2.7x和Python3.5x版本2、安裝Python2.7x和Python3.5x版本3、配置環境變量&#xff0c;分別添加如下至path路徑4、只修改Python27&am…

【python】邏輯運算符總結

# 邏輯運算符 &#xff1a;構造復雜條件 # 優先級 not > and > or # 邏輯與 and 并且、同時 import random# a random.randint(1,5) # if a > 1 and a < 3_流程控制: # print("true") # else: # print("false") # 可以轉換為假&#…

C#中out和ref之間的區別【轉】

首先&#xff1a;兩者都是按地址傳遞的&#xff0c;使用后都將改變原來參數的數值。 其次&#xff1a;ref可以把參數的數值傳遞進函數&#xff0c;但是out是要把參數清空&#xff0c;就是說你無法把一個數值從out傳遞進去的&#xff0c;out進去后&#xff0c;參數的數值為空&am…

如何打開.ipynb文件

最近碰到文件名后綴為.ipynb文件&#xff0c;起初沒太在意這種文件格式&#xff0c;用Notepad打開之后看到也是類似于JSON格式的信息&#xff0c;以為也是為其他的一些文件服務的&#xff08;類似于配置一些HTML文件的配置文件&#xff09;。但是后來才發現這也是一種文本表示形…

《CCNP TSHOOT 300-135認證考試指南》——2.9節憑記憶完成表格和列表

本節書摘來自異步社區《CCNP TSHOOT 300-135認證考試指南》一書中的第2章&#xff0c;第2.9節憑記憶完成表格和列表&#xff0c;作者 【加】Raymond Lacoste , 【美】Kevin Wallace&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看 2.9 憑記憶完成表格和列表CC…

將f2fs文件系統到磁盤

1 用git下載f2fs文件系統tools的源代碼。下載地址如下&#xff1a;http://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git 具體的操作如下&#xff1a;git clone git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git 通過以…

【python】list append()和extend()區別

list append() ---》添加一個對象整體 extend() ----》添加迭代的對象 append() 添加單一元素在末尾 my_list [geeks, for] my_list.append(geeks) print(my_list) output: [geeks, for, geeks]添加一個list后&#xff0c;也是只添加一個list對象 my_list [geeks, for…