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!