Mini Banking Application in Java

Last Updated : 3 Oct, 2026

A Mini Banking Application in Java is a console-based project that demonstrates how Java applications can interact with a MySQL database using JDBC (Java Database Connectivity). It performs basic banking operations while using database transactions to maintain data consistency during money transfers.

  • Allows users to create an account and log in.
  • Enables users to view their current account balance.
  • Supports money transfers between customer accounts.
  • Uses JDBC transaction management with commit() and rollback() to ensure reliable transactions.

Prerequisite

Step-by-Step Implementation

Step 1: Eclipse Project Setup

1. Create Java Project:

  1. Open Eclipse.
  2. File -> New -> Java Project ->Name it MiniBankingApp.

2. Create Package

  • Right-click src-> New ->Package ->Name it: banking.

3. Create Java Classes

Inside banking package, create:

  • Bank.java
  • BankManagement.java
  • DatabaseConnection.java

Project structure:

4. Add MySQL JDBC Connector

  1. Download MySQL JDBC Connector .jar file.
  2. Create a folder lib in your project.
  3. Copy .jar into lib.
  4. Right-click project -> Build Path ->Configure Build Path -> Libraries -> Add External JARs >->select the connector.

Step 2: Database Setup (MySQL)

Create Database name bank

CREATE DATABASE BANK;

Create Table name customer

Java
CREATE DATABASE BANK;

USE BANK;

CREATE TABLE customer (
    ac_no INT NOT NULL AUTO_INCREMENT,
    cname VARCHAR(45) UNIQUE NOT NULL,
    balance INT DEFAULT 1000,
    pass_code INT NOT NULL,
    PRIMARY KEY (ac_no)
);
out
output

Step 3: Create DataBase Connection Class

This class is used to load the JDBC driver and establish DB connection.And It use DriverManager.getConnection() with MySQL credentials.

DatabaseConnection.java

Java
package banking;

import java.sql.Connection;
import java.sql.DriverManager;

public class DatabaseConnection {

    private static Connection con;

    public static Connection getConnection() {
        try {
            String url = "jdbc:mysql://localhost:3306/BANK";
            String user = "root";
            String pass = "your_mysql_password";

            con = DriverManager.getConnection(url, user, pass);
        }
        catch (Exception e) {
            System.out.println(
                "Connection Failed! " + e.getMessage()
            );
        }

        return con;
    }
}

Step 4: Business Logic Class

This class handles core operations like account creation and fund transfer. Use PreparedStatement for secure, parameterized queries.

bankManagement.java

Java
package banking;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;

public class BankManagement {

