Skip to content

A Java-based Banking System that allows users to manage accounts, perform transactions, and store data persistently using serialization.

Notifications You must be signed in to change notification settings

letsbegincode/Banking-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Banking Application

A comprehensive Banking Application implemented in Java, demonstrating advanced software engineering principles, including OOP, Design Patterns, Multithreading, and Persistent Storage.


🚀 Features

  • Account Management: Create, view, search, and close accounts.
  • Transaction Operations: Deposit, withdraw, transfer funds, and view transaction history.
  • Support for Multiple Account Types: Savings, Current, and Fixed Deposit accounts, each with specific rules.
  • Interest Calculation: Automated interest processing for eligible accounts.
  • Multithreading: Asynchronous transaction processing using ExecutorService.
  • Design Patterns: Implements Factory, Command, and Observer patterns.
  • Data Persistence: Saves and loads banking data using Serialization.
  • Robust UI: Interactive console-based interface with enhanced visual formatting.

🛠️ Technologies Used

  • Java (Core, Collections, Concurrency)
  • Serialization for persistent storage
  • Design Patterns: Factory, Command, Observer
  • Multithreading: ExecutorService with a fixed thread pool

📂 Project Structure

BankingApplication/
├── src/
│   ├── BankingApplication.java
└── banking_system.ser
└── README.md


🚦 Setup and Installation

Prerequisites

  • Java Development Kit (JDK) 8 or later
  • Git (for cloning the repository)

Clone the Repository

git clone https://github.com/letsbegincode/Banking-System
cd Banking-System

Compile the Application

cd src
javac *.java

Run the Application

java BankingApplication

Data Persistence

  • On exit, the application automatically saves data to banking_system.ser.
  • On startup, it attempts to load existing data from this file.

🧠 Design Patterns Implemented

  • Factory Pattern: Simplifies account creation (AccountFactory).
  • Command Pattern: Encapsulates account operations (DepositOperation, WithdrawOperation, TransferOperation).
  • Observer Pattern: Provides notifications (ConsoleNotifier, TransactionLogger).

👨‍💻 Usage Guide

  1. Create an Account: Supports Savings, Current, and Fixed Deposit types.
  2. Perform Transactions: Deposit, withdraw, and transfer funds securely.
  3. Generate Reports: View account summaries and transaction volumes.
  4. Process Interest: Automatically calculates and applies interest to eligible accounts.

🔍 Troubleshooting

  • Class Not Found Error: Ensure .class files are in the correct directory.
  • Serialization Issues: Delete banking_system.ser if data corruption occurs.
  • Multithreading Deadlock: Review the operationQueue processing logic.

💡 Future Enhancements

  • GUI Integration: Build a desktop application using JavaFX or Swing.
  • RESTful API: Create a backend server to support web or mobile frontends.
  • Database Support: Replace serialization with JDBC and MySQL for data persistence.

🛡️ Security Considerations

  • Input validation to avoid invalid transactions.
  • Thread safety in multithreaded operations.
  • Exception handling to prevent application crashes.

🙏 Acknowledgments

  • Thanks to the Java community for inspiration and resources.

About

A Java-based Banking System that allows users to manage accounts, perform transactions, and store data persistently using serialization.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages