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.
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
--------------------- 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
| 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 |
| 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 |
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ BankMain │ ───โถ │ BankServices │ ───โถ │ Customer │
│ (Controller) │ │ (Business Logic) │ │ ↕ │
└─────────────────┘ └──────────────────┘ │ Account │
│ ↕ │
│ Transactions │
│ Address │
└─────────────────┘
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
โ AccountNotFoundException(101)
โ DuplicateAccountException(123456)
โ InsufficientFundsException(5000.00/2000.00)
โ InvalidAmountException(-100.00)
โ MinimumBalanceException(500.00)
โ DailyLimitExceededException()
โ InvalidIFSCException(INVALID123)
1. Clone the repository
2. Open the project in **Eclipse / IntelliJ IDEA**
3. Run `BankMain.java`
4. Use the console menu to interact- JDK 17+
- Any Java IDE
- โ Java Fresher Interviews
- โ OOP Concept Demonstration
- โ Core Java Portfolio
- โ Technical Round Preparation
- โ College Projects
- ๐ File Persistence (ObjectInputStream)
- ๐ Account Transfers
- ๐๏ธ JDBC Integration (MySQL/PostgreSQL)
- ๐งช JUnit 5 Tests (95% coverage target)
- โก Multithreading (concurrent transactions)
Hitesh Mane Java Backend Developer | Pune, India
โญ If you like this project, don't forget to star the repo!