Home / Projects / Personal Finance Manager
Day 10 · Day 10: Advanced Python

Personal Finance Manager

Build a comprehensive Personal Finance Manager that tracks income and expenses by category, generates monthly reports, and uses caching for repeated report calculations — combining OOP, file storage, and performance techniques from the course.

Requirements

1. Create a Transaction class with date, type (income/expense), category, amount, and description.
2. Create a FinanceManager class that stores a list of Transaction objects.
3. Implement add_transaction(), which validates that amount is positive and type is "income" or "expense".
4. Implement get_balance() returning total income minus total expenses.
5. Implement get_report(month) returning a summary dict of income, expenses, and per-category breakdown for a given month, using @lru_cache or manual caching to avoid recomputation for repeated calls with the same month.
6. Implement save_to_file() and load_from_file() using JSON for persistence.
7. Build a menu-driven interface tying everything together.
8. Handle invalid input gracefully throughout (invalid amounts, invalid dates, etc.).
75 XP on completion Back to Day 10

Your Code

Output
Click "Run" to execute your code...

Log in to mark this project complete and earn XP.