如何向Account类添加其他数据成员“number”?

时间:2012-03-28 01:10:21

标签: c++

我觉得我对语法有点困惑。我需要帮助将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

任何建议都有帮助。感谢。

3 个答案:

答案 0 :(得分:0)

balance是数据成员,对吗?而且你有balance的吸气剂和设定器,对吧?

因此,您可以为帐号添加类似的项目,但您可能会使用intlong

然后,您需要决定如何初始化此新成员。一种方法是将它作为参数添加到构造函数中。

答案 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();