111 lines
		
	
	
		
			No EOL
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			No EOL
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
// Account class
 | 
						|
class Account {
 | 
						|
    private String customerName;
 | 
						|
    private int accountNumber;
 | 
						|
    private double balance;
 | 
						|
    private String accountType;
 | 
						|
 | 
						|
    public Account(String customerName, int accountNumber, double balance, String accountType) {
 | 
						|
        this.customerName = customerName;
 | 
						|
        this.accountNumber = accountNumber;
 | 
						|
        this.balance = balance;
 | 
						|
        this.accountType = accountType;
 | 
						|
    }
 | 
						|
 | 
						|
    protected double getBalanceInternal() {
 | 
						|
        return balance;
 | 
						|
    }
 | 
						|
 | 
						|
    public void deposit(double amount) {
 | 
						|
        balance += amount;
 | 
						|
    }
 | 
						|
 | 
						|
    public void withdraw(double amount) {
 | 
						|
        balance -= amount;
 | 
						|
    }
 | 
						|
 | 
						|
    public double getBalance() {
 | 
						|
        return balance;
 | 
						|
    }
 | 
						|
 | 
						|
    public String getAccountType() {
 | 
						|
        return accountType;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// SavingsAccount class
 | 
						|
class SavingsAccount extends Account {
 | 
						|
    private double interestRate;
 | 
						|
 | 
						|
    public SavingsAccount(String customerName, int accountNumber, double balance, double interestRate) {
 | 
						|
        super(customerName, accountNumber, balance, "Savings");
 | 
						|
        this.interestRate = interestRate;
 | 
						|
    }
 | 
						|
 | 
						|
    public void computeInterest() {
 | 
						|
        double interest = getBalanceInternal() * interestRate / 100;
 | 
						|
        deposit(interest);
 | 
						|
    }
 | 
						|
 | 
						|
    public void withdraw(double amount) {
 | 
						|
        if (amount > getBalanceInternal()) {
 | 
						|
            System.out.println("Insufficient balance");
 | 
						|
        } else {
 | 
						|
            super.withdraw(amount);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// CurrentAccount class
 | 
						|
class CurrentAccount extends Account {
 | 
						|
    private double minimumBalance;
 | 
						|
    private double serviceTax;
 | 
						|
 | 
						|
    public CurrentAccount(String customerName, int accountNumber, double balance, double minimumBalance, double serviceTax) {
 | 
						|
        super(customerName, accountNumber, balance, "Current");
 | 
						|
        this.minimumBalance = minimumBalance;
 | 
						|
        this.serviceTax = serviceTax;
 | 
						|
    }
 | 
						|
 | 
						|
    public void checkMinimumBalance() {
 | 
						|
        if (getBalanceInternal() < minimumBalance) {
 | 
						|
            withdraw(serviceTax);
 | 
						|
            System.out.println("Service tax imposed");
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public void withdraw(double amount) {
 | 
						|
        if (amount > getBalanceInternal()) {
 | 
						|
            System.out.println("Insufficient balance");
 | 
						|
        } else {
 | 
						|
            super.withdraw(amount);
 | 
						|
            checkMinimumBalance();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// Main function
 | 
						|
public class AccountManagement {
 | 
						|
    public static void main(String[] args) {
 | 
						|
        SavingsAccount saurabhAccount = new SavingsAccount("Saurabh", 1234, 10000, 5);
 | 
						|
        CurrentAccount akhilAccount = new CurrentAccount("Akhil", 5678, 5000, 1000, 500);
 | 
						|
 | 
						|
        System.out.println("Initial balances:");
 | 
						|
        System.out.println("Saurabh's balance: " + saurabhAccount.getBalance());
 | 
						|
        System.out.println("Akhil's balance: " + akhilAccount.getBalance());
 | 
						|
 | 
						|
        saurabhAccount.deposit(5000);
 | 
						|
        System.out.println("Saurabh's balance after deposit: " + saurabhAccount.getBalance());
 | 
						|
        saurabhAccount.computeInterest();
 | 
						|
        System.out.println("Saurabh's balance after interest: " + saurabhAccount.getBalance());
 | 
						|
        saurabhAccount.withdraw(2000);
 | 
						|
        System.out.println("Saurabh's balance after withdrawal: " + saurabhAccount.getBalance());
 | 
						|
 | 
						|
        akhilAccount.deposit(2000);
 | 
						|
        System.out.println("Akhil's balance after deposit: " + akhilAccount.getBalance());
 | 
						|
        akhilAccount.withdraw(3000);
 | 
						|
        System.out.println("Akhil's balance after withdrawal: " + akhilAccount.getBalance());
 | 
						|
        akhilAccount.checkMinimumBalance();
 | 
						|
        System.out.println("Akhil's balance after checking minimum balance: " + akhilAccount.getBalance());
 | 
						|
    }
 | 
						|
} |