新手请教C++ Account类 问题

gtrr34jjr 2008-02-04 04:20:34
最近在自学C++,在做自测题的时候遇到了些问题,请高手帮忙解答一下。

要求建立Account类,类包含一个类型为int的数据成员,表示余额。
构造函数确认初始余额的有效性,保证它》=0,否则余额设为0。
该类提供3个成员函数,
credit将一笔金额加到余额中
debit从这个account中取钱,保证取出金额不超过此account余额。
geBlance将返回当前余额。
编写测试程序,创建两个Account对象,测试类的成员函数。

我是这样定义成员函数的,希望懂得朋友能帮忙改正,如果错得太离谱请见笑
Account::Account(int AccountBalance)
{
if ( AccountBalance>=0)
AccountBalance=AccountBalance;
else
AccountBalance=0;
{
cout<<"initial balance is invalid"<<endl;
}

}

void Account::credit(int creditAmount)
{
AccountBalance=AccountBalance+creditAmount;
}

void Account::debit(int debitAmount)
{
AccountBalance=AccountBalance-debitAmount;

if (debitAmount>AccountBalance)
{
AccountBalance=AccountBalance;
cout<<"debit amount exceeded account balance"<<endl;
}
}

int Account::getBalance()
{
return AccountBalance;
}
...全文
650 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
接分是王道!
gtrr34jjr 2008-02-06
  • 打赏
  • 举报
回复
非常感谢大家的帮忙。

但是在写执行程序的时候又碰上了点儿麻烦,要求建立两个Account对象测试函数成员。
我不是太很明白是什么意思,请懂的人指教下。谢谢。
strangefay 2008-02-05
  • 打赏
  • 举报
回复
// 修改一下构造函数
Account::Account(int balance) // 参数命名最好不要重复
{
if(balance >= 0)
{ // if 后面记得打括号
AccountBalance = balance;
}
else
{ // else 后面也记得打括号
AccountBalance = 0;
cout << "Initial balance is invalid." << endl;
}
}

// 修改一下 debit
void Account::debit(int debitAmount)
{
// 先判断再处理
if(debitAmount > AccountBalance)
{
cout << "Debit amount exceeded account balance." << endl;
}
else
{
AccountBalance -= debitAmount; // 减去提款数
}
}

zhangyue02135 2008-02-05
  • 打赏
  • 举报
回复
要是多线程的话,存钱与取钱还需要加锁。这是一个互斥操作。
h263plus 2008-02-05
  • 打赏
  • 举报
回复 1
看看这个接口定义:
void credit(int creditAmount);
void debit(int debitAmount);


如果我这样调用会有什么结果:

Account ac;
ac.debit(-10000);

呵呵,我发财了
MoonAndWind 2008-02-04
  • 打赏
  • 举报
回复
楼上的很正确,代码写得也很规范,看起来也舒服。
LZ代码没有注意对齐,代码规范很重要的!

一点小建议~
vrace 2008-02-04
  • 打赏
  • 举报
回复
构造函数和提款那个函数要改改吧

// 修改一下构造函数
Account::Account(int balance) // 参数命名最好不要重复
{
if(balance >= 0)
{ // if 后面记得打括号
AccountBalance = balance;
}
else
{ // else 后面也记得打括号
AccountBalance = 0;
cout << "Initial balance is invalid." << endl;
}
}

// 修改一下 debit
void Account::debit(int debitAmount)
{
// 先判断再处理
if(debitAmount > AccountBalance)
{
cout << "Debit amount exceeded account balance." << endl;
}
else
{
AccountBalance -= debitAmount; // 减去提款数
}
}
HelloDan 2008-02-04
  • 打赏
  • 举报
回复

#include<iostream>

using namespace std;

class Account
{
public:
Account(int val=0):Balance(val) // default constructor
{
if(Balance<0)
{
Balance=0; // Ensure AccountBalance is greater or equal to 0
//cout<<"initial balance is invalid"<<endl;
}
}
void credit(int creditAmount);
void debit(int debitAmount);
int getBalance() const;
private:
int Balance;
};

void Account::credit(int creditAmount)
{
Balance+=creditAmount;
}

void Account::debit(int debitAmount)
{
if(debitAmount>Balance)
cout << "Debit amount exceeded account balance." << endl;
else
Balance-=debitAmount;
}

int Account::getBalance() const
{
int val=Balance;
return val;
}


int main()
{
Account ac;
cout<<ac.getBalance()<<endl;
return 0;
}

buyong 2008-02-04
  • 打赏
  • 举报
回复
在VC里对齐代码可以全选,然后alt+F8

33,323

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