PROJECT: Something Daily


Overview

Something Daily is a desktop application as a combination of to-do list and expenditure tracker which is written in Java. The target users are NUS SoC students. This application aims to improve students' life efficiency from helping them deal with their numerous deadlines and plan their daily expenditures. The user interacts with it using a CLI, and it has a GUI created with JavaFX. This project portfolio is aimed to show my contribution to our project.

Summary of contributions

  • Major enhancement: added the check command for Expenditure Tracker

    • What it does: allows the user to check how much money they have spent in a specific period.

    • Justification: This feature improves the product significantly because if a user want to know how much money they have spent in a period, they can easily get the value.

  • Major enhancement: added a pie-chart to show the expenditure

    • What it does: allows the user to see where and how much they have spent when they want to use the check command.

    • Justification: This feature improves the product significantly because users can see their each expense in a period directly.

    • Highlights: This enhancement will appear a new window to show the chart.

    • Credits: This feature needs another library jfreechart to draw the chart.

  • Major enhancement: added the ability to delete an expenditure

    • What it does: allows the user to delete an expenditure by index.

    • Justification: This feature improves the product significantly because users may add a wrong expenditure.

  • Major enhancement: added the ability to edit an expenditure

    • What it does: allows the user to edit an expenditure by index.

    • Justification: This feature improves the product significantly because users may want to change some parts of an expenditure.

  • Minor enhancement: change GUI for expenditure description

  • Minor enhancement: some test files for expenditure tracker

  • Code contributed: [RepoSense Dashboard]

  • Other contributions:

    • Documentation:

      • Add implementation of ET_check command in the Developer Guide.

      • Add some command of Expenditure tracker in the Users Guide.

      • Update use cases in the Developer Guide.

    • Community:

    • Tools:

      • Integrated a third party library (jFreeChart) to the project

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Checking expenditures : ET_check

Checks the status of the expenditures in a particular period and generates a pie-chart to demonstrate how much money was spent on each unit period.
Format: ET_check start/STARTDATE end/ENDDATE

  • start/STARTDATE and end/ENDDATE must be in the format of DD-MM-YYYY, where DD refers the date, MM refers the month and YYYY refers the year in numbers.

  • end/ENDDATE must be of a later date than start/STARTDATE.

Examples:

  • ET_check start/01-01-2017 end/01-01-2018
    Checks the status of the expenditures from 01-01-2017 to 01-01-2018 and generates a pie-chart to illustrate how much money was spent on each expenditure. === Deleting an expenditure : ET_delete

Deletes the specified expenditure from the Expenditure Tracker.
Format: ET_delete INDEX

  • Deletes the expenditure at the specified INDEX.

  • The index refers to the index number shown in the displayed expenditures list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • ET_delete 2
    Deletes the 2nd expenditure in the Expenditure Tracker.

  • ET_delete 1
    Deletes the 1st expenditure in the Expenditure Tracker. === Editing an expenditure : ET_edit

Edits an existing expenditure in the Expenditure Tracker.
Format: ET_edit INDEX [e/DESCRIPTION] [d/DATE] [m/MONEY] [c/CATEGORY]

  • Edits the expenditure at the specified INDEX. The index refers to the index number shown in the displayed expenditures list. The index must be a positive integer 1, 2, 3, …​

  • At least one of the optional fields should be provided. There will not be any changes made if no optional fields are provided.

  • Existing values will be updated to the input values.

Examples:

  • ET_edit 1 e/Beef rice m/12.5
    Edits the expenditure description and money detail of the 1st expenditure in the Expenditure Tracker list to be Beef rice and 12.5 respectively.

  • ET_edit 2 d/09-12-2018 c/Electronics
    Edits the expenditure date and category of the 2nd expenditure to be 09-12-2018 and Electronics respectively.

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

Check Expenditure

Current Implementation

Check the total money spent in a specific period uses both Logic and Model components. It also generate a chart to show each expenditure in this period on each date.

The following sequence diagram shows how the ET_advice operation works:

CheckSequenceDiagram

Design Consideration

Aspect: Methods to support the check commands
  • Alternative 1 (current choice): Use list to get each money in expenditures.

    • Pros: Easy to implement using the exist list for expenditures.

    • Cons: Can not get the expenditures which are not shown in the list.

  • Alternative 2: Create additional structure for expenditures.

    • Pros: May use less memory.

    • Cons: Another data structure may cause some errors.

Aspect: Methods to generate the graph
  • Alternative 1 (current choice): Use a pie chart.

    • Pros: Can show users the percentage of each expenditure directly.

    • Cons: Do not show the change of their expense during this period.

  • Alternative 2: Use a line chart.

    • Pros: Can show users the trend of their expenditures according to the date.

    • Cons: Can not let users know how much each expenditure occupies total expenditures.

Use case 15: Add expenditure / income

System: Expenditure Tracker & Calendar

MSS

  1. User enter add command followed by the amount of money

  2. Expenditure tracker receives information and shows the dates to be added

  3. User choose the date

  4. Expenditure tracker notifies user to pick category

  5. User choose the category to be added

  6. Expenditure Tracker record and display the income / outcome on calendar

Use case 16: Check expenditure / income status

System: Expenditure Tracker & Calendar

MSS

  1. User enter check status command

  2. Expenditure tracker asks user to choose whether to check in the visual calendar or key in the starting date and closing date of a particular period

  3. User keys in visual command or manual command

  4. Calendar shows the expenditure / income for each day visually or Expenditure Tracker shows the expenditure / income status by displaying the amount of money.

Use case 17: Delete expenditure / income

System: Expenditure Tracker & Calendar

MSS

  1. User enters ET_delete command followed by index number

  2. Expenditure tracker confirms expenditure is present and deletes the expenditure

Extensions

2a. The list is empty.
2b. The given index is invalid
  2b1. Expenditure list shows an error message

Use case 18: Edit or Update expenditure

System: Expenditure Tracker & Calendar

MSS

  1. User enters ET_edit command followed by index number

  2. Expenditure tracker confirms expenditure is present in the list

  3. User enter relevant contents

  4. Expenditure tracker shows the updated expenditure in the list

Extensions

2a. The list is empty.
2b. The given index is invalid.
  2b1. To-do list shows an error message