The ATM Simulation System is a console-based Java application that replicates the core functionalities of a real-world Automated Teller Machine (ATM). Designed as a portfolio project, it showcases a solid understanding of Core Java and fundamental Object-Oriented Programming (OOP) principles including encapsulation, inheritance, polymorphism, and abstraction.
This project is ideal for beginners looking to understand how OOP concepts translate into real-world application design, and for developers who want a clean, structured Java project to reference.
| Feature | Description |
|---|---|
| 🔐 User Authentication | Secure PIN-based login system to verify user identity |
| 💰 Balance Inquiry | View current account balance instantly |
| 💸 Cash Withdrawal | Withdraw funds with validation checks |
| 🏦 Deposit Functionality | Deposit money into the account |
| 🧾 Transaction Handling | Tracks and displays transaction history |
- Language: Java (Core Java / Java SE)
- Paradigm: Object-Oriented Programming (OOP)
- Interface: Console / Command Line Interface (CLI)
- IDE Recommended: IntelliJ IDEA / Eclipse / VS Code with Java Extension
This project is a practical demonstration of the four pillars of OOP:
- Encapsulation — Account details (balance, PIN) are kept private and accessed only through controlled getter/setter methods.
- Abstraction — Complex banking logic is hidden behind simple method interfaces that the user interacts with.
- Inheritance — Common properties and behaviors are defined in base classes and extended by specific account types.
- Polymorphism — Methods behave differently based on context, enabling flexible transaction handling.
Follow these steps to run the project on your local machine:
Prerequisites
- Java JDK 8 or higher installed
- A terminal / command prompt
Step 1: Clone the Repository
git clone https://github.com/your-username/atm-simulation-system.gitStep 2: Navigate to the Project Directory
cd atm-simulation-systemStep 3: Compile the Java Files
javac -d bin src/*.javaStep 4: Run the Application
java -cp bin Main💡 Tip: If using an IDE like IntelliJ IDEA or Eclipse, simply import the project and run
Main.javadirectly.
atm-simulation-system/
│
├── src/
│ ├── Main.java # Entry point of the application
│ ├── ATM.java # Core ATM logic and menu handling
│ ├── Account.java # Account model with balance and PIN
│ ├── Bank.java # Bank class managing accounts
│ ├── Transaction.java # Transaction records and history
│ └── Authentication.java # PIN validation and login system
│
├── bin/ # Compiled .class files (auto-generated)
│
└── README.md
Here are some enhancements planned for upcoming versions:
- 🖥️ Add a Graphical User Interface (GUI) using Java Swing or JavaFX
- 🗄️ Integrate a database (MySQL / SQLite) to persist user data
- 👥 Support for multiple user accounts
- 📋 Export transaction history to a
.txtor.csvfile - 🔒 Implement account lockout after multiple failed PIN attempts
- 💱 Add currency selection and multi-currency support
Made with ☕ Java and ❤️