Stuart Long's Project Portfolio Page
Project: TimesTable
TimesTable is a Class Management desktop application for tuition teachers to keep track of their students and classes. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 25 kLoC.
Given below are my contributions to the project.
- New Feature: Added the skeleton of the tabs (Pull request: #73)
- What it does: Added the base skeleton of the 3 tabs -
Students
,Classes
andTimetable
- Highlights: I had to implement this before my teammates could start working on their respective tabs. This enhancement was the start of our evolution from the original AB3 into what we have today. It improved the entire UI and allowed us to have multiple tabs which users could view.
- What it does: Added the base skeleton of the 3 tabs -
- New Feature: Added the Timetable UI (Pull requests: #81, #97, #114, #136, #138)
- What it does: Displays the tuition classes of the user in a timetable format in the
Timetable
Tab, improving the user experience. - Justification: The Timetable allows user to see his entire weekly schedule in a glance.
- Highlights: This enhancement revamped the entire UI of the app. It required an in-depth analysis of all possible design patterns to upgrade the UI. The implementation was challenging as it required addition of many new components to build the entire timetable component.
- Credits: AY19/20 S2 CS2103-W15-4 Github
- What it does: Displays the tuition classes of the user in a timetable format in the
- New Feature: Added the
sort
feature (Pull requests: #126, #129, #132, #240, #250)- What it does: Sorts the students and classes based on the specified parameter in the specified order.
- Justification: User is able to arrange the list of students and/or classes in the order the user would like. It is also one of the basic features an address book application should have.
- Highlights: Implementing this
sort
command was relatively easier than the Timetable UI. However, the challenging part was choosing what parameter to allow the user to sort the students or classes by. The parameters I allowed to be sorted by were the student’s name and the class’ timing, as I believe that these are the two parameters which the user would sort them by the most.
- New Feature: Added the
view
feature using Observer Pattern (Pull request: #92, #126)- What it does: Opens the tab specified by the user.
- Justification: This feature was crucial as it tailored our app towards users who do not like using the mouse or voice commands. The user can now switch tabs without the need of a mouse. This feature also played an important role in other commands. The commands related to TuitionClass, such as
addToClass
,editClass
etc used this feature to switch to theClasses
tab when they were called. Similarly, commands related to Student, such asadd
,edit
etc used this feature to switch to theStudents
Tab. - Highlights: Implementing this
view
command required an in-depth analysis of the possible design patterns. I decided to use the Observer pattern here. In this case, theMainWindow
implemented theCommandObserver
and observed theCommand
s.CommandObserver#updateView()
switches the tab of the Observers to the tab indicated by the user.
-
Code contributed: Reposense
- Project management:
- Managed releases
v1.3.trial
,v1.3(final)
andv1.4
on GitHub.
- Managed releases
- Enhancements to existing features:
- Documentation:
- User Guide:
- Added documentation for the
CLASS_TIMING
field, and thesort
,view
andclass
commands: #29, #146 - Added command summary for
addclass
,addtoclass
,deleteclass
,editclass
,findname
,findclass
,findclassname
,findtag
,list
,listclass
,selectclass
,sort
,view
: #146 - Reordered User Guide to follow the order which the user uses the app to improve the reader’s experience: #150
- Did cosmetic tweaks to existing documentation of features
delete
,deleteclass
,listclass
,editclass
,findname
,findtag
andfindclassname
: #146
- Added documentation for the
- Developer Guide:
- User Guide:
- Community: