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