A professional desktop-based banking application developed using Java Swing and MySQL. This project simulates a real-world ATM experience, covering everything from secure account registration to real-time transaction history.
| Login Screen | Transaction Section |
|---|---|
![]() |
![]() |
- Secure Transactions: Uses
PreparedStatementto prevent SQL Injection attacks. - Dynamic Calculations: Real-time balance enquiry calculated from transaction history.
- User-Friendly GUI: Built with a multi-window interface using Java Swing and AWT.
- Automated Logic: Auto-generates 16-digit Card Numbers and 4-digit PINs.
- 3-Step Registration: Captures personal, professional, and account-specific details.
- Secure Authentication: Login system validated against the MySQL database.
- PIN Management: Securely change your ATM PIN within the app.
- Deposit & Withdrawal: Instant updates to the database records.
- Fast Cash: Quick-select buttons for common withdrawal amounts.
- Mini Statement: View the last 10 transactions with exact date and time stamps.
- Balance Enquiry: Instant check of current available funds.
| Component | Technology |
|---|---|
| Language | Java (JDK 8+) |
| GUI Framework | Java Swing & AWT |
| Database | MySQL |
| Connectivity | JDBC (Java Database Connectivity) |
A[Start: Login Screen] -->|New User| B[Step 1: Personal Info]
B --> C[Step 2: Professional Info]
C --> D[Step 3: Account Details]
D --> E[Card & PIN Generated]
E --> A
A -->|Existing User| F{Authentication}
F -->|Success| G[Main ATM Menu]
F -->|Fail| A
G --> H[Deposit / Withdraw]
G --> I[Balance Enquiry]
G --> J[Mini Statement]
H --> K[Update Transaction Table]
K --> G
The system uses a relational database to manage user information and financial logs.
CREATE TABLE signupone (
formno VARCHAR (10) ,
name VARCHAR (50),
fname varchar(50),
dob DATE,
gender VARCHAR(10),
email VARCHAR(50),
mstatus VARCHAR(15),
address VARCHAR(100),
city VARCHAR(50),
state VARCHAR(50),
pincode VARCHAR(10)
);CREATE TABLE signuptwo (
formno VARCHAR(10) PRIMARY KEY,
religion VARCHAR(15),
category VARCHAR(15),
income VARCHAR(30),
education VARCHAR(30),
occupation VARCHAR(30),
pan VARCHAR(20),
aadhar VARCHAR(20),
seniorcitizen VARCHAR(5),
existingaccount VARCHAR(5)
);CREATE TABLE signupthree (
formno VARCHAR(10),
accounttype VARCHAR(30),
cardnumber VARCHAR(20),
pin VARCHAR(10),
services VARCHAR(200)
);CREATE TABLE bank (
pin VARCHAR(10),
date VARCHAR(50),
type VARCHAR(30),
amount INT
);-
Clone the Repo: git clone https://github.com/pranjalpatel044/BankManagementSystem_JavaSwing_MySQL.git
-
Database: Import the SQL schema into your MySQL Workbench.
-
Driver: Ensure the mysql-connector-java.jar is added to your project's build path.
-
Run: Execute the Login.java file to start the application.
Developed by Pranjal Patel

