Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

15 Commits

Repository files navigation

🏦 PinnacleBankCore

Core JavaLicense: 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

ConceptImplementationBusiness Value
InheritanceAccount → SavingsAccount/CurrentAccountAccount hierarchy
PolymorphismaddInterestToAllAccounts()Uniform processing
AbstractionBankAccount interface + Account abstractClean contracts
EncapsulationPrivate fields + validationData integrity
CollectionsArrayList<Customer>, List<Transaction>Efficient storage
Exception Handling7+ custom checked exceptionsRule enforcement
EnumsAccountType, TransactionTypeType safety
Streams/LambdasDuplicate checks, searchesModern Java

⚙️ Production Features

FeatureSavings AccountCurrent AccountStatus
Create Account✅ ₹1000 min balance✅ Business accounts🟢 Complete
Deposit/Withdraw✅ Transaction history✅ Transaction history🟢 Complete
Interest✅ 6.5% monthly❌ Zero interest🟢 Complete
SearchID/AccNo/NameID/AccNo/Name🟢 Complete
StatementLast N transactionsLast N transactions🟢 Complete
UpdateName + AddressName + Address🟢 Complete
DeleteBalance=0 requiredBalance=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

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages