Assignment 6:
import java.util.HashMap;
import java.util.Map;
class BankOperationsManager {
private static BankOperationsManager instance;
private Map<String, Account> accounts;
private BankOperationsManager() {
accounts = new HashMap<>();
}
public static BankOperationsManager getInstance() {
if (instance == null) {
instance = new BankOperationsManager();
}
return instance;
}
public String openNewAccount(String accountHolderName, String accountType)
{
Account account = new Account(accountHolderName, accountType);
accounts.put(account.getAccountNumber(), account);
System.out.println("New account successfully created! Your account
number is : " + account.getAccountNumber());
return account.getAccountNumber();
}
public void closeAccount(String accountNumber) {
Account account = accounts.remove(accountNumber);
if (account != null) {
System.out.println("Account CLOSED succesfully : " +
accountNumber);
} else {
System.out.println("Account not found ");
}
}
public void deposit(String accountNumber, double amount) {
Account account = accounts.get(accountNumber);
if (account != null) {
account.deposit(amount);
System.out.println("Deposit of Rs " + amount + " successful for
account : " + accountNumber);
} else {
System.out.println("Account not found: " + accountNumber);
}
}
public void withdraw(String accountNumber, double amount) {
Account account = accounts.get(accountNumber);
if (account != null) {
if (account.withdraw(amount)) {
System.out.println("Withdrawal of Rs " + amount + " successful
from account: " + accountNumber);
} else {
System.out.println("Insufficient funds for account: " +
accountNumber);
}
} else {
System.out.println("Account not found, with Account number: " +
accountNumber);
}
}
}
class Account {
private String accountHolderName;
private String accountType;
private double balance;
private static int lastAccountNumber = 1000;
public Account(String accountHolderName, String accountType) {
this.accountHolderName = accountHolderName;
this.accountType = accountType;
this.balance = 0;
lastAccountNumber++;
}
public String getAccountNumber() {
return String.format("12300%1d", lastAccountNumber);
}
public void deposit(double amount) {
balance += amount;
}
public boolean withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
return true;
}
return false;
}
}
public class Main {
public static void main(String[] args) {
BankOperationsManager manager = BankOperationsManager.getInstance();
String johnAccountNumber = manager.openNewAccount("John Doe",
"Savings");
String janeAccountNumber = manager.openNewAccount("Jane Smith",
"Checking");
manager.deposit(johnAccountNumber, 1000);
manager.withdraw(johnAccountNumber, 500);
manager.closeAccount(janeAccountNumber);
}
}
Output: