Skip to content

LeGoober/Basic_Java_ATM_GUI_application

Repository files navigation

ATM Interface Application

A Java Swing-based ATM simulation application with a GUI interface.

Features

  • User Authentication: PIN-based login system
  • Balance Inquiry: Check available and total balance
  • Cash Withdrawal: Withdraw cash in preset amounts (R20, R50, R100, R200)
  • Deposit: Deposit money via envelope simulation
  • Admin Panel: Manage user accounts (add/delete users, view all accounts)

Default Accounts

Customer Accounts:

  • Customer1: PIN: 11111, Balance: R1200.00
  • Customer2: PIN: 27891, Balance: R300.00
  • Customer3: PIN: 44331, Balance: R720.00
  • Customer4: PIN: 27222, Balance: R10000.00

Admin Account:

  • Manager1: PIN: 00000 (Access to admin panel)

How to Run

Using NetBeans:

  1. Open the project in NetBeans
  2. Press F6 or click Run

Using Command Line:

Compile:

javac -d build/classes src/com/javaprojects/atmapplication_rorisangmakgana/*.java

Run:

java -cp build/classes com.javaprojects.atmapplication_rorisangmakgana.ATM

Using Ant (if installed):

ant run

Project Structure

src/com/javaprojects/atmapplication_rorisangmakgana/
├── ATM.java                    # Main entry point - ATM controller
├── model/                      # Data models
│   ├── Account.java           # Account data model
│   └── AccountFactory.java    # Factory pattern for creating accounts
├── ui/                        # User Interface components
│   ├── Screen.java           # Screen GUI manager with modern design
│   └── Keypad.java           # ATM keypad GUI component
├── transaction/              # Transaction handlers
│   ├── Transaction.java      # Abstract transaction base class
│   ├── BalanceInquiry.java  # Balance inquiry transaction
│   ├── Deposit.java         # Deposit transaction
│   └── Withdrawl.java       # Withdrawal transaction
├── database/                 # Data persistence
│   └── BankDatabase.java    # In-memory database for accounts
├── hardware/                 # Hardware simulation
│   ├── CashDispenser.java   # Cash dispensing logic
│   └── DepositSlot.java     # Deposit slot simulation
└── util/                     # Utilities and patterns
    ├── Iterator.java        # Iterator interface
    └── AccountIterator.java # Iterator for navigating accounts

Design Patterns Used

  1. Singleton Pattern: ATM class uses singleton to ensure only one instance
  2. Factory Pattern: AccountFactory for creating account objects
  3. Iterator Pattern: Custom iterator for navigating through accounts
  4. Template Method Pattern: Transaction abstract class with execute() method

Technologies

  • Java 17+
  • Swing GUI
  • NetBeans Ant Build System

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages