文章目录

  • 例题
  • 分析
  • 代码
  • 测试
  • 结语

例题

设计一个银行账户(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 的字符串。

strcpy(mName, name);      //字符串复制函数

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++编程练习:设计一个银行账户类,包含户名、帐号以及当前余额属性,并且能完成开户、存款、取款和查询余额等行为。相关推荐

  1. 设计一个银行账户类,可以存钱、取钱、查钱、获取开户日期 内有测试类

    class bank 银行账户类 /* * 1.设计一个银行账户类,* 其中包括:账户信息:账号.姓名.开户时间.身份证号码.账户上的金额等成员.* 有:存款方法.取款方法.显示开户时间的方法.获得账 ...

  2. 信息系统开发(JAVA)设计一个银行账户类

    实验要求: 设计一个银行账户类,其中包括: • 账户信息,如帐号.姓名.开户时间.身份证号码等. • 存款方法. • 取款方法. • 其他方法如"查询余额"和"显示账户信 ...

  3. //设计银行账户类。包括帐号、姓名、开户时间、余额,成员方法包括存款、取款、查询余额,计算利息等。对所设计的类进行测试。

    import java.util.Scanner; public class Bank {//设计银行账户类.包括帐号.姓名.开户时间.余额,成员方法包括存款.取款.查询余额,计算利息等.对所设计的类 ...

  4. 【Java】设计银行账户类。包括帐号、姓名、开户时间、余额,成员方法包括存款、取款、查询余额,计算利息等。对所设计的类进行测试。

    设计银行账户类.包括帐号.姓名.开户时间.余额,成员方法包括存款.取款.查询余额,计算利息等.对所设计的类进行测试. 要求 代码 要求 设计银行账户类.包括帐号.姓名.开户时间.余额,成员方法包括存款 ...

  5. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数。 要求: (1)类

    先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码.地址.最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数. 要求: (1)类中的成员函数具有输入.输出 ...

  6. account表里有什么 银行_模拟一个银行账户类Account,账户类中包括所有者、账号、余额、账户总数、存款、取款等信息。_学小易找答案...

    [单选题]廉价磁盘冗余阵列RAID利用冗余技术实现高可靠性,其中RAID1的磁盘利用率为() . [简答题]与直流调速相比,交流调速有何优点? [论述题]方法 [单选题]以<老子注>一书驰 ...

  7. java存款输入密码类,创建一个银行账户类,包括账号、用户姓名、密码和余额属性,实现开户、查询余额、取款、存款功能。...

    用类与对象创建一个银行账户类.银行账户类包括账号.用户姓名.密码和余额属性,银行账户类的功能包括: 开户 查询余额 取款 存款 功能实现思路: 开户方法 Account(),创建账户的账号.密码.姓名 ...

  8. 5-8 构造一个银行账户类

    5-8 构造一个银行账户类,类的构成包括如下内容: 1)数据成员用户的账户名称.用户的账户余额(private数据类型) 2)方法包括开户(设置账户名称及余额),利用构造方法完成. 3)查询余额 cl ...

  9. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息月利息=存款金额x年利率+12(2)更改利率(静态方法)

    实验二:继承和派生程序设计(4学时)必做题: 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息 月利息=存 ...

最新文章

  1. docke容器无法访问宿主主机的端口
  2. Python实现二叉树的三种深度遍历方法!
  3. JavaWeb课程复习资料(九)——删除功能
  4. Linux环境搭建nginx负载
  5. python3-day4(装饰器)
  6. Kafka基本知识整理
  7. 恒生电子笔试题:LoopMove
  8. 网上购物系统c语言代码,网上购物系统源代码要怎么搭建才是最好的?
  9. matlab参数方程求导 求不定积分
  10. Java程序实现繁体字转换简体字
  11. Python的excel工作簿写入与读取操作
  12. 敏感词工具(sensitive word)的使用
  13. 2015062001 - 诸葛亮
  14. Unhandled promise rejection错误解决
  15. 7-6 计算存款利息 (10分)
  16. 神经网络芯片概念股,图神经网络预测股票
  17. 用python计算整数各位数字之和
  18. linux shell 三元运算符,语法 - Bash中的三元运算符(?:)
  19. ccf-csp 2013-2015题目总结
  20. 复现上篇文章故障得知:网卡错误56,Windows 仍在设置此设备的类配置的原因

热门文章

  1. 可算是有文章,把Linux零拷贝讲透彻了!
  2. 如果我问你:排序算法的「稳定性」有何意义?你怎么回答?
  3. LiveVideoStack线上分享第三季(十二):复杂网络下多码率视频流切换关键技术...
  4. 刘文峰:让科技成就艺术创意
  5. LiveVideoStackCon讲师热身分享 ( 十三 ) —— Intel QSV技术在FFmpeg中的实现与使用
  6. 张睿:OpenH264拥有产品级的鲁棒性 欢迎contribute
  7. 数据结构与算法之选择排序
  8. 腾讯TEG校招群聊天记录曝光,速来围观!
  9. 大牛书单 | 春节特辑
  10. 《视频直播技术详解》系列之七:现代播放器原理