ATM機仿真設計實驗_第1頁
ATM機仿真設計實驗_第2頁
ATM機仿真設計實驗_第3頁
ATM機仿真設計實驗_第4頁
ATM機仿真設計實驗_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、信控學院專業(yè)課實驗報告專業(yè) 計算機科學與技術 班級 1502 姓名 王潤科 評分 學號 150602223 第 23 組 年 月 日 一、實驗名稱: ATM機仿真程序設計 二、實驗目的:實驗目的使學生掌握類的簡單設計及實現(xiàn)三、實驗儀器:PC機,人手一機4、 實驗原理及內(nèi)容4.1 實驗設計:運用C+語言描述ATM機類和銀行卡類,每個類均包含數(shù)據(jù)成員和成員函數(shù),并運用對象的引用和友元類的知識。注重面向對象程序設計理論知識的理解與實際的動手編程能力。運用面向對象的理念實現(xiàn)模擬自動取款機使用過程中的界面和用戶交互過程。 實驗預定要求:1) 正確性和健壯性:即此程序對一切合法的的操作都得能滿足規(guī)格說明要

2、求的結果,對不合法的操作也要有正確的處理措施,使程序嚴謹,保證用戶的信息和財產(chǎn)安全;2) 可讀性:程序要盡量簡明扼要,便與相關人員調(diào)試和修改;3) 效率性:要求本程序執(zhí)行時間盡可能短,占用的內(nèi)存空間盡可能的少。4.2 ATM系統(tǒng)實現(xiàn):1)核對用戶卡號、密碼:核對用戶輸入的密碼與卡號是否對應正確;2)修改密碼:修改銀行卡密碼;3)取款功能4)存款功能5)查詢賬戶信息:顯示用戶名、卡號、余額信息;6)退出終端系統(tǒng):操作完成,退出;7)鎖機吞卡:操作不當,密碼輸入錯誤超過三次,退出系統(tǒng)。4.3系統(tǒng)分工:功能方法或函數(shù)相關描述登錄界面void welcome()登錄終端界面核對所輸卡號,密碼是否正確b

3、ool check_passwd(char n,char pwd);用戶信息核對修改密碼void change_passwd();修改銀行卡密碼取款功能void fetchmoney();取款存款功能void deposit();存款查詢信息void information();顯示用戶名、卡號、余額信息退出系統(tǒng)void exitATM();退出ATM終端系統(tǒng)功能選項界面void functionshow();顯示操作功能鎖卡,退出ATM終端void lock();退出終端 定義用戶char* get_passwd();獲取用戶名char* get_kahao();獲取銀行卡號float ge

4、t_money();獲取用戶余額void set_passwd(char pwd);設置銀行卡密碼void set_money(float m);取款-更新銀行卡余額void set_money2(float a);存款-更新銀行卡余額 4.4 函數(shù)流程圖:登錄終端界面(主程序)流程圖輸入卡號、密碼開始判斷卡號密碼是否正確進入賬號操作菜單卡號密碼輸入是否超過3次關閉終端退出1.修改密碼2.取款功能3.存款功能4.查詢余額0.退出系統(tǒng)NNYY修改密碼(核心算法)流程圖:開始輸入原密碼密碼輸入是否超過三次密碼是否輸入正確輸入新密碼關閉終端新密碼是否與原密碼相同新密碼是否為6位數(shù)再次輸入新密碼新密碼

5、兩次輸入是否一致密碼修改成功結束取款功能(核心算法)流程圖:N開始輸入取款金額是否為負數(shù)是否>5000是否為100的倍數(shù)賬戶中余額是否足夠更新賬戶信息存款操作成功結束開始輸入取款金額是否為負數(shù)是否>5000是否為100的倍數(shù)賬戶中余額是否足夠更新賬戶信息YYYY實驗源代碼清單:#include <iostream> #include<iomanip>#include<string>#include <cstring> #include <stdio.h> #include <stdlib.h> using na

6、mespace std; class consumer /用戶定義 public: friend class ATM; consumer(char Name,char Num, float Money,char Password); protected: char* get_name(); char* get_kahao(); char* get_passwd(); float get_money(); void set_passwd(char pwd); void set_money(float m);void set_money2(float a);private: char passwd

7、10; /用戶密碼 char name20; /用戶姓名 char kahao20; /用戶卡號 float money; /用戶余額 ; class ATM /ATM終端定義 public: ATM(consumer & cn):cnsm(cn) void welcome(); /登陸終端界面 bool check_passwd(char n,char pwd); /核對用戶密碼 void change_passwd(); /修改用戶密碼 void fetchmoney(); /取款功能 void deposit(); /存款功能 void information(); /查詢信息

8、void exitATM(); /退出終端系統(tǒng) void functionshow(); /功能界面 void lock(); /輸入錯誤,退出終端 private: int times; /記錄密碼輸入次數(shù) consumer &cnsm; ; int main() consumer one("wangrunke","22889350248",10000.00F,"666666"); /構造一位用戶,信息包 /括:用戶姓名、用戶卡號、用戶賬戶余額、用戶密碼 ATM atm(one); atm.welcome(); return

9、 0; consumer:consumer(char Name,char Kahao, float Money,char Password) /構造函數(shù),建立賬戶 strcpy(name,Name); strcpy(kahao,Kahao); money=Money; strcpy(passwd,Password); float consumer:get_money() /獲取余額 return money; char*consumer:get_name() /獲取用戶名 return name; char*consumer:get_kahao() /獲取用戶卡號 return kahao;

10、char*consumer:get_passwd() /獲取用戶密碼 return passwd; void consumer:set_passwd(char pwd)/設置用戶密碼 strcpy(passwd,pwd); void ATM:welcome() /登錄用戶界面 times=0; cout<<"nnntt*歡迎使用銀行ATM自動取款機*nn"<<endl; char pwd6,num20,ch; int i=0; do i=0; cout<<endl<<"tt請輸入卡號:" do cin.ge

