基于面向?qū)ο笏枷氲腁TM系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)討論課總結(jié)_第1頁
基于面向?qū)ο笏枷氲腁TM系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)討論課總結(jié)_第2頁
基于面向?qū)ο笏枷氲腁TM系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)討論課總結(jié)_第3頁
基于面向?qū)ο笏枷氲腁TM系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)討論課總結(jié)_第4頁
基于面向?qū)ο笏枷氲腁TM系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)討論課總結(jié)_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VC++討論課總結(jié)

組小組成員:2021/5/91銀行卡(數(shù)據(jù)成員)姓名賬號(hào)密碼錢數(shù)提款機(jī)(成員函數(shù))歡迎界面存取款查詢余額退卡2021/5/92將銀行卡(數(shù)據(jù)成員)與提款機(jī)(成員函數(shù))放在一個(gè)類中,命名為ATMATM類可以實(shí)現(xiàn)用戶與自動(dòng)取款機(jī)的交互,即完成取款,查詢余額等功能在類中全部數(shù)據(jù)成員均為私有成員,類中的成員函數(shù)均為公有成員,為實(shí)現(xiàn)各種操作提供接口2021/5/93銀行卡(數(shù)據(jù)成員)姓名name賬號(hào)account密碼password錢數(shù)money提款機(jī)(成員函數(shù))歡迎界面輸出“歡迎您,XXX”取款實(shí)現(xiàn)對(duì)money的訪問與修改查詢余額對(duì)money的訪問退卡“謝謝使用,再見!”2021/5/94利用string定義可以省去定義一維字符數(shù)組的不便stringname;stringaccount;stringpassword;intmoney;//定義姓名//定義賬號(hào)//定義密碼//定義余額數(shù)據(jù)成員2021/5/95成員函數(shù)voidwelcome()

{cout<<"歡迎您,"

<<name<<endl;

}voidtakemoney(){cout<<"請(qǐng)輸入想要取款的金額"

<<

endl;inta;cin>>a;if((money-a)<0)cout<<"余額不足,取款失敗"<<

endl;else{money-=a;cout<<"取款成功\n";}歡迎界面取款2021/5/96查詢余額voidrestmoney()

{cout<<"當(dāng)前余額為"

<<

money<<endl;}退卡voidbye()

{cout<<"感謝您的使用,再見!"

<<

endl;}2021/5/97使用If實(shí)現(xiàn)驗(yàn)證賬號(hào)與密碼是否匹配stringshowaccount()

{return(account);

}stringshowpassword()

{return(password);}stringaccount2,password2;if(account2==a.showaccount())p=&a;if(account2==b.showaccount())p=&b;if((account2==p->showaccount())&&(password2==p->showpassword()))t=1;else

cout

<<

"密碼錯(cuò)誤,請(qǐng)重新輸入!\n";2021/5/982021/5/99MFC界面初步設(shè)計(jì)登陸界面2.選擇界面3.退卡界面2021/5/910登陸界面2021/5/911登陸界面退卡界面2021/5/9121.現(xiàn)實(shí)世界中卡和銀行卡的繼承關(guān)系

2.用面向?qū)ο缶幊趟枷胫械呐缮悂砟M卡和銀行卡的繼承關(guān)系

3.銀行卡派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義

4.銀行卡派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序2021/5/9131.現(xiàn)實(shí)世界中卡和銀行卡的繼承關(guān)系

