Skip to content

πŸš€ PinnacleBank Core - Enterprise Java Banking System Production-grade console app with CRUD, transactions, 8 custom banking exceptions, and professional com.pinnaclebank.core.* architecture.

Notifications You must be signed in to change notification settings

CoreJavaPulse/PinnacleBankCore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏦 PinnacleBankCore

Core Java License: MIT

πŸš€ Production-Ready Core Java Console Banking System (OOP-Driven Design)

PinnacleBankCore is a fully menu-driven console banking application developed using pure Core Java, demonstrating enterprise-level OOP principles, custom exception handling, and clean layered architecture.

⚑ No frameworks. No databases. Pure Core Java fundamentals β€” Perfect for Java interviews, OOP mastery, and fresher portfolios.


🎯 Project Objective

Build a scalable banking system showcasing:

  • βœ… SOLID principles in action
  • βœ… 7+ custom business exceptions
  • βœ… Real-world banking logic (interest, min balance, daily limits)
  • βœ… Professional console UI with formatted tables

πŸ“± Live Demo

--------------------- Main Menu ---------------------
1:Add Account 2:Display All 3:Search Account
4:Transaction 5:Update 6:Delete Account
7:Add Interest 8:Account Statement

Choose (1-8): 1
Customer ID: 101
Customer Name: Hitesh Mane
Account No: 123456
IFSC Code: SBIN0001234
Initial Balance (β‚Ή): 5000
Type (SAVINGS/CURRENT): SAVINGS
Interest Rate (%): 6.5

βœ… Account created: Hitesh Mane

🧠 Core Java Concepts Mastered

Concept Implementation Business Value
Inheritance Account β†’ SavingsAccount/CurrentAccount Account hierarchy
Polymorphism addInterestToAllAccounts() Uniform processing
Abstraction BankAccount interface + Account abstract Clean contracts
Encapsulation Private fields + validation Data integrity
Collections ArrayList<Customer>, List<Transaction> Efficient storage
Exception Handling 7+ custom checked exceptions Rule enforcement
Enums AccountType, TransactionType Type safety
Streams/Lambdas Duplicate checks, searches Modern Java

βš™οΈ Production Features

Feature Savings Account Current Account Status
Create Account βœ… β‚Ή1000 min balance βœ… Business accounts 🟒 Complete
Deposit/Withdraw βœ… Transaction history βœ… Transaction history 🟒 Complete
Interest βœ… 6.5% monthly ❌ Zero interest 🟒 Complete
Search ID/AccNo/Name ID/AccNo/Name 🟒 Complete
Statement Last N transactions Last N transactions 🟒 Complete
Update Name + Address Name + Address 🟒 Complete
Delete Balance=0 required Balance=0 required 🟒 Complete

πŸ—‚οΈ Enterprise Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    BankMain     β”‚ ───▢ β”‚   BankServices   β”‚ ───▢ β”‚     Customer    β”‚
β”‚   (Controller)  β”‚      β”‚ (Business Logic) β”‚      β”‚        ↕        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚     Account     β”‚
                                                   β”‚        ↕        β”‚
                                                   β”‚   Transactions  β”‚
                                                   β”‚     Address     β”‚
                                                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“ Project Structure

PinnacleBankCore/
β”œβ”€β”€ BankMain.java
β”œβ”€β”€ service/
β”‚   └── BankServices.java
β”œβ”€β”€ model/
β”‚   β”œβ”€β”€ entity/
β”‚   β”‚   β”œβ”€β”€ BankAccount.java
β”‚   β”‚   β”œβ”€β”€ Account.java
β”‚   β”‚   β”œβ”€β”€ SavingsAccount.java
β”‚   β”‚   β”œβ”€β”€ CurrentAccount.java
β”‚   β”‚   β”œβ”€β”€ Customer.java
β”‚   β”‚   β”œβ”€β”€ Transaction.java
β”‚   β”‚   └── Address.java
β”‚   └── enums/
β”‚       β”œβ”€β”€ AccountType.java
β”‚       └── TransactionType.java
β”œβ”€β”€ exceptions/
β”‚   β”œβ”€β”€ AccountNotFoundException.java
β”‚   β”œβ”€β”€ DuplicateAccountException.java
β”‚   β”œβ”€β”€ InsufficientFundsException.java
β”‚   β”œβ”€β”€ InvalidAmountException.java
β”‚   β”œβ”€β”€ MinimumBalanceException.java
β”‚   β”œβ”€β”€ DailyLimitExceededException.java
β”‚   └── InvalidIFSCException.java
└── util/
    └── BankConstants.java

🚨 Business Exceptions Enforced

❌ AccountNotFoundException(101)
❌ DuplicateAccountException(123456)
❌ InsufficientFundsException(5000.00/2000.00)
❌ InvalidAmountException(-100.00)
❌ MinimumBalanceException(500.00)
❌ DailyLimitExceededException()
❌ InvalidIFSCException(INVALID123)

▢️ Quick Start

1. Clone the repository  
2. Open the project in **Eclipse / IntelliJ IDEA**  
3. Run `BankMain.java`  
4. Use the console menu to interact

πŸ”§ Prerequisites

  • JDK 17+
  • Any Java IDE

πŸŽ“ Perfect For

  • βœ… Java Fresher Interviews
  • βœ… OOP Concept Demonstration
  • βœ… Core Java Portfolio
  • βœ… Technical Round Preparation
  • βœ… College Projects

πŸš€ Production Enhancements Planned

  • πŸ“ File Persistence (ObjectInputStream)
  • πŸ” Account Transfers
  • πŸ—„οΈ JDBC Integration (MySQL/PostgreSQL)
  • πŸ§ͺ JUnit 5 Tests (95% coverage target)
  • ⚑ Multithreading (concurrent transactions)

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

Hitesh Mane Java Backend Developer | Pune, India

πŸ“§ hiteshmane5hm@gmail.com


⭐ If you like this project, don't forget to star the repo!

About

πŸš€ PinnacleBank Core - Enterprise Java Banking System Production-grade console app with CRUD, transactions, 8 custom banking exceptions, and professional com.pinnaclebank.core.* architecture.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages