Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏦 ConsoleBank

A Console-Based Banking Management System built with Core Java

A modular banking application demonstrating Object-Oriented Programming, Java Collections, Streams API, Repository Pattern, Exception Handling, and Clean Architecture.


Java OOP Collections Streams Git Status


πŸ“– Table of Contents


πŸ“š About

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.


πŸ— Architecture

                   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.


✨ Features

  • 🏦 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

πŸŽ₯ Project Demonstration

πŸ†• Create Account

Create Account


πŸ’° Deposit Money

Deposit


πŸ’Έ Withdraw Money

Withdraw


πŸ“‹ List All Accounts

List Accounts


πŸ”„ Transfer Money

Transfer


πŸ” Search Customer by Name

Search


πŸ“„ Account Statement

Statement


πŸšͺ Exit Application

Exit


πŸ›  Technologies Used

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

🧠 Java Concepts Demonstrated

  • 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

πŸ“‚ Project Structure

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

πŸš€ Getting Started

Prerequisites

  • Java JDK 17 or above
  • Git
  • IntelliJ IDEA / Eclipse / VS Code

Clone the Repository

git clone https://github.com/YOUR_USERNAME/ConsoleBank.git

Navigate to the Project

cd ConsoleBank

Compile

javac src/**/*.java

Run

java app.Main

πŸ’‘ Future Enhancements

  • 🌐 Spring Boot REST API
  • πŸ—„ MySQL Database Integration
  • ☁ Spring Data JPA
  • πŸ” User Authentication
  • πŸ’Ύ Persistent Transaction Storage
  • 🐳 Docker Support
  • 🌍 Web-Based User Interface
  • πŸ“± Mobile Application

πŸ’Ό Skills Demonstrated

  • 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

πŸ“š Learning Outcomes

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

🀝 Contributing

Contributions, suggestions, and improvements are welcome.

Feel free to fork this repository and submit a Pull Request.


πŸ‘¨β€πŸ’» Author

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


⭐ Support

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! πŸš€

About

A console-based Banking Management System built with Core Java using OOP, Collections, Streams, Repository Pattern, and Exception Handling.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages