PROJECT: TutorHelper

This project portfolio consists of the contributions i have made to TutorHelper.

Overview

TutorHelper is a desktop administration application intended for Tutors who would like to organise their students' information. TutorHelper uses CLI(command-line interface) as its main form of inputs: where tutors issues commands in the form of successive line of text. Having multiple students at once can be a hassle to deal with, especially with each student having his own curriculum, tuition timing, and payments. Our team of five decided to create TutorHelper by building upon the existing AddressBook Level 4 application. TutorHelper offers an easy way to keep track of the tutor schedule and keep tabs on the students, allowing him to efficiently plan ahead.

Some of the new main features include :
Grouping
Payment
Earnings
Add/Edit/Delete/Mark Syllabus
Add/Delete/Copy Subject

Summary of contributions

This section lists the major and minor enhancements I have contributed to building TutorHelper, as well as miscellaneous contributions in other aspects of this project.

  • Major enhancement: added the ability to add payments to a student.

    • What it does: allows the tutor to record payment for his/her student and keep track of which month or year a particular payment amount was made.

    • Justification: It is difficult for tutors to keep track of payment and this feature can help tutors manage their payments and ensure that he/she is fairly paid.

    • Highlights: Making a new payment entry will update the student’s details in the database. Only a maximum of $10 000 can be keyed in as payment.

  • Major enhancement: added the ability to view tutor’s earning for a specific month and year.

    • What it does: Tutor can view his total earnings across the board for a specific year and month.

    • Justification: This feature allows tutor to sum up his monthly salary and allow him to better manage his financial accounts.

    • Highlights: If no payment has been made for that particular month or year, then earnings displayed will be of default $0.

  • Minor enhancement:

    • Add Payment into TutorHelper (Pull request #12)

  • Code contributed: https://nus-cs2103-ay1819s1.github.io/cs2103-dashboard/#=undefined&search=ooihuiying

  • Other contributions:

    • Project management:

      • Created issues for the different milestones and labelled them according to the severity and priority on Github.

    • Enhancements to existing features:

      • Wrote additional tests for new features added to increase code coverage (Pull requests #138)

      • Did refactoring of addressbook to tutorHelper (Pull requests #143)

    • Documentation:

      • Added section for payment and earnings in the User Guide

      • Added section for payment and earnings in the Developer Guide (Pull requests #81)

      • Added section for Instructions for manual testing in Developer Guide (Pull requests #236)

    • Community:

      • Reviewed other PRs

      • Reported bugs and suggestions for other teams in the class

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.

Record Payment : paid

Records a payment of a specified amount made by a specified student for a specified month and year.
Format: paid STUDENT_INDEX AMOUNT MONTH YEAR

  • If a payment entry already exists, the amount will replace the existing payment record.

  • The maximum payment amount allowable is 10 000 each time.

  • Only positive integers are accepted as payment amount.

  • Only the 5 latest payments will be displayed each time.

  • Records a payment of a specified AMOUNT for the student at the specified STUDENT_INDEX, for a specified MONTH and YEAR.

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

  • The student index, month and year must be positive integers 1, 2, 3, …​

  • The index cannot be more than number of displayed students on list.

Examples:

  • paid 1 200 01 2018
    Records a payment of $200 made for January 2018, or overwrites the existing payment entry for January 2018.

Display Earnings : earnings

Displays total earnings across all students for a specified month of a specified year.
Format: earnings MONTH YEAR

  • Display tutor earnings across all students for a specified MONTH of a specified YEAR.

  • The month and year must be positive integers 1, 2, 3, …​

Examples:

  • earnings 01 2018
    Displays earnings made for January 2018.

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.

User Stories

  1. As a busy tutor, I want to be able to manage my students' schedules individually, so that I can plan my time properly.

  2. As a tutor, I want to be able to find out where my students live and what time I should be there for tuition.

  3. As a tutor, I want to know my students' individual progress so that I know what topics I need to cover for the next tuition session.

  4. As a tutor, I want to keep track of my students' payments so that i know who to collect fees from.

  5. As a tutor, I want to keep track of my monthly earnings so that i can manage my financial accounts.

  6. As a tutor, I want to be able to edit teaching data such as editing my syllabus to keep up with changes in school’s curriculum or updating payments made by students.

Record Payment Feature

Current implementation

Classes that are related to Payment and their functionality are as listed below:

  • TutorHelperParser — Creates a PayCommandParser object and calls parse method in object to parse user’s argument input.

  • PayCommandParser — Analyses the input, checks for any violation of syntax and returns a PayCommand object with the Payment object as the para.

  • PayCommand — Calls on methods in VersionedTutorHelper to update new Payments made.

  • Payment — -Contains fields to store student id, amount paid, month of payment and year of payment.

Given below is an example usage scenario and how the payment mechanism behaves at each step.

Step 1. The tutor launches the application and wants to record a payment for his/her student called Alice.

Step 2. He/she makes a mental note of Alice’s student index as listed in the left side of the application.

Step 3. Lets say, Alice has student id 2. The payment she made was $400 for the month and year of November 2018. He/she proceeds to key in the command in the following format: paid 2 400 11 2018

Step 4. Assuming that each argument given is a valid input, the system will perform the Payment command.

Step 5. The system will locate Alice from the student list and update payment field for Alice.

Step 6. Now, payment details have been updated and the tutor will be able to see a successful payment message under the command box.

Step 7. The tutor may also choose to view the details from browser panel by clicking on Alice tab on the left. Payments will be displayed.

Payment list will keep up to 5 payments at any one time. When the 6th payment is added, the payment list will remove the oldest payment record.
The maximum amount of payment that can be made each time is $10 000.

The diagram below illustrates the sequence diagram.

PaymentSequenceDiagram

Display Earnings Feature

Current implementation

The classes related to Earnings are EarningsCommand, EarningsCommandParser.

  • TutorHelperParser — Creates a PayCommandParser object and calls parse method in object to parse user’s argument input.

  • EarningsCommandParser --Takes in users' input and checks if it adheres to the required format. Returns a EarningsCommand with the month and year passed in.

  • EarningsCommand — Takes in month and year as inputs in its constructor. In Execute() method, it performs the checking of all recorded payments and returns the total payments received for that specified month and year.

Given below is an example usage scenario and how the earning mechanism behaves at each step.

Step 1. The tutor launches the application and wants to view his/her earnings for the month of November 2018.

Step 2. He/she enters input in the format of: earnings 11 2018

Step 3. Assuming arguments are correct, the system executes Earnings command.

Step 4. The list of students from the model is obtained and the system proceeds to search for Payment records made for that requested month and year.

Step 5. The tutor will then see a message below the command text box, showing the earnings for the requested month and year.

The diagram below illustrates the sequence diagram.

Default value for earnings of an unrecorded month and year will be $0.

EarningsSequenceDiagram