c++模擬ATM取款機的設計_第1頁
c++模擬ATM取款機的設計_第2頁
c++模擬ATM取款機的設計_第3頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、本科生課程設計論文題目:C+!程設計模擬ATM取款機的設計學生姓名:學號:專業:通信工程班級:指導教師:目錄目錄1.前言2.第一章C+簡介3.1、C+語言的簡介及發展3.2、C+語言的特點3.3、C+的優點與缺點4.第二章需求分析5.第三章設計分析.7.3.1、ATM系統管理Z.3.1.1統基本功能7.3.1.2相關數據結構的說明.a3.1.3類的設計8.3.2系統流程圖9.3.3參數說明12第四章運行及測試結果134.1、登錄主界面134.2、掛失功能144.3、修改密碼154.4、取款功能164.5、轉賬功能174.6、查詢功能184.7、退出系統18第五章課程設計總結1.9附錄20.參考

2、文獻31刖曰現今的社會發展迅速,ATM成為了人們在銀行方面不可缺少的使用工具,使用ATM的人越來越多,所以ATM的數量也在迅速的增長著。電信運營公司已向社會提供ATM的商用業務,ATM技術正在走向成熟。一些傳統電信公司在核心網絡技術的選擇上首選ATM,例如AT&T。但是,近來高比特路由器的問世,使一些數據業務的運營公司眼前一亮,并正在開展有關IP直接在SONET或SDH上傳送的業務。Sprint公司使用Cisco12000路由器與SONETOC12鏈路一起提供IPoverSONET業務。MCI亦有計劃提供類似的業務。但是,這種方式與ATM相比,不足之處是尚不適于多業務平臺,網絡流量和擁

3、塞控制能力差,也不能保證具有優先級的QOS,而ATM的可拓性及提供新業務的能力使得多數運營公司仍在積極地擴大ATM的服務范圍。本文將主要介紹ATM的特點。ATM的發展情況及主要技術進展。IATM的技術特點ATM的主要技術特點如下:1.ATM是一種統計時分復用的技術。ATM將一個物理通路劃分為多個具有不同傳輸特性的虛通路提供給用戶,實現網絡資源的按需分配。2.ATM利用硬件實現固定長度包的快速交換,具有時延小,實時性好的特點,能夠滿足多媒體數據傳輸的要求。3.ATM是支持多種業務的傳送平臺,并提供服務質量的保。第一章C+簡介1、C+語言的簡介及發展C+語言發展大概可以分為三個階段:第一階段從80

4、年代到1995年。這一階段C+語舌基本上是傳統類型上的面向對象語言并且憑借著接近C語言'的效率,在工業界使用的開發語言中占據了相當大份額;第二階段從1995年到2000年,這一階段由于標準棋板庫(STL)和后來的Boost等程序庫的出現,泛型程序設計在C+中占據了越來越多的比重性。當然,同時由于JavaC#等語言的出現和硬件價格的大規模下降,C+受到了一定的沖擊;第三階段從2000年至今,由于以Loki、MPL等程序庫為代表的產生式編程和棋板元編程的出現,C+出現了發展歷史上乂一個新的高峰,這些新技術的出現以及和原有技術的融合,使C+已經成為當今主流程序設計語言中最復雜的一員。2、C+

