import java.util.
ArrayList;
import java.util.List;
import java.util.Scanner;
// BankAccount class
class BankAccount {
private String accountNumber;
private String accountHolder;
private double balance;
// Constructor
public BankAccount(String accountNumber, String accountHolder) { // Fixed comma between
parameters
this.accountNumber = accountNumber;
this.accountHolder = accountHolder;
this.balance = 0.0; // Initial balance is set to 0.0
// Deposit money into the account
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("Amount deposited successfully. Current Balance: " + balance);
} else {
System.out.println("Invalid amount. Please enter a positive number.");
// Withdraw money from the account
public void withdraw(double amount) {
if (amount <= 0) {
System.out.println("Invalid amount. Please enter a positive number.");
} else if (amount > balance) {
System.out.println("Insufficient balance. Transaction failed.");
} else {
balance -= amount;
System.out.println("Amount withdrawn successfully. Remaining Balance: " + balance);
// Transfer money to another bank account
public void transfer(BankAccount otherAccount, double amount) { // Fixed comma between
parameters
if (amount <= balance) {
this.withdraw(amount); // Withdraw from this account
otherAccount.deposit(amount); // Deposit into the other account
System.out.println("Transfer successful. New Balance: " + this.balance);
} else {
System.out.println("Insufficient balance. Transfer failed.");
// Display account details
public void displayAccountDetails() {
System.out.println("Account Number: " + accountNumber + " Account Holder: " +
accountHolder + " Balance: " + balance);
// Getters and Setters
public String getAccountNumber() { return accountNumber; }
public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; }
public String getAccountHolder() { return accountHolder; }
public void setAccountHolder(String accountHolder) { this.accountHolder = accountHolder; }
public double getBalance() { return balance; }
// BankManager class
class BankManager {
private List<BankAccount> accounts = new ArrayList<>();
// Create a new bank account
public void createAccount(String accountNumber, String accountHolder) { // Fixed comma
between parameters
BankAccount newAccount = new BankAccount(accountNumber, accountHolder);
accounts.add(newAccount);
System.out.println("New account created for " + accountHolder + " with Account Number: " +
accountNumber);
// Find an account by account number
private BankAccount findAccount(String accountNumber) {
for (BankAccount account : accounts) {
if (account.getAccountNumber().equals(accountNumber)) {
return account;
return null;
// Deposit money into an account
public void depositToAccount(String accountNumber, double amount) { // Fixed comma between
parameters
BankAccount account = findAccount(accountNumber);
if (account != null) {
account.deposit(amount);
} else {
System.out.println("Account not found.");
// Withdraw money from an account
public void withdrawFromAccount(String accountNumber, double amount) { // Fixed comma
between parameters
BankAccount account = findAccount(accountNumber);
if (account != null) {
account.withdraw(amount);
} else {
System.out.println("Account not found.");
// Transfer money between two accounts
public void transferBetweenAccounts(String fromAccountNumber, String toAccountNumber,
double amount) { // Fixed commas between parameters
BankAccount fromAccount = findAccount(fromAccountNumber);
BankAccount toAccount = findAccount(toAccountNumber);
if (fromAccount != null && toAccount != null) {
fromAccount.transfer(toAccount, amount);
} else {
System.out.println("One or both accounts not found.");
// Display details for all accounts
public void displayAllAccounts() {
for (BankAccount account : accounts) {
account.displayAccountDetails();
}
// Main class
public class BankingApplication {
private static BankManager manager = new BankManager();
public static void main(String[] args) {
startBanking(); // Start the banking operations
public static void startBanking() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("\\nWelcome to the Banking Application");
System.out.println("1. Create New Account");
System.out.println("2. Deposit Money");
System.out.println("3. Withdraw Money");
System.out.println("4. Transfer Money");
System.out.println("5. Display Account Details");
System.out.println("6. Exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();
scanner.nextLine(); // Consume newline
switch (choice) {
case 1:
createAccountUI(scanner);
break;
case 2:
depositUI(scanner);
break;
case 3:
withdrawUI(scanner);
break;
case 4:
transferUI(scanner);
break;
case 5:
manager.displayAllAccounts();
break;
case 6:
System.out.println("Thank you for using the Banking Application.");
return;
default:
System.out.println("Invalid choice. Please choose again.");
private static void createAccountUI(Scanner scanner) {
System.out.print("Enter Account Number: ");
String accountNumber = scanner.nextLine();
System.out.print("Enter Account Holder Name: ");
String accountHolder = scanner.nextLine();
manager.createAccount(accountNumber, accountHolder); // Fixed commas
}
private static void depositUI(Scanner scanner) {
System.out.print("Enter Account Number: ");
String accountNumber = scanner.nextLine();
System.out.print("Enter Amount to Deposit: ");
double amount = scanner.nextDouble();
scanner.nextLine(); // Consume newline
manager.depositToAccount(accountNumber, amount); // Fixed commas
private static void withdrawUI(Scanner scanner) {
System.out.print("Enter Account Number: ");
String accountNumber = scanner.nextLine();
System.out.print("Enter Amount to Withdraw: ");
double amount = scanner.nextDouble();
scanner.nextLine(); // Consume newline
manager.withdrawFromAccount(accountNumber, amount); // Fixed commas
private static void transferUI(Scanner scanner) {
System.out.print("Enter From Account Number: ");
String fromAccount = scanner.nextLine();
System.out.print("Enter To Account Number: ");
String toAccount = scanner.nextLine();
System.out.print("Enter Amount to Transfer: ");
double amount = scanner.nextDouble();
scanner.nextLine(); // Consume newline
manager.transferBetweenAccounts(fromAccount, toAccount, amount); // Fixed commas