版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、實(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)用對象的引用和友元類的知識。注重面向?qū)ο蟪绦蛟O(shè)計(jì)理論知識的理解與實(shí)際的動手編程能力。運(yùn)用面向?qū)ο蟮睦砟顚?shí)現(xiàn)模擬自動取款機(jī)使用過程中的界面和用戶交互過程。 實(shí)驗(yàn)預(yù)定要求:1) 正確性和健壯性:即此程序?qū)σ磺泻戏ǖ牡牟僮鞫嫉媚軡M足規(guī)格說明要求的結(jié)果,對不合法的操作也要有正確的處理措施,使程序嚴(yán)謹(jǐn),保證用戶的信息和財(cái)產(chǎn)安全;2) 可讀性:程序要盡量簡明扼要,便與相關(guān)人員調(diào)試
2、和修改;3) 效率性:要求本程序執(zhí)行時(shí)間盡可能短,占用的內(nèi)存空間盡可能的少。4.2 ATM系統(tǒng)實(shí)現(xiàn):1)核對用戶卡號、密碼:核對用戶輸入的密碼與卡號是否對應(yīng)正確;2)修改密碼:修改銀行卡密碼;3)取款功能4)存款功能5)查詢賬戶信息:顯示用戶名、卡號、余額信息;6)退出終端系統(tǒng):操作完成,退出;7)鎖機(jī)吞卡:操作不當(dāng),密碼輸入錯(cuò)誤超過三次,退出系統(tǒng)。4.3系統(tǒng)分工:功能方法或函數(shù)相關(guān)描述登錄界面void welcome()登錄終端界面核對所輸卡號,密碼是否正確bool check_passwd(char n,char pwd);用戶信息核對修改密碼void change_passwd();修改
3、銀行卡密碼取款功能void fetchmoney();取款存款功能void deposit();存款查詢信息void information();顯示用戶名、卡號、余額信息退出系統(tǒng)void exitATM();退出ATM終端系統(tǒng)功能選項(xiàng)界面void functionshow();顯示操作功能鎖卡,退出ATM終端void lock();退出終端 定義用戶char* get_passwd();獲取用戶名char* get_kahao();獲取銀行卡號float get_money();獲取用戶余額void set_passwd(char pwd);設(shè)置銀行卡密碼void set_money(flo
4、at m);取款-更新銀行卡余額void set_money2(float a);存款-更新銀行卡余額 4.4 函數(shù)流程圖:登錄終端界面(主程序)流程圖輸入卡號、密碼開始判斷卡號密碼是否正確進(jìn)入賬號操作菜單卡號密碼輸入是否超過3次關(guān)閉終端退出1.修改密碼2.取款功能3.存款功能4.查詢余額0.退出系統(tǒng)NNYY修改密碼(核心算法)流程圖:開始輸入原密碼密碼輸入是否超過三次密碼是否輸入正確輸入新密碼關(guān)閉終端新密碼是否與原密碼相同新密碼是否為6位數(shù)再次輸入新密碼新密碼兩次輸入是否一致密碼修改成功結(jié)束取款功能(核心算法)流程圖:N開始輸入取款金額是否為負(fù)數(shù)是否5000是否為100的倍數(shù)賬戶中余額是否足
5、夠更新賬戶信息存款操作成功結(jié)束YYYY實(shí)驗(yàn)源代碼清單:#include #include#include#include #include #include using namespace 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_
6、passwd(char pwd); void set_money(float m);void set_money2(float a);private: char passwd10; /用戶密碼 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()
7、; /修改用戶密碼 void fetchmoney(); /取款功能 void deposit(); /存款功能 void information(); /查詢信息 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)造一位用戶,信息包 /括:用戶姓名、用戶卡號、用戶賬戶
8、余額、用戶密碼 ATM atm(one); atm.welcome(); return 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*
9、consumer:get_kahao() /獲取用戶卡號 return kahao; char*consumer:get_passwd() /獲取用戶密碼 return passwd; void consumer:set_passwd(char pwd)/設(shè)置用戶密碼 strcpy(passwd,pwd); void ATM:welcome() /登錄用戶界面 times=0; coutnnntt*歡迎使用銀行ATM自動取款機(jī)*nnendl; char pwd6,num20,ch; int i=0; do i=0; coutendltt請輸入卡號:; do cin.get(ch); numi+
10、=ch; while(ch!=n); numi-1=0; i=0; couttt請輸入密碼:; do cin.get(ch); pwdi+=ch; while(ch!=n); pwdi-1=0; if(!check_passwd(num,pwd) coutntt你輸入的卡號或密碼有誤,請重新輸入!endl; times+; else functionshow(); while(times3); lock(); bool ATM:check_passwd(char num,char pwd) if(strcmp(num,cnsm.get_kahao()=0&strcmp(pwd,cnsm.get
11、_passwd()=0) return true; else return false; void ATM:functionshow() system(cls); /每次執(zhí)行一次操作進(jìn)行清屏 int n; do cout endlnnntt*歡迎進(jìn)入 用戶界面*tt endl; coutnntt*1.修改密碼 *endl tt*2.取款功能 *endl tt*3.存款功能 *endl tt*4.查詢余額 *endl tt*0.退出系統(tǒng) *endl; coutn; while(n4) couttt請?jiān)诜秶鷥?nèi)輸入功能選項(xiàng)!endl; coutn; switch(n) case 0: exitATM
12、(); 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(cls); char pwd6,repwd6; times=0; do coutnnntt*修改密碼*pwd; if(!check_passwd(cnsm.get_kahao(),pwd) times+; else break; while(times3)
13、; if(times=3)lock(); int k=0; int t=0; do k=0; coutpwd; int g=0; int v=0; g=strlen(pwd); if(g!=6) k=1; coutntt密碼為6位數(shù)字!endl; for(int i=0;ig-1;i+) if(pwdi=pwdi+1) v=v+1; if(v=g) k=1; couttt原密碼與新密碼不能一致!endl; if(g=6&v!=g) coutrepwd; if(t=strcmp(pwd,repwd)!=0) couttt你輸入的兩次密碼不一樣,請重新輸入!endl; while(t!=0|k=1
14、); cnsm.set_passwd(pwd); coutnntt溫馨提示:密碼修改成功endl; coutnntt; system(pause); system(cls); void ATM:fetchmoney() system(cls); float m; char ch; do coutnnntt *取款功能* ntt本ATM終端機(jī)只能取出面值為100元的人民幣endltt溫馨提示:取款金額為100的倍數(shù)endltt 每次最多取款5000元 m; while(m=0) coutntt請不要輸入負(fù)數(shù)或0!endl; couttt ; system(pause); coutm; if(m5
15、000) coutntt對不起,本ATM終端機(jī)一次最多取5000元endl;couttt 若金額超過1萬元請?jiān)诠衽_取款 endl;couttt 如果給您帶來不便,還請諒解; else if(int)m%100!=0) coutntt對不起,取款金額為100的倍數(shù)endl; else if(cnsm.get_money()-m0) couttt對不起,你的賬戶余額不足!endl; else cout endltt *操作成功,請取回款 endl; cnsm.set_money( m ); coutntt *賬戶現(xiàn)有余額: cnsm.get_money()endl; coutch; while(c
16、h!=n&ch!=Y&ch!=y) coutch; while(ch=y|ch=Y); system(cls); void ATM:deposit() system(cls); float a; char b; do coutnnntt *存款功能* ntt本ATM終端機(jī)只能存入面值為50或100元的人民幣endltt溫馨提示:存款金額為50的倍數(shù)endltt 每次最多存款5000元 a; while(a=0) coutntt請不要輸入負(fù)數(shù)或0!endl; couttt ; system(pause); couta; if(a5000) coutntt對不起,本ATM終端機(jī)一次最多存5000元
17、endl;couttt 若金額超過1萬元請?jiān)诠衽_存款 endl;couttt 如果給您帶來不便,還請諒解; else if(int)a%50!=0) coutntt對不起,存款金額為50的倍數(shù)endl; else cout endltt *操作成功,存款完成 endl; cnsm.set_money2 (a); coutntt *賬戶現(xiàn)有余額: cnsm.get_money()endl; coutb; while(b!=n&b!=Y&b!=y) coutb; while(b=y|b=Y); system(cls); void ATM:information() system(cls); cou
18、tnnntt*賬戶信息*endl; coutnntt 用戶姓名 卡號 余額 endl; coutttcnsm.get_name() cnsm.get_kahao() cnsm.get_money()endl; coutnntt*endl; coutnntt; system(pause);system(cls); void ATM:lock() system(cls); coutendlnnntt感謝使用本ATM終端機(jī)! ntt請取回您的銀行卡.endl; void ATM:exitATM() system(cls); coutnnntt成功退出ATM終端系統(tǒng)!歡迎使用!endl; exit(0); void consumer:set_money (float m) money=money-m; void consumer:set_money2 (float a) money=money+a; 5、 實(shí)驗(yàn)結(jié)果(實(shí)驗(yàn)數(shù)據(jù)、曲線等)5.1 登錄用戶界面:三次密碼輸入錯(cuò)誤,執(zhí)行l(wèi)ock 函數(shù),退出終端。密碼輸入正確,則登陸至該賬戶該賬戶登陸成功界面,顯示有5個(gè)基本功能5.2進(jìn)行賬戶信息查詢(功能選項(xiàng)4):5.3 進(jìn)行修改賬戶密碼設(shè)置(功能選項(xiàng)1):5.4 進(jìn)行取款操作(功能選項(xiàng)2):【ATM機(jī)取款要求較多:只能取出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【課件】溫度-2024-2025學(xué)年人教版初中物理八年級上冊
- 職業(yè)規(guī)劃爾雅復(fù)習(xí)資料
- 道德講堂課件教學(xué)課件
- 科藝魔力:探秘大揭秘-小學(xué)科藝教育新視野
- 2024八年級數(shù)學(xué)上冊第七章平行線的證明專項(xiàng)突破17平行線中常用作輔助線的方法習(xí)題課件新版北師大版
- 2024八年級數(shù)學(xué)上冊第五章二元一次方程組5應(yīng)用二元一次方程組-里程碑上的數(shù)習(xí)題課件新版北師大版
- 2024八年級數(shù)學(xué)上冊期末復(fù)習(xí)3二次根式3??碱}型專練習(xí)題課件新版北師大版
- 2024年銀川客運(yùn)資格證考試多少題及格
- 2024年拉薩客車上崗證模擬考試
- 2024年阿壩客運(yùn)從業(yè)資格證模擬考試題庫下載
- 衛(wèi)生巾推廣方案
- 2024年大疆無人機(jī)飛行知識筆試歷年真題薈萃含答案
- 2024年企業(yè)文化企業(yè)建設(shè)知識競賽-中國石油知識競賽筆試歷年真題薈萃含答案
- 耐克營銷案例分析耐克品牌
- 皮質(zhì)盲的護(hù)理查房
- 支架式教學(xué)模式與課堂教學(xué)
- IT運(yùn)維整體解決方案
- 食品安全企業(yè)標(biāo)準(zhǔn)模板
- 注塑車間整改規(guī)劃方案
- 醫(yī)院化驗(yàn)室的操作規(guī)程
- 地方政府競爭及地方保護(hù)主義研究
評論
0/150
提交評論