π Bank Management System (Java Console Application)
A Java console-based application demonstrating core Java and OOP principles, built as a portfolio project for Java Developer positions.
π― Project Purpose
This project was created to demonstrate:
Strong understanding of Java Core
Proper use of Object-Oriented Programming (OOP)
Clean code structure and best practices
Basic testing using JUnit
System design visualization using UML
π§© Features
Create bank accounts
Deposit money
Withdraw money with balance validation
Display all accounts
Console-based interactive menu
Custom exception handling
Unit testing for core logic
π Project Structure
src
ββ model
β ββ Account.java
ββ service
β ββ BankService.java
β ββ BankServiceImpl.java
ββ exception
β ββ AccountNotFoundException.java
β ββ InsufficientBalanceException.java
ββ util
β ββ Menu.java
ββ main
ββ MainApp.java
test
ββ AccountTest.java
ββ BankServiceTest.java
docs
ββ bank-system-uml.png
π§ OOP Concepts Applied
Encapsulation Private fields with public getters and controlled access
Inheritance Custom exceptions extending RuntimeException
Polymorphism BankService interface implemented by BankServiceImpl
Abstraction Business logic separated via service layer
βοΈ Technologies Used
Java 25
IntelliJ IDEA
JUnit 5
Git & GitHub
π§ͺ Testing
Unit tests are implemented using JUnit 5 following the Arrange β Act β Assert pattern.
Tested Scenarios:
Successful deposit and withdrawal
Exception thrown when withdrawing more than balance
Service layer behavior
π UML Diagram
The system design is visualized using a UML Class Diagram:
π docs/BankSystem-UML.drawio.png
Clone the repository
Open the project in IntelliJ IDEA
Run MainApp.java
Follow the console menu instructions
π Future Improvements
Add persistence using a database
Convert the project to Spring Boot REST API
Add logging
Improve input validation
Add more unit tests
π¨βπ» Author
Ali Al-Jalo Java Developer (Backend)
