This project is a console based banking system implemented in Java to demonstrate core programming fundamentals, object oriented design, and clean control flow.
The application allows users to create bank accounts and perform basic banking operations through a menu driven interface.
The project is intentionally kept simple and focused on Java fundamentals, without external libraries, databases, or graphical interfaces.
- Create a new bank account
- Access an existing account using account number
- Deposit money
- Withdraw money with insufficient balance handling
- Check account balance
- Menu driven user interaction
- Object Oriented Programming (classes, objects, encapsulation)
- Separation of concerns across multiple classes
- Use of collections (HashMap) for in memory data storage
- Custom exception handling (InsufficientFundsException)
- Menu driven control flow using loops and switch statements
- Basic input handling using Scanner
- Bank.java
- BankAccount.java
- BankService.java
- AccountMenu.java
- InsufficientFundsException.java
Entry point of the application. Handles high level user flow and menu navigation.
Represents an individual bank account and manages balance related operations.
Manages account creation and retrieval using a HashMap.
Handles deposit, withdrawal, and balance check operations for an accessed account.
Custom exception to handle withdrawal attempts exceeding available balance.
- User selects an option from the main menu
- For account creation, a unique account number is generated
- Accounts are stored in memory during program execution
- Users can access accounts and perform operations in the same session
- Data persists only while the program is running
- Data is stored in memory using a HashMap to keep the project focused on core Java concepts
- No database or file storage is used
- Menu logic is modularized to avoid code repetition
- Exception handling is implemented to manage invalid withdrawal attempts
- Clone the repository
- Compile all Java files
- Run the Bank class
javac Bank.java
java Bank- Add file based persistence or database support
- Improve input validation
- Introduce user authentication
- Add interest calculation
This project strengthened understanding of Java fundamentals, object oriented design, exception handling, and writing modular, maintainable code.