C++模擬ATM機存取款管理系統設計_第1頁
C++模擬ATM機存取款管理系統設計_第2頁
C++模擬ATM機存取款管理系統設計_第3頁
C++模擬ATM機存取款管理系統設計_第4頁
C++模擬ATM機存取款管理系統設計_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上溫馨提示程序語言:C、C+、C#、Python(紅色字體 表示本課設使用的程序設計語言)圖形功能選項:Win32控制臺程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(黑體標明 表示本課設的程序圖形類別,默認為非圖形界面Win32控制臺程序)數據結構:基礎類型、數組、鏈表、雙向鏈表、搜索樹(非平衡二叉樹)、平衡二叉樹、鏈表與平衡二叉樹相結合、堆棧、隊列、串、圖(黑體標明 表示本課設使用的數據結構)C+語言項:STL庫(黑體標明 表示使用C+的STL庫)編譯環境:Windows 7 64位旗艦版(Linux及其他環境請謹慎下載)集成開發

2、環境:Visual C+ 6.0、DEVC+、CodeBlocks、Visual Studio 2015均可通過編譯。(淺藍色字體 表示需要運行修改后的版本,請用戶自行選擇源代碼測試)分多頭文件編譯:否(所有代碼基本都包含在一個文件內,如需試驗頭文件功能,請自行參考相關文獻)內容說明:1、課設題目及預覽內容 將在第二頁開始展示。2、代碼行數:241行3、目錄 所示內容,本文基本涵蓋,如無內容,會在本頁進行說明。4、附錄 絕對包含用戶使用手冊及程序完整源代碼和詳細注釋。5、如需下載 其他 頭文件(例如DirectX需另行配置),本文會在此進行說明。6、本文撰寫內容僅供學習參考,另外,由于本人水平

3、有限,編寫之處難免存在錯誤和紕漏,懇請各位老師或同學批評指正。面向對象程序設計課程設計報告書        設 計 題 目: 模擬ATM機存取款管理系統設計 指 導 老 師: 學 生 班 級: 學 生 學 號: 學 生 姓 名: 同 組 人 員: 時        間: 2017

4、.12. 專心-專注-專業課 程 設 計 任 務 書題 目 模擬ATM機存取款管理系統設計一、設計內容及要求(1)卡號、密碼輸入最多三次,否則直接退出系統。 (2)取款功能:取款金額受卡余額、機單筆最大取款金額及機當前剩余金額的限制。 (3)查詢功能:實現查詢余額功能。 (4)更改密碼:實現密碼更改功能,對于密碼要有2次驗證。 (5)鎖卡功能:實現卡被鎖的功能。 (6)退卡功能:實現退出系統功能。二、設計原始資料 三、設計完成后提交的成果及其相關資料。 四、主要參考資料 c+程序設計(第二版) 五、進程安排12.25:類的設計12.26:模塊4

5、.2、4.3的設計12.27:模塊4.4、4.5的設計12.28:完成課程設計報告 第一章 概述 使用ATM柜員機可以節約人力資源,方便用戶進行簡單常用的操作,并且為用戶全天候的服務,提高銀行效率,給人們提供了非常大的便利。本文就以C+語言設計一項簡單的模擬ATM柜員機程序。運行程序時,當輸入給定的卡號和密碼(初始卡號和密碼都為)后,系統就能登錄ATM柜員機系統,用戶可以進入功能實現界面,有查詢余額,取款,存款,修改密碼等功能。設計要點:使用文本命令行界面。當輸入給定的卡號和密碼(初始卡號和密碼為)時,系統能登錄ATM柜員機系統,用戶可以按照以下規則進行:l 查詢余額:初始余額為10000元l

6、 ATM取款:每次取款金額為100的倍數,總額不超過5000元,支取金額不允許透支。l ATM存款:不能出現負存款。修改密碼:新密碼長度不小于6位,不允許出現6位完全相同的情況,只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼。 第二章 設計內容2.1功能:設計一個模擬ATM柜員機的程序,輸入你需要的操作(選擇相對的括號里的阿拉伯數字)程序具體功能有:(1) 查詢余額(2) ATM取款(3) ATM存款(4) 修改密碼(5) 退出系統2.2 操作:本程序通過鍵盤操作。在運行過程中,當用戶輸入正確的賬號和密碼時,會出現一個功能界面,按照功能界面操作。只需輸入所需操作的序號

