Kevin Chua'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 GUI and related behaviour for the class tab (Pull Request: #103)
- What it does: Allows the user to visually see which students belong to each respective class by double clicking on the class
or using a command
class INDEX
which is described in another section. - Justification: Visuals allows the user to quickly tell which students belong to a class at a glance. Forms the backbone of the class feature as all interactions with the class is done in this tab.
- Highlights: I gained a deep understanding of how the GUI functioned together with greater understanding of different design patterns.
- What it does: Allows the user to visually see which students belong to each respective class by double clicking on the class
or using a command
- New feature: Add
class
feature to view a specific class without double clicking (Pull Request: #103)- What it does: It shows the students belonging to the specified class. Does the same thing as double clicking on a class.
- Justification: It allows us to perform the same functionality without using a mouse, which is important.
- Highlights: It was challenging to modify the GUI using a command as it meant a lot of coupling, so after discussing with Stuart we decided to follow the Observer pattern, which proved to be very useful.
- New feature: Overloaded
edit
and set up base for overloadingadd
command to allow user to add the next-of-kin (nok) of the Student. (Pull Requests: #26 #47)- What it does: Allows the user to add/edit a Student’s nok with name, address, and location when adding/editing a Student.
- Highlights: This enhancement went through several iterations as we initially implemented the
nok
command to specifically to add/edit an nok, but settled on overloading theadd
andedit
command because it would be faster and less confusing to add annok
and the Student at once.
- New feature: Store next-of-kin (nok) information in a nested json (Pull Request: #65)
- Highlights: I decided to nest the json in a key
nok
instead of having fields likenok_name
,nok_phone
etc so it is clearer what the fields are for. Nesting json objects proved to be more complex compared to strings.
- Highlights: I decided to nest the json in a key
- New feature: Improved colours for the GUI overall (Pull Request: #217)
- Highlights: Finding the right combination of colors that the entire team agreed on proved to be more difficult than expected and the colors went through several iterations before the team could decide on a color. In the process, finding the css for specific components to change was surprisingly harder than expected as the documentation for the css in javafx is often unclear.
-
Code contributed: Reposense
- Enhancements to existing features:
- Make Student and next-of-kin (NOK) inherit from Person to implement DRY principles (Pull Request #30)
- Limit length and number of tags to prevent GUI from covering other information and added tests (Pull Request #319)
- Wrote tests for
FindClassCommandParser
,FindClassCommand
,SelectClassCommand
andSelectClassCommandParser
(Pull Request #258 #302) - Bug fixes for GUI,
class
command, Student list inclasses
tab andaddtoclass
command (Pull Request #248, #243, #304)
- Documentation
- User Guide:
- Developer Guide
- Added UML class diagram, Sequence Diagram for Ui component and the ClassesUi component (Pull Request #291 #309)
- Added noteworthy implementation details for
nok/
field (Pull Request #292, #291) - Added manual testing for
addtoclass
,listclass
,delete
,sort
commands (Pull Request #327 #86) - Added user stories (Pull Request #22)
- Community
- PRs reviewed (with non-trivial review comments): (Pull Request #256, #81, #50, #311
- Reported bugs for other teams during PE-D: ped issues github