Project: TuitiONE

TuitiONE is a Command Line Interface (CLI) based application that aims to simplify the work of Customer Servicing Officers (CSO) in a tuition centre. It is written in Java and has a GUI created with JavaFX.

Given below are my contributions to the project.

  • New Feature: Added the ability to filter student and lesson lists.
    • What it does: Allows the user to filter the student and lesson lists if a grade condition is specified. If a subject is specified, the lesson list will also filter based on that. It allows filtering by either grade, subject or both together.
    • Justification: This allows the user to see only relevant students and lessons based on the specified grade or subject conditions, instead of having to scroll a lot.
    • Highlights: This enhancement requires the creating more predicate classes to filter the lists, as well as creating a parser and a ‘Grade’ class with relevant checks to ensure a valid grade is inputted. No checks on subject as there can be a wide variety of subjects.
  • New Feature: Added the ability to add on remarks to students, and to delete individual remarks.
    • What it does: Allows the user to tag additional remarks to students on top of existing ones, and to also delete specific remarks that they do not need anymore.
    • Justification: The previous implementation needed users to re-type existing remarks if they wanted to keep existing remarks and add new ones. It also did not allow users to delete individual remarks. This feature saves the user time if they want to add or delete remarks, and makes it more convenient for them.
    • Highlights: This required editing existing classes and methods to check for remarks to delete and add. It required analysing the target user and re-designing the feature to better suit their needs. It required considering various new checks on the inputs as well.
  • New Feature: Added feature where student list is sorted by student names, and lesson list is sorted by grade.
    • What it does: Student list is now displayed in sorted ascending order by student names, and lesson list is sorted by grade, from ‘P1’ to ‘S5’.
    • Justification: This allows users to view a more organised list of students and lessons, making look ups more efficient.
    • Highlights: This required deep analysis of the code to ensure the lists are always sorted regardless of what commands are invoked.
  • Code contributed: RepoSense link

  • Project management:
    • Managed release v1.4 on GitHub
    • Scheduled and created team meetings
    • Created issues, tags and milestones on Github
  • Enhancements to existing features:
    • Enhanced edit feature by allowing editing of student’s grade. This required ensuring different components interacted with each other correctly depending on what field was to be edited, and required modifying existing classes (Pull requests #148, #137)
    • Updated the GUI (Pull requests #286, #282)
    • Wrote additional tests for existing features to increase coverage (Pull requests #94, #181)
    • Updated validity checks and constraints for existing features (Pull requests #282, #203, #187)
    • Refactored ‘Student’ class from ‘Person’ class, and updated related commands (Pull requests #65, #29)
    • Implemented base code for delete lesson feature, which was later further refined (Pull requests #94)
    • Updated edit feature to ensure components that have associations with each other work as expected together. (Pull requests #148)
  • Documentation:
    • User Guide:
      • Updated formatting (#172)
      • Added upcoming features section (#299)
      • Add documentation for edit, add, delete and roster feature (#188, #78, #163)
      • Update command summary (#88, #163)
    • Developer Guide:
      • Updated formatting #172
      • Add use case for find #40
      • Add details for filter implementation and use case #152
      • Add use case and user story for roster #163
      • Update model class diagram #168
  • Community:
  • Tools:
    • Utilize SceneBuilder to build GUI Layout