A desktop-based Bank Management & ATM Simulation System developed using Java (Swing + AWT) and MySQL.
This project simulates real-world banking operations including account creation, authentication, and ATM transactions, following a structured multi-step workflow and clean object-oriented architecture.
The objective of this project is to design a complete banking application that demonstrates:
- Multi-step user registration system
- Secure login using Card Number & PIN
- Real-time transaction handling
- Database connectivity using JDBC
- Transaction consistency using commit & rollback
- Modular and scalable application design
- Language: Java
- UI Framework: Java Swing + AWT
- Database: MySQL
- Connectivity: JDBC (PreparedStatement)
- Architecture: Object-Oriented Programming (OOP)
- IDE: Eclipse
The application implements a three-step banking registration workflow:
- Signup Page 1: Personal Details
- Signup Page 2: Additional Information
- Signup Page 3: Account Setup & Banking Facilities
The system automatically generates a Account Number and Secure PIN, while maintaining data consistency across pages using a centralized SignupData model.
Users can log in using:
- Account Number
- PIN Number
Authentication is validated directly from the database, simulating ATM login behavior.
After successful login, users can perform:
- Deposit Money
- Withdraw Money
- Fast Cash Withdrawal
- Balance Enquiry
- Mini Statement
- PIN Change
Each transaction is stored in the transactions table, maintaining complete account history.
The application uses MySQL with JDBC PreparedStatement to securely manage banking data and prevent SQL injection.
The database structure is designed to maintain user information and transaction records across multiple modules.
-
signupone, signuptwo, signupthree
Store complete customer registration details collected during the multi-step signup process. -
atmlogin
Stores Account Number and PIN used for secure ATM authentication. -
transactions
Maintains deposit, withdrawal, and account activity history.
Transaction consistency is ensured using commit and rollback mechanisms during database operations.
- Multi-page form navigation with data persistence
- Smooth UI transitions with animations
- Random Card & PIN generation
- JDBC transaction handling
- Thread-based database execution
- Clean separation of UI and data logic
- Object-Oriented Design
- Event-Driven Programming
- JDBC Database Integration
- Exception Handling & Rollback
- Stateful Multi-Form Navigation
The registration process consists of multiple signup pages following a similar interface and workflow.
Follow the steps below to run the Bank Management System on your local machine.
Make sure the following software is installed:
- Java JDK 8 or above
- MySQL Server
- Eclipse IDE (or any Java IDE)
- MySQL JDBC Driver
git clone https://github.com/your-username/Bank-Management-System.git- Open Eclipse IDE
- Click on File → Import
- Select Existing Projects into Workspace
- Choose the cloned project folder
- Click Finish
Import the provided SQL script to automatically create the database and required tables.
- Open MySQL Workbench
- Click File → Open SQL Script
- Select:
database/bank.sql
- Click Execute (⚡) to run the script
Open Conn.java and update database credentials:
String url = "jdbc:mysql://localhost:3306/bankmanagementsystem";
String user = "root";
String password = "your_password";- Right click on project
- Build Path → Configure Build Path
- Libraries → Add External JARs
- Select
mysql-connector-java.jar
Run the main class:
Login.java
The application will start with the ATM Login Screen.
- Create Account using Signup pages
- Generate Account Number & PIN
- Login using generated credentials
- Perform ATM transactions

