【问题描述】
定义银行账户BankAccount类。
私有数据成员:余额balance(整型)。
公有成员方法:
无参构造方法BankAccount():将账户余额初始化为0;
带参构造方法BankAccount(int m):将账户余额初始化为指定的参数。
int getbalance() 方法:返回账户余额。
void withdraw(int m) 取款方法:从账户余额中提取m指定的款额,如果余额不足,给出” Insufficient balance.”。
void deposit(int m) 存款方法:将m指定的款项存到账户。
在main方法中构造银行账户,对其进行存取款操作。
其中操作类型类型为d表示存款,w表示取款,每次操作后打印账户余额。
【输入形式】
账户余额
存取款操作数
操作类型 金额
【输出形式】
操作后的账户余额。
【样例输入】
1000
5
w 400
d 100
w 500
w 300
w 100
【样例输出】
balance: 600
balance: 700
balance: 200
Insufficient balance.balance: 200
balance: 100
改进之处
-
在构造函数
BankAccount(int m)
中,你使用了cin
语句来获取输入。通常来说,构造函数不应该直接从用户输入中获取数据,因为这样的设计可能会导致不可预测的行为。建议在构造函数中只初始化成员变量,将用户输入放在main()
函数或其他适当的地方处理。 -
在循环中,你使用了
const int k = A.i;
来控制循环次数。然而,i
是BankAccount
类的一个公有成员变量,不应该暴露给外部。更好的方法是使用一个私有成员变量来记录循环次数,并提供一个公有的成员函数来获取该值。 -
易错在用户输入
'd'
时,你使用了if (way == 'd')
,但是没有相应的else if
来处理用户输入'w'
。这意味着如果用户输入的是'w'
,程序会执行下一个if
语句,即使用户输入的不是'd'
。你可以使用else if
来修正这个问题。 -
在最后的
else
语句中,你使用return 0;
来结束程序。这样做会导致程序在用户输入其他字符时立即退出,而不是等待用户继续输入。你可以考虑使用循环来持续接受用户输入,直到用户选择退出。
#include<iostream>
using namespace std;
class BankAccount {
private:
int balance;
public:
int i = 0;
BankAccount() {}
BankAccount(int m) :balance(m) { }
int getbalance();
void withdraw(int m);
void deposit(int m);
};
void BankAccount::withdraw(int m)
{
if (m <= balance)
{
balance -= m;
cout << "balance:" << balance << endl;
}
else
{
cout << "Insufficient balance:" << balance<<endl;
}
}
void BankAccount::deposit(int m)
{
balance += m;
cout << "balance:" << balance << endl;
}
int main()
{
int m;
int j,i;
cin >> m ;
BankAccount A(m);
cin >> i;
for (j = 0; j<i; j++)
{
int a;
char way;
cin >> way;
if (way == 'w')
{
cin >> a;
A.withdraw(a);
}
else if (way == 'd')
{
cin >> a;
A.deposit(a);
}
else
{
return 0;
}
}
return 0;
}