python模擬銀行ATM程序設(shè)計_第1頁
python模擬銀行ATM程序設(shè)計_第2頁
python模擬銀行ATM程序設(shè)計_第3頁
python模擬銀行ATM程序設(shè)計_第4頁
python模擬銀行ATM程序設(shè)計_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、-第2次綜合訓(xùn)練報告題目:銀行ATM模擬程序姓 名:也白專 業(yè):平安工程班 級:通風(fēng)15-1班指導(dǎo)教師:鄧立軍2021 年5 月9日目錄1 摘要12.設(shè)計思路13.源程序24.代碼分析2參考資料3. z-銀行ATM模擬程序1 摘要自動柜員機(jī),即ATM,是指銀行在不同地點(diǎn)設(shè)置一種小型機(jī)器,利用一信用卡大小的膠卡上的磁帶記錄客戶的根本戶口資料通常就是銀行卡,讓客戶可以透過機(jī)器進(jìn)展提款、存款、轉(zhuǎn)賬等銀行柜臺效勞,大多數(shù)客戶都把這種自助機(jī)器稱為自動提款機(jī)。本文正是通過設(shè)計一個ATM模擬模擬程序來實現(xiàn)ATM機(jī)系統(tǒng)的根本功能,充分運(yùn)用自己所學(xué)的Python知識進(jìn)展設(shè)計編程。實現(xiàn)的主要功能有:賬戶信息查詢、

2、存款操作、取款操作、修改密碼功能、退出系統(tǒng)功能。用戶任意選擇1銀行卡輸入1位13的數(shù)字,輸入初始密碼123456即可進(jìn)入ATM操作系統(tǒng)菜單如圖1所示,假設(shè)輸入密碼連續(xù)錯誤三次則鎖卡自動退出系統(tǒng)如圖2所示,系統(tǒng)菜單各功能如圖3所示。編寫程序時的環(huán)境是Python3.4,所以代碼中print及input函數(shù)可能與python2.*版本有一些差異。參考了教材中第八章面向?qū)ο蟪绦蛟O(shè)計,編寫了兩個類包括ATM機(jī)類和銀行卡Card類,編寫了假設(shè)干個函數(shù)以實現(xiàn)整個程序模擬ATM機(jī)的各種功能。變量和函數(shù)的命名主要使用了Camel命名法,類的命名主要使用了Pascal命名法,程序共189行含空行,因為時間比較倉

3、促,可能有些地方寫的比較亂,有些地方命名也不規(guī)。另外因為對文件的操作不熟練,在網(wǎng)上也沒找到太多相關(guān)的資料,請多包涵。圖1圖2圖32設(shè)計思路程序設(shè)計靈感來自銀行ATM機(jī),在這里將ATM機(jī)的各種功能抽象與簡化,設(shè)計了銀行ATM模擬程序。根據(jù)我們?nèi)粘5纳罱?jīng)歷,我們要使用ATM機(jī)就需要一銀行卡。運(yùn)用面向?qū)ο蟮木幊谭椒ǎ袮TM機(jī)和銀行卡簡化并抽象為兩個類:1銀行卡類,主要用來存儲賬戶信息,包括卡號、密碼、用戶名、余額四個屬性,另外寫了一個構(gòu)造方法。2ATM機(jī)類,主要用來查詢和修改銀行卡的信息,寫了五個方法,以銀行卡類的對象作為參數(shù),實現(xiàn)銀行卡查詢包括卡號、密碼、用戶名、余額、存款銀行卡余額增加、取款

4、銀行卡余額減少、修改銀行卡密碼、退卡退出程序等功能。寫好了類后,我們開場模擬ATM機(jī)的操作過程。首先,使用ATM機(jī)我們需要插卡,從文件中讀取銀行卡信息想法并沒有能很好的實現(xiàn),我們預(yù)設(shè)三銀行卡,用戶選擇13號銀行卡,根據(jù)銀行卡信息創(chuàng)立一個對應(yīng)的銀行卡對象,以及ATM機(jī)對象。插卡后,我們需要用戶輸入密碼。如果輸入密碼與銀行卡密碼匹配就進(jìn)入ATM系統(tǒng),如果輸入密碼錯誤打到三次就鎖卡退出。進(jìn)入ATM系統(tǒng),用戶可以選擇ATM的五個功能:1銀行卡查詢,實現(xiàn)的方法就是使用print函數(shù)輸出銀行卡的卡號、密碼、用戶名、余額。2存款,實現(xiàn)的方法就是把銀行卡的余額+*×100,*為正整數(shù),約束條件為存款

5、金額大于100小于10000。3取款,實現(xiàn)的方法就是把銀行卡的余額-*×100,*為正整數(shù),約束條件為取款金額不大于存款金額且不大于5000。4密碼修改,實現(xiàn)的方法就是把銀行卡的密碼修改。首先要輸入原密碼,如果原密碼輸入錯誤,則修改密碼失敗,成功后需要用戶輸入新密碼兩次,如果兩次密碼一致則修改成功,否則密碼修改失敗。5退卡,使用e*it函數(shù)退出程序3源程序1. *!/usr/bin/python2. * -*- coding: utf-8 -*-3. *author:也白 PythonVersion:3.44. import os5. 6. class DepositCard:7.

6、cardID = 08. cardPWD = '123456'9. balance = 010. userName = '0000'11. def _init_(self,cardID,cardPWD,userName,balance):12. self.cardID = cardID13. self.cardPWD = cardPWD14. self.userName = userName15. self.balance = balance16. 17. class ATM:18. def deposite(self,card):*存款19. divide()