5、諾言的特點20世紀80年代初期,美國AT&T貝爾實驗室的本賈尼?斯特勞斯特盧普(BjarneStroustru博士發明并實現了C+(最初這種語言被稱作“CwithClasseS')。一開始C+是作為C語言的增強版出現的,從給C語言增加類開始,不斷的增加新特性。虛函數(virtualfunction)、運算符重載(operatoroverloading、多重繼承(multipleinheritance)、棋板(template)、異常(exception)、RTTI、命名空間(namespace逐漸被加入標準。1998年國際標準組織(ISO)頒布了C+程序設計語言的國際標準ISO

6、/IEC1988-1998。C+是具有國際標準的編程語言,通常稱作ANSI/ISOC+。1998年是C+標準委員會成立的第一年,以后每5年視實際需要更新一次標準。C+0x最終國際投票已于2011年8月10日結束,并且所有國家都投出了贊成票,C+0x已經毫無疑義地成為正式國際標準。先前被臨時命名為C+0x的新標準將被稱為C+2011。C+2011將取代現行的C+標準ISO/IEC14882,它公開于1998年并于2003年更新,通稱C+98以及C+03。國際標準化組織于2011年9月1日出版發布ISO/IEC14882:2011,名稱是:Informationtechnology-Program

7、minglanguages-C+Edition:3oC+設計成靜態類型、和C同樣高效且可移植的多用途程序設計語言C+設計成直接的和廣泛的支持多種程序設計風格(程序化程序設計、資料抽象化、面向對象程序設計、泛型程序設計)。C+設計成給程序設計者更多的選擇,即使可能導致程序設計者選擇錯誤。C+設計成盡可能與C兼容,籍此提供一個從C到C+的平滑過渡。C+避免平臺限定或沒有普遍用途的特性。C+不使用會帶來額外開銷的特性。C+設計成無需復雜的程序設計環境。出于保證語言的簡潔和運行高效等方面的考慮,C+的很多特性都是以庫(如STL)或其他的形式提供的,而沒有直接添加到語言本身里。關于此類話題,Bjarne

8、Stroustrup的C+語言的設計和演化(1994)里做了詳盡的陳述。3、C+的優點與缺點C+在一定程度上可以和C語言很好的結合,甚至目前大多數C語言程序是在C+的集成開發環境中完成的。C+相對眾多的面向對象的語言,具有相當高的性能。C+引入了面向對象的概念,使得開發人機交互類型的應用程序更為簡單、快捷。很多優秀的程序框架包括MFC、QT、wxWidgets就是使用的C+。盡管C+語舌有很強大的功能,但是在一些方面也存在爭議。C+由于語言'本身過度復雜,這甚至使人類難于理解其語義。更為糟糕的是C+的編譯系統受到C+的復雜性的影響,非常難于編寫,即使能夠使用的編譯器也存在了大量的問題,

9、這些問題大多難于被發現。由于本身的復雜性,復雜的C+程序的正確性相當難于保證。也有人提出不支持多線程的原語等缺陷。不過有如此多的知名人士提出了如此多的缺陷,正說明C+被廣泛使用和成功。C+語言由于過度的復雜性,以及與unix的文化相抵觸,在unix/linux領域受到很多著名人士(比如Linux之父linustorvalds與著名黑客EricS.Raymond)的強烈批評與抵制。第二章需求分析軟件設計的一個重要的環節就是需求分析。本意在對ATM取款機管理系統的應用情況作了全面調查的基礎上,確定系統目標,并對系統所需要的基礎功能進行分析,從而確定用戶的需求。以下是ATM取款機管理系統所需要的需求

10、分析。ATM管理系統包括六個模塊:登錄,掛失功能,修改密碼,取款功能,轉賬功能,查詢功能。 登錄: 輸入銀行卡的賬號,密碼,驗證銀行卡的卡號,密碼是否正確,之后進入主界面掛失功能: 確認是否對銀行卡進行掛失,掛失后賬戶無法操作修改密碼: 用戶可自由對其銀行卡密碼進行修改,修改之后的新密碼將會覆蓋其原密碼取款功能: 用戶可自由取得所持銀行卡內的存款,所取款數必須在其原有賬戶余額之內轉賬功能: 用戶可將本賬戶中的存款轉入其他賬戶,轉賬過程中,需要轉入賬戶的賬號查詢功能:用戶可查詢用戶信息,其中包括用戶姓名、用戶身份證號碼、銀行卡號以及存款余額模擬ATM取款機的操作:首先錄入賬戶信息,格式如下帳號姓

11、名身份證密碼余額323401020056078李四150201198808080088123456450.8、登錄功能:輸入帳號和密碼進行登錄,如密碼錯誤提示重新輸入密碼,如帳號錯誤提示無此帳戶。、查詢功能:查詢賬戶余額。、取款功能:取款,更新余額。、掛失功能:掛失后,該賬戶不能進行任何操作。、修改密碼:輸入原密碼和新設置密碼。(六)、轉賬功能:輸入轉賬的轉出賬戶以及轉賬金額,進行轉賬。第三章設計分析3.1、ATM系統管理3.1.1統基本功能首先,確定系統中存在兩種用戶,一種是ATM,可以進行信息錄入和后臺管理。另外一種是取款人,取款人主要是進行信息的查詢,不能進行信息錄入。所以在創建類的時候

12、,先創建一個ATM類,然后創建取款人類,并與ATM類形成有元,進而繼承ATM的所有功能,并添加錄入信息的功能。基本功能:登錄功能輸入帳號和密碼進行登錄,如密碼錯誤提示重新輸入密碼,如帳號錯誤提示無此帳戶。查詢功能查詢賬戶余額。取款功能取款,更新余額。掛失功能掛失后,該賬戶不能進行任何操作。修改密碼輸入原密碼和新設置密碼。轉賬功能輸入轉賬的轉出賬戶以及轉賬金額,進行轉賬。系統功能如圖:ATM管理系統圖3-1-1上圖中所示為ATM系統的基本功能分類3.1.2相關數據結構的說明信息的載體用對象數組。系統錄入信息的操作非常枯燥,所以創建一個文件,把每次錄入的信息保存入文件,在下一次進入系統是,它會默認

13、讀取文件原有的信息,當然也可以隨時添加錄入ATM信息。然后系統的各個功能僅僅是通過查詢找到具體對象的具體數據進行操作。用戶姓名:Name字符型。用戶賬號:Num字符型。用戶密碼:Password字符型。身份證號:Id字符型。存款數額:Money實型。3.1.3類的設計1)、定義了一個ATM取款機類,類中包括以下幾部分:公有段:依次為登陸界面,核對密碼,掛失,修改密碼,取款,轉賬,查詢信息,退出系統,功能界面,鎖機。私有段:記錄密碼輸入次數以及變量j。友元函數:取款,轉賬,查詢信息,賬號,密碼。2、)定義了一個consumer類,類中包括以下幾部分:公有繼承了consumer類私有段:用戶密碼,

14、用戶姓名,用戶身份證號,卡號,存款錢數保護段:取得姓名,取得卡號,取得身份證號,取得密碼,取得余額,設置密碼,取錢3.2系統流程圖利用流程圖來說明系統各個部分之間如何協調來完成任務1)登錄流程圖3-2-1圖中顯示的是登陸的基本流程:2)查詢功能圖3-2-2圖中顯示的是查詢的基本流程:3)掛失功能圖3-2-3圖中顯示的是掛失的基本流程:4)修改密碼圖3-2-4圖中顯示的是修改密碼的基本流程:5)取款功能圖3-2-5圖中顯示的是取款的基本流程:6)轉賬功能圖3-2-6圖中顯示的是轉賬的基本流程:3.3參數說明全局變量,重要形式參數、全局變量局部變量等等,它們的命名及用途解釋boolj:全局變量。c

15、harm,t,ch:全局變量。inttimes:重要形式參數。第四章運行及測試結果對運行及測試結果進行說明,并添加運行界面的截圖4.1、登錄主界面L:DocuAentsandSettingsAdAinistrator-一口f:32040102O05E078=1234S6_上圖1:為主界面登錄窗口上圖3:圖為成功登錄后,主界面所顯示的窗口4.2、掛失功能上圖4:根據所選代碼進行掛失,掛失后系統將退出主界面-|口|拭|應*C:Docu*ent3andSettiihgsAdKinistrator桌面X_.|?323401020056078笠碼:123456情您輸入相應的操作序號進行操作:2隋窺入舊密

16、碼:123456隋勘入新密碼:456789后再輸入一次新密砰456789密宿修改成功;請牢記?或*C:DociiAentsandSettiiLgsAdMinistra±orkifti,.阿您輸入相應的操作序與進行操作,9士sj暮±密靠新,下1碼仍次功以5密密一成理舊八改亦j入入慎可a請請也摩本H1*少掛失2修改密俏5查詢余額6退出系統上圖5:圖為更改密碼功能界面,更改后的密碼為新密碼Dociment3and上圖6:為圖為取款功能界面,圖中顯示為成功取款上圖7:圖為取款失敗后的功能界面上圖8:圖為轉賬功能界面,圖中顯示為轉賬成功后的界面c'*C:Doicimentsa

17、ndSettiihgaVAdninistratoir桌面k工具箱1(10J_r-lI,flJJIJL轉賬成功?您的游額=350-«苗機可亦理以K業務:XKMiXifitKXKliKKWiiMiKitliXKItKD掛失2修改密碼3取款4轉賬§查詢余額6退出系統您輸入相應的操作序號進行操作;修輸入所轉賬號,網76S4321。房輸入所轉錢數:h晌慷額不足!匿機可亦理以下業務:上圖9:圖為轉賬失敗后的功能界面上圖10:圖中所示為用戶個人信息,包括用戶姓名、身份證號、銀行卡號以及存款余額4.7、退出系統上圖11:圖為選擇序號后系統退出的頁面第五章課程設計總結課程設計旨在鍛煉學生的實

18、際動手能力和解決真實問題的能力。并在其中掌握和熟練所學的知識,并能夠運用所學知識解決比較簡單的現實模擬問題。本次課程設計在老師的幫助和自己的努力下終于能夠成功運行,使我感到非常高興以及提高了自己的編程信心,雖然這次課程設計的題目實現比較簡單和不實用但畢竟是自己將近兩個星期的努力地結果。在期間我對編程的理念理解乂加深了一點,課程設計使我明白好的算法或者是好的邏輯思維對編程的重要性,在調試期間我自卑過、高興過、平靜過。可以說是我經歷了比較大的情感波動。當費很大勁才把程序調運行的時候那種感覺實在是太好了。在本次課程設計活動中,我明顯的感覺到自己知識的欠缺和實際動手能的差勁。尤其是在傳值傳參的函數調用

19、時更體現的非常明顯,感覺自己的書本學的不透、學的不扎實。有些地方更本就不會,不如說文件的操作,比如說系統時間的獲取等以前在上課或作習題時更本就不會考慮的問題在課程設計當中完全暴露出來。通過本次試驗,主要加深了對于友元函數,友元類使用的熟練程度。程序功能相對比較簡單,沒有設計復雜的繼承和重載函數,完成的比較輕松!附錄以下是程序的源代碼,并且加上了詳細的注釋:#include"iostream"usingnamespacestd;classconsumer;classATM/ATM取款機類(public:ATM(consumer&cn):cnsm(cn)(j=true;

20、voidwelcome();/登陸界面boolcheck_passwd(charn,charpwd);/核對密碼boolcheck_zhang(charnum);/K對轉入賬號boolgua();/掛失voidchange_passwd();修改密碼voidfetchmoney();/取款voidzhuan();轉賬voidinformation();/查詢信息voidexitATM();/退出系統voidfunctionshow();/功能界面voidlock();/鎖機private:boolj;inttimes;/記錄密碼輸入次數consumer&cnsm;classconsum

21、er/用戶類(public:friendclassATM;consumer(charName,charNum,charId20,floatMoney,charPassword);protected:char*get_name();/取得姓名char*get_num();/取得卡號char*get_id();/取得身份證號char*get_passwd();/取得密碼floatget_money();/取得余額voidset_passwd(charpwd);/設置密碼voidset_money(floatm);/取錢private:charpasswd8;/用戶密碼charname20;/用戶姓

22、名charid20;/用戶身份證號charnum20;/floatmoney;/;consumer:consumer(charName,charNum,charId20,floatMoney,charPassword)strcpy(name,Name);strcpy(num,Num);strcpy(id,Id);money=Money;strcpy(passwd,Password);floatconsumer:get_money()(returnmoney;char*consumer:get_name()/對于數組的返回操作返回指釘(returnname;char*consumer:get_n

23、um()(returnnum;char*consumer:get_id()(returnid;char*consumer:get_passwd()(returnpasswd;voidconsumer:set_money(floatm)money-=m;voidconsumer:set_passwd(charpwd)(strcpy(passwd,pwd);voidATM:welcome()(times=0;cout<<"歡迎使用銀行ATM自動取款機"<<endl;charpwd8,num120,ch;inti=0;do(i=0;cout<<

24、endl<<”請輸入卡號:"do(cin.get(ch);對于鍵盤字符申的接收!num1i+=ch;while(ch!='n');num1i-1='0'i=0;cout<<”請輸入密碼:"do(cin.get(ch);pwdi+=ch;while(ch!='n');pwdi-1='0'if(!check_passwd(num1,pwd)(cout<<”你輸入的卡號或密碼有誤,請重新輸入”<<endl;times+;else(functionshow();while

25、(times<3);lock();boolATM:check_passwd(charnum,charpwd)(if(strcmp(num,cnsm.get_num()=0&&strcmp(pwd,cnsm.get_passwd()=0)returntrue;elsereturnfalse;voidATM:functionshow()intn;docout«"本機可辦理以下業務:"«endl;cout«"*"«endl;cout«"cout«"1>掛

26、尖”vv”cout«"cout«"3>M款"vv”cout«"cout«"5>查詢余額"«"cout«""«endl;"«"2>修改密碼"«endl;"«endl;"«"4>轉賬"«endl;"«endl;"«"6>退出系統"&#

27、171;endl;"«endl;cout«"*"«endl;cout«endl«"i#您輸入相應的操作序號進行操作:"«endl;cin»n;while(n<1|n>6)cout«"if輸入正確的操作序號!"«endl;cin»n;switch(n)case1:gua();break;case2:change_passwd();break;case3:fetchmoney();break;case4:zhuan()

28、;break;case5:information();break;case6:exitATM();break;while(true);boolATM:gua()chara;docout<<”是否確認掛失:(y/n)繼續請按y退出請按n"<<endl;cin>>a;if(a='y')cout<<"您已掛失成功!"<<endl;exit(2);elsecout<<"您已選擇退出!"<<endl;while(a='y');returnj

29、=true;voidATM:change_passwd()(charpwd8,repwd8;times=0;do(cout<<endl<<”請輸入舊密碼:"cin>>pwd;if(!check_passwd(cnsm.get_num(),pwd)times+;elsebreak;while(times<3);if(times=3)lock();intt=1;do(cout<<”請輸入新密碼:"cin>>pwd;cout<<”請再輸入一次新密碼:"cin>>repwd;t=st

30、rcmp(pwd,repwd);/相同返回0;if(t!=0)cout<<"你輸入的兩次密碼不一樣,請重新輸入!"<<endl;while(t!=0);cnsm.set_passwd(pwd);cout<<"密碼修改成功,請牢記!"<<endl;voidATM:fetchmoney()floatm;charch;docout<<endl<<"你要取多少錢:"<<endl;/兩種情況cin>>m;while(m<=0)cout<&

31、lt;"請輸入正確的數字!"<<endl;cin>>m;if(cnsm.get_money()-m<0)cout<<"對不起,你的余額不足!"<<endl;elsecout<<endl<<"取款成功,請收好錢!"<<endl;28/32cnsm.set_money(m);cout<<"是否要繼續取款:(y/n)"<<endl;cin>>ch;while(ch='y'|ch='Y');voidATM:zhuan()charz20;floatnum;cout<<"請輸入所轉賬號:"<<endl;cin>&g

溫馨提示

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

評論

0/150

提交評論