Project: RC4HDB

RC4HDB is a desktop application that offers a convenient and intuitive interface for housing management staff to streamline their resident and venue management operations.

Given below are my contributions to the project. You may view the full code here: RepoSense link

  • New Feature: Added the ability to show, hide, and reset table columns
    • What it does: allows the user to hide any number of unwanted columns in the table. Columns that have been hidden can be restored by using the reset command.
    • How it benefits the user: This feature improves the product significantly because a user can de-clutter their screen and only focus on the information relevant to their job, boosting their productivity during work.
    • Highlights: This enhancement affects the UI directly and had to be implemented carefully to minimise coupling between components. I was able to apply the Observer pattern in developing this feature.
    • Completeness: We consider this feature to be complete. This feature is the second iteration of our column hiding feature, and many design considerations and modifications have gone into improving the initial implementation.
  • New Feature: Contributed to the venue booking feature which allows the user to manage recurrent venue bookings
    • How it benefits the user: This feature improves the product significantly as low-level operations such as clearing expired bookings and checking for booking clashes are handled for the user by RC4HDB. The user can focus solely on adding and removing bookings for residents.
    • Highlights: This feature was difficult to implement as Venue and Booking are two new entity types, each of similar complexity to Person in AddressBook-Level3.
  • Enhancements to existing features:
    • Updated the GUI to use a TableView so that users could view resident data in a more convenient and condensed layout (Pull request #76)
    • Updated the GUI to use a TabPane so that users could use CTRL-TAB to switch tables between residents and venues easily (Pull request #110)
    • Wrote additional tests for both new and existing features to increase coverage (Pull requests #127, #152, #196)
    • Overloaded the list command to allow users to include or exclude specified columns when listing (removed in v1.4 as this was an intermediate feature) (Pull requests #76)
  • Project management:
    • Refactored and renamed AddressBook-Level3 to RC4HDB
    • Opened and assigned issues to the team during our weekly project meetings
    • Created the skeletal project portfolio page for my team
    • Created the UI mockup for RC4HDB
    • Completed the product demonstrations for both v1.2 and v1.3
  • Mentoring contributions:
    • Provided feedback and enforced internal code quality standards within my team
    • Guided my team on the use of streams to make our code more declarative
    • Suggested the use of abstract classes for our command history feature
  • Documentation:
    • User Guide:
    • Developer Guide:
      • Updated the acknowledgements section
      • Updated the Design section for the Model component
        • Added a class diagram for the Model component in this section
        • Added two other class diagrams that were removed after the addition of the venue feature
      • Added details to the Implementation section for the showonly, hideonly and reset features
        • Added a class diagram illustrating the reference relationships between MainWindow and the other components
        • Added a class diagram showing the inheritance relationships for the classes used in manipulating columns
        • Added an activity diagram modelling the intended behaviour of RC4HDB in response to a column manipulating command
      • Added use cases and user stories for RC4HDB
      • Added a sequential testing guide to the manual testing section for the list, showonly, hideonly, and reset commands
      • Refer to the appendix for the diagrams mentioned in this section
  • Community:

Appendix for UML diagrams added to the Developer Guide

  • Class diagram for Model component:


  • Diagram illustrating the reference relationships between MainWindow and other relevant components:


  • UML diagram showing the inheritance relationships for the classes used in manipulating columns:


  • Activity diagram modelling the intended behaviour of RC4HDB in response to a column manipulating command:


  • Class diagram for the Model component before the venue feature was added:

This diagram was removed from the DG to reduce clutter, but was present in the DG prior to addition of the venue feature.


  • Class diagram for ResidentBook (but with better OOP):

This diagram was removed from the DG to reduce clutter, but was present in the DG prior to addition of the venue feature.