




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、ATM取款機模擬程序設計說明書1.設計內容和要求設計內容課題的任務是設計一個 ATM取款機的模擬程序。 日常生活中,我們常使用ATM取款機,對 它的操作過程有所了解。這里我們要模擬的是用戶所見的ATM取款機的屬性和行為,ATM機與網絡連接的部分不包括在這個任務中。設計中應盡可能把它模擬得與真實的ATM接近一些,我們抽象出下列問題:(1)用戶插卡,ATM驗證用戶帳號信息。(2)用戶首次操作須驗證密碼。(3)用戶查詢余額,ATM顯示余額。(4)用戶取款,ATM操作交易過程。(5)用戶轉賬,ATM請求插入轉入卡,然后操作交易過程。(6)用戶更改密碼,ATM受理此業務。(7)用戶退卡。ATM清理現場。
2、(8)所有用戶信息保存在文件中。(9)對于一個在線用戶,如果超過一定時間用戶沒有任何操作,ATM鎖機,直到用戶退卡為止。(10)ATM向用戶顯示歡迎詞及其他提示信息。設計要求功能要求:(1)插卡功能(用卡號模擬);(2)取款功能;(3)查詢余額功能;(4)驗證帳號功能;(5)更改密碼功能;(6)退卡功能;(7)鎖卡功能。界面要求:用戶界面設計不做統一規定,但應做到界面友好,易于操作。技術要求:要求所有用戶的信息以密文形式保存在數據文件中,加密算法為:字節各位取反,然 后高半字節和低半字節交換位置。用戶輸入密碼時不能以明文形式顯示在屏幕上,應以“ *” 號代替來顯示用戶密碼的輸入。要求利用面向對
3、象的方法以及 C+的編程思想來完成系統的設計;在設計的過程中,建 立清晰的類層次;在系統設計中要分析和定義各個類,每個類中要有各自的屬性和方法;要求運用面向對象的機制來實現系統功能。要求主函數(或圖形界面下的主調函數)很“干凈”,只有一些類對象的定義和某個類對象的一個成員函數的調用。12.設計說明2.1問題描述與功能設計問題描述課題的任務是設計一個 ATM取款機的模擬程序。 日常生活中,我們常使用ATM取款機,對 它的操作過程有所了解。這里我們要模擬的是用戶所見的ATM取款機的屬性和行為,ATM機與網絡連接的部分不包括在這個任務中。設計中應盡可能把它模擬得與真實的ATM接近一些,我們抽象出下列
4、問題:(1)用戶插卡,ATM驗證用戶帳號信息。(2)用戶首次操作須驗證密碼。(3)用戶查詢余額,ATM顯示余額。(4)用戶取款,ATM操作交易過程。(5)用戶轉賬,ATM請求插入轉入卡,然后操作交易過程。(6)用戶更改密碼,ATM受理此業務。(7)用戶退卡。ATM清理現場。(8)所有用戶信息保存在文件中。(9)對于一個在線用戶,如果超過一定時間用戶沒有任何操作,ATM鎖機,直到用戶退卡為止。(10)ATM向用戶顯示歡迎詞及其他提示信息。功能設計該程序應具有以下功能:(1)插卡功能(用卡號模擬);取款功能;(3)查詢余額功能;(4)驗證帳號功能;(5)更改密碼功能; 退卡功能;(7)鎖卡功能。2
5、.2流程圖332.3類定義和鏈表class Cardpublic:Card(char a10,i nt b,double c)strcpy (nu m,a);code=b;mon ey=c;char num10;int code;double mon ey;struct nodeCard *cod;node *n ext;在該程序中定義了類 Card ,同時聲明了 3個數據成員。該類有一個構造函數,用來給數 據成員賦值。3個數據成員用來保存用戶的信息,包括卡號,密碼,帳戶余額。鏈表中聲明 了一個Card類類型的指針,以通過鏈表中的結點訪問該指針,從而訪問到定義在類中的數據成員,即用戶信息。函數
6、要訪問數據成員時,都用這種指向方式,女口head-cod-num。而另外一個node指針的數據成員,指向當前結點的下一個結點,利用這種方法遍歷鏈表。將類 定義和鏈表結合起來,可以簡化該問題,在一定程度上減少了程序代碼。然后再將文件里的信息依次讀到鏈表的各個結點中,就完成了數據成員即用戶信息的初始化,使問題變得簡單。這就是用類定義和鏈表的好處所在。2.4界面設計該程序的界面設計總的來說是體現了對用戶的友好性。首先是歡迎界面,看起來非常美 觀,還有歡迎語句:歡迎使用本銀行ATM機。在用戶每次輸入前,都有輸出語句提醒用戶,同時在用戶進行完每步操作后都循環輸出提示信息,用戶可自行選擇繼續或退出。當用戶
7、操作有誤或交易失敗時,界面上會輸出出錯信息告知用戶,三次密碼輸入錯誤即鎖卡。最后用戶退出時,輸出語句:謝謝使用,歡迎下次光臨。同時提醒用戶取卡。界面的設計體現了程 序設計的友好性,同時易于操作。歡迎界面:出錯提醒界面: 密以 的理 您辦 入可 ”0機2.6測試測試該程序的主函數十分簡單,只有一些提示信息的輸出和功能函數的調用。主函數首5用戶退出時輸出界面:toto continuecontinueIf f D:D:滇崢設ifif DebugDebug1 1 .cpp.eHe.cpp.eHe饕.詢改 杏更 2 2 2 4 4取轉退 1 r? m先調用創建鏈表的函數進行創建,同時每創建一個節點就從
8、文件中讀出一條信息初始化數據 成員。創建完后輸出歡迎信息,然后進入程序讓用戶輸入卡號,調用驗證卡號的函數,如果正確則進行后面的操作,輸入錯誤則退出程序。接下來是輸出提示信息讓用戶輸入卡號的密碼,再調用驗證密碼的功能函數,正確則可進行取款等操作,錯誤再提示用戶重新輸入,三次輸入錯誤就鎖卡。 若用戶卡號和密碼都輸入正確,則輸出菜單讓用戶選擇操作。菜單中有五個選項,取款,查詢余額,轉賬,更改密碼,退卡。定義一個變量接收用戶從鍵盤輸入的 數據,后面有五個if語句,根據用戶輸入的數據來判斷執行哪個if語句中的函數,這些函數的功能和菜單中提供的操作是相對應。用戶輸入1表示取款,2表示查詢余額,3表示轉賬,
9、4表示更改密碼,5表示退出,調用完功能函數后再調用一個函數將修改后的信息存進 文件中,用戶下次進入時將會顯示修改后的信息。同時在退出每一個if程序塊后又再一次輸出菜單選項供用戶選擇,菜單的循環輸出可以方便用戶連續進行不同的操作。若用戶選擇退出則輸出:謝謝使用,歡迎下次光臨。同時還有輸出語句提醒用戶取卡。以下是測試函數的一部分代碼:cout請選擇您需要的操作:;int r; cinr; if(r=1) cout【取款】endl ;fetchm on ey(temp);save(listhead);if(r=2)cout【查詢余額】e ndl;search(temp);save(listhead)
10、;if(r=3) cout 【轉帳】e ndl;zhua n(temp,listhead);save(listhead);if(r=4) cout【更改密碼】e ndl;cha nge_code(temp);save(listhead);測試后得到的結果正確,說明功能函數實現了預定的功能。73.總結該課程設計的題目是設計一個 ATM模擬程序。在設計任務中,為盡可能把它模擬得跟真實的ATM接近一些,要求要具有以下功能:取款,查詢余額,轉帳,更改密碼,退卡,鎖卡 等。同時要求界面要美觀,友好,易操作。在技術上要把所有用戶的信息以密文形式保存在數據文件中,且用戶輸入密碼時不能以明文形式顯示在屏幕上。
11、由于這次課程設計有兩個星期的時間,所以時間還算充足。但在編寫過程中也遇到了不少的困難。首先,由于要保存用戶的帳號,密碼,余額等個人信息,所以考慮用類來實現,將這三 種信息設計為類的數據成員。文件中保存的也不止一個人的信息,而這些用戶的信息又都訪問,所以在類的基礎上再構建鏈表。通過返回鏈表的頭結點, 外部函數只要遍歷鏈表則可訪問文件中所有用戶的信息。為安全起見,用戶的信息是加密后再存入數據文件中的,在這個地方就要用到加密的函數。所以總的來說,這個程序是將類,鏈表,文件這三大塊的知識結合在一起,只要將這些條理理清楚, 這個任務可以說已經完成一半了。這是分析設計這個程序的過程。接下來,就是寫程序,實
12、現函數功能的過程了。在實現過程中實現了取款,查詢余額, 轉帳,更改密碼,退卡,鎖卡等功能函數,通過主函數調用這些函數來完成相應的功能。在 每個功能函數中都有錯誤提醒和相應的操作,退出程序或重新輸入。該部分也有涉及到算法。由于要實現的功能比較多,所以函數的代碼也比較長。編寫的過程中難免會出現錯誤,在同學和老師的幫助下解決了出現的問題。最后是界面的設計以及測試的過程。考慮到對用戶的友好性,在每次輸入前都有提醒語句,同時在用戶選擇操作前也有菜單輸出以提示用戶。用戶三次輸入錯誤 ATM取款機即鎖卡。總的來說,界面還算美觀,易于操作。測試主要是測試功能函數是否能達到預定的要求,還 有就是錯誤測試。當用戶
13、的輸入出錯或者進行錯誤的操作時,該程序能提醒擁護所出現的錯誤,并對不同的錯誤采取不同的解決方案。測試是程序設計中必不可少的步驟,因為這是驗證程序是否能達到某些功能的最好方法。測試也有助與我們發現程序中的缺點,從而幫助我們完善程序,編寫出更健壯,功能更強大的程序。在這次課程設計中, 更深入地理解了鏈表, 類以及文件,并掌握了如何綜合利用它們去 編寫程序。同時,程序設計能力和設計風格也有很大程度的提高。8參考文獻20042001王挺,周會平,賈麗麗,徐錫山。C+程序設計(第二版)。北京:清華大學出版社,Bruce Eckel 。 C+編程思想(第二版,影印版)。北京:機械工程出版社,2002Bja
14、rne Stroustrup 。C+程序設計語言(特別版,影印版)。北京:高等教育出版社, 譚浩強。C程序設計(第二版)。北京:清華大學出版社,2000齊治昌,譚慶平,寧洪。軟件工程(第二版)。北京:高等教育出版社,20049附錄A源代碼#in clude#in clude#in cludeclass Cardpublic:Card(char a10,i nt b,double c)strcpy (nu m,a);code=b;mon ey=c;char num10;int code;double mon ey;struct nodeCard *cod;node *n ext;node *cr
15、eatelist(i nt n);創建鏈表node *findn um(char m10, node *head);核對卡號int fin dcode(i nt q,n ode *head);核對密碼void fetchm oney(node *head);取款void search( node *head);查詢余額void zhua n(node *head, node *cur no de);/轉帳void cha nge_code( node *head);更改密碼void exit();退卡void lock();鎖卡void save (node *head);保存信息int ma
16、i n()n ode *temp, *listhead=NULL;int times=0;listhead=createlist(2);cout歡迎使用本銀行ATM取款機e ndl;cout p;temp=fi ndnu m(p,listhead);if(temp)while(times3)cout請輸入您的密碼:;int q;cinq;if(fin dcode(q,temp)=0)cout您輸入的密碼有誤,請重新輸入!endl;times+;elsefor(i nt i=0; ;i+)coute ndl;coute ndl;cout本機可辦理以下業務:endl;cout請選擇您需要的操作in
17、t r;cinr;cout coutif(r=1)coute ndl;e ndl;【取款】e ndl;fetchm on ey(temp); save(listhead);else if(r=2)cout【查詢余額】e ndl;search(temp);save(listhead);else if(r=3) cout 【轉帳】e ndl;zhua n(temp,listhead);save(listhead);else if(r=4)cout【更改密碼】e ndl;cha nge_code(temp);save(listhead);cout*e ndl;coutcout轉帳 更改密碼endl;
18、 退出endl;cout取款 查詢余額endl;cout*e ndl;else if(r=5)exit();goto end;elsecout輸入錯誤,請重新輸入endl;if(times=3)lock();elsecout對不起,您輸入的卡號不存在,請查正后再輸!xyz;if(head=NULL)coutcod=new Card(x,y,z);head- next=NULL;tail=head;for(i nt i=0;i n-1;i+)temp=new no de;char x10;int y;double z;if(temp=NULL)coutxyz;in file.close();te
19、mp-n ext=NULL;temp-cod=new Card(x,y,z);tail-n ext=temp;tail=temp;retur n head;node *findnu m(char m10, node *head)while(head)if(strcmp(head-cod-num,m)=0) retur n head;head=head-n ext;return NULL;int fin dcode(i nt q,node *head)if(head-cod-code=q)return 1;return 0;void fetchm oney(node *head)cout s;if(s0)cout請輸入正確的數字!cod- mon ey)s)head-cod- mon ey=(head-cod- mon ey)-s; cout交易成功,請收好錢!endl;elsecout對不起,您的余額不足!endl;void search( node *head)cout您的帳戶余額為:cod-money!
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 伊春市上甘嶺區2025屆四下數學期末學業水平測試模擬試題含解析
- 上海思博職業技術學院《數控技術及應用》2023-2024學年第二學期期末試卷
- 景德鎮陶瓷職業技術學院《建筑工程定額與預算》2023-2024學年第二學期期末試卷
- 昆明理工大學津橋學院《基礎日語(IV)》2023-2024學年第一學期期末試卷
- 石家莊工商職業學院《生物醫學產品標準及生產法規》2023-2024學年第一學期期末試卷
- 廈門東海職業技術學院《中學生物教育技術》2023-2024學年第二學期期末試卷
- 山東石油化工學院《中外文化概論》2023-2024學年第一學期期末試卷
- 江西婺源縣重點達標名校2025年初三下學期第二次質檢語文試題含解析
- 蘇州工業園區服務外包職業學院《DeutschIntensivⅡ》2023-2024學年第二學期期末試卷
- 四川省成都市青羊區部分校2024-2025學年中考模擬最后十套:語文試題(三)考前提分仿真卷含解析
- 2024北京一零一中初二(下)期中數學試題及答案
- 2025-2030中國考試系統行業市場發展現狀分析及發展趨勢與投資前景研究報告
- GB/T 45456-2025包裝折疊紙盒折痕挺度的測定
- 國企薪酬福利體系與市場化改革
- 2025年保安員職業技能考試筆試試題(700題)附答案
- 2025屆江蘇省江陰市四校高三下-第四次月考數學試題試卷
- 2025年04月國家稅務總局稅務干部學院公開招聘事業單位工作人員36人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2024-2024年上海市高考英語試題及答案
- IEC603645523電線電纜載流量行業資料國內外標準規范
- 最新安全生產管理教材電子版
- 國標鐵路機車牽引電機懸掛抱軸瓦油
評論
0/150
提交評論