Greetings. I am a second-year Computer Engineering student from National University of Singapore (NUS). This document showcases the features I did for my Software Engineering Project, as well as the relevant sections I added to the User and Developer Guides.

PROJECT: FOP Manager


Overview

About the Project

FOP Manager is a desktop Address Book application made for Project Directors organizing the NUS School of Computing Freshman Orientation Program (FOP). The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

My roles

I was in charge of the UI aspect of the application, and designed and implemented the Statistic and Save feature. The following section will describe these enhancements in more details, as well as showcasing all the relevant sections I have added to the user guide and developer guides in relation to these enhancements.

Please take notes of the following icons and their meanings used in the document:

command | Grey highlight indicates that this is a command that can be inputted into the command line and executed by the application.

Summary of contributions

  • Major enhancement: implemented the stat and save_c command

    • What it does: The stat command will generate three pie charts of all of the camp’s participants' age, major and sex and display them on the GUI as in Figure 1. The save_c command will save those charts into separate image files.

    • Justification: At the end of every FOP, the Project Directors usually have to make various reports for their university, their faculty or different sponsors that requires these information. These two features together will let the user generate those data quickly and efficiently.

    • Highlights: This enhancement touched on the logic, model ,and UI components. A new CustomPieChart class was created to improve code readability.

    • Code contributed: Pull Request #75

    • Credits: Some parts of the stat command was inspired by Part 6 of the excellent Java FX Tutorial by Marco Jakob.

StatResult
Figure 1. Stat command result on the GUI
  • Other contributions:

    • Project management:

      • Make a mock release for mid v1.3 to prepare for the real one

    • Community:

      • Review and merge various pull requests from team members

      • Help other teams with their UI component

    • Enhancements to existing features:

      • Refactor the Person class’s attributes (Pull request #35)

      • Show a list of commands that can be undo or redo on the GUI. (Pull request #21)

UndoRedoList
Figure 2. Undo and redo list on the GUI

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Show camp participants' statistic: stat

Show the camp participants' statistic base on age, major and sex in the form of pie charts

Format: stat

This command will not work if there are no participant inside the application.

Examples:

  • add_o n/John Doe s/M b/27071999 p/98765432 e/johnd@example.com m/Information System g/

  • add_o n/Joh Doe s/F b/27071998 p/98765432 e/johnd@example.com m/ceg g/

  • add_o n/John s/M b/27071995 p/98765432 e/johnd@example.com m/Information System g/

  • add_o n/Doe s/M b/27071999 p/98765432 e/johnd@example.com m/cs g/
    Add some sample data to the application

  • stat
    The output is shown below:

StatCommandExample

Save statistic pie charts to images: save_c

Save the pie charts generated by the stat command to image files

Format: save_c [FILE NAME]

This command will not work if there are no participant inside the application.
This command only save the most recently generated charts. Use the stat command before this command to avoid outdated or empty charts.

Examples:

  • stat

  • save_c For NUS
    Save the charts to image files with the name "For NUS"

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

Statistic feature

The 'stat' command allows FOP Manager users to view the statistic of camp participants regarding their age, major and sex in a graphical manner.

Current Implementation

The Statistic feature is facilitated by AddressBook. It has three HashMaps, containing the number of each categories in the participants' age, major and sex. These Map are generated after every call of the stat command. After command call, these data is loaded into three different pie charts and shown on the UI.

The following sequence diagram show hows the 'stat' command works in details :

StatisticUpdateSequenceDiagram
Figure 3. Interaction between UI, Logic and Model when stat is executed

Design Consideration

Aspect: How to update the data of the AddressBook
Alternatives Pros Cons

Use a loop to loop through the UniqueParticipantList to get the data of everyone (current choice).

Easy to implement, guaranteed to get the correct data every time

Takes longer time and more computational power to get the result.

Update charts data after each commands that modify it.

Quick runtime, does not require much changes to the codebase

We must ensure that the data is updated after each command.

Since this function is unlikely to be used many times and the number of participants in a camp is not too large, the drawbacks to the first alternative are acceptable.

Show participant statistic

  1. Show pie charts of participants' age, major and sex

    1. Prerequisites: List all participants using the list command. Multiple participants in the list.

    2. Test case: stat
      Expected: Three pie charts are shown on the GUI with labels for each one.

    3. Test case:
      clear
      stat
      Expected: Error details shown in the result box.

Save pie charts to image files

  1. Show pie charts of participants' age, major and sex

    1. Prerequisites: List all participants using the list command. Multiple participants in the list.

    2. Test case:
      stat
      save_c File Name
      Expected: Open chart folder to see three PNG files name "File Name_age", "File Name_major" ,and "File Name_sex"

    3. Test case:
      clear
      stat
      Expected: Error details shown in the result box.