7、,便可執行其中相應的功能。但是需要小心的是如果輸錯密碼三次,便會鎖卡,這時將無法操作。 第三章 總體設計3.1模塊化設計為實現系統功能,本程序主要分為六個模塊。它們分別為:主界面、查詢余額、ATM取款、ATM存款、修改密碼、退出系統。這六個函數再通過主函數調用分別得以實現。主函數,首先提供了程序運行時的友好界面,提供客戶選擇的菜單。然后,通過執行多分支選擇語句switch語句,分別實現其它各個函數的調用功能。其它各個函數的功能分別如下:ATM() 構造函數face() 構造函數checkout() 檢驗卡號密碼lock() 鎖卡checkmoney() 查詢余額getmoney() ATM取款

8、savemoney() ATM存款change() 修改密碼exitsystem() 退出系統show() 打印界面3.2程序運行示意圖輸入卡號、密碼取款存款主界面查詢余額修改密碼退出系統 第四章 詳細設計4.1類的設計 設計了兩個類,ATM類和face類。ATM類完成ATM柜員機的模擬,包括:驗證卡號密碼,查詢余額,修改密碼,取款,存款,退出系統等功能。face類完成顯示登陸界面的功能,顯示查詢余額,修改密碼,取款,存款,退出系統的選項。ATM類的設計:class ATMprotected:string card;string password;float money;static int

9、times;public:ATM(string c,string p,float m)/構造函數card=c;password=p;money=m;int checkout();/驗證卡號密碼void lock();/鎖卡void checkmoney();/查詢余額void getmoney();/取款void savemoney();/存款void change();/修改密碼void exitsystem();/退出系統;face類的設計class face:public ATMprotected:int x;public:face(string c,string p,float m):

10、ATM(c,p,m)/構造函數void show();/顯示界面;4.2 ATM柜員機的登陸在main主函數中實例化一個face類的對象,卡號密碼都為,默認余額為10000.在程序運行中輸入卡號密碼,若都正確即可進入主界面,選擇ATM柜員機的功能。程序運行首先要求用戶輸入卡號和密碼,卡號和密碼首先由main主函數構造默認,然后用checkout()函數判斷卡號密碼是否一致,一致則登陸,如果連續3次輸入錯誤,則用lock()函數鎖定卡號密碼。相關代碼:void ATM:lock()if(times=3)cout<<"輸入密碼3次錯誤,該卡已被鎖"<<e

11、ndl;exitsystem();int ATM:checkout()string a;string b;while(1)cout<<"請輸入您的卡號:"cin>>a;cout<<"請輸入您的密碼:"cin>>b;if(card!=a|password!=b)times+;lock();cout<<"卡號或密碼有誤,請重新輸入"<<endl;elsebreak;return 1;4.3 ATM柜員機修改密碼功能新密碼長度不小于6位,不允許出現6位完全相同的情況,只

12、有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才能成功修改密碼。輸入正確卡號密碼后,或者實現其他功能退回主界面后都可以選擇柜員機的修改密碼功能,在運行過程中先要求用戶輸入舊密碼,判斷用戶輸入的舊密碼是否與默認密碼相同,若相同則繼續運行,若不同則需要重新輸入。驗證舊密碼正確后系統會要求用戶定義新密碼,新密碼要重復輸入兩次,要求兩次必須重復正確且新密碼符合要求才能修改成功。相關代碼:void ATM:change()int count=0,i,j,flag=1;string secondpassword;string newpassword;string oldpassword;cout&l

13、t;<"請輸入舊密碼:"cin>>oldpassword;if(password=oldpassword)cout<<"請輸入新密碼:"cin>>newpassword;if(newpassword.size()>=6)for(i=0;i<newpassword.size();i+)for(j=i+1;j<newpassword.size();j+)if(newpasswordi=newpasswordj)count+;if(count<6)while(flag)cout<<&

14、quot;請再次輸入新密碼:"cin>>secondpassword;if(newpassword=secondpassword)cout<<"密碼修改成功!"<<endl;flag=0;elsecout<<"兩次密碼輸入不一樣,請重新輸入"<<endl;flag=1;elsecout<<"修改密碼失敗,請重新修改"<<endl;elsecout<<"修改密碼失敗,請重新修改"<<endl;else

15、cout<<"修改密碼失敗,請重新修改"<<endl;4.4 ATM柜員機存款取款功能 輸入正確卡號密碼后,即可登錄柜員機主界面,其中可以選擇取款,存款功能。取款功能要求用戶輸入取錢金額,取錢功能用if語句判斷金額是否是100的倍數且金額是否大于5000或小于0,若符合要求,則順利運行。用getmoney()函數實現更新用戶余額,余額為賬戶余額減去取錢金額,當取錢成功時,系統會提示用戶是否繼續取錢,若輸入“Y”則繼續,若輸入“N”則退回主界面,若輸入其他字符則要重新輸入。存款功能要求用戶不能輸入負值的金額,用if語句判斷,若符合條件,則成功取款,并且

