Tharwa is a console-based personal investment management system built using Java. It allows users to create accounts, securely log in, manage various asset types, and perform zakah calculations — all while tracking their financial growth in a structured and goal-oriented way.
-
🔐 User Sign Up & Login
Simple authentication with username and password validation. -
🏦 Bank Account Management
Users can securely register their bank account details. -
📊 Asset Management
Users can add and track the value of different types of assets:- Stock
- Gold
- Cryptocurrency
- Real Estate
-
🕌 Zakah Calculator
A dedicated tool to help users calculate their zakah based on their holdings.
- Users launch the program via
Main.java
using any Java IDE. - The application provides a menu-based interface for navigating between functionalities.
- All data is stored locally (no external database).
- Java (Core Language)
- Object-Oriented Design
- Console-Based I/O
- File Handling (for local data storage)
- Github : For version control and sharing work
- draw.io: For making system diagrams
- Miro: For system navigation map
- Intellij Idea: IDE for writing code
- Javadoc: For generating documentation
├── Main.java # Entry point of the application
├── controllers/ # Handles core application logic
├── models/ # Contains Asset, BankAccount, User classes
├── services/ # Business logic like zakah calculation
├── utils/ # Helper classes for validation and input
├── data/ # Stores user data locally (files)
The project includes full SDLC documentation:
- 📙 System Navigation
- 🧪 Class Diagram, State Diagram and component Diagram
- 🧪 Sequence Diagrams
- 🧪 Use Case Diagram
- 📊 Presentation Slides
- Fatema El-Zhraa Ahmed "Project Leader"
- Nagham Wael
- Aly El-Deen Yasser Ali
- Clone or download the project.
- Open in your favorite Java IDE (e.g., IntelliJ, Eclipse).
- Run
Main.java
. - Use the menu options to explore all features.
- Add multi-user roles (e.g., Admin)
- Connect with real-time financial APIs
- Add data persistence using a database
- GUI interface (e.g., using JavaFX or Swing)
For inquiries or contributions, feel free to reach out to any of the contributors.