This project is a monthly budgeting app using the CRUD approach to help users manage their money by tracking personal expenses, income, savings, and liabilities (debt such as credit card, student loans, car payments etc). The app can be used by people to manage their personal finances so that they can achieve financial success and avoid debt. As a university student who uses *Microsoft Excel* to manage my monthly finances, the UI was not visually attractive where it just had grids and rows. Most of these services including Excel require subscriptions, which beats the point of trying to save money. The mission of Frugality is to help users including myself to manage their personal finances for free.
- As a user, I want to be able to add daily transactions to my budgeting app
- As a user, I want to be able to view my list of expenses for the month in my budgeting app.
- As a user, I want to be able to edit my debt when it has been paid off.
- As a user I want to be able to delete monthly subscriptions off my expenses in my budgeting app. #do last
- As a user, I want to be able to view my savings account in my budgeting app.
- As a user, I want to be able to save my transaction histories and savings amount (if I choose to)
- As a user I want to be able to load my transaction histories and savings amount(if I choose to)
The app uses EventLog and Event from Java packages to log when user initalize, add, or remove something. The will be printed in the console when the user quits the application. Here is a demo of how this works:
=== Event Log ===
Sat Mar 29 18:34:21 PDT 2025
Create Account Button clicked!
Sat Mar 29 18:34:21 PDT 2025
Account created for user: sam
Sat Mar 29 18:34:25 PDT 2025
User logged in: sam
Sat Mar 29 18:34:35 PDT 2025
Updated Savings: $1000
Sat Mar 29 18:34:46 PDT 2025
Transaction added: Books - $30
Sat Mar 29 18:34:46 PDT 2025
Updated Savings: $-30
Sat Mar 29 18:34:57 PDT 2025
Transaction added: Groceries - $100
Sat Mar 29 18:34:57 PDT 2025
Updated Savings: $-100
Sat Mar 29 18:35:12 PDT 2025
Transaction added: Spotify - $10
Sat Mar 29 18:35:12 PDT 2025
Updated Savings: $-10
Sat Mar 29 18:35:17 PDT 2025
Transaction removed: Spotify
Reflecting after drawing my UML design program, I realized there are some refactoring on my code that could be done to make the project cleaner. However, with a tight deadline, this is not possible for this phase of the term project. However, here are some refactorings of my code that could be done to reduce code duplication. I would use more inheratance using implements to extract code from superclasses. I would also override some code with concepts learnt in class, to override methods for creating buttons when creating buttons in window screens.
The crucial part that would make the code cleaner is use Hashmaps instead of an ArrayList so that I could hash username and password, and not store it in a JSON directly. I would use more inheritance and superclasses so that I could avoid code duplication when listening to user buttons using Swing package.