Muhammad Hozefa Zumkhawala - Project Portfolio

Overview

We were assigned a task to develop a program which would benefit our target audience. We decided to further improve on Duke and renamed our program, termiNus. From it’s name we can infer that it is a one-stop Command Line Interface (CLI) based solution for NUS undergraduate students to manage their school curriculum, keep track of their daily expenses and be reminded of any library loans.

termiNus is using Java and Object-Oriented Programming (OOP). My role was to implement the entire loan system as well as certain subtasks such as ensuring deletion of items were done correctly, clearing of all data and finding tasks. The following sections will provide a detailed explanation on my enchancements as well as my contributions towards the User Guide and Developer Guide.

Summary of Contributions

This section gives a summary of my contributions towards our project.

Code contributed RepoSense

New feature:

  1. Added the loan system (BookList and Book class)
    • what it does: Allow students to keep track of their loan items from the library which will reduce overdue cases.
      BorrowCommand , ReturnCommand

Enhancements to existing features:

  1. Deletion of tasks based on priority and category (DeleteCommand class)
    • what it does: Initially students could only delete their task one at a time. Now they are able to delete all tasks with the same priority and category in just one command. DeleteCommand
  2. Finding tasks based on a keyword (FindCommand class)
    • what it does: Allow students to find their tasks easily with the help of this command rather than manually searching through the list. FindCommand
      However, this was modified to finding item specific {tasks,links,books,expenses,modules} by my teammate
  3. Clearing all data which includes tasks, modules, web links, books (ClearCommand class)
    • what it does: Allow students to clear everything and start afresh every new semester. ClearCommand

Contributions to User Guide:

These are the following sections I contributed to which will be elaborated in the User Guide (Extracts).

  1. Table of Contents
  2. Quick Start
  3. Borrowing a book
  4. Returning a book
  5. Deleting a task
  6. Deleting tasks with same priority or category
  7. Searching for tasks using a keyword
  8. Clearing all data
  9. Quick Command Summary

Contributions to Developer Guide:

These are the following sections I contributed to:

  1. Introduction
  2. Setting up, Getting started
  3. Product Scope
  4. User stories
  5. Non-functional Requirements
  6. Glossary

Contributions to Team-based tasks:

These are the following team-tasks done by me:

  1. Did smoke-tests on our program to ensure all commands were working as expected and the intended messages printed were correct.
  2. Added and assigned issues to my teammates.
  3. Added non-feature related details such as Quick start, FAQ and a brief introduction of our program.

Review/mentoring contributions:

  1. Instances of reviewing my teammates PR and commenting appropriately. #95 #160
  2. Ensure PRs are created with detailed description of the changes made so that the team is aware and updated. #40 #60 #93 #155 #158

Contributions beyond the project team:

Beyond the scope of my team, I believe I reported several legitimate bugs as well as suggested solutions to fix those bugs to the team which was given to me during the dry run Pratical Exam.

Contributions to the User Guide (Extracts)

I have made several contributions to the User Guide besides just adding the relevant documentations for my enhancement. Below are the sections of the User Guide I added:

  1. Table of Contents
  2. Quick Start
  3. Borrowing a book: borrow This command allow students to add the books loaned from the library. The book title and the loan date is compulsory.

    Example: A student just borrowed a book from the library and has a tendency of forgetting the due date and if the book has already been returned. Therefore, the student can enter this command: borrow Java for dummies date/10-11-2020

     Format: 
     borrow <book name> <date/DD-MM-YYYY>
      <book name> refers to the title of the book.
      <date/DD-MM-YYYY> refers to the when the book was loaned.
    
  4. Returning a book: return This command allow students to mark those books as returned.

    Example: A student finished reading the book and returns it back to the library. Therefore, the student can enter this command to mark that book as returned: return 2

     Format: 
     return <bookIndexNumber>
      <bookIndexNumber> corresponds to the index given on list command output
    
  5. Deleting a task from the list: delete This command allow students to delete a specific task from the list.

    Example: The student can enter this command: delete task 2

     Format: 
     return <taskIndexNumber>
      <taskIndexNumber> corresponds to the index given on list command output
    
  6. Deleting tasks based on priority and category: delete This command allow students to delete several tasks with the same priority and category in one go. A task with no priority will have a priority value set as (0) by default.

    Example The student wants to delete all tasks with highest priority (1) and all tasks under the category CS2113. The student can enter this commands: delete tasks p/1, delete tasks c/CS2113

      Format: 
         delete tasks <p/priorityNumber>
          <p/priorityNumber> refers to the priority given to each task
      Format: 
         delete tasks <c/category>
          <c/category> refers to the category (if assigned) to a task. 
    
  7. Searching for an item with keyword: find This command allow students to narrow down their search for a specific item.

    Example The student can enter this command to find only those task associated with the keyword: find tasks tp meeting

     Format: 
         find {tasks,links,books,expenses,modules} k/<keyword>
          <keyword> refers to the word or phrase to be matched with the item description.
    
  8. Clearing all data from system: clear This command allow students to wipe off all their data.

    Example After the semester ends, the student can enter this command to clean all files from the previous semester. clear all

         Format: 
             clear all               
    
  9. Quick Command Summary