A modular banking application demonstrating Object-Oriented Programming, Java Collections, Streams API, Repository Pattern, Exception Handling, and Clean Architecture.
- About
- Architecture
- Features
- Project Demonstration
- Technologies Used
- Java Concepts Demonstrated
- Project Structure
- Getting Started
- Future Enhancements
- Author
ConsoleBank is a Core Java Banking Management System that simulates common banking operations through a console interface.
The project focuses on writing clean, modular, and maintainable Java code while applying software engineering principles such as layered architecture, repository abstraction, validation, and exception handling.
Users can create bank accounts, deposit and withdraw money, transfer funds, search customers, list accounts, and view account statements.
This project was built to strengthen Java backend fundamentals before moving to enterprise frameworks such as Spring Boot.
User
β
βΌ
Main.java (app)
β
βΌ
BankService Interface
β
βΌ
BankServiceImpl
β
ββββββββββββββΌββββββββββββββ
βΌ βΌ βΌ
Repository Validation Exceptions
β
βΌ
Domain Models (Account, Customer, Transaction)
The project follows a layered architecture where user requests are processed by the service layer, validated before execution, and stored using repository classes backed by Java Collections.
- π¦ Create New Bank Account
- π° Deposit Money
- πΈ Withdraw Money
- π Transfer Money Between Accounts
- π Search Customer by Name
- π Display All Accounts
- π View Account Statement
- π Automatic Customer ID Generation using UUID
- π’ Automatic Account Number Generation
- π‘ Custom Exception Handling
- β Input Validation
- π Repository-Based Data Management
- π§© Modular Package Structure
| Technology | Purpose |
|---|---|
| Java | Core Programming Language |
| Object-Oriented Programming | Application Design |
| Java Collections Framework | In-memory Data Storage |
| Java Streams API | Searching & Filtering |
| UUID | Unique Customer ID Generation |
| Repository Pattern | Data Management |
| Exception Handling | Error Management |
| Scanner | Console Input |
| Git | Version Control |
| GitHub | Repository Hosting |
- Object-Oriented Programming (OOP)
- Encapsulation
- Abstraction
- Interfaces
- Polymorphism
- Java Collections Framework
- Java Streams API
- Lambda Expressions
- Repository Pattern
- Exception Handling
- Custom Exceptions
- UUID Generation
- Modular Programming
- Clean Code Principles
ConsoleBank
β
βββ assets
β βββ gifs
β βββ 01_Create_Account.gif
β βββ 02_Deposit.gif
β βββ 03_Withdraw.gif
β βββ 04_List_Accounts.gif
β βββ 05_Transfer.gif
β βββ 06_Search_By_Name.gif
β βββ 07_Account_Statement.gif
β βββ 08_Exit.gif
β
βββ src
β βββ app
β β βββ Main.java
β β
β βββ domain
β β βββ Account.java
β β βββ Customer.java
β β βββ Transaction.java
β β βββ Type.java
β β
β βββ exceptions
β β βββ AccountNotFoundException.java
β β βββ InsufficientBalanceException.java
β β βββ ValidationException.java
β β
β βββ repository
β β βββ AccountRepository.java
β β βββ CustomerRepository.java
β β βββ TransactionRepository.java
β β
β βββ services
β β βββ impl
β β β βββ BankServiceImpl.java
β β βββ BankService.java
β β
β βββ util
β βββ Validation.java
β
βββ README.md
βββ LICENSE
βββ .gitignore
- Java JDK 17 or above
- Git
- IntelliJ IDEA / Eclipse / VS Code
git clone https://github.com/YOUR_USERNAME/ConsoleBank.gitcd ConsoleBankjavac src/**/*.javajava app.Main- π Spring Boot REST API
- π MySQL Database Integration
- β Spring Data JPA
- π User Authentication
- πΎ Persistent Transaction Storage
- π³ Docker Support
- π Web-Based User Interface
- π± Mobile Application
- Core Java
- Object-Oriented Programming
- Java Collections Framework
- Java Streams API
- Repository Pattern
- Exception Handling
- Input Validation
- UUID Generation
- Layered Architecture
- Modular Application Design
- Git & GitHub
This project strengthened my understanding of:
- Designing layered Java applications
- Applying object-oriented design principles
- Managing application data using repositories
- Writing modular and maintainable code
- Using Java Streams for filtering and searching
- Handling exceptions gracefully
- Building complete console-based applications
Contributions, suggestions, and improvements are welcome.
Feel free to fork this repository and submit a Pull Request.
Ateeb Ur Rahaman
π Electronics & Communication Engineering Graduate
π» Aspiring Java Backend Developer
π§ Email: ateeburrahaman3@gmail.com
π LinkedIn: https://www.linkedin.com/in/ateeb-ur-rahaman/
π GitHub: https://github.com/ateeburrahaman3
If you found this project useful, please consider giving it a β on GitHub.
It motivates me to continue building and sharing more Java projects.
Thank you for visiting this repository! π







