Core Features
Authentication
- Secure PIN-based login system
- Access restricted until authentication succeeds
Transactions
- Deposit and withdraw money
- Real-time balance updates
- Prevents invalid transactions
Account Tracking
- Balance checking functionality
- Transaction history logging
Data Persistence
- Data stored using local text/JSON files
- Maintains state between sessions
System Architecture
The system is designed using a modular approach where each component is responsible for a specific part of the ATM workflow.
Authentication Module → verifies user PIN
Transaction Module → handles deposit & withdrawal
Storage Module → manages file-based persistence
Validation Layer → prevents invalid inputs & errors
System Rules & Constraints
- Access is denied after incorrect PIN attempts
- Withdrawals cannot exceed available balance
- Negative or invalid inputs are rejected
- All transactions update stored data immediately
Example Terminal Output
Sample interaction from the command-line interface:
Welcome to Secure ATM System
1. Check Balance
2. Deposit
3. Withdraw
4. Exit
Select option: 2
Enter amount: 500
Deposit successful
New Balance: 1500
Technologies Used
- Language: Python
- Storage: Text / JSON files
- Interface: Command Line (CLI)
- Design: Object-Oriented Programming
Project Links
Why This Project?
This project demonstrates how real-world ATM systems manage authentication, transactions, and persistent storage while ensuring stability through validation. It highlights structured programming, modular design, and safe state management.