A feature-rich desktop banking application developed using Java Swing, JDBC, and MySQL that simulates the functionality of a real-world Automated Teller Machine (ATM). The application offers secure authentication, account management, and essential banking services through an intuitive graphical user interface.
The ATM Simulation System is a desktop-based banking application designed to simulate the core functionality of a real-world Automated Teller Machine (ATM). Built using Java Swing, JDBC, and MySQL, the project provides users with a secure and interactive environment to perform day-to-day banking operations.
Users can create a new account, authenticate using their Card Number and PIN, and perform various banking services including deposits, withdrawals, balance enquiry, fast cash transactions, PIN changes, and viewing mini statements. Every transaction is securely stored in a MySQL database, ensuring persistent record management and transaction history.
This project demonstrates practical implementation of:
- Object-Oriented Programming (OOP)
- Java Swing GUI Development
- JDBC Database Connectivity
- MySQL Database Management
- Authentication & Authorization
- Transaction Processing
- Event-Driven Programming
- CRUD Operations
The application is designed with an ATM-inspired graphical interface to provide a realistic user experience while showcasing core Java development concepts.
- Secure Login using Card Number & PIN
- New Customer Registration
- Multi-step Account Creation
- Card Number Verification
- PIN Authentication
- Deposit Money
- Withdraw Money
- Fast Cash
- Balance Enquiry
- PIN Change
- Mini Statement Generation
- MySQL Database Integration
- JDBC Connectivity
- Persistent Transaction Storage
- Customer Information Management
- Login Credential Storage
- Banking Transaction Records
- ATM-inspired Graphical Interface
- Interactive Navigation
- Simple & User-Friendly Design
- Real-Time Transaction Updates
- Smooth Banking Workflow
| Category | Technology |
|---|---|
| Programming Language | Java |
| GUI Framework | Java Swing |
| Database | MySQL |
| Database Connectivity | JDBC |
| External Library | JCalendar |
| Development Environment | Eclipse / IntelliJ IDEA / VS Code |
| Version Control | Git & GitHub |
| Operating System | Windows |
The application follows a layered architecture where the graphical user interface interacts with the business logic, which communicates with the MySQL database through JDBC.
ATM Simulation System
ββββββββββββββββββββββββββββββββββββββββββββββββ
β Java Swing GUI β
β (Login, Signup, ATM Dashboard, Forms) β
ββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββΌβββββββββββββββββ
β β β
βΌ βΌ βΌ
Authentication Banking Services Account Management
Login/Signup Deposit β’ Withdraw PIN Change β’ Balance
β
βΌ
Transaction Processing
β
βΌ
JDBC Connectivity Layer
β
βΌ
MySQL Database
The following workflow illustrates how a typical banking transaction is processed.
User Launches Application
β
βΌ
Login / Registration
β
βΌ
Authenticate Card Number & PIN
β
βββββββββββ΄ββββββββββ
β β
Authentication Authentication
Success Failed
β β
βΌ βΌ
Display ATM Dashboard Show Error Message
β
βΌ
Select Banking Operation
β
βΌ
Execute Requested Operation
β
βΌ
Update MySQL Database
β
βΌ
Display Updated Information to User
β
βΌ
Exit / Logout
The application uses MySQL as the backend database to securely store customer information, login credentials, account details, and banking transactions.
| Table | Purpose |
|---|---|
| signup | Stores customer personal information |
| signupTwo | Stores additional customer details |
| signupThree | Stores account type, card number, PIN, and banking facilities |
| login | Stores authentication credentials |
| bank | Stores deposits, withdrawals, and transaction history |
The SQL script required to set up the database is available inside:
database/
βββ bankmanagementsystem.sql
ATM-Simulator-System
β
βββ assets
β βββ banner
β β βββ banner.png
β β
β βββ screenshots
β βββ login.png
β βββ atm_interface.png
β βββ deposit.png
β βββ withdraw.png
β βββ fastcash.png
β βββ mini_statement.png
β
βββ database
β βββ bankmanagementsystem.sql
β
βββ lib
β βββ mysql-connector-java-8.0.28.jar
β βββ jcalendar-tz-1.3.3-4.jar
β
βββ src
β βββ Login.java
β βββ SignupOne.java
β βββ SignupTwo.java
β βββ SignupThree.java
β βββ Deposit.java
β βββ Withdraw.java
β βββ FastCash.java
β βββ BalanceEnquiry.java
β βββ MiniStatement.java
β βββ PinChange.java
β βββ Transactions.java
β βββ Conn.java
β β
β βββ icons
β βββ atm.jpg
β βββ logo.jpg
β βββ ...
β
βββ README.md
This project showcases practical implementation of several important Java concepts:
- Object-Oriented Programming (OOP)
- Java Swing GUI Development
- JDBC Database Connectivity
- MySQL Database Management
- Event-Driven Programming
- Authentication & Authorization
- Transaction Processing
- CRUD Operations
- Modular Application Design
- Desktop Application Development
Follow these steps to set up and run the project on your local machine.
git clone https://github.com/TanmayT134/ATM-Simulation-System-using-Java.gitImport the project into your preferred Java IDE.
Supported IDEs:
- Eclipse IDE
- IntelliJ IDEA
- Visual Studio Code
Ensure the following libraries are available in your project.
| Library | Purpose |
|---|---|
| mysql-connector-java-8.0.28.jar | MySQL JDBC Driver |
| jcalendar-tz-1.3.3-4.jar | Date Picker Component |
These libraries are already included inside the lib folder.
Install MySQL Server on your system.
Create the database.
CREATE DATABASE bankmanagementsystem;Import the SQL script located at:
database/bankmanagementsystem.sql
Open
src/Conn.java
Update your database credentials.
Example:
String url = "jdbc:mysql://localhost:3306/bankmanagementsystem";
String username = "your_username";
String password = "your_password";Run
Login.java
The ATM application is now ready to use.
- Register as a new customer.
- Complete the account creation process.
- Receive your Card Number and PIN.
- Enter your Card Number.
- Enter your PIN.
- Authenticate securely.
Choose any available banking service:
- Deposit Money
- Withdraw Money
- Fast Cash
- Balance Enquiry
- PIN Change
- Mini Statement
Close the application once all transactions have been completed.
This project helped strengthen practical knowledge of:
- Java Object-Oriented Programming
- Java Swing GUI Development
- JDBC Connectivity
- MySQL Database Integration
- Event-Driven Programming
- CRUD Operations
- Authentication Systems
- Banking Transaction Processing
- Desktop Application Development
- Software Architecture Fundamentals
The following features can further improve the application:
- π³ Fund Transfer Between Accounts
- π Printable Transaction Receipts
- π§ Email Transaction Notifications
- π± SMS Alerts
- π Password Encryption
- π€ User Profile Management
- π§Ύ Detailed Transaction Reports
- π¦ Admin Dashboard
- π Multi-language Support
- βοΈ Cloud Database Integration
- π² Mobile Banking Companion App
- π Analytics Dashboard
Contributions are welcome!
If you'd like to improve this project:
- Fork the repository.
- Create a new feature branch.
git checkout -b feature/YourFeature- Commit your changes.
git commit -m "Add Your Feature"- Push the branch.
git push origin feature/YourFeature- Open a Pull Request.