    private static final int NULL = 0;
    static Connection con
        = DatabaseConnection.getConnection();
    // Create Account
    public static boolean createAccount(String name,
                                        int passCode)
    {
        if (name.isEmpty() || passCode == NULL) {
            System.out.println("All fields are required!");
            return false;
        }

        try {
            String sql
                = "INSERT INTO customer(cname, balance, pass_code) VALUES (?, 1000, ?)";
            PreparedStatement ps
                = con.prepareStatement(sql);
            ps.setString(1, name);
            ps.setInt(2, passCode);

            int rows = ps.executeUpdate();
            if (rows == 1) {
                System.out.println(
                    "Account created successfully! You can now login.");
                return true;
            }
        }
        catch (SQLIntegrityConstraintViolationException e) {
            System.out.println(
                "Username already exists! Try another one.");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    // Login Account
    public static boolean loginAccount(String name,
                                       int passCode)
    {
        if (name.isEmpty() || passCode == NULL) {
            System.out.println("All fields are required!");
            return false;
        }

        try {
            String sql
                = "SELECT * FROM customer WHERE cname = ? AND pass_code = ?";
            PreparedStatement ps
                = con.prepareStatement(sql);
            ps.setString(1, name);
            ps.setInt(2, passCode);
            ResultSet rs = ps.executeQuery();

            BufferedReader sc = new BufferedReader(
                new InputStreamReader(System.in));

            if (rs.next()) {
                int senderAc = rs.getInt("ac_no");
                int ch;

                while (true) {
                    System.out.println(
                        "\n Hello, " + rs.getString("cname")
                        + "! What would you like to do?");
                    System.out.println("1) Transfer Money");
                    System.out.println("2) View Balance");
                    System.out.println("3) Logout");
                    System.out.print("Enter Choice: ");
                    ch = Integer.parseInt(sc.readLine());

                    if (ch == 1) {
                        System.out.print(
                            "Enter Receiver A/c No: ");
                        int receiverAc = Integer.parseInt(
                            sc.readLine());
                        System.out.print("Enter Amount: ");
                        int amt = Integer.parseInt(
                            sc.readLine());

                        if (transferMoney(senderAc,
                                          receiverAc,
                                          amt)) {
                            System.out.println(
                                "Transaction successful!");
                        }
                        else {
                            System.out.println(
                                "Transaction failed! Please try again.");
                        }
                    }
                    else if (ch == 2) {
                        getBalance(senderAc);
                    }
                    else if (ch == 3) {
                        System.out.println(
                            "Logged out successfully. Returning to main menu.");
                        break;
                    }
                    else {
                        System.out.println(
                            "Invalid choice! Try again.");
                    }
                }
                return true;
            }
            else {
                System.out.println(
                    "Invalid username or password!");
                return false;
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    // Get Balance
    public static void getBalance(int acNo)
    {
        try {
            String sql
                = "SELECT * FROM customer WHERE ac_no = ?";
            PreparedStatement ps
                = con.prepareStatement(sql);
            ps.setInt(1, acNo);
            ResultSet rs = ps.executeQuery();

            System.out.println(
                "\n-------------------------------------------------");
            System.out.printf("%12s %15s %10s\n",
                              "Account No", "Customer Name",
                              "Balance");

            while (rs.next()) {
                System.out.printf("%12d %15s %10d.00\n",
                                  rs.getInt("ac_no"),
                                  rs.getString("cname"),
                                  rs.getInt("balance"));
            }
            System.out.println(
                "-------------------------------------------------");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

    // Transfer Money
    public static boolean transferMoney(int sender_ac,
                                        int receiver_ac,
                                        int amount)
    {
        if (receiver_ac == NULL || amount == NULL) {
            System.out.println("All fields are required!");
            return false;
        }

        try {
            con.setAutoCommit(false);

            String checkBalance
                = "SELECT balance FROM customer WHERE ac_no = ?";
            PreparedStatement ps
                = con.prepareStatement(checkBalance);
            ps.setInt(1, sender_ac);
            ResultSet rs = ps.executeQuery();

            if (rs.next()
                && rs.getInt("balance") < amount) {
                System.out.println("Insufficient Balance!");
                return false;
            }

            String debit
                = "UPDATE customer SET balance = balance - ? WHERE ac_no = ?";
            PreparedStatement psDebit
                = con.prepareStatement(debit);
            psDebit.setInt(1, amount);
            psDebit.setInt(2, sender_ac);
            psDebit.executeUpdate();

            String credit
                = "UPDATE customer SET balance = balance + ? WHERE ac_no = ?";
            PreparedStatement psCredit
                = con.prepareStatement(credit);
            psCredit.setInt(1, amount);
            psCredit.setInt(2, receiver_ac);
            psCredit.executeUpdate();

            con.commit();
            return true;
        }
        catch (Exception e) {
            try {
                con.rollback();
            }
            catch (SQLException ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        }
        return false;
    }
}

Step 5: User Interface Class

This class provide a user-friendly, text-based menu to perform banking operations.

Options include.

  • create account.
  • login.
  • view balance.
  • transfer money.

bank.java

Java
package banking;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Bank {
    public static void main(String[] args) {

        BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
        String name;
        int pass_code;
        int ch;

        while (true) {
            System.out.println("\n===============================");
            System.out.println(" Welcome to InBank ");
            System.out.println("===============================");
            System.out.println("1) Create Account");
            System.out.println("2) Login Account");
            System.out.println("3) Exit");

            try {
                System.out.print("\nEnter Choice: ");
                ch = Integer.parseInt(sc.readLine());

                switch (ch) {
                    case 1 -> {
                        System.out.print("Enter Unique Username: ");
                        name = sc.readLine();
                        System.out.print("Enter Password: ");
                        pass_code = Integer.parseInt(sc.readLine());

                        if (BankManagement.createAccount(name, pass_code)) {
                            System.out.println("You can now login from the main menu.");
                        }
                    }
                    case 2 -> {
                        System.out.print("Enter Username: ");
                        name = sc.readLine();
                        System.out.print("Enter Password: ");
                        pass_code = Integer.parseInt(sc.readLine());

                        if (!BankManagement.loginAccount(name, pass_code)) {
                            System.out.println("Login failed. Try again.");
                        }
                    }
                    case 3 -> {
                        System.out.println("Thank you for using InBank! Goodbye.");
                        System.exit(0);
                    }
                    default -> System.out.println("Invalid input! Please try again.");
                }

            } catch (Exception e) {
                System.out.println("Please enter a valid input!");
            }
        }
    }
}

Step 6: Run the Application

Run bank.java from Eclipse to launch the menu-driven interface. Test various features like account creation and money transfer.

===============================

Welcome to InBank

===============================

1) Create Account

2) Login Account

3) Exit

Enter Choice: 2

Enter Username: pritesh

Enter Password: 123

Hello, pritesh! What would you like to do?

1) Transfer Money

2) View Balance

3) Logout

Enter Choice: 2

-------------------------------------------------

Account No Customer Name Balance

112 pritesh 1000.00

-------------------------------------------------

Enter Choice: 1

Enter Receiver A/c No: 110

Enter Amount: 5000

Insufficient Balance!

Transaction failed! Please try again.

Enter Choice: 3

Logged out successfully.

Returning to main menu.

out1
out2
Comment