Question: This Program does not implement interest class Account { public: Customer * customer; float balance; int account _ number; std::vector transaction; void add _ interest

This Program does not implement interest
class Account {
public:
Customer* customer;
float balance;
int account_number;
std::vector transaction;
void add_interest();
Account(Customer* c, double balance, int num)
: customer(c), balance(balance), account_number(num){}
int get_account_number() const {
return account_number;
}
double get_balance() const {
return balance;
}
// Member functions definitions
virtual void deposit(double amount, Date date)=0;
virtual void withdraw(double amount, Date date)=0;
virtual std::string to_string() const {
return "Account : "+ std::to_string(account_number)+"
"+
customer->get_name()+", balance: $"+ std::to_string(balance);
}
Customer* get_customer() const {
return customer;
}
};
class Savings_Account : public Account {
public:
Savings_Account(Customer* cust, double bal, int accNum) : Account(cust, bal, accNum){}
void deposit(double amount, Date date) override {
balance += amount;
transaction.push_back(new Transaction("DEP", amount, balance, date));
}
void withdraw(double amount, Date date) override {
if (balance - amount >=0){
balance -= amount;
transaction.push_back(new Transaction("WD", amount, balance, date));
} else {
std::cout << "Insufficient funds for withdrawal. Charging overdraft penalty." << std::endl;
balance -= Senior::OVERDRAFT_PENALTY; //OVERDRAFT PENALTY IS SAME FOR ALL ACCOUNTS
transaction.push_back(new Transaction("ODP", Senior::OVERDRAFT_PENALTY, balance, date));
}
}
void add_interest(){
double annual_interest_rate = get_annual_interest_rate();
double interest = balance * annual_interest_rate;
deposit(interest, Date(0,0,0)); // Assuming the interest is added on the current date
transaction.push_back(new Transaction("INT CR", interest, balance, Date(0,0,0)));
}
void check_charge(double amount) const {
double charge = amount * Student::CHECK_CHARGE;
std::cout << "Check charge: $"<< std::fixed << std::setprecision(2)<< charge << std::endl;
}
double get_annual_interest_rate() const {
if (dynamic_cast(customer)){
return Student::SAVINGS_INTEREST;
} else if (dynamic_cast(customer)){
return Senior::SAVINGS_INTEREST;
} else if (dynamic_cast(customer)){
return Adult::SAVINGS_INTEREST;
}
}
};
class Checking_Account : public Account {
public:
Checking_Account(Customer* cust, double bal, int accNum) : Account(cust, bal, accNum){}
void deposit(double amount, Date date) override {
balance += amount;
transaction.push_back(new Transaction("DEP", amount, balance, date));
}
void withdraw(double amount, Date date) override {
if (balance - amount >=0){
balance -= amount;
transaction.push_back(new Transaction("WD", amount, balance, date));
} else {
std::cout << "Insufficient funds for withdrawal. Charging overdraft penalty." << std::endl;
balance -= Senior::OVERDRAFT_PENALTY; // Assuming Senior overdraft penalty for any customer type in checking
transaction.push_back(new Transaction("ODP", Senior::OVERDRAFT_PENALTY, balance, date));
}
}
void add_interest(){
double annual_interest_rate = get_annual_interest_rate();
double interest = balance * annual_interest_rate;
deposit(interest, Date(0,0,0)); // Assuming the interest is added on the current date
transaction.push_back(new Transaction("INT CR", interest, balance, Date(0,0,0)));
}
void check_charge(double amount) const {
double charge = amount * Student::CHECK_CHARGE;
std::cout << "Check charge: $"<< std::fixed << std::setprecision(2)<< charge << std::endl;
}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!