ATM機(jī)仿真設(shè)計(jì)實(shí)驗(yàn)_第1頁
ATM機(jī)仿真設(shè)計(jì)實(shí)驗(yàn)_第2頁
ATM機(jī)仿真設(shè)計(jì)實(shí)驗(yàn)_第3頁
ATM機(jī)仿真設(shè)計(jì)實(shí)驗(yàn)_第4頁
ATM機(jī)仿真設(shè)計(jì)實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、信控學(xué)院專業(yè)課實(shí)驗(yàn)報(bào)告專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí) 1502 姓名 王潤科 評(píng)分 學(xué)號(hào) 150602223 第 23 組 年 月 日 一、實(shí)驗(yàn)名稱: ATM機(jī)仿真程序設(shè)計(jì) 二、實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康氖箤W(xué)生掌握類的簡單設(shè)計(jì)及實(shí)現(xiàn)三、實(shí)驗(yàn)儀器:PC機(jī),人手一機(jī)4、 實(shí)驗(yàn)原理及內(nèi)容4.1 實(shí)驗(yàn)設(shè)計(jì):運(yùn)用C+語言描述ATM機(jī)類和銀行卡類,每個(gè)類均包含數(shù)據(jù)成員和成員函數(shù),并運(yùn)用對(duì)象的引用和友元類的知識(shí)。注重面向?qū)ο蟪绦蛟O(shè)計(jì)理論知識(shí)的理解與實(shí)際的動(dòng)手編程能力。運(yùn)用面向?qū)ο蟮睦砟顚?shí)現(xiàn)模擬自動(dòng)取款機(jī)使用過程中的界面和用戶交互過程。 實(shí)驗(yàn)預(yù)定要求:1) 正確性和健壯性:即此程序?qū)σ磺泻戏ǖ牡牟僮鞫嫉媚軡M足規(guī)格說明要

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

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

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

5、兩次輸入是否一致密碼修改成功結(jié)束取款功能(核心算法)流程圖:N開始輸入取款金額是否為負(fù)數(shù)是否>5000是否為100的倍數(shù)賬戶中余額是否足夠更新賬戶信息存款操作成功結(jié)束開始輸入取款金額是否為負(fù)數(shù)是否>5000是否為100的倍數(shù)賬戶中余額是否足夠更新賬戶信息YYYY實(shí)驗(yàn)源代碼清單:#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; /用戶卡號(hào) float money; /用戶余額 ; class ATM /ATM終端定義 public: ATM(consumer & cn):cnsm(cn) void welcome(); /登陸終端界面 bool check_passwd(char n,char pwd); /核對(duì)用戶密碼 void change_passwd(); /修改用戶密碼 void fetchmoney(); /取款功能 void deposit(); /存款功能 void information(); /查詢信息

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

9、 0; consumer:consumer(char Name,char Kahao, float Money,char Password) /構(gòu)造函數(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() /獲取用戶卡號(hào) return kahao;

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

11、t(ch); numi+=ch; while(ch!='n'); numi-1='0' i=0; cout<<"tt請(qǐng)輸入密碼:" do cin.get(ch); pwdi+=ch; while(ch!='n'); pwdi-1='0' if(!check_passwd(num,pwd) cout<<"ntt你輸入的卡號(hào)或密碼有誤,請(qǐng)重新輸入!"<<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í)行一次操作進(jìn)行清屏 int n; do cout <<endl<<"nnntt*歡迎進(jìn)入 用戶界面*tt "<<endl; co

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

14、ut<<"tt請(qǐng)?jiān)诜秶鷥?nèi)輸入功能選項(xiàng)!"<<endl; cout<<"tt 功能選項(xiàng)(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請(qǐng)輸入原密碼:" 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請(qǐng)輸入新密碼:" 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請(qǐng)?jiān)俅屋斎胄旅艽a(兩次保持一致):" cin>>repwd; if(

17、t=strcmp(pwd,repwd)!=0) cout<<"tt你輸入的兩次密碼不一樣,請(qǐng)重新輸入!"<<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終端機(jī)只能取出面值為100元的人民幣"<<endl<<"tt溫馨提示:取款金額為100的倍數(shù)"<<endl<<"tt 每次最多取款5000元" <<"nntt 請(qǐng)輸入取款金額:" cin>>m; while(m<=0) cout<<"ntt請(qǐng)不要輸入負(fù)數(shù)或0!&quo

19、t;<<endl; cout<<"tt" ; system("pause"); cout<<"ntt 請(qǐng)重新輸入取款金額:" ; cin>>m; if(m>5000) cout<<"ntt對(duì)不起,本ATM終端機(jī)一次最多取5000元"<<endl;cout<<"tt 若金額超過1萬元請(qǐng)?jiān)诠衽_(tái)取款" <<endl;cout<<"tt 如果給您帶來不便,還請(qǐng)諒解" el

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

21、sm.get_money()<<endl; cout<<"ntt是否要繼續(xù)該項(xiàng)操作(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終端機(jī)只能存入面值為50或100元的人民幣"<<endl<<"tt溫馨提示:存款金額為50的倍數(shù)"<<endl<<"tt 每次最多存款5000元" <<"nntt 請(qǐng)輸入存款金額:" cin>>a; while(a<=0) cout<<"ntt請(qǐng)不要

23、輸入負(fù)數(shù)或0!"<<endl; cout<<"tt" ; system("pause"); cout<<"ntt 請(qǐng)重新輸入存款金額:" ; cin>>a; if(a>5000) cout<<"ntt對(duì)不起,本ATM終端機(jī)一次最多存5000元"<<endl;cout<<"tt 若金額超過1萬元請(qǐng)?jiān)诠衽_(tái)存款" <<endl;cout<<"tt 如果給您帶來不便,還請(qǐng)

24、諒解" else if(int)a%50!=0) cout<<"ntt對(duì)不起,存款金額為50的倍數(shù)"<<endl; else cout<< endl<<"tt *操作成功,存款完成" <<endl; cnsm.set_money2 (a); cout<<"ntt *賬戶現(xiàn)有余額: "<<cnsm.get_money()<<endl; cout<<"ntt是否要繼續(xù)該項(xiàng)操作(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 用戶姓名 "<<" 卡號(hào) "<<" 余額 "<<endl; cout<<"tt"

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論