A Java Swing-based ATM simulation application with a GUI interface.
- 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)
- Customer1: PIN: 11111, Balance: R1200.00
- Customer2: PIN: 27891, Balance: R300.00
- Customer3: PIN: 44331, Balance: R720.00
- Customer4: PIN: 27222, Balance: R10000.00
- Manager1: PIN: 00000 (Access to admin panel)
- Open the project in NetBeans
- Press F6 or click Run
Compile:
javac -d build/classes src/com/javaprojects/atmapplication_rorisangmakgana/*.javaRun:
java -cp build/classes com.javaprojects.atmapplication_rorisangmakgana.ATMant runsrc/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
- Singleton Pattern: ATM class uses singleton to ensure only one instance
- Factory Pattern: AccountFactory for creating account objects
- Iterator Pattern: Custom iterator for navigating through accounts
- Template Method Pattern: Transaction abstract class with execute() method
- Java 17+
- Swing GUI
- NetBeans Ant Build System