現(xiàn)實(shí)世界中,銀行卡,會(huì)員卡等卡類,他們的共同特點(diǎn)是具有開戶人,賬號(hào)以及密碼的屬性,而銀行卡除了向卡類繼承了這些之外,還具有金額的屬性。姓名賬號(hào)密碼卡銀行卡姓名賬號(hào)密碼金錢2021/5/914classbankcard:publiccard{intmoney;//定義金錢public:bankcard(stringn,stringa,stringp,intm);};2.用面向?qū)ο缶幊趟枷胫械呐缮悂砟M卡和銀行卡的繼承關(guān)系classcard{protected:stringname;//定義姓名stringaccount;//定義賬號(hào)stringpassword;//定義密碼public:card(stringn,stringa,stringp);voidmodifypsw();//用于修改密碼};Bankcard類即銀行卡類,公有繼承了卡類的數(shù)據(jù)成員和成員函數(shù),由于私有成員是不允許繼承的,而公有成員無法實(shí)現(xiàn)類中數(shù)據(jù)的封裝,因此將卡類中的三個(gè)數(shù)據(jù)成員都定義為保護(hù)屬性。2021/5/9153.銀行卡派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義classcard{protected:stringname;stringaccount;stringpassword;public:card(stringn,stringa,stringp);voidmodifypsw();};card::card(stringn,stringa,stringp){name=n;//將n賦值給姓名account=a;//將a賦值給賬號(hào)password=p;//將p賦值給密碼}classbankcard:publiccard{intmoney;public:bankcard(stringn,stringa,stringp,intm);};bankcard::bankcard(stringn,stringa,stringp,intm):card(n,a,p){money=m;//將m賦值給金錢}在bankcard的構(gòu)造函數(shù)中利用初始化列表調(diào)用card類的構(gòu)造函數(shù),完成了傳遞參數(shù)的工作。2021/5/916析構(gòu)函數(shù)沒有參數(shù),因此可以選擇使用系統(tǒng)默認(rèn)的析構(gòu)函數(shù)。在執(zhí)行派生類bankcard的析構(gòu)函數(shù)時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用基類card的析構(gòu)函數(shù),對(duì)基類card的對(duì)象進(jìn)行清理。由于在與ATM的交互中需要不斷調(diào)用帶有bankcard對(duì)象類型的函數(shù),因此總有形參在不斷消亡,因此也就不斷調(diào)用析構(gòu)函數(shù)2021/5/917intmain(){bankcardb("張三",

"001",

"123456",

10000);...return0;}舉個(gè)例子在執(zhí)行該語句后,bankcard類中的b對(duì)象被初始化,調(diào)用了構(gòu)造函數(shù),即其name為張三,account為001,password為123456,金錢為10000。在主函數(shù)返回0時(shí),系統(tǒng)就會(huì)自動(dòng)調(diào)用bankcard與card中的析構(gòu)函數(shù)將對(duì)象進(jìn)行清理,b也就不復(fù)存在了2021/5/9184.銀行卡派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序先執(zhí)行基類card的構(gòu)造函數(shù),再執(zhí)行派生類bankcard的構(gòu)造函數(shù)析構(gòu)函數(shù)執(zhí)行順序與其相反,先執(zhí)行bankcard的析構(gòu)函數(shù),再執(zhí)行card的析構(gòu)函數(shù)。2021/5/919classcard{protected:stringname;stringaccount;stringpassword;public:card(stringn,stringa,stringp);voidmodifypsw();};card::card(stringn,stringa,stringp){name=n;//將n賦值給姓名account=a;//將a賦值給賬號(hào)password=p;//將p賦值給密碼cout<<“card構(gòu)造函數(shù)被調(diào)用”<<endl;}~card(){cout<<“card析構(gòu)函數(shù)被調(diào)用”<<endl;}2021/5/920classbankcard:publiccard{intmoney;public:bankcard(stringn,stringa,stringp,intm);};bankcard::bankcard(stringn,stringa,stringp,intm):card(n,a,p){money=m;//將m賦值給金錢cout<<“bankcard構(gòu)造函數(shù)被調(diào)用”<<endl;}~bankcard(){cout<<“bankcard析構(gòu)函數(shù)被調(diào)用”<<endl;}intmain(){bankcardb("張三",

"001",

"123456",

10000);...return0;}2021/5/9211.如何利用運(yùn)算符重載實(shí)現(xiàn)銀行卡存款的增減運(yùn)算符重載函數(shù)分為:1.類外定義的運(yùn)算符重載函數(shù)2.友元運(yùn)算符重載函數(shù)3.成員運(yùn)算符重載函數(shù)在之前的討論課中我們將ATM類聲明為bankcard類的友元類,因此,利用運(yùn)算符重載實(shí)現(xiàn)銀行卡存款的增減時(shí)我們使用友元運(yùn)算符重載函數(shù)2021/5/922bankcardoperator-(intm){money-=m;return*this;}voidATM::takemoney(bankcard&x){intm;cout<<“請(qǐng)輸入想要取款的金額:"<<endl;cin>>m;x=x-m;cout<<“取款成功"<<endl;}2021/5/9232.如何利用函數(shù)重載實(shí)現(xiàn)銀行卡的編譯時(shí)多態(tài)函數(shù)重載包括普通成員函數(shù)重載和構(gòu)造函數(shù)重載,也包括運(yùn)算符重載,但是析構(gòu)函數(shù)不能被重載。2021/5/924User構(gòu)造函數(shù)被重載(1)構(gòu)造函數(shù)重載2021/5/925(2)成員函數(shù)重載成員函數(shù)重載原理與構(gòu)造函數(shù)相同,即被重載的函數(shù)為普通的成員函數(shù),函數(shù)名與類名不同2021/5/9263.如何設(shè)計(jì)卡類和銀行卡類的虛函數(shù)GetCardNumber()實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)虛函數(shù)就是在基類中被關(guān)鍵字virtual說明,并在派生類中重新定義的函數(shù)。虛函數(shù)的作用是允許在派生類中重新定義與基類同名的函數(shù),并且可以通過基類指針或引用來訪問基類和派生類中的同名函數(shù)。2021/5/927Virtual函數(shù)類型函數(shù)名(形參表){

函數(shù)體}在基類中的某個(gè)成員被聲明為虛函數(shù)后,此虛函數(shù)就可以在一個(gè)或多個(gè)派生類中被重新定義。其函數(shù)原型,包括函數(shù)類型,函數(shù)名,參數(shù)個(gè)數(shù),參數(shù)類型的順序,都必須與基類中的原型完全相同。2021/5/928virtualvoidcard::GetCardNumber(){cout<<"卡號(hào)為"<<account<<endl;}virtualvoidbankcard::GetBankcardNumber(){cout<<"銀行卡號(hào)為"<<account<<endl;}2021/5/929可以看到,基類的指針對(duì)象成員ptr在指向其基類card時(shí)調(diào)用的是card類中的GetCardNumber(),輸出卡號(hào);而指向其派生類bankcard時(shí)調(diào)用的是bankcard中的GetCardNumber(),輸出銀行卡號(hào)2021/5/930MFC系統(tǒng)2021/5/931登陸界面:2021/5/932登陸成功,進(jìn)入歡迎界面:歡迎界面加入了中國銀行的圖片,模擬中國銀行的atm機(jī),更加仿真

2021/5/9331.取款界面2021/5/934

溫馨提示

  • 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)論