Skip to content

Varshiniputtabakula/atm-simulator-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 

Repository files navigation

🏧 ATM-SIMULATOR

ATM-SIMULATOR is a JavaFX-based desktop application that simulates real-world ATM banking operations such as secure login, account management, balance inquiry, deposits, withdrawals, and transaction history tracking.

The system is backed by a MySQL database and follows a controller-driven architecture, ensuring data consistency, session control, and reliable transaction processing.

This project is intended for academic evaluation, viva demonstrations, and portfolio presentation.


πŸš€ Features

  • Card Number & PIN–based authentication
  • Create new bank accounts
  • Balance inquiry
  • Cash deposit and withdrawal with validation
  • Transaction history logging
  • Profile management (PIN reset)
  • Session-based access control
  • Persistent storage using MySQL

πŸ—οΈ Project Structure

ATM_FINAL/
β”‚
β”œβ”€β”€ src/
β”‚   └── application/
β”‚       β”œβ”€β”€ Main.java
β”‚       β”œβ”€β”€ ATMController.java
β”‚       β”œβ”€β”€ CreateAccountController.java
β”‚       β”œβ”€β”€ DashboardController.java
β”‚       β”œβ”€β”€ LoginController.java
β”‚       β”œβ”€β”€ ProfileController.java
β”‚       β”œβ”€β”€ SetPasswordController.java
β”‚       β”œβ”€β”€ TransactionController.java
β”‚       β”œβ”€β”€ DBConnection.java
β”‚       β”œβ”€β”€ DBTransaction.java
β”‚       β”œβ”€β”€ SessionManager.java
β”‚       β”œβ”€β”€ atm.fxml
β”‚       β”œβ”€β”€ create_account.fxml
β”‚       β”œβ”€β”€ dashboard.fxml
β”‚       β”œβ”€β”€ login.fxml
β”‚       β”œβ”€β”€ profile.fxml
β”‚       β”œβ”€β”€ set_password.fxml
β”‚       └── transaction.fxml
β”‚
β”œβ”€β”€ bin/
β”‚   └── application/
β”‚       β”œβ”€β”€ Main.class
β”‚       β”œβ”€β”€ ATMController.class
β”‚       β”œβ”€β”€ CreateAccountController.class
β”‚       β”œβ”€β”€ DashboardController.class
β”‚       β”œβ”€β”€ LoginController.class
β”‚       β”œβ”€β”€ ProfileController.class
β”‚       β”œβ”€β”€ SetPasswordController.class
β”‚       β”œβ”€β”€ TransactionController.class
β”‚       β”œβ”€β”€ DBConnection.class
β”‚       β”œβ”€β”€ DBTransaction.class
β”‚       └── SessionManager.class
β”‚
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ javafx.base.jar
β”‚   β”œβ”€β”€ javafx.controls.jar
β”‚   β”œβ”€β”€ javafx.fxml.jar
β”‚   β”œβ”€β”€ javafx.graphics.jar
β”‚   β”œβ”€β”€ javafx.media.jar
β”‚   β”œβ”€β”€ javafx.swing.jar
β”‚   β”œβ”€β”€ javafx.web.jar
β”‚   └── mysql-connector-j-9.2.0.jar
β”‚
β”œβ”€β”€ database/
β”‚   β”œβ”€β”€ atm_db_setup.sql
β”‚   └── update_schema.sql
β”‚
β”œβ”€β”€ .gitignore
└── README.md
πŸ” Authentication & Session Handling
Users authenticate using Card Number + PIN

Credentials are verified against the database

Active sessions are managed using a SessionManager

Unauthorized access is blocked at the controller level

πŸ” Transaction Flow
User Authentication

Session Initialization

Operation Selection (Deposit / Withdraw / Balance / Profile)

Business Rule Validation

Database Update via JDBC

Transaction Logging

UI Feedback to User

πŸ—„οΈ Database Design
accounts Table
Column Name	Description
id	Primary key
card_number	Unique card identifier
pin	User PIN
balance	Account balance

transactions Table
Column Name	Description
id	Primary key
card_number	Account reference
transaction_type	Deposit / Withdrawal
amount	Transaction amount
timestamp	Date & time

πŸ› οΈ Tech Stack
Language: Java

UI: JavaFX, FXML

Backend Logic: Java Controllers

Database: MySQL

Connectivity: JDBC

IDE: VS Code / IntelliJ IDEA

βš™οΈ Local Installation
bash
Copy code
git clone <repository-url>
cd ATM_FINAL
Import the project into your IDE

Configure JavaFX libraries

Set up MySQL using database/atm_db_setup.sql

Update database credentials in DBConnection.java

Run Main.java

πŸ§ͺ Testing
Login validation testing

Insufficient balance handling

Transaction history verification

Session expiry and logout handling

πŸ“Œ Use Case & Learning Outcomes
Real-world ATM transaction simulation

Secure authentication workflows

Database-backed JavaFX applications

MVC-style controller separation

Practical JDBC & MySQL integration

⚠️ Disclaimer
This project is intended for educational and demonstration purposes only.
It is not designed for production banking environments.

πŸ‘©β€πŸ’» Author
Varshini Puttabakula
Data Science & Machine Learning | Java | Software Engineering

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors