PROJECT: TutorPal


Overview

TutorPal is a desktop application used by private home tutors for managing student information. The useage is primarily through CLI. It is written in Java.

Summary of contributions

  • Major enhancement: implemented the Filter command in aspect of fee grade timeslot education

    • What it does: *FilterByFee enable user to read the list of students whose tuition fee is equal or larger than the given minimal limit fee. *FilterByGrade enable user to read the list of students whose gradeslist include the given grade range from a to b. *FilterByEducation enable user to read the list of students whose education level is the same. *FilterByTimeSlot enable user to get the student whose timeslot is the same as input timeslot.

    • Justification: Filter is an important command for the user to search according to different features, given the range and list the qualified students can provide a simple review in aspect to certain features.

  • Major enhancement: implemented the exchange Time command

    • What is does: To exchange the time slot between two students whose education is the same.

    • Justification: Since it is not allowed to simply add the new time slot when a time slot is already be taken, so exchanging Time between two students is different from simply delete and add time slot, this command allow two student to exchange their time slot without bringing any crush on time slots.

  • Major enhancement: implemented the Suggestion command

    • What is does: To provide suggestion to students according to his or her average grades.

    • Justification: This command allow user to clearly see the overall performance of certain students by analysing the average grades. If the student has not taken any exams yet, there is no suggestion gonna be provided.

  • Other contributions:

    • Project management:

      • Make sure every editing of any features is compatible with current code

      • Improve features added by others in order to match the command request.

      • Initiate the creative thought about the project.

      • Arrange specific work for everyone during meeting.

      • Managed project Milestone.

    • Documentation:

      • Add the section on Reporting Module to the UserGuide.

      • Add the use cases of Reporting Module to the Developer Guide.

    • Enhancements to others features:

      • Add the predicate for filtering the grade, fee, education and time slot.

      • Improve the time and education features by adding setting method and enums.

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.

Filter students by tuition fee: filterByFee

List all the students whose tuition fee is greater or equal to the input fee.
Format: filterByFee FEE

  • filter result: list all the students whose tuition fee is greater or equal to the input fee.

Examples:

  • filterByFee 24 returns a list of students whose tuition fee is greater or equals to $24/hour.

If no students qualify the filter criteria, an empty list is returned along with a system message which says that no such students can be found.

Fee

Filter students by educational level: filterByEducation

List all the students with given educational level
Format: filterByEducation EDUCATIONAL_LEVEL

  • filter result: list all the students whose education level is the same as input.

Examples:

  • filterByEducation Secondary
    returns a list of students whose Education level is Secondary.(no matter which year he or she is in)

  • filterByEducation JC
    returns a list of students whose Education level is JC.(no matter which year he or she is in)

If no students qualify the filter criteria, an empty list is returned along with a system message which says that no such students can be found.

The input of the education level must be "JC" "Secondary" or "Primary". Other input will be considered invalid input.

Education

Filter students by grade: filterByGrade

List all the students whose grades fall between the minimum and maximum grade(both inclusive).
Format: filterByGrade MINIMUM_GRADE MAXIMUM_GRADE

  • filter result: A list containing students with grades which fall between the minimum and maximum grade.

Examples:

  • filterByGrade 50 100
    returns a list of students whose has grade within 50 and 100 (both 50 and 100 are inclusive).

If the input minimal grade is larger than maximal grade, then it will be regarded as the range between maximal and minimal grade.

If no students qualify the filter criteria, an empty list is returned along with a system message which says that no such students can be found.

Grade

Filter students by time slot: filterByTime

List the student who has class at the given time.
Format: filterByTime ts/TIME_SLOT

  • filter result: A student who has a lesson at the given time slot.

Examples:

  • filterByTime ts/mon 1300 1400
    returns the student whose has tuition time in monday 1300-1400.

The time must be followed as format like "mon 1300 1400" and only "mon" "tue" "wed" "thu" "fri" "sun" "sat" are considered valid date.

