模擬銀行自動提款系統python

列出對象及屬性名稱行為...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/456949.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456949.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456949.shtml

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

相關文章

幫助文件html打不開,chm幫助文件打不開全是代碼?這幾種解決方法了解一下

win10系統chm幫助文件打不開怎么辦?近期使用win10 版本 1809 (OS 內部版本 17763.864)系統的用戶反應電腦打不開這個chm幫助文件的情況&#xff0c;打開后顯示不正常&#xff0c;針對這樣的問題如何解決呢?針對chm文件打開異常的現象大家可以參考本文中飛飛系統介紹的方法來修…

關于四種語言中substring()方法參數值的解析

1.關于substring(a,b)Jsvar str"bdqn";var resultstr.substring(1,2);alert(result);第一個參數&#xff1a;開始的位置&#xff0c;從0開始數第二個參數&#xff0c;結束的索引&#xff0c;從1開始數&#xff0c;而不是獲取幾個長度SQLselect substring(bdqn,2,1)第…

python中tkinter的使用-上

00基礎代碼 import tkinterwin tkinter.Tk() win.title("Liuwang") win.geometry("400x40020020")win.mainloop() 01簡單示例 #創建主窗口 win tkinter.Tk() #設置標題 win.title("Liuwang") #設置大小和位置 win.geometry("400x40020…

滾動條樣式修改

/*滾動條*/ ::-webkit-scrollbar { width: 4px; height: 4px; background-color: #F5F5F5; } /*定義滾動條軌道 內陰影圓角*/ ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.…

sklearn中常用的數據預處理方法

常見的數據預處理方法&#xff0c;以下通過sklearn的preprocessing模塊來介紹; 1. 標準化&#xff08;Standardization or Mean Removal and Variance Scaling) 變換后各維特征有0均值&#xff0c;單位方差。也叫z-score規范化&#xff08;零均值規范化&#xff09;。計算方式是…

兒童學計算機編程好處,兒童學習編程有什么好處

原標題&#xff1a;兒童學習編程有什么好處前幾年中國家長可能對少兒編程教育感到陌生。但隨著這兩年美國STEM教育在中國的流行&#xff0c;以及今年國務院普及中小學階段人工智能、編程教育規劃的發布&#xff0c;現在國內也漸漸掀起少兒學習編程的風潮。孩子學電腦編程&#…

python中tkinter的使用-中

00Listbox控件 import tkinterwin tkinter.Tk() win.title("Liuwang") win.geometry("400x40020020") 列表框控件&#xff0c;可以包含一個或者多個文本框 作用&#xff1a;在listbox控件的小窗口顯示一個字符串 #1、創建一個listbox,添加幾個元素&#…

SharePoint Server 2016 PWA(Project web app) 被變為只讀模式

今天有同事反應了一個狀況&#xff0c;我們SharePoint 2016里面集成的Project Web App(以下簡稱PWA)變成 read-only 只讀模式了&#xff01;今天就給大家分享一下我的排查過程&#xff0c;供大家參考。 整個過程我一共使用了五種辦法&#xff0c;結果最后一種才生效&#xff0c…

HDU 5741 Helter Skelter(構造法)

【題目鏈接】 http://acm.hdu.edu.cn/showproblem.php?pid5741 【題目大意】 一個01相間的串&#xff0c;以0開頭&#xff0c;給出的序列每個數字表示連續的0的個數或者1的個數&#xff0c;現在有m個詢問&#xff0c;求0的個數為a且1的個數為b的串是否存在。 【題解】 我們發現…

集成學習之參數調整策略

1 Random Forest和Gradient Tree Boosting參數詳解 在sklearn.ensemble庫中&#xff0c;我們可以找到Random Forest分類和回歸的實現&#xff1a;RandomForestClassifier和RandomForestRegression&#xff0c;Gradient Tree Boosting分類和回歸的實現&#xff1a;GradientBoost…

python中tkinter的使用-下

00表格數據 import tkinter from tkinter import ttkwin tkinter.Tk() win.title("Liuwang") win.geometry("400x40020020")#表格 tree ttk.Treeview(win) tree.pack() #列 tree["columns"] ("姓名","年齡","身高&…

計算機科學和建筑設計結合,智能化建筑中計算機科學與技術的應用

4494 科技創新 建筑工程技術與設計2018年5月上【摘要】隨著我國經濟的發展&#xff0c;計算機科學技術已經逐漸應用到各個領域。將計算機科學與建筑相結合&#xff0c;為建筑業的發展提供了契機。本文介紹了計算機科學技術在智能化建筑中的應用&#xff0c;以期其為加快我國智能…

符號

符號&#xff1a;; 多個命令的分隔符/ 根或者路徑的分隔符> 或1>標準輸出重定向&#xff08;數據流朝著箭頭的方向流動&#xff09;&#xff0c;覆蓋原來的文件>>或1>>追加重定向&#xff08;數據流朝著箭頭的方向流動&#xff09;&#xff0c;再原來的文件…

Random Forest算法中的參數詳解

本篇不是介紹RF的&#xff0c;關于RF網上有很多通俗易懂的解釋 西瓜書與統計學習方法等很多教材中的解釋也都足夠 本篇僅針對如何使用sklearn中的RandomForestClassifier作記錄 一、代碼怎么寫 [python] view plaincopy print?class sklearn.ensemble.RandomForestClassifier(…

python中自動化辦公 【筆記】

00讀取csv文件 import csv def readCsv(path):infolist []with open (path,"r") as f:allFileInfo csv.reader(f)print(allFileInfo)for row in allFileInfo:infolist.append(row)return infolistpath r"D:\xiazaipan\第1章 Python語言基礎\15、自動化辦公與…

Python爬蟲:一些常用的爬蟲技巧總結

1、基本抓取網頁 get方法 import urllib2 url "http://www.baidu.com" respons urllib2.urlopen(url) print response.read() post方法 import urllib import urllib2url "http://abcde.com" form {name:abc,password:1234} form_data urllib.urlenco…

微型計算機選用要點,微型計算機原理以及應用考試_new要點分析.doc

微型計算機原理以及應用第一章&#xff1a;1&#xff0e;微機的主要的特點是&#xff1a;(1)體積小、重量輕&#xff1b;(2)價格低廉&#xff1b;(3)可靠性高、結構靈活(4)應用面廣2&#xff0e;微型機的分類&#xff1a;按微處理器規模分類&#xff1a;單片機 、個人計算機、 …

到底什么是API經濟

編者按&#xff1a;這是一篇兩年前的文章&#xff0c;作者為原CA TECH的中國區技術總監。他在文章中闡述的問題&#xff0c;今天讀來依舊讓人振聾發聵。但遺憾的是&#xff0c;國人在API成為一種服務的概念上似乎還停留在遙遠的PC時代&#xff0c;說白了還都只是一些低端的數據…

解決Linux下vi或vim操作Found a swap file by the name

在linux下用vi或vim打開 文件時 E325: ATTENTION Found a swap file by the name ".1.py.swp" owned by: liu dated: Sat Apr 20 17:37:19 2019 file name: ~liu/1.py modified: YES user name: liu host name: localhos…

給未來的自己一封信計算機,給未來的自己的一封信范文(精選5篇)

給未來的自己的一封信范文(精選5篇)在日常生活或是工作學習中&#xff0c;大家總免不了要接觸或使用書信吧&#xff0c;書信一般包括稱呼、問候語、正文、祝語、署名、日期六個部分。你知道書信怎樣寫才規范嗎&#xff1f;下面是小編為大家收集的給未來的自己的一封信范文(精選…