import java.util.
ArrayList;
import java.util.Scanner;
// Account class representing a bank account
class Account {
private String accountNumber;
private String accountHolder;
private double balance;
public Account(String accountNumber, String accountHolder, double balance) {
this.accountNumber = accountNumber;
this.accountHolder = accountHolder;
this.balance = balance;
public String getAccountNumber() {
return accountNumber;
public String getAccountHolder() {
return accountHolder;
public double getBalance() {
return balance;
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("Successfully deposited. Deposit Amount=" + amount);
} else {
System.out.println("Deposit amount must be greater than zero.");
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
System.out.println("Successfully withdrew. Withdraw Amount= " + amount);
} else {
System.out.println("Insufficient balance or invalid amount.");
}
// Bank class to manage multiple accounts
class Bank {
private ArrayList<Account> accounts;
public Bank() {
accounts = new ArrayList<>();
public void createAccount(String accountNumber, String accountHolder, double initialDeposit) {
if (findAccount(accountNumber) != null) {
System.out.println("Account with this number already exists.");
return;
Account newAccount = new Account(accountNumber, accountHolder, initialDeposit);
accounts.add(newAccount);
System.out.println("Account successfully created.");
public Account findAccount(String accountNumber) {
for (Account account : accounts) {
if (account.getAccountNumber().equals(accountNumber)) {
return account;
return null;
public void deposit(String accountNumber, double amount) {
Account account = findAccount(accountNumber);
if (account != null) {
account.deposit(amount);
} else {
System.out.println("Account not found.");
public void withdraw(String accountNumber, double amount) {
Account account = findAccount(accountNumber);
if (account != null) {account.withdraw(amount);
} else {
System.out.println("Account not found.");
}
public void checkBalance(String accountNumber) {
Account account = findAccount(accountNumber);
if (account != null) {
System.out.println("Account Holder: " + account.getAccountHolder());
System.out.println("Balance: " + account.getBalance());
} else {
System.out.println("Account not found.");
// Main class to run the program
public class BankAccountSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Bank bank = new Bank();
while (true) {
System.out.println("\n--- Bank Account System ---");
System.out.println("1. Create Account");
System.out.println("2. Deposit Money");
System.out.println("3. Withdraw Money");
System.out.println("4. Check Balance");System.out.println("5. Exit");
System.out.print("Choose an option: ");
int choice = scanner.nextInt();
scanner.nextLine(); // Consume newline
switch (choice) {
case 1:
System.out.print("Enter Account Number: ");
String accountNumber = scanner.nextLine();
System.out.print("Enter Account Holder Name: ");
String accountHolder = scanner.nextLine();
System.out.print("Enter Initial Deposit: ");
double initialDeposit = scanner.nextDouble();
bank.createAccount(accountNumber, accountHolder, initialDeposit);
break;
case 2:
System.out.print("Enter Account Number: ");
accountNumber = scanner.nextLine();
System.out.print("Enter Deposit Amount: ");
double depositAmount = scanner.nextDouble();
bank.deposit(accountNumber, depositAmount);
break;
case 3:
System.out.print("Enter Account Number: ");
accountNumber = scanner.nextLine();
System.out.print("Enter Withdrawal Amount: ");
double withdrawalAmount = scanner.nextDouble();
bank.withdraw(accountNumber, withdrawalAmount);
break;case 4:
System.out.print("Enter Account Number: ");
accountNumber = scanner.nextLine();
bank.checkBalance(accountNumber);
break;
case 5:
System.out.println("Exiting the program. Goodbye!");
scanner.close();
return;
default:
System.out.println("Invalid choice. Please try again.");