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.
- 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
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