Bernard Wan De Yuan's Project Portfolio Page
Project: TimesTable
TimesTable is a desktop address book plus planner 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
removefromclass
command to remove one or more students from an existing class.- Justification: A core feature to remove students that left.
- Highlights: The implementation of this command was especially challenging as the only information that the command has
are the student indices and the class index. These indices are based on the view displayed by the GUI, which is
affected by
sort
andfind
commands. Furthermore, only student names are stored in theTuitionClass
object to reduce update cascading. As such, the correct filters and sorting must be applied to the overall student list to obtain the student names in the right order as displayed by the GUI. - Pull requests: #117, #147, #260, #266 , #301
- New Feature: Added the
deleteclass
command to delete existing tuition classes.- Justification: A core feature for the user to get rid of older classes that they have finished teaching.
- Highlights: Deleting the entire class is much simpler than removing students from a class. The most challenging aspect
would be to ensure that the index of the class to be deleted corresponds to the actual class list order displayed on the GUI
after any
sort
orfind
commands.
- New Feature: Updated the behaviour of the
findname
andfindtag
command to support more natural use cases.- What it does: Changed the functionality of the two
find
commands for students to support partial matches and to allow for multi-word searches.- Justification: The different types of
find
commands needs different logic as what the user will want to do varies. For name searches, users would often want to search for first name together with last name. As such, the command should treat the multi-word keyword as a single sequence. For thefindtag
command, users might search for justmath
and expect to find all tags that contain math. As such, partial matching is required.
- Justification: The different types of
- Highlights: Previously, whitespace was used as a delimiter to obtain separate keywords. However, to use multi-word keywords, another delimiter, a comma, was used. Also, the logic had to be adjusted to allow for partial matches, ignoring case.
- Pull requests: #145, #159, #163
- What it does: Changed the functionality of the two
-
Code contributed: RepoSense link
- Enhancements to existing features:
- Added some initial code for the class feature in the model - UniqueClassList and JsonAdaptedTuitionClass. (#104)
- Wrote additional tests for existing features to increase test coverage (#260, #266, #273)
- Updated the sample data to fill out the timetable, have more students with realistic data. (#145, #164)
- Add tests for NOK feature (#66)
- Added location field (#58)
- Documentation:
- User Guide:
- Developer Guide:
- Contributions to team-based tasks
- Set up project website:
- Set up github pages, changed settings, changed names and links from AddressBook to TimesTable
- Landing Page (#133 , #306):
- Updated landing page to reflect TimesTable contents, added a section for each major feature, added pictures.
- Project Demo for 1.3:
- Recorded gifs and screenshots for different features.
- Helped maintained issue tracker:
- Created new issues, added milestones and assignees, closed relevant issues.
- Set up project website:
- Community: