我觉得我对语法有点困惑。我需要帮助将addtional数据成员添加到名为number的类帐户。我该怎么做?我尝试添加一个名为number的addtional数据成员,它将代表一个唯一的帐号。数据集合将用于定位帐户,因此需要一个consturctor /或编辑构造函数和“display”方法。
以下是Account.h的代码:
#define START_BALANCE 500.0
#define START_INTEREST_RATE 0.0175
// define Account class
class Account
{
private:
double balance;
doube interestRate;
public:
// constructor with default values
// set to default values if value(s) is/are not valid
Account(double initialBalance, double initialInterestRate);
// observers
double getBalance() const; // return balance
double getInterestRate() const; // return interestRate
void displayAccountInformation() const; // display formatted account information through cout
// transformers
bool deposit(double amount);
// disposit amount into account
// return false if unsuccessful (amount invalid, balance not changed)
// true otherwise
bool withdraw(double amount);
// withdraw amount from account
// return false if unsuccessful (amount invalid, balance not changed)
// true otherwise
void applyInterest(); // apply interestRate to balance
bool setInterestRate(double newRate);
// change interestRate to newRate
// return false if unsuccessful (newRate invalid, interestRate not changed)
// true otherwise
bool setBalance(double newBalance);
// change balance to newBalance
// return false if unsuccessful (newBalance invalid, balance not changed)
// true otherwise
}; // end Account
#endif
这是Account.cpp的代码
#include <iostream>
#include <iomanip>
#include "Account.h"
#include "ListDA.h"
using namespace std;
// constructor with default values
// set to default values if value(s) is/are not valid
Account::Account(double initialBalance = START_BALANCE, double initialInterestRate = START_INTEREST_RATE)
{
if (initialBalance >= 0)
balance = initialBalance;
else // initialBalance < 0
balance = START_BALANCE;
if (initialInterestRate >= 0 && initialInterestRate < 1)
interestRate = initialInterestRate;
else // initialInterestRate >= 1 or initialInterestRate < 0
interestRate = START_INTEREST_RATE;
} // end Account
// observers
double Account::getBalance() const
// return balance
{
return balance;
} // end getBalance
double Account::getInterestRate() const
// return interestRate
{
return interestRate;
} // end getInterestRate
void Account::displayAccountInformation() const
// display formatted account information through cout
{
cout << "Account Information" << endl
<< "Current Balance: $" << fixed << setprecision(2) << balance << endl
<< "Interest Rate: " << interestRate * 100 << "%" << endl;
} // end displayAccountInformation
// transformers
bool Account::deposit(double amount)
// disposit amount into account
// return false if unsuccessful (amount invalid, balance not changed)
// true otherwise
{
if (amount < 0) // invalid amount
return false;
balance += amount;
return true;
} // end deposit
bool Account::withdraw(double amount)
// withdraw amount from account
// return false if unsuccessful (amount invalid, balance not changed)
// true otherwise
{
if (amount < 0 || amount > balance) // invalid amount
return false;
balance -= amount;
return true;
} // end withdraw
void Account::applyInterest()
// apply interestRate to balance
{
balance *= 1.0 + interestRate;
} // end applyInterest
bool Account::setInterestRate(double newRate)
// change interestRate to newRate
// return false if unsuccessful (newRate invalid, interestRate not changed)
// true otherwise
{
if (newRate < 0 || newRate >= 1) // invalid newRate
return false;
interestRate = newRate;
return true;
} // end setInterestRate
bool Account::setBalance(double newBalance)
// change balance to newBalance
// return false if unsuccessful (newBalance invalid, balance not changed)
// true otherwise
{
if (newBalance < 0) // invalid balance
return false;
balance = newBalance;
return true;
} // end setBalance
任何建议都有帮助。感谢。
答案 0 :(得分:0)
balance
是数据成员,对吗?而且你有balance
的吸气剂和设定器,对吧?
因此,您可以为帐号添加类似的项目,但您可能会使用int
或long
。
然后,您需要决定如何初始化此新成员。一种方法是将它作为参数添加到构造函数中。
答案 1 :(得分:0)
如果我理解正确,您想要某种类型的唯一帐户ID,它将成为您班级中的实例变量吗?你拥有的是一个良好的开端,然后你只需在构造函数中设置它并创建像这样的set / get函数:
头:
class Account {
private:
double accountId; // or number (which you should not call it. makes no sense)
....
public:
Account(...) {
this->accountId = some unique number or something...
}
double getAccountId() const {
return this->accountId; // number
}
void setAccountId(double aid) {
this->accountId = aid;
}
....
};
但是,如果您真的希望数字是唯一的而不是由用户编辑(例如),我认为您不需要设置功能。
然后你必须问自己Id必须具有多大程度的独特性。如果我们正在谈论少量的账户并且如果一些id恰好相同则没有大的损害,我不会浪费太多的精力。例如,当apple存储他们的客户时,客户的Id必须尽可能独特,否则会发生许多可怕的事情。但是,如果您需要存储大型唯一字符串,则会占用大量空间。
你可以做的是使用rand()(http://www.cplusplus.com/reference/clibrary/cstdlib/rand/)生成一个随机的rumber并将它与其他一些与之相关的字符串/数字组合起来。帐户,或者只使用当前日期+时间(以毫秒为单位)。
答案 2 :(得分:0)
是的,当然是家庭作业......但是我会给Lea一个手。
Lea,数据成员是看起来像double balance;
和double interestRate;
的行。它们只是数据,而不是最后有括号的方法,如double getBalance() const;
或void applyInterest();