Ngo Phuc Cuong's Project Portfolio Page
Project: Academy Directory
Academy Directory is a desktop address book application used for CS1101S tutors to keep track of information related to their students. The user interacts with it using a CLI and mouse, and it has a GUI created with JavaFX. It is written in Java, and has about 14 kLoC.
Given below are my contributions to the project.
- New Feature: Added the ability to visualize grades of the entire class.
- What it does: allows the user to quickly visualize the performance of the entire class for all assessments with box and whisker plot, showing clearly min, max, median, 25% and 75% percentile grades for all assessments.
- Justification: This feature improves the product significantly because it allows users to comprehend and analyse data in a more intuitive way, it’s the only command that generates graphical feedback for users.
- Highlights: This enhancement cannot be implemented directly on AB-3 default structure. It’s hard due to these reasons:
- Our project uses JavaFx library for GUI, however default graphing tools in
JavaFx
is insufficient.JFreeChart
library provides powerful graphing APIs but incompatible withJavaFx
. Much of initial work went into finding the rightJFreeChart
fork that provides a bridge toJavaFx
render. - Current design of AB-3 only allows for String based data to be returned to
UI
throughCommandResult
. As such, an additional UI architecture design need to be done to support all sort of data (statistics data, student object data). Created easily extensible architecture to display all kinds of data in the newly addedVisualizerDisplay
in the bottom right corner. - Reduce Jar filesize by digging deeper to the package structures, removing unnecessary runtime import within a package, reducing our jar file from ~60mb -> ~20mb
- Credits: Make use of APIs from JFreeChart
- Our project uses JavaFx library for GUI, however default graphing tools in
- Enhancements to existing features:
- Initial refactoring most of AB3 names & attributes to what’s needed in AcademyDirectory
- Removed unnecessary fields like
ADDRESS
, and addedTELEGRAM
field - Make
PHONE
attribute optional.
-
Code contributed: RepoSense link
- Project management:
- Setup Team repo, Codecov, CI, branch protection on behalf of team
- Organize meeting minutes for team’s weekly meeting
- Documentation:
- User Guide:
- Added documentation for the features
visualize
,add
, … - Check through UserGuide, proofreading and make small changes
- Added documentation for the features
- Developer Guide:
- Add implementation details and sequence diagrams to morphed AB3 features like
add
,delete
,edit
(Pull Requests /#234, #244, #245, [#245]) - Add most of Non-Functional Requirements.
- Add testing guide for a few commands. (Pull Request: #247)
- Change overall architecture diagram from AB3 -> AcademyDirectory
- Double check other UML diagram of teammates and make small necessary changes.
- Add implementation details and sequence diagrams to morphed AB3 features like
- User Guide:
- Community:
- Tools:
- Integrated a third party library (JFreeChart) to the project (#129)