If no students qualify the filter criteria, an empty list is returned along with a system message which says that no such students can be found.

Time

Give Suggestions to students: suggestion

Give Suggestions to students
Format: suggestion NAME

  • result: show the suggestions.

Examples:

  • suggestion Alice Show the suggestion to Alice according to her performance.

If the student has not taken any exam before No suggestion gonna be shown.

Give Suggestions to students: suggestionByIndex

Give Suggestions to students
Format: suggestion index (base 1)

  • result: show the suggestions.

Examples:

  • suggestion 1 Show the suggestion to the first student in the list according to his or her performance.

If the student has not taken any exam before No suggestion gonna be shown.

Edit certain class time of certain student: exchangeTime

Exchange class time between two students who are in the same grade of same education level
Format: exchangeTime A_TIME_SLOT_ORDINAL_NUMBER B_TIME_SLOT_ORDINAL_NUMBER n/NAME_A n/NAME_B

  • exchange result: exchanged the time between the given students with given time found by the ordinal number.

Examples:

  • exchangeTime 0 0 Alice Bob Exchange Alice first time slot and Bob first time slot.

The reason this command exists is that when two student want to swap time it cannot only use edit because the existing time-slot will crush.

If the two students are not in the same grade of same education level It will be considered as invalid command.

The ordinal number of the time is 0 base. If the the corresponding time-slot doesn’t exit based on the ordinal number, then return invalid input.

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.

Use case: Filter by grade

MSS

  1. User requests to get the list of students whose grade in certain given range

  2. System filter the personList and displays the qualified list

    Use case ends

Extensions

  • 1a. User inputs an invalid range of grade.

    • 1a1. System displays an error message.

    • 1a2. System prompts user for a corrected input.

      Use case resumes from step 2.

Use case: Filter by fee

MSS

  1. User requests to get the list of students whose fee is over the given number.

  2. System filter the personList and displays the qualified list

    Use case ends

Extensions

  • 1a. User inputs an invalid double.

    • 1a1. System displays an error message.

    • 1a2. System prompts user for a corrected input.

      Use case resumes from step 2.

Use case: Find students list of the given Education

MSS

  1. User requests to get the list of students whose is in the given education level

  2. System filter the personList and displays the qualified list

    Use case ends

Extensions

  • 1a. User inputs an invalid education level.

    • 1a1. System displays an error message.

    • 1a2. System prompts user for a corrected input.

      Use case resumes from step 2.

Use case: Filter by Timeslot

MSS

  1. User requests to get the name of the student who takes class at given timeslot

  2. System find out the student and show his or her name

    Use case ends

Extensions

  • 1a. User inputs an invalid time slot.

    • 1a1. System displays an error message.

    • 1a2. System prompts user for a corrected input.

      Use case resumes from step 2.

Use case: Provide suggestions to certain student

MSS

  1. User requests to get the suggestion for certain student by his or her name.

  2. System filter the personList and displays the qualified list

    Use case ends

Extensions

  • 1a. User inputs an invalid double.

    • 1a1. System displays an error message.

    • 1a2. System prompts user for a corrected input.

      Use case resumes from step 2.

Use case: Provide suggestions to certain student with index

MSS

  1. User requests to get the suggestion for certain student by his or her index number.

  2. System filter the personList and displays the qualified list

    Use case ends

Extensions

  • 1a. User inputs an invalid double.

    • 1a1. System displays an error message.

    • 1a2. System prompts user for a corrected input.

      Use case resumes from step 2.

Use case: Exchange time slot between students

MSS

  1. User requests to exchange time slot between students whose Education is the same.

  2. System filter the personList and displays the qualified list

    Use case ends

Extensions

  • 1a. User inputs an invalid double.

    • 1a1. System displays an error message.

    • 1a2. System prompts user for a corrected input.

      Use case resumes from step 2.