Overview
My team of 5 computer science students were tasked with enhancing a basic command line interface desktop Addressbook3 application for software engineering project. Our team decided to morph the application to ExerHealth. ExerHealth is a desktop application used for tracking and scheduling the user’s exercises. The application has statistical analysis of exercises user have completed in the past. Additionally, it also acts as a personal trainer by suggesting different exercises which both beginners and advanced users can choose from to incorporate into their exercise regime. The user interacts with it using a command line interface, and it has a GUI created with JavaFX.
Figure below is a screenshot of what our application looks like:
Figure 1. The graphical user interface for ExerHealth
My role was to develop the add and delete regime feature and statistic feature. The following sections illustrates these enhancements in more details, as well as the relevant documentation I have added to the user and developer guides in relation to those enhancements.
Summary of contributions
This section shows a summary of my coding, documentation and other helpful contributions to the team project.
-
Major enhancement: Added the ability to display statistic and charts which includes pie chart, line chart and bar chart.
-
What it does: The
stats
command will allow users to display chart and statistic of the exercise they have completed. -
Justification: This feature will enable users to have an overview of number of exercise they have completed and calories they have burnt. This will help users understand their progress and improve planning of exercises in the future.
-
Highlights: This enhancement works well with existing commands and commands to be added in future. It required an in-depth analysis of design alternatives to ensure that future enhancements can be made.
-
-
Minor enhancement 1: Added a
Unit
property to exercise. -
Minor enhancement 2: Added add and delete regime command that allows the user to add and delete regime from regime list.
-
Code contributed: [RepoSense]
-
Other contributions:
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. |
Display statistics : stats
Display the statistics of exercises in completed exercise list.
Format: stats t/CAT_NAME h/CHART_TYPE [s/START_DATE] [e/END_DATE]
Due to space constraint, some labels may not appear. Tooltips can be seen when mouse cursor hovers over the chart. |
Example:
-
stats t/exercise h/piechart
-
stats t/calories h/linechart
-
stats t/calories h/barchart s/31/10/2019 e/06/11/2019
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. |
Statistics
Implementation
Statistics of exercises will be displayed in charts. Supported chart types are Pie Chart, Line Chart and Bar Chart. StatsFactory will create Statistic using given parameters. The figure below shows the class diagram of statistics:
The next figure shows the activity diagram when user enter a stats
command:
stats
commandGiven below is an example usage scenario of statistics feature.
Step 1: User enters a stats
command to see statistics of exercises.
Step 2: ExerciseBookParser
will receive command from LogicManager
and pass command to StatsCommandParser
.
Step 3: StatsCommandParse
will parse the command and creates a StatsCommand
.
Step 4: StatsCommand
calls Model#getExerciseBookData
to get data of all exercises.
Step 5: StatsCommand
creates a StatsFactory
and pass exercises data, chart and category to StatsFactory
.
Step 6: StatsFactory
will then generate Statistic
and return to StatsCommand
.
Step 7: StatsCommand
then calls Model#setStatistic
to set the Statistic
in Model
.
Step 8: StatsCommand
creates a new CommandResult
and return to LogicManager
.
Shown below is the sequence diagram when user enters a valid stats
command:
stats
command