Skip to content

Simple Bank Management System built with Java to demonstrate OOP concepts and core Java skills.

Notifications You must be signed in to change notification settings

aljalo/BankManagementSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“˜ 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

UML Diagram

The system design is visualized using a UML Class Diagram:

πŸ“ docs/BankSystem-UML.drawio.png

▢️ How to Run the Project

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)

About

Simple Bank Management System built with Java to demonstrate OOP concepts and core Java skills.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages