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

main.py

'''
人
類名:Person
屬性:姓名 身份證號 電話 卡
行為:卡
類名:Card
屬性:卡號 密碼 余額
行為:銀行
類名:Bank
屬性:用戶列表  提款機提款機
類名:ATM
屬性:用戶字典
行為:開戶 查詢 取款 存儲 轉賬 改密 鎖定 解鎖 補卡 銷戶界面
類名:View
屬性:
行為: 管理員界面 系統功能界面  管理員登陸'''
import time
import pickle
import os
from view import  View
from atm import ATMdef main():# 用戶管理員開機功能view = View()# 管理員開機view.printAdminView()if view.adminOption():return -1#存儲用戶所有的信息# allUser = {}#提款機對象filepath = os.path.join(os.getcwd(), "allUsers.txt")f = open(filepath,"rb")allUsers = pickle.load(f)# allUsers = {}atm = ATM(allUsers)print(allUsers)while 1:view.sysFunctionView()#等待用戶的操作option = input("請輸入您的操作:")if option =="1":atm.creatUser()# print("開戶")elif option == "2":atm.serchUserInfo()elif option == "3":atm.getMoney()print("取款")elif option == "4":print("存款")elif option =="5":print("轉賬")elif option == "6":print("改密")elif option == "7":atm.lockUser()elif option == "8":atm.unlockUser()elif option == "9":print("補卡")elif option == "0":print("銷戶")elif option == "T":print("退出")if not view.adminOption():#將信息保留到文件中# filepath = os.path.join(os.getcwd(),"allUsers.txt")f= open(filepath,"wb")pickle.dump(atm.allUsers,f)f.close()return -1time.sleep(2)if __name__ =="__main__":main()

atm.py

?

from card import Card
from user import User
import randomclass ATM (object):def __init__(self,allUsers):self.allUsers = allUsersdef creatUser(self):#目標:想用戶字典中添加一對鍵值對(卡號-用戶)name = input("請輸入您的姓名:")idCard = input("請輸入您的身份證號碼:")phone = input("請輸入您的電話號碼:")prestoreMoney = int(input("請輸入預存款金額:"))if prestoreMoney<0:print("輸入金額有誤!!開戶失敗")return -1onePasswd = int(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("開戶成功!!請牢記卡號%s!!"%cardStr)#驗證密碼def checkPasswd(self,realPasswd):for i in range(3):tempPasswd = int(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 strdef serchUserInfo(self):cardNum = input("請輸入您要查詢的卡號:")user= self.allUsers.get(cardNum)if not user:print("該卡號不存在,查詢失敗。")return -1#驗證密碼if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入錯誤!!查詢失敗")return -1print("賬號:%s,余額:%d"%(user.card.cardId,user.card.cardMoney))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#取款money =int(input("請輸入取款金額"))if money> user.card.cardMoney:print("余額不足")return  -1if money<0:print("輸入錯誤")return  -1user.card.cardMoney-=moneyprint("取款成功余額為:%d"%user.card.cardMoney)def saveMoney(self):passdef transforMoney(self):passdef changePasswd(self):passdef lockUser(self):cardNum = input("請輸入您要查詢的卡號:")user = self.allUsers.get(cardNum)if not user:print("該卡號不存在,鎖定失敗。")return -1# if user.card.cardLock:#     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.cardMoney))tempIdCard = 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 -1# 驗證密碼if not self.checkPasswd(user.card.cardPasswd):print("密碼輸入錯誤!!鎖定失敗")return -1#解鎖、user.card.cardLock = Falseprint("解鎖成功!")def newCard(self):passdef killUser(self):pass

?

card.py

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

user.py

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

view.py

import time
class View(object):admin= "1"passwd = "1"# def __init__(self,admin):#     self.__admin = admindef printAdminView(self):print("************************************************")print("*                                              *")print("*                                              *")print("*               歡迎登陸旺哥銀行               *")print("*                                              *")print("*                                              *")print("************************************************")# inputAdmin = input("請輸入管理員賬號:")# if self.admin !=inputAdmin:#     print("輸入有誤")#     return  -1# inputPasswd = input("請輸入管理員密碼:")# if self.passwd !=inputPasswd:#     print("輸入有誤")#     return  -1def 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 sysFunctionView(self):print("************************************************")print("*          開戶(1)               查詢(2)       *")print("*          取款(3)               存款(4)       *")print("*          轉賬(5)               改密(6)       *")print("*          鎖定(7)               解鎖(8)       *")print("*          補卡(9)               銷戶(0)       *")print("*                   退出T                      *")print("************************************************")

?

?

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

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

相關文章

[轉] 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…

玩Python遇到的問題一二三及解決辦法

文章目錄問題一&#xff1a;python 2.7版本解決TypeError: encoding is an invalid keyword argument for this function。問題二&#xff1a;python讀取文件時提示"UnicodeDecodeError: gbk codec cant decode byte 0x80 in position 205: illegal multibyte sequence&qu…

《MATLAB圖像處理超級學習手冊》導讀

前言 MATLAB圖像處理超級學習手冊圖像是人類獲取信息的重要來源。當今的信息化社會&#xff0c;對圖像處理和圖像分析的要求越來越高&#xff0c;現有的圖像軟件由于采購成本和功能的限制&#xff0c;已經不能完全滿足專業人士的需要&#xff0c;這時就需要專業人士來編寫自己的…

【python】SOCK_STREAM和SOCK_DGRAM兩種類型的區別【轉】

sock_stream 是有保障的(即能保證數據正確傳送到對方)面向連接的SOCKET&#xff0c;多用于資料(如文件)傳送。 sock_dgram 是無保障的面向消息的socket &#xff0c; 主要用于在網絡上發廣播信息。 SOCK_STREAM是基于TCP的&#xff0c;數據傳輸比較有保障。SOCK_DGRAM是基于U…

JavaScript將字符串中的每一個單詞的第一個字母變為大寫其余均為小寫

要求&#xff1a; 確保字符串的每個單詞首字母都大寫&#xff0c;其余部分小寫。 這里我自己寫了兩種方法&#xff0c;或者說是一種方法&#xff0c;另一個是該方法的變種。 第一種&#xff1a; function titleCase(str) {var newarr,newarr1[]; newarr str . toLowerCase() .…

聊天機器人的分類及綜述

文章目錄[toc] 目錄前言&#xff1a;1、技術方向2、chatbot的知識框架3、應用的分類4、chatbot的幾個challenges5、工業應用綜述總結&#xff1a;目錄 前言&#xff1a; 最近由于工作需要&#xff0c;要開發一款智能客服&#xff0c;目前正在搞業務咨詢模塊的功能&#xff0c…

【python】數據結構和算法 + 淺談單鏈表與雙鏈表的區別

有這么一句話說“程序數據結構算法”&#xff0c;也有人說“如果把編程比作做菜&#xff0c;那么數據結構就好比食材&#xff08;菜&#xff09;&#xff0c;算法就好比廚藝&#xff08;做菜的技巧&#xff09;”。 當然這是籠統的說法&#xff0c;不過也稍微懂得了數據結構和…

Ironic 安裝和配置詳解

轉自&#xff1a;http://amar266.blogspot.com/2014/12/ironic-installation-and-configuration.html 1.Install Openstack With Neutron 2.Create and delete vm to test the setup 3.Configure existing setup for ironic 3.1.Configure ironic user in keystone # keystone …

webpack使用優化(基本篇)

轉自&#xff1a;https://github.com/lcxfs1991/blog/issues/2 前言 本文不是webpack入門文章&#xff0c;如果對webpack還不了解&#xff0c;請前往題葉的Webpack入門&#xff0c;或者阮老師的Webpack-Demos。 為什么要使用Webpack 與react一類模塊化開發的框架搭配著用比較好…

word2vec中單詞向詞向量的轉換過程詳解

目錄前言&#xff1a;1、Word2Vec兩種模型的大致印象2、CBOW模型流程舉例3、CBOW模型流程舉例總結&#xff1a; 目錄 前言&#xff1a; 針對word2vec是如何得到詞向量的&#xff1f;這篇文章肯定能解決你的疑惑。該篇文章主要參考知乎某大神的回答&#xff0c;個人在此基礎上…

Python把函數作為參數傳入的高階編程方法

map:接受兩個參數&#xff08;函數&#xff0c;Iterable&#xff09;&#xff0c;map將傳入的函數依次作用于Iterable的每個元素&#xff0c;并且返回新的Iterable def f(x):return x*x r map(f,[1,2,3,4]) #此時的r為惰性求值——可用next()和for...in取值 #通過list()返…

《編程珠璣(第2版?修訂版)》—第2章2.2節無處不在的二分搜索

本節書摘來自異步社區《編程珠璣&#xff08;第2版?修訂版&#xff09;》一書中的第2章2.2節無處不在的二分搜索&#xff0c;作者【美】Jon Bentley&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.2 無處不在的二分搜索我想到的一個數在1到100之間&…