11、t(ch); numi+=ch; while(ch!='n'); numi-1='0' i=0; cout<<"tt請輸入密碼:" do cin.get(ch); pwdi+=ch; while(ch!='n'); pwdi-1='0' if(!check_passwd(num,pwd) cout<<"ntt你輸入的卡號或密碼有誤,請重新輸入!"<<endl; times+; else functionshow(); while(times<3);

12、lock(); bool ATM:check_passwd(char num,char pwd) if(strcmp(num,cnsm.get_kahao()=0&&strcmp(pwd,cnsm.get_passwd()=0) return true; else return false; void ATM:functionshow() system("cls"); /每次執(zhí)行一次操作進行清屏 int n; do cout <<endl<<"nnntt*歡迎進入 用戶界面*tt "<<endl; co

13、ut<<"nntt*1.修改密碼 *"<<endl <<"tt*2.取款功能 *"<<endl <<"tt*3.存款功能 *"<<endl <<"tt*4.查詢余額 *"<<endl <<"tt*0.退出系統(tǒng) *"<<endl; cout<<"tt 功能選項(0-3):" cin>>n; while(n<0|n>4) co

14、ut<<"tt請在范圍內(nèi)輸入功能選項!"<<endl; cout<<"tt 功能選項(0-4):" cin>>n; switch(n) case 0: exitATM(); break; case 1: change_passwd(); break; case 2: fetchmoney(); break;case 3: deposit(); break; case 4: information(); break; while(true); void ATM:change_passwd() system(&

15、quot;cls"); char pwd6,repwd6; times=0; do cout<<"nnntt*修改密碼*"<<"ntt請輸入原密碼:" cin>>pwd; if(!check_passwd(cnsm.get_kahao(),pwd) times+; else break; while(times<3); if(times=3)lock(); int k=0; int t=0; do k=0; cout<<"ntt請輸入新密碼:" cin>>pw

16、d; int g=0; int v=0; g=strlen(pwd); if(g!=6) k=1; cout<<"ntt密碼為6位數(shù)字!"<<endl; for(int i=0;i<g-1;i+) if(pwdi=pwdi+1) v=v+1; if(v=g) k=1; cout<<"tt原密碼與新密碼不能一致!"<<endl; if(g=6&&v!=g) cout<<"ntt請再次輸入新密碼(兩次保持一致):" cin>>repwd; if(

17、t=strcmp(pwd,repwd)!=0) cout<<"tt你輸入的兩次密碼不一樣,請重新輸入!"<<endl; while(t!=0|k=1); cnsm.set_passwd(pwd); cout<<"nntt溫馨提示:密碼修改成功"<<endl; cout<<"nntt" system("pause"); system("cls"); void ATM:fetchmoney() system("cls")

18、; float m; char ch; do cout<<"nnntt *取款功能*" <<"ntt本ATM終端機只能取出面值為100元的人民幣"<<endl<<"tt溫馨提示:取款金額為100的倍數(shù)"<<endl<<"tt 每次最多取款5000元" <<"nntt 請輸入取款金額:" cin>>m; while(m<=0) cout<<"ntt請不要輸入負數(shù)或0!&quo

19、t;<<endl; cout<<"tt" ; system("pause"); cout<<"ntt 請重新輸入取款金額:" ; cin>>m; if(m>5000) cout<<"ntt對不起,本ATM終端機一次最多取5000元"<<endl;cout<<"tt 若金額超過1萬元請在柜臺取款" <<endl;cout<<"tt 如果給您帶來不便,還請諒解" el

20、se if(int)m%100!=0) cout<<"ntt對不起,取款金額為100的倍數(shù)"<<endl; else if(cnsm.get_money()-m<0) cout<<"tt對不起,你的賬戶余額不足!"<<endl; else cout<< endl<<"tt *操作成功,請取回款" <<endl; cnsm.set_money( m ); cout<<"ntt *賬戶現(xiàn)有余額: "<<cn

21、sm.get_money()<<endl; cout<<"ntt是否要繼續(xù)該項操作(Y/N):" cin>>ch; while(ch!='n'&&ch!='Y'&&ch!='y') cout<<"(Y/N):" cin>>ch; while(ch='y'|ch='Y'); system("cls"); void ATM:deposit() system("

22、cls"); float a; char b; do cout<<"nnntt *存款功能*" <<"ntt本ATM終端機只能存入面值為50或100元的人民幣"<<endl<<"tt溫馨提示:存款金額為50的倍數(shù)"<<endl<<"tt 每次最多存款5000元" <<"nntt 請輸入存款金額:" cin>>a; while(a<=0) cout<<"ntt請不要

23、輸入負數(shù)或0!"<<endl; cout<<"tt" ; system("pause"); cout<<"ntt 請重新輸入存款金額:" ; cin>>a; if(a>5000) cout<<"ntt對不起,本ATM終端機一次最多存5000元"<<endl;cout<<"tt 若金額超過1萬元請在柜臺存款" <<endl;cout<<"tt 如果給您帶來不便,還請

24、諒解" else if(int)a%50!=0) cout<<"ntt對不起,存款金額為50的倍數(shù)"<<endl; else cout<< endl<<"tt *操作成功,存款完成" <<endl; cnsm.set_money2 (a); cout<<"ntt *賬戶現(xiàn)有余額: "<<cnsm.get_money()<<endl; cout<<"ntt是否要繼續(xù)該項操作(Y/N):" cin>

25、;>b; while(b!='n'&&b!='Y'&&b!='y') cout<<"(Y/N):" cin>>b; while(b='y'|b='Y'); system("cls"); void ATM:information() system("cls"); cout<<"nnntt*賬戶信息*"<<endl; cout<<"nntt 用戶姓名 "<<" 卡號 "<<" 余額 "<<endl; cout<<"tt"

溫馨提示

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

評論

0/150

提交評論