16、用savemoney()函數更新余額,余額為賬戶余額加上存款金額,當成功存款時,系統會提示是否繼續存款,若輸入“Y”則繼續,若輸入“N”則退回主界面,若輸入其他字符則要重新輸入。存款功能代碼:void ATM:savemoney()/存款char ch;float save;/存入金額docout<<"請輸入存款金額:"cin>>save;if(save<0)cout<<"存款金額有誤,請重新輸入"<<endl;elsecout<<"正在存款中,請稍候."<<

17、;endl;money=money+save;cout<<"交易成功!"<<endl;cout<<"請問是否繼續存款?(Y/N)"<<endl;cin>>ch;while(ch!='Y'&&ch!='N')cout<<"該操作無效,請重新輸入:"<<endl;cin>>ch;while(ch='Y'); 取款功能代碼:void ATM:getmoney()/取款int get;

18、/取款金額char ch;docout<<"請輸入取款金額:"cin>>get;if(get>5000|get<0|get%100!=0)cout<<"支取金額有誤,請重新輸入"<<endl;else if(money-get)<0)cout<<"對不起,您的余額不足,請重新輸入"<<endl;elsecout<<"正在取款中,請稍候."<<endl;money=money-get;cout<&l

19、t;"取款成功!"<<endl;cout<<"請問是否繼續取款?(Y/N)"<<endl;cin>>ch;while(ch!='Y'&&ch!='N')cout<<"該操作無效,請重新輸入:"<<endl;cin>>ch;while(ch='Y');4.5 ATM柜員機查詢余額功能輸入正確卡號密碼后,即可登錄柜員機主界面,其中可以選擇查詢余額功能。余額主要調用checkmoney()函數。

20、代碼如下:void ATM:checkmoney()/查詢余額cout<<"余額:"<<money<<endl;cout<<"查詢余額成功!"<<endl; 第五章調試與測試5.1調試過程中的主要問題由于本程序的運行是當輸入卡號密碼成功后登陸主界面,在主界面中執行完一個功能后再次回到主界面進行操作,而程序大體上是沒問題的,但是還是有一些小問題:當執行完存款或取款后,沒有提示是否繼續執行此操作,而是直接退回主界面,這是一處不善人意的地方,但是經過修改,已將此功能加入程序。5.2具體測試過程(1)

21、檢驗卡號密碼(如下圖)(2)卡號密碼輸入成功(如下圖)(3)卡號密碼輸入有誤(如下圖)(4)查詢余額(如下圖)(5) ATM取款成功(如下圖)(6) ATM取款不成功(如下圖)(7) ATM存款成功(如下圖)(8) ATM存款不成功(如下圖)(9) 修改密碼成功(如下圖)(10) 修改密碼失敗(如下圖)(11)退出系統 (如下圖) 第六章 心得體會經過一個學期對C+程序設計的學習,我學習到了基本的理論知識,了解到了C+語言程序設計的思想,這些知識都為我的課程實踐和進一步的學習打下了堅實的基礎。 在為期近兩周的C+課程設計中,我體會頗多,學到了很多東西。我加強了對C+程序設計這門課程的

22、認識,并且復習了自己以前學習到的知識。這些都使得我對計算機語言的學習有了更深入的認識!總之,通過這次課程設計,我收獲頗豐,相信會為自己以后的學習和工作帶來很大的好處。像職工信息表這樣的程序設計,經歷了平時在課堂和考試中不會出現的問題和考驗。而這些問題,這并不是我們平時只靠課本,就可以輕易解決的。所以,鍛煉了我們挑戰難題,學會用已掌握的知識去解決具體問題的能力,進一步培養了獨立思考問題和解決問題的能力。特別是學會了在Visual C+中如何調試程序的方法。當然,老師的指導和同學的幫助也是不可忽視的,他們給了我許多提示和幫助,教會了我編譯復雜程序的方法。在老師和同學的幫助下,通過自己的努

23、力,終于完成了這次職工信息表的簡單課程設計。我經過這段時間的編程,對其中的艱辛,我是深有體會。從剛開始的選擇程序、理解程序到后來的調試程序以及改進程序這個過程中,我遇到了各種各樣的困難和挫折。但是我堅定信念,對自己充滿了信心,想盡一切辦法克服重重困難。通過課程設計的訓練,我進一步學習和掌握了對程序的設計和編寫,從中體會到了面向對象程序設計的方便和巧妙。懂得了在進行編寫一個程序之前,要有明確的目標和整體的設計思想。另外某些具體的細節內容也是相當的重要。這些寶貴的編程思想和從中摸索到的經驗都是在編程的過程中獲得的寶貴財富。這些經驗對我以后的編程會有很大的幫助的,我要好好利用。雖然這次課程設計是在參

