Code:
import java.util.ArrayList;
import java.util.Scanner;
class Account {
private int custID;
private String custName;
private double balance;
private static double annualInterestRate = 0.03; // 3% annual interest rate
public Account(int custID, String custName, double balance) {
this.custID = custID;
this.custName = custName;
this.balance = balance;
}
public int getCustID() {
return custID;
}
public String getCustName() {
return custName;
}
public double getBalance() {
return balance;
}
public void deposit(double amount) {
balance += amount;
}
public void withdraw(double amount) {
if (amount <= balance) {
balance -= amount;
} else {
System.out.println("Insufficient balance.");
}
}
public void applyInterest() {
balance += balance * annualInterestRate;
}
public static void setAnnualInterestRate(double rate) {
annualInterestRate = rate;
}
}
public class AccountDriver {
public static void main(String[] args) throws Exception{
Scanner scanner = new Scanner(System.in);
ArrayList<Account> accounts = new ArrayList<>();
while (true) {
System.out.println("Menu:");
System.out.println("1. Add account");
System.out.println("2. Display individual account");
System.out.println("3. Display all accounts");
System.out.println("4. Deposit to individual account");
System.out.println("5. Withdraw from individual account");
System.out.println("6. Financial Year ending");
System.out.println("7. Exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();
scanner.nextLine(); // Consume the newline character
switch (choice) {
case 1:
System.out.print("Enter customer ID: ");
int custID = scanner.nextInt();
scanner.nextLine(); // Consume the newline character
System.out.print("Enter customer name: ");
String custName = scanner.nextLine();
System.out.print("Enter initial balance: ");
double initialBalance = scanner.nextDouble();
Account account = new Account(custID, custName,
initialBalance);
accounts.add(account);
System.out.println("Account added successfully!");
break;
case 2:
System.out.print("Enter customer ID to display account: ");
int displayCustID = scanner.nextInt();
displayIndividualAccount(accounts, displayCustID);
break;
case 3:
displayAllAccounts(accounts);
break;
case 4:
System.out.print("Enter customer ID for deposit: ");
int depositCustID = scanner.nextInt();
System.out.print("Enter deposit amount: ");
double depositAmount = scanner.nextDouble();
depositToIndividualAccount(accounts, depositCustID,
depositAmount);
break;
case 5:
System.out.print("Enter customer ID for withdrawal: ");
int withdrawCustID = scanner.nextInt();
System.out.print("Enter withdrawal amount: ");
double withdrawAmount = scanner.nextDouble();
withdrawFromIndividualAccount(accounts, withdrawCustID,
withdrawAmount);
break;
case 6:
for (Account acc : accounts) {
acc.applyInterest();
}
System.out.println("Interest applied for all accounts.");
break;
case 7:
System.out.println("Exiting the program.");
scanner.close();
System.exit(0);
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}
public static void displayIndividualAccount(ArrayList<Account> accounts, int
custID) {
for (Account account : accounts) {
if (account.getCustID() == custID) {
System.out.println("Customer ID: " + account.getCustID());
System.out.println("Customer Name: " + account.getCustName());
System.out.println("Balance: " + account.getBalance());
return;
}
}
System.out.println("Account not found with Customer ID: " + custID);
}
public static void displayAllAccounts(ArrayList<Account> accounts) {
System.out.println("All Accounts:");
for (Account account : accounts) {
System.out.println("Customer ID: " + account.getCustID());
System.out.println("Customer Name: " + account.getCustName());
System.out.println("Balance: " + account.getBalance());
System.out.println();
}
}
public static void depositToIndividualAccount(ArrayList<Account> accounts,
int custID, double amount) {
for (Account account : accounts) {
if (account.getCustID() == custID) {
account.deposit(amount);
System.out.println("Deposit successful. New balance: " +
account.getBalance());
return;
}
}
System.out.println("Account not found with Customer ID: " + custID);
}
public static void withdrawFromIndividualAccount(ArrayList<Account>
accounts, int custID, double amount) {
for (Account account : accounts) {
if (account.getCustID() == custID) {
account.withdraw(amount);
System.out.println("Withdrawal successful. New balance: " +
account.getBalance());
return;
}
}
System.out.println("Account not found with Customer ID: " + custID);
}
}
Screenshot: