5C clear

PHOTO EMBED

Thu Jan 18 2024 00:04:47 GMT+0000 (Coordinated Universal Time)

Saved by @exam

import java.util.ArrayList;

class Account {
    protected String accountNumber;
    protected double balance;

    public Account(String accountNumber, double balance) {
        this.accountNumber = accountNumber;
        this.balance = balance;
    }

    public void deposit(double amount) {
        balance += amount;
        System.out.println("Deposited: $" + amount);
        printBalance();
    }

    public void withdraw(double amount) {
        if (amount <= balance) {
            balance -= amount;
            System.out.println("Withdrawn: $" + amount);
        } else {
            System.out.println("Insufficient funds");
        }
        printBalance();
    }

    public void printBalance() {
        System.out.println("Current Balance: $" + balance);
    }
}

class SavingsAccount extends Account {
    private double interestRate;

public SavingsAccount(String accountNumber, double balance, double interestRate) {
        super(accountNumber, balance);
        this.interestRate = interestRate;
    }

    public void applyInterest() {
        balance += balance * interestRate;
        System.out.println("Interest applied. Updated Balance: $" + balance);
    }
}

class CheckingAccount extends Account {
    private double overdraftLimit;

    public CheckingAccount(String accountNumber, double balance, double overdraftLimit) {
        super(accountNumber, balance);
        this.overdraftLimit = overdraftLimit;
    }

    @Override
    public void withdraw(double amount) {
        if (amount <= balance + overdraftLimit) {
            balance -= amount;
            System.out.println("Withdrawn: $" + amount);
        } else {
            System.out.println("Exceeded overdraft limit");
        }
        printBalance();
    }
}

class Customer {
    private String name;
    private ArrayList<Account> accounts;

    public Customer(String name) {
        this.name = name;
        this.accounts = new ArrayList<>();
    }

    public void addAccount(Account account) {
        accounts.add(account);
        System.out.println(name + " added an account: " + account.accountNumber);
    }

    public void printAccounts() {
        System.out.println(name + "'s Accounts:");
        for (Account account : accounts) {
            System.out.println(account.accountNumber);
        }
    }
}

class Employee {
    private String name;

    public Employee(String name) {
        this.name = name;
    }

    public void processTransaction(Account account, double amount) {
        account.deposit(amount);
    }
}

public class BankingApplication {
    public static void main(String[] args) {
        Customer customer1 = new Customer("John Doe");
        SavingsAccount savingsAccount = new SavingsAccount("SA123", 1000.0, 0.02);
        CheckingAccount checkingAccount = new CheckingAccount("CA456", 500.0, 200.0);

        customer1.addAccount(savingsAccount);
        customer1.addAccount(checkingAccount);
        customer1.printAccounts();

        Employee bankEmployee = new Employee("Bank Employee");
        bankEmployee.processTransaction(savingsAccount, 200.0);
        bankEmployee.processTransaction(checkingAccount, 300.0);

        savingsAccount.applyInterest();
    }
}
content_copyCOPY