Skip to content

Latest commit

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

ATM Simulation System Banner

🏧 ATM Simulation System

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.


📖 About The Project

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.


✨ Features

🔐 Secure Authentication

  • Secure Login using Card Number & PIN
  • New Customer Registration
  • Multi-step Account Creation
  • Card Number Verification
  • PIN Authentication

💳 Banking Services

  • Deposit Money
  • Withdraw Money
  • Fast Cash
  • Balance Enquiry
  • PIN Change
  • Mini Statement Generation

🗄 Database Management

  • MySQL Database Integration
  • JDBC Connectivity
  • Persistent Transaction Storage
  • Customer Information Management
  • Login Credential Storage
  • Banking Transaction Records

🖥 User Experience

  • ATM-inspired Graphical Interface
  • Interactive Navigation
  • Simple & User-Friendly Design
  • Real-Time Transaction Updates
  • Smooth Banking Workflow

📸 Screenshots

🔑 Login Screen


🏧 ATM Dashboard


💵 Deposit Money


💸 Withdraw Money


⚡ Fast Cash


📄 Mini Statement


🛠 Tech Stack

CategoryTechnology
Programming LanguageJava
GUI FrameworkJava Swing
DatabaseMySQL
Database ConnectivityJDBC
External LibraryJCalendar
Development EnvironmentEclipse / IntelliJ IDEA / VS Code
Version ControlGit & GitHub
Operating SystemWindows

🏗 System Architecture

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

⚙️ Application Workflow

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

🗄 Database Schema

The application uses MySQL as the backend database to securely store customer information, login credentials, account details, and banking transactions.

Database Tables

TablePurpose
signupStores customer personal information
signupTwoStores additional customer details
signupThreeStores account type, card number, PIN, and banking facilities
loginStores authentication credentials
bankStores deposits, withdrawals, and transaction history

Database Script

The SQL script required to set up the database is available inside:

database/
└── bankmanagementsystem.sql

📂 Project Structure

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

💡 Key Concepts Demonstrated

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

🚀 Getting Started

Follow these steps to set up and run the project on your local machine.

1️⃣ Clone the Repository

git clone https://github.com/TanmayT134/ATM-Simulation-System-using-Java.git

2️⃣ Open the Project

Import the project into your preferred Java IDE.

Supported IDEs:

  • Eclipse IDE
  • IntelliJ IDEA
  • Visual Studio Code

3️⃣ Install Required Libraries

Ensure the following libraries are available in your project.

LibraryPurpose
mysql-connector-java-8.0.28.jarMySQL JDBC Driver
jcalendar-tz-1.3.3-4.jarDate Picker Component

These libraries are already included inside the lib folder.


⚙️ Database Setup

Step 1

Install MySQL Server on your system.


Step 2

Create the database.

CREATEDATABASEbankmanagementsystem;

Step 3

Import the SQL script located at:

database/bankmanagementsystem.sql

Step 4

Open

src/Conn.java

Update your database credentials.

Example:

Stringurl = "jdbc:mysql://localhost:3306/bankmanagementsystem";
Stringusername = "your_username";
Stringpassword = "your_password";

Step 5

Run

Login.java

The ATM application is now ready to use.


▶️ Usage

Create a New Account

  • Register as a new customer.
  • Complete the account creation process.
  • Receive your Card Number and PIN.

Login

  • Enter your Card Number.
  • Enter your PIN.
  • Authenticate securely.

Perform Banking Operations

Choose any available banking service:

  • Deposit Money
  • Withdraw Money
  • Fast Cash
  • Balance Enquiry
  • PIN Change
  • Mini Statement

Exit

Close the application once all transactions have been completed.


🎯 Learning Outcomes

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

🚀 Future Enhancements

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

🤝 Contributing

Contributions are welcome!

If you'd like to improve this project:

  1. Fork the repository.
  2. Create a new feature branch.
git checkout -b feature/YourFeature
  1. Commit your changes.
git commit -m "Add Your Feature"
  1. Push the branch.
git push origin feature/YourFeature
  1. Open a Pull Request.

👨‍💻 Author

Tanmay Tawade

Java Developer • Web Developer • AI & Machine Learning Enthusiast


⭐ If you found this project helpful, consider giving it a star!

Your support helps motivate continued development and the creation of more open-source projects.

Thank you for visiting this repository!

Made with ❤️ by Tanmay Tawade

About

A Java Swing-based ATM Simulation System with MySQL database integration, featuring secure authentication, account registration, deposits, withdrawals, balance enquiry, PIN management, and transaction history using JDBC.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages