CODE:

import java.util.Scanner;
 
class Account {
    String name, type;
    int accNo;
    double balance;
 
    void deposit(double amount) {
        balance += amount;
    }
 
    void withdraw(double amount) {
        if (amount <= balance) balance -= amount;
        else System.out.println("Insufficient balance");
    }
 
    void displayBalance() {
        System.out.println("Balance: " + balance);
    }
}
 
class SavingsAccount extends Account {
    void computeInterest() {
        double interest = balance * 0.03;
        balance += interest;
        System.out.println("Interest added: " + interest);
    }
}
 
class CurrentAccount extends Account {
    void checkMinimum() {
        if (balance < 500) {
            System.out.println("Balance below minimum. Imposing penalty of 100");
            balance -= 100;
        }
    }
}
 
public class Bank {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter number of accounts: ");
        int n = sc.nextInt();
 
        for (int i = 0; i < n; i++) {
            System.out.println("\nAccount " + (i + 1));
            System.out.print("Enter name: ");
            String name = sc.next();
            System.out.print("Enter account number: ");
            int accNo = sc.nextInt();
            System.out.print("Enter account type (savings/current): ");
            String type = sc.next();
            System.out.print("Enter initial balance: ");
            double balance = sc.nextDouble();
 
            if (type.equalsIgnoreCase("savings")) {
                SavingsAccount sa = new SavingsAccount();
                sa.name = name;
                sa.accNo = accNo;
                sa.type = type;
                sa.balance = balance;
 
                System.out.print("Enter deposit amount: ");
                sa.deposit(sc.nextDouble());
                sa.computeInterest();
                System.out.print("Enter amount to withdraw: ");
                sa.withdraw(sc.nextDouble());
                sa.displayBalance();
 
            } else if (type.equalsIgnoreCase("current")) {
                CurrentAccount ca = new CurrentAccount();
                ca.name = name;
                ca.accNo = accNo;
                ca.type = type;
                ca.balance = balance;
 
                System.out.print("Enter deposit amount: ");
                ca.deposit(sc.nextDouble());
                System.out.print("Enter amount to withdraw: ");
                ca.withdraw(sc.nextDouble());
                ca.checkMinimum();
                ca.displayBalance();
 
            } else {
                System.out.println("Invalid account type");
            }
        }
    }
}

OUTPUT:

Enter number of accounts: 1
 
Account 1
Enter name: Achu
Enter account number: 34452
Enter account type (savings/current): savings
Enter initial balance: 15000
Enter deposit amount: 500
Interest added: 465.0
Enter amount to withdraw: 700
Balance: 15265.0