7、20. info = "存款n"21. print(info.center(50)22. cash=input("提示:存款金額為100的倍數(shù),金額要求在100-10000之間n")23. if int(cash)%100=0 and int(cash)>0 and int(cash)<=10000:24. card.balance+=int(cash)25. info = "存款成功n"26. print(info.center(50)27. print("nThe balance of the card :%

8、d"%card.balance)28. else:29. info = "存款失敗n"30. print(info.center(50)31. divide()32. 33. def withdraw(self,card):*取款34. divide()35. info = "取款n"36. print(info.center(50)37. options=1:'100',2:'200',3:'500',4:'其他金額'38. for a in options.items():39

9、. print(a0,a1)40. choice=input('請選擇:')41. if (int(choice)=1 or int(choice)=2) and card.balance>=int(choice)*100:42. 43. card.balance-=int(choice)*10044. info = "取款成功n"45. print(info.center(50)46. elif int(choice)=3 and card.balance>=500:47. card.balance-=50048. info = "取

10、款成功n"49. print(info.center(50)50. elif int(choice)=4:51. cash=input("n提示:取款金額為100的倍數(shù),且總額不超過5000元n請52.輸入你要取的金額:")53. if int(cash)>=100 and int(cash)<=5000:54. if int(cash)%100=0 and card.balance>=int(cash):55. card.balance-=int(cash)56. info = "取款成功n"57. print(info.c

11、enter(50)58. else:59. print('輸入錯誤或卡余額缺乏')60. else:61. print('輸入錯誤或卡余額缺乏')62. else:63. print('輸入錯誤或卡余額缺乏')64. 65. 66. print("nnThe balance of the card :%d"%card.balance)67. divide()68. 69. def modify(self,card):*修改密碼70. divide()71. info = "修改密碼n"72. print(i

12、nfo.center(50)73. inStr=input('請輸入原密碼:')74. if inStr!=card.cardPWD:75. info = "密碼錯誤n"76. print(info.center(50)77. else:78. newPWD1=input('請輸入新密碼:')79. newPWD2=input('請再次輸入新密碼:')80. if newPWD1 = newPWD2:81. card.cardPWD=newPWD182. info = "n密碼修改成功,請牢記你的新密碼n"

13、83. print(info.center(50)84. else:85. info = "n密碼不一致n"86. print(info.center(50) 87. divide()88. 89. def query(self,card):*查詢90. divide()91. info = "查詢成功n"92. print(info.center(50)93. print('銀行卡信息'.center(50)94. print('%-10s%-10s%-10s%-10s'%('卡號','密碼

14、9;,'','余額')95. print('%-11s%-11s%-11s%-11s'%(str(card.cardID),card.cardPWD,card.userNam96. e,str(card.balance)97. divide()98. def refundCard(self,card):*退卡99. divide()100. print('(假裝把卡吐出來)')101. print('使用,請收好您的卡片')102. divide()103. def divide():104. print(&quo

15、t;n-n")105. def init():106. f=open('D:a.t*t','w')107. info='''108. 1001 123456 大白 1000109. 1002 123456 二白 2000110. 1003 123456 三白 3000'''111. f.write(info)112. f.close()113. s=open('D:a.t*t','r')114. print('銀行卡信息'.center(50)115. pr

16、int('%-10s%-10s%-10s%-10s'%('卡號','密碼','','余額')116. for line in s.readlines():117. for i in range(0,4):118. print('%-11s'%line.split()i,end ='')119. if i=3:120. print()121. s.close122. divide()123. return124. def createCard():125. choice=input(&

17、#39;請選擇一銀行卡13:');126. if int(choice) = 1:127. newcard = DepositCard(1001,'123456','大白',1000)128. login(newcard)129. elif int(choice) = 2:130. newcard = DepositCard(1002,'123456','二白',2000)131. login(newcard)132. elif int(choice) = 3:133. newcard = DepositCard(1003

18、,'123456','三白',3000)134. login(newcard)135. else:136. print('輸入有誤,退出系統(tǒng)')137. e*it()138. def login(card):139. divide()140. print('n 你插入了銀行卡%sn'%card.cardID)141. sum = 0142. pwd = ''143. while pwd!=card.cardPWD:144. pwd=input('n請輸入密碼:')145. sum+=1146. if

19、 pwd = card.cardPWD:147. break148. else:149. print('密碼錯誤次數(shù)%d,請重新輸入密碼'%sum)150. if sum > 2:151. print('n密碼錯誤次數(shù)過多,退出系統(tǒng)')152. e*it()153. print('n密碼正確,進(jìn)入系統(tǒng)')154. divide()155. *iaoBaiATM = ATM()156. menu(*iaoBaiATM,card)157. def start():158. divide()159. print("tt歡迎使用小白白AT

20、M")160. divide()161. init()162. createCard()163. def menu(*iaoBaiATM,card):164. options=1:'查詢賬戶信息',2:'存款',3:'取款',4:'修改密碼',5:'退卡'165. for a in options.items():166. print(a0,a1)167. choice = input('n請選擇:')168. if int(choice) = 1:169. *iaoBaiATM.query(card)170. menu(*iaoBaiATM,card)171. elif int(choice) = 2:172. *iaoBaiATM.deposite(card)173. menu(*iaoBaiATM,card)174. elif int(choice) = 3:175. *iaoBaiATM.withdraw(card)176. menu(*iaoBaiATM,card)177. elif int(choice) = 4:178. *iaoBaiATM.modify(card)179. menu(*iaoBaiATM,card)180.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論