A Java-based console application for managing banking operations
The Bank System is a console-based application built in Java to simulate core banking operations. It enables users to manage customers, create and handle various account types, process transactions, and perform currency conversions. Designed as an educational project, it demonstrates Object-Oriented Programming (OOP) principles, including inheritance, encapsulation, and polymorphism, applied to a real-world banking scenario.
Developed by: Abdulrahman Farhan
Supervised by: Dr. Jalal Kiswani
Institution: Al-Zaytoonah University of Jordan
Purpose: Educational demonstration of OOP concepts
- Customer Management: Register and manage customer details (name, email, phone).
- Account Management: Create and manage multiple account types:
- 🏦 Savings Account
- 💳 Checking Account
- 📅 Fixed Deposit Account
- 🕌 Islamic Account
- 💸 Loan
- Transaction Processing: Perform deposits, withdrawals, and view transaction histories.
- Financial Calculations:
- Interest for Savings and Fixed Deposit accounts
- Profit for Islamic accounts
- Monthly payments for Loans
- Currency Conversion: Convert between USD and JOD using fixed exchange rates.
- User-Friendly Interface: Interactive console-based menu for easy navigation.
- Modular Design: Clean, OOP-based code structure for maintainability.
- Java: Core programming language.
- Java Standard Library:
ArrayList: For dynamic data storage.Scanner: For handling user input.LocalDate: For date management.
- OOP Principles: Inheritance, encapsulation, and polymorphism for modular design.
The project is organized into well-defined packages, each serving a specific purpose:
Bank: Manages the bank entity and maintains a list of customers.Customer: Stores customer details (ID, name, email, phone) and their accounts.
Account(Abstract): Base class for all accounts, handling balance, transactions, and core operations (deposit, withdraw).CheckingAccount: Supports overdraft limits for flexible withdrawals.FixedDepositAccount: Manages fixed-term deposits with restricted withdrawals and interest calculations.IslamicAccount: Implements profit-sharing compliant with Islamic banking principles.Loan: Handles loan-specific features, including interest rates and payment terms.SavingAccount: Supports interest calculations and withdrawal limits.
Transaction: Represents a single transaction (deposit or withdrawal) with type, amount, and timestamp.
CurrencyConverter: Provides static methods for USD-to-JOD and JOD-to-USD conversions.InterestCalculator: Calculates simple interest or profit for applicable accounts.
Bank_UI: Implements the console-based user interface for seamless interaction.main: Entry point of the application, initializingBank_UI.
📌 Class Diagram: For a detailed visualization, refer to the UML Class Diagram in the repository.
Follow these steps to set up and run the Bank System locally:
- Java Development Kit (JDK) 8 or higher.
-
Clone the Repository:
git clone https://github.com/abdulrahmanfarhan/Java-OOP.git cd Java-OOP/BankSystem -
Verify Java Installation:
java -version
Ensure JDK 8 or higher is installed.
-
Compile the Project:
javac -d . src/com/bank/*/*.java
-
Run the Application:
java com.bank.main.main
Upon launching, the application prompts for the bank name and displays a main menu with the following options:
- Register New Customer: Add a customer with name, email, and phone number.
- Create New Account: Create an account (Savings, Checking, Fixed Deposit, Islamic, or Loan).
- Manage Accounts: Perform deposits, withdrawals, view transactions, or calculate interest/profit.
- Currency Conversion: Convert between USD and JOD.
- Display Bank Info: View bank details and customer account summaries.
- About: Display project information and credits.
- Exit: Close the application.
-
Start the Application:
java com.bank.main.main
-
Enter Bank Name:
MyBank -
Register a Customer (Option 1):
Enter customer name: John Doe Enter email (optional): [email protected] ✅ Success: Customer John Doe registered with ID 1001 -
Create a Savings Account (Option 2):
Select customer: John Doe Choose: 1 (Savings Account) Enter initial balance: 1000 Enter withdraw limit: 500 Enter annual interest rate (e.g., 0.05 for 5%): 0.05 ✅ Success: Account created with ID 1 -
Manage Account (Option 3):
- Deposit:
1000 - Withdraw:
200 - View transactions or calculate interest.
- Deposit:
The class structure and relationships (inheritance, associations, attributes, and methods) are detailed in the UML Class Diagram included in the repository.
We welcome contributions to enhance the Bank System! To contribute:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/your-feature
- Commit your changes:
git commit -m "Add your feature" - Push to the branch:
git push origin feature/your-feature
- Open a pull request with a detailed description of your changes.
Please adhere to the project's coding standards and include clear comments.
This project is licensed under the MIT License. See the LICENSE file for details.
For questions or support, please contact:
📧 Abdulrahman Farhan – [email protected]
Or open an issue on GitHub.
- Dr. Jalal Kiswani: Project supervisor at Al-Zaytoonah University of Jordan.
- Al-Zaytoonah University of Jordan: For providing the academic environment for this project.
© 2025 Abdulrahman Farhan. All rights reserved.