




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第2次綜合訓(xùn)練報(bào)告題目:銀行ATM模擬程序姓 名:張也白專業(yè):安全工程班 級:通風(fēng)15-1班指導(dǎo)教師:鄧立軍2016年5月9日目錄1摘要12. 設(shè)計(jì)思路13. 源程序34. 代碼分析2參考資料3銀行ATM模擬程序1摘要自動(dòng)柜員機(jī),即 ATM是指銀行在不同地點(diǎn)設(shè)置一種小型機(jī)器,利用一張信用卡大小的膠卡上的磁帶記錄客戶的基本戶口資料(通常就是銀行卡),讓客戶可以透過機(jī)器進(jìn)行提款、存款、轉(zhuǎn)賬等銀行柜臺服務(wù),大多數(shù)客戶都 把這種自助機(jī)器稱為自動(dòng)提款機(jī)。本文正是通過設(shè)計(jì)一個(gè)ATM模擬模擬程序來實(shí)現(xiàn)ATM機(jī)系統(tǒng)的基本功能, 充分運(yùn)用自己所學(xué)的Python知識進(jìn)行設(shè)計(jì)編程。實(shí)現(xiàn)的主要功能有:賬戶信 息查詢、
2、存款操作、取款操作、修改密碼功能、退出系統(tǒng)功能。用戶任意選擇1張銀行卡(輸入1位13的數(shù)字),輸入初始密碼123456 即可進(jìn)入ATM操作系統(tǒng)菜單(如圖1所示),若輸入密碼連續(xù)錯(cuò)誤三次則鎖 卡自動(dòng)退出系統(tǒng)(如圖2所示),系統(tǒng)菜單各功能(如圖 3所示)。編寫程序時(shí)的環(huán)境是 Pyth on 3.4,所以代碼中print及in put函數(shù)可能 與python2.X版本有一些差別。參考了教材中第八章面向?qū)ο蟪绦蛟O(shè)計(jì),編 寫了兩個(gè)類包括ATM機(jī)類和銀行卡Card類,編寫了若干個(gè)函數(shù)以實(shí)現(xiàn)整個(gè)程 序模擬ATM機(jī)的各種功能。變量和函數(shù)的命名主要使用了Camel命名法,類的命名主要使用了 Pascal命名法,
3、程序共189行(含空行),因?yàn)闀r(shí)間比較 倉促,可能有些地方寫的比較亂,有些地方命名也不規(guī)范。另外因?yàn)閷ξ募?的操作不熟練,在網(wǎng)上也沒找到太多相關(guān)的資料,請多包涵。圖1圖2 圖3 2設(shè)計(jì)思路程序設(shè)計(jì)靈感來自銀行 ATM機(jī),在這里將ATM機(jī)的各種功能抽象與簡化, 設(shè)計(jì)了銀行ATM模擬程序。根據(jù)我們?nèi)粘5纳罱?jīng)驗(yàn),我們要使用ATM機(jī)就需要一張銀行卡。運(yùn)用面向?qū)ο蟮木幊谭椒?,?ATM機(jī)和銀行卡簡化并抽象為兩個(gè)類:1)銀行卡類,主要用來存儲賬戶信息,包括卡號、密碼、用戶名、余額 四個(gè)屬性,另外寫了一個(gè)構(gòu)造方法。2)ATM機(jī)類,主要用來查詢和修改銀行卡的信息,寫了五個(gè)方法,以銀行卡類的對象作為參數(shù),實(shí)現(xiàn)
4、銀行卡查詢(包括卡號、密碼、用戶名、余額)、 存款(銀行卡余額增加)、取款(銀行卡余額減少)、修改銀行卡密碼、退 卡(退出程序)等功能。寫好了類后,我們幵始模擬 ATM機(jī)的操作過程。首先,使用ATM機(jī)我們需要插卡,從文件中讀取銀行卡信息(想法并沒有能很好的實(shí)現(xiàn)),我們預(yù)設(shè)三張銀行卡,用戶選擇(13號銀行卡),根據(jù)銀行卡信息創(chuàng)建一個(gè)對應(yīng)的銀行卡對象,以及ATM機(jī)對象。插卡后,我們需要用戶輸入密碼。如果輸入密碼與銀行卡密碼匹配就進(jìn)入ATM系統(tǒng),如果輸入密碼錯(cuò)誤打到三次就鎖卡退出。進(jìn)入ATM系統(tǒng),用戶可以選擇 ATM的五個(gè)功能:1)銀行卡查詢,實(shí)現(xiàn)的方法就是使用 print函數(shù)輸出銀行卡的卡號、密
5、碼、用戶名、余額。2)存款,實(shí)現(xiàn)的方法就是把銀行卡的余額 +XX 100, (X為正整數(shù)),約 束條件為存款金額大于 100小于10000。3) 取款,實(shí)現(xiàn)的方法就是把銀行卡的余額-X X 100, (X為正整數(shù)),約束條件為取款金額不大于存款金額且不大于5000。4) 密碼修改,實(shí)現(xiàn)的方法就是把銀行卡的密碼修改。首先要輸入原密碼, 如果原密碼輸入錯(cuò)誤,則修改密碼失敗,成功后需要用戶輸入新密碼兩次,如果兩次密碼一致則修改成功,否則密碼修改失敗。5)退卡,使用exit ()函數(shù)退出程序3源程序1. #!/usr/bi n/pytho n2. # -*- coding: utf-8 -*-3. #
6、author:張也白 PythonVersion : 3.44. import os5.5. class DepositCard:6. cardID = 07. cardPWD = 1234568. bala nee = 09. userName = 000010. def _init_(self,cardlD,cardPWD,userName,bala nee):11. self.cardlD = cardID12. self.cardPWD = cardPWD13. self.userName = userName14. self.bala nee = bala nee16.15. cla
7、ss ATM:16. def deposite(self,card):#存款17. divide()18. info =存款 n19. prin t(i nfo.ee nter(50)20. cash=input(”提示:存款金額為 100的倍數(shù),金額要求在100-10000 之間 n)in t(cash)v=10000:24. card.bala nce+二 in t(cash)25. info =存款成功n26. pri nt(i nfo.ce nter(50)27. pri nt(nThe bala nee of the card :%d%card.bala nee)28. else:2
8、9. info =存款失敗n30. pri nt(i nfo.ce nter(50)31. divide()32.32. def withdraw(self,card):#取款33. divide()34. info =取款 n35. prin t(i nfo.ce nter(50)36. options二1:100,2:200,3:500,4:其他金額37. for a in optio ns.items():38. prin t(a0,a1)39. choice=i nput(請選擇:)and40. if(in t(choice)=1orin t(choice)=2)card.bala n
9、ce 二in t(choice)*100:42.41. card.bala nce-=i nt(choice)*10042. info =取款成功n43. pri nt(i nfo.ce nter(50)46.elif in t(choice)=3 and card.bala nce=500:47. card.bala nce-=50048. info =取款成功n49. pri nt(i nfo.ce nter(50)50. elif in t(choice)=4:51. cash二input(n提示:取款金額為100的倍數(shù),且總額不超過5000元n請52. 輸入你要取的金額:)53. if
10、 in t(cash)=100 and in t(cash) 二in t(cash):55.56.57.58.59.60.61.62.63.64.65.66.67.68.card.bala nee-二 in t(cash)info =取款成功npr in t(i nfo.ce nter(50)else:pri nt(輸入錯(cuò)誤或卡內(nèi)余額不足)else:pri nt(輸入錯(cuò)誤或卡內(nèi)余額不足)else:pri nt(輸入錯(cuò)誤或卡內(nèi)余額不足)prin t(nn The bala nee of the card :%d%card.bala nee) divide()70.71.72.73.74.75.7
11、6.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.divide。info =修改密碼nprin t(i nfo.ce nter(50)inStr=input(請輸入原密碼:)if in Str!二card.cardPWD:info =密碼錯(cuò)誤npr in t(i nfo.ce nter(50)else:newPWD1=input(請輸入新密碼:)newPWD2=input(請?jiān)俅屋斎胄旅艽a:)if n ewPWD1 = n ewPWD2:card.cardPWD二 newPWD1ninfo = n密碼修改成功,請牢記你的新密碼pr
12、in t(i nfo.ce nter(50)else:info = n密碼不一致npr in t(i nfo.ce nter(50)divide()def query(self,card):#查詢divide()info =查詢成功nprin t(i nfo.ce nter(50)忖號,密碼,姓名,余print(銀行卡信息.center(50)print(%-10s%-10s%-10s%-10s%(額)95.prin t(%-11s%-11s%-11s%-11s%(str(card.cardlD),card.cardPWD,card.userNam96. e,str(card.bala nee
13、)97. divide()98. def refun dCard(self,card):#退卡99. divide()100. print(假裝把卡吐出來)101. prin t(謝謝使用,請收好您的卡片)102. divide()103. def divide():104.print(nn)104. def ini t():106.f=ope n(D:a.txt,w)107.in fo=108.1001 123456張大白1000109.1002 123456張二白2000110.1003 123456張三白3000111.f.write(i nfo)112.f.close()113. s=
14、ope n(D:a.txt,r)114. print(銀行卡信息.center(50)115. print(%-10s%-10s%-10s%-10s%(卡號,密碼,姓名,余額)116.for line in s.readlines():117.for i in ran ge(0,4):118.pri nt(%-11s%li ne.split()i,e nd =)119.if i=3:120.pri nt()121.s.close122.divide()123.return124. def createCard():125.choice=input(請選擇張銀仃卡(13):)J126.if in
15、 t(choice) = 1:127.newcard = DepositCard(1001,123456,張大白,1000)128.log in(n ewcard)129.elif in t(choice) = 2:130.newcard = DepositCard(1002,123456,張二白,2000)131.log in(n ewcard)132.elif in t(choice) = 3:133.newcard = DepositCard(1003,123456,張三白,3000)134.log in(n ewcard)135.else:136.print(輸入有誤,退出系統(tǒng))137
16、.exit()138. def logi n( card):139. divide()140.141.142.143.144.145.146.147.148.149.150.151.152.153.154.155.156.157.158.159.160.161.162.163.164.print(n你插入了銀行卡 sn%card.cardlD)sum = 0pwd =while pwd!二card.cardPWD:pwd=input(n請輸入密碼:)sum+=1if pwd = card.cardPWD:breakelse:print(密碼錯(cuò)誤次數(shù)d,請重新輸入密碼%sum)if sum 2:
17、print(n密碼錯(cuò)誤次數(shù)過多,退出系統(tǒng))exit()print(n密碼正確,進(jìn)入系統(tǒng))divide()XiaoBaiATM = ATM()men u(XiaoBaiATM,card)def start():divide()prin t(tt歡迎使用小白白 ATM)divide()ini t()createCard()def men u(XiaoBaiATM,card):options二1:查詢賬戶信息,2:存款,3:取款,4:修改密碼,5:退卡165. for a in opti on s.items():166. pri nt(a0,a1)167. choice = input(n請選擇:
18、)168. if in t(choice) = 1:169. XiaoBaiATM.query(card)170. men u(XiaoBaiATM,card)171. elif in t(choice) = 2:172. XiaoBaiATM.deposite(card)173. men u(XiaoBaiATM,card)174. elif in t(choice) = 3:175. XiaoBaiATM.withdraw(card)176. men u(XiaoBaiATM,card)177. elif in t(choice) = 4:178. XiaoBaiATM.modify(card)179. men u(XiaoBaiATM,card)180. elif in t(choice) = 5:181. XiaoBaiATM.refu ndCard(card)182. else:183. pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出國柬埔寨勞務(wù)合同范本
- 化學(xué)物品銷售服務(wù)合同范本
- 蔬菜合作合同范本
- 出租農(nóng)村菜地合同范本
- 加壓裝置租賃合同范本
- 農(nóng)村房屋翻新合同范本
- 內(nèi)墻磁粉合同范本
- 關(guān)于外墻清洗合同范本
- 出納擔(dān)保合同范本
- 辦公用窗簾采購合同范本
- 2024-2030年中國留學(xué)服務(wù)行業(yè)市場前景預(yù)測及發(fā)展戰(zhàn)略規(guī)劃分析報(bào)告
- 消火栓及自動(dòng)噴水滅火系統(tǒng)裝置技術(shù)規(guī)格書
- 2024年體育競技:運(yùn)動(dòng)員與俱樂部保密協(xié)議
- 小學(xué)數(shù)學(xué)新教材培訓(xùn)
- 初中作文課件教學(xué)課件
- 軍隊(duì)文職(會(huì)計(jì)學(xué))考試(重點(diǎn))題庫200題(含答案解析)
- 小兒急性喉炎護(hù)理查房
- 亞??谱o(hù)理建設(shè)思路
- 中職安全主題班會(huì)教育課件
- 500-3000總噸船舶大副培訓(xùn)大綱(2021版)
- 公務(wù)員2019年國考《申論》真題及答案(地市級)
評論
0/150
提交評論