24、考程序的基礎之上進行的,但是我覺得對自己是一個挑戰和鍛煉。我很欣慰自己能在程序中加入自己的想法和有關程序內容,也就是對它的程序改進了一番改進,并有創新。但是我感覺自己的創新還不夠典型,總之還不是很滿意。另外由于時間的緊迫和對知識的了解不夠廣泛,造成了系統中還存在許多不足,功能上還不夠完善。以后我會繼續努力,大膽創新,爭取能編寫出透射著自己思想的程序。這次課程設計讓我充分認識到了自己的不足,認識到了動手能力的重要性。我會在以后的學習中更加努力鍛煉自己,提高自己,讓自己寫出更好更完善的程序,為以后的編程打好基礎!附 錄用戶使用手冊1、卡號: 密碼:2、根據提示,輸入指定內容即可。程序源代碼/#in

25、clude "stdafx.h"#include<iostream>#include<string>#include<vector>#include<conio.h>#include<iomanip>#include<Windows.h>#pragma warning (disable:4996)using namespace std;/* 類 */class ATMprotected:string card;string password;float money;static int times;pu

26、blic:ATM(string c, string p, float m) :card(c), password(p), money(m) /構造函數int checkout();/驗證卡號密碼void lock();/鎖卡void checkmoney();/查詢余額void getmoney();/取款void savemoney();/存款void change();/修改密碼void exitsystem();/退出系統;int ATM:times = 0;class face :public ATMprotected:int x;public:face(string c, strin

27、g p, float m) :ATM(c, p, m) /構造函數void show();/顯示界面;void face:show()cout << endl << "*" << endl;cout << "1.查詢余額" << endl;cout << "2.ATM取款" << endl;cout << "3.ATM存款" << endl;cout << "4.修改密碼" &

28、lt;< endl;cout << "5.退出" << endl;cout << "*" << endl;cout << "請輸入您需要查詢的信息:"void ATM:lock()if (times = 3)cout << "輸入密碼3次錯誤,該卡已被鎖" << endl;exitsystem();int ATM:checkout()string a;string b;while (1)cout << "

29、請輸入您的卡號:"cin >> a;cout << "請輸入您的密碼:"cin >> b;if (card != a | password != b)times+;lock();cout << "卡號或密碼有誤,請重新輸入" << endl;elsebreak;return 1;void ATM:change()int count = 0, i, j, flag = 1;string secondpassword;string newpassword;string oldpasswor

30、d;cout << "請輸入舊密碼:"cin >> oldpassword;if (password = oldpassword)cout << "請輸入新密碼:"cin >> newpassword;if (newpassword.size() >= 6)for (i = 0; i<newpassword.size(); i+)for (j = i + 1; j<newpassword.size(); j+)if (newpasswordi = newpasswordj)count+;i

31、f (count<6)while (flag)cout << "請再次輸入新密碼:"cin >> secondpassword;if (newpassword = secondpassword)cout << "密碼修改成功!" << endl;flag = 0;elsecout << "兩次密碼輸入不一樣,請重新輸入" << endl;flag = 1;elsecout << "修改密碼失敗,請重新修改" <<

32、endl;elsecout << "修改密碼失敗,請重新修改" << endl;elsecout << "修改密碼失敗,請重新修改" << endl;void ATM:exitsystem()exit(0);void ATM:savemoney()/存款char ch;float save;/存入金額docout << "請輸入存款金額:"cin >> save;if (save<0)cout << "存款金額有誤,請重新輸入"

33、; << endl;elsecout << "正在存款中,請稍候." << endl;money = money + save;cout << "交易成功!" << endl;cout << "請問是否繼續存款?(Y/N)" << endl;cin >> ch;while (ch != 'Y'&&ch != 'y'&&ch != 'n'&&ch

34、!= 'N')cout << "該操作無效,請重新輸入:" << endl;cin >> ch; while (ch = 'Y' | 'y' = ch);void ATM:getmoney()/取款int get;/取款金額char ch;docout << "請輸入取款金額:"cin >> get;if (get>5000 | get<0 | get % 100 != 0)cout << "支取金額有誤,請重新輸

35、入" << endl;else if (money - get)<0)cout << "對不起,您的余額不足,請重新輸入" << endl;elsecout << "正在取款中,請稍候." << endl;money = money - get;cout << "取款成功!" << endl;cout << "請問是否繼續取款?(Y/N)" << endl;cin >> ch;while (ch != 'Y'&&ch != 'y'&&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論