C++编程练习:设计一个银行账户类,包含户名、帐号以及当前余额属性,并且能完成开户、存款、取款和查询余额等行为。
文章目錄
- 例題
- 分析
- 代碼
- 測試
- 結(jié)語
例題
設(shè)計一個銀行賬戶(Account)類,包含戶名、帳號以及當(dāng)前余額屬性,可完成開戶、存款、取款和查詢余額等行為。銀行賬戶類的定義要求如下:
class Account { public:Account(char name[],long num,float amount); //類的有參構(gòu)造函數(shù)Account(); //類的無參構(gòu)造函數(shù)void deposit(float amount); //往賬戶中存款int withdraw(float amount); //從賬戶中取款float getBalance(); //查詢當(dāng)前余額 private:char mName[20]; //銀行賬戶的戶名long mSN; //本賬戶的帳號float mBalance; //本賬戶當(dāng)前的余額 };請根據(jù)上述給定的類,完善其相應(yīng)的構(gòu)造函數(shù)及成員函數(shù)的定義,并執(zhí)行主函數(shù)實現(xiàn)測試。
分析
代碼分析:
1、根據(jù)題意,我們要設(shè)計一個類Account,要將mName、mSN、mBalance均作為其成員數(shù)據(jù),將deposit、withdraw、getBalance均作為其成員函數(shù)。類圖UML設(shè)計圖如下:
2、代碼中 strcpy()即字符串復(fù)制函數(shù),其原型是char * strcpy(char * dest,const char * src),把含有‘ \0 ’結(jié)束符的字符串復(fù)制到羅一個地址空間,即把從 src 地址開始且含有 NULL 結(jié)束符的字符串復(fù)制到以 dest 開始的地址空間,其中 src 和 dest 所指內(nèi)存區(qū)域不可以重疊且 dest 有足夠空間容納 src 的字符串。
3、無參構(gòu)造函數(shù)跟有參構(gòu)造函數(shù)的區(qū)別,即在類里定義一個與類名相同的函數(shù),但它的實參列表為空。
//類的有參構(gòu)造函數(shù) Account::Account(char name[], long num, float amount) {strcpy(mName, name); //字符串復(fù)制函數(shù)mSN = num;mBalance = amount; } //類的無參構(gòu)造函數(shù) Account::Account() {cout << "無參函數(shù)被調(diào)用!"<< endl; }4、取款操作中,我們要考慮賬戶透支,即賬戶余額為0的情況,這里我們定義一個 if - else if 語句,若取款金額大于卡內(nèi)金額時,return 0此時函數(shù)正常終止,而當(dāng)取款金額小于或等于卡內(nèi)金額時,return 1此時函數(shù)異常退出,即異常退出此函數(shù)。
//從當(dāng)前賬戶中取款 int Account::withdraw(float amount) {if (amount > mBalance){return 0;}else if (amount <= mBalance){mBalance = mBalance - amount; return 1; //return 1代表函數(shù)非正常終止} }5、查詢賬戶余額操作中,return 關(guān)鍵字,其作用是返回程序流程的控制權(quán),副作用是返回一個值,這里是返回卡內(nèi)金額 mBalance 的值。
//查詢當(dāng)前賬戶的余額 float Account::getBalance() {return mBalance; }6、Account A(name, num, amount)這里我們建立了一個賬戶,即實例化一個對象。
int main() {int NO, m;char name[20];long num;float amount;cout << "請輸入所開賬戶戶名:";cin >> name;cout << "請輸入所開賬戶帳號:";cin >> num; cout << "請輸入所開賬戶初始存款金額:";cin >> amount;Account A(name, num, amount);.................................................................................................................. }代碼
以下是完整的程序代碼:
#include<iostream> using namespace std; class Account { public:Account(char name[], long num, float amount); //類的有參構(gòu)造函數(shù) Account(); //類的無參構(gòu)造函數(shù) void deposit(float amount); //往當(dāng)前賬戶中存款 int withdraw(float amount); //從當(dāng)前賬戶中取款 float getBalance(); //查詢當(dāng)前賬戶的余額 private:char mName[20]; //銀行賬戶的戶名 long mSN; //本賬戶的帳號 float mBalance; //本賬戶當(dāng)前的余額 }; //類的有參構(gòu)造函數(shù) Account::Account(char name[], long num, float amount) {strcpy(mName, name); //字符串復(fù)制函數(shù)mSN = num;mBalance = amount; } //類的無參構(gòu)造函數(shù) Account::Account() {cout << "無參函數(shù)被調(diào)用!" << endl; } //往當(dāng)前賬戶中存款 void Account::deposit(float amount) {mBalance = mBalance + amount; } //從當(dāng)前賬戶中取款 int Account::withdraw(float amount) {if (amount > mBalance){return 0;}else if (amount <= mBalance){mBalance = mBalance - amount; return 1; //return 1代表函數(shù)非正常終止} } //查詢當(dāng)前賬戶的余額 float Account::getBalance() {return mBalance; } //主函數(shù) int main() {int NO, m;char name[20];long num;float amount;cout << "請輸入所開賬戶戶名:";cin >> name;cout << "請輸入所開賬戶帳號:";cin >> num; cout << "請輸入所開賬戶初始存款金額:";cin >> amount;Account A(name, num, amount); cout << "" << endl;cout << "------------------------------------------------"<<endl;cout << " 菜單欄 "<<endl;cout << "1、存款請輸入“1”"<<endl;cout << ""<<endl;cout << "2、取款請輸入“2”"<<endl;cout << ""<<endl;cout << "3、查詢賬戶余額請輸入“3”"<<endl;cout << ""<<endl;cout << "4、退出請輸入“4”"<<endl;cout << ""<<endl;cout << "------------------------------------------------"<<endl;while (1){cout << "請輸入選擇:" << endl;cin >> NO; switch (NO) //通過switch循環(huán)來判斷輸入的菜單欄選擇對應(yīng)其相應(yīng)的操作{ case 1: cout << "請輸入存款金額:";cin >> amount;A.deposit(amount);break; //表示跳出該switch語句體case 2: cout << "請輸入取款金額:";cin >> amount;m = A.withdraw(amount);if (m == 0) cout << "當(dāng)前賬戶余額不足!" << endl;else cout << "取款成功!" << endl;break; case 3: cout << "當(dāng)前賬戶余額為:" << A.getBalance() << endl;break;case 4: cout << "賬戶已退出!" <<endl;return 0;default:cout << "輸入錯誤!"<< endl; //判斷輸入菜單欄是否輸入正確exit(0);}cout << "" <<endl;} }測試
測試圖:
運行成功!
結(jié)語
以上就是本次C++的全部內(nèi)容,感謝您的閱讀和支持,篇幅較長,若有表述或者代碼中的不當(dāng)之處,望指出!您的指出和建議能給作者帶來很大的動力!!!
總結(jié)
以上是生活随笔為你收集整理的C++编程练习:设计一个银行账户类,包含户名、帐号以及当前余额属性,并且能完成开户、存款、取款和查询余额等行为。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库原理与应用(SQL Server)
- 下一篇: 微信小程序开发与应用 第一章 微信小程序