A console-based ATM simulation application written in Java. This project demonstrates core programming concepts, state management, array manipulations, and user authentication through two distinct execution models: Single-User Mode and Multi-User Mode.
- Security Authentication: Secure PIN validation with up to 5 remaining attempts[cite: 2].
- Balance Inquiry: Real-time checking of current account balance[cite: 2].
- Deposit & Withdrawal Operations:
- Cash deposits and withdrawals with daily limit constraints[cite: 2].
- Overdraft protection and boundary checks[cite: 2].
- PIN Change: Secure 4-digit PIN update system[cite: 2].
- Mini Statement: Tracks and displays the last 3 recent transactions[cite: 2].
Extends the core functionality to support a system with multiple simulated bank accounts[cite: 1]:
- Account Lookup: Validates account numbers (
1001,1002,1003) before requesting PIN entry[cite: 1]. - Fund Transfers: Directly transfer funds between valid accounts with immediate balance reflection[cite: 1].
- Account Switching: Switch active sessions without terminating the program[cite: 1].
- Analytical Insights:
- Top Depositor Identification: Calculates and identifies the user with the highest cumulative deposit total[cite: 1].
- Frequent Withdrawer Tracking: Monitors and flags the user with the highest withdrawal frequency[cite: 1].
- Programming Language: Java (JDK 8 or higher)
- User Interface: Command Line / Terminal Interface
- Core Concepts: Loops, Conditional Logic, Array Manipulations, Modular Functions, Scanner I/O
git clone [https://github.com/Mabdsiddiqui4/ATM-Simulation.git](https://github.com/Mabdsiddiqui4/ATM-Simulation.git)
cd ATM-Simulation