Bank ATM Simulator

Java Core Application with Complete ATM Functionality

2023 Java • MySQL • Swing UI • OOP Principles
View Project on GitHub

Project Overview

The Bank ATM Simulator is a comprehensive Java application that replicates all functionalities of a real ATM machine. Built using Java Core and MySQL for database management, this desktop application features a complete user interface with secure authentication, transaction processing, and account management capabilities.

Key Features

  • Multi-step account creation wizard (3-page signup form)
  • Secure login with account number and password
  • Complete transaction processing: deposits, withdrawals, balance checks
  • Quick withdrawal options with preset amounts
  • Transaction history with printable receipts
  • Password change functionality
  • MySQL database integration for persistent data storage
  • Swing-based GUI mimicking real ATM interface

Technology Stack

Core Technologies

Java SE 8, Java Swing, JDBC

Database

MySQL Workbench 8.0

Design Patterns

MVC Architecture, DAO Pattern

Challenges & Solutions

State Management Across Screens

Implementing a multi-page form flow while maintaining user data required careful state management. Solved using a session object that persists through the account creation process.

Database Security

Storing sensitive financial information securely was achieved through password hashing (SHA-256) and parameterized queries to prevent SQL injection.

UI/UX for ATM Interface

Creating an intuitive ATM-like interface was accomplished by studying real ATM workflows and implementing key UI patterns like consistent navigation and clear transaction feedback.