Skip to content

Stutiyadav12012004/ATM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏧 ATM Simulation System

A console-based ATM simulation built with Core Java


📌 Description

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.


✨ Features

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

🛠️ Tech Stack

  • 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

🧠 OOP Concepts Used

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.

🚀 How to Run

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.git

Step 2: Navigate to the Project Directory

cd atm-simulation-system

Step 3: Compile the Java Files

javac -d bin src/*.java

Step 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.java directly.


📁 Project Structure

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

🔮 Future Improvements

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 .txt or .csv file
  • 🔒 Implement account lockout after multiple failed PIN attempts
  • 💱 Add currency selection and multi-currency support

👤 Author

Your Name

GitHub LinkedIn Portfolio

Feel free to connect, contribute, or leave a ⭐ if you found this project helpful!


Made with ☕ Java and ❤️

About

ATM Simulation System built using Core Java, implementing Object-Oriented Programming (OOP) concepts like encapsulation, inheritance, polymorphism, and abstraction. Supports features such as user authentication, balance inquiry, deposit, and withdrawal to simulate real-world banking operations.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages