PROJECT: Trajectory


Overview

Trajectory is a lightweight management system for those who need a no-frills solution for managing students, modules, grades, classes and notes. It is built for users who prefer typing (CLI) over GUI interaction and has a GUI created with JavaFX.

Summary of contributions

  • Code Contributed: https://nuscs2113-ay1819s1.github.io/dashboard/#=undefined&search=zhicaizack

  • Major enhancement: added the ability to manage a classroom

    • What it does: allows the user to add a classroom, edit and delete a classroom, assign/unassign students from the classroom and mark the attendance of the students in the classroom.

    • Justification: This feature improves the cohesiveness of the product as a student enrolled into a module inside a course should have his/her classroom.

    • Highlights: This enhancement can be further enhanced to allow for calculation of student attendance that may be factored into their grades in the future release.

    • Credits: https://cs2113-ay1819s1-t16-1.github.io/main/AboutUs.html and https://github.com/nusCS2113-AY1819S1/addressbook-level4

  • Other contributions:

    • Project management:

      • Friendly reminder for team to update documentation for v1.2 on GitHub

      • Fix checkstyle issues on a global scale

      • Updated the diagram for UI segment in developer guide

    • Community:

      • Contributed to issue discussions (#280)

      • Reported bugs and suggestions for other teams in the class (W13-4)

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.

Class Management

Add Class : class add

Creates a class and assigns it to a module for the system.
Format: class add cn/CLASS_NAME mc/MODULE_CODE e/MAX_ENROLLMENT

  • Module code must exist before creating a class for the module.

Examples:

  • class add cn/T16 mc/CG1111 e/20
    Creates a class T16, assigns it to the module CG1111 with the max enrollment size of 20

List class : class list

Lists class(es) with information of the class as well as students assigned to class (if any) for the system.
Format: class list

  • Class(es) must exist in order to be listed

Examples:

  • class list
    Lists all the class(es) created as well as students assigned to class (if any).

Update Class Enrollment Limits : class edit

Modifies the max enrollment size for a class for the system.
Format: class edit cn/CLASS_NAME mc/MODULE_CODE e/ENROLLMENT_SIZE

  • Module code must exist

  • Class must exist and belong to module code before being able to modify the class enrollment limits

Examples:

Remove class : class delete

Deletes a class for a module in the system.
Format: class delete cn/CLASS_NAME mc/MODULE_CODE

  • Module code must exist

  • Class must exist and belong to module code before being able to delete the class

Examples:

  • class delete cn/T16 mc/CG1111
    Deletes the class T16 from the module CG1111

  • class edit cn/T16 mc/CG1111 e/69
    Modifies the new max class enrollment size for the class T16 of module CG1111 to be 69

Assign Student To Class : class addstudent

Assigns a student to a class in the system.
Format: class addstudent cn/CLASS_NAME mc/MODULE_CODE i/MATRIC_NO

  • Module code must exist

  • Student must exist and enrolled in the module

  • Classroom shouldn’t be full

  • Class must exist and belong to the module code before assigning a student to the class

Examples:

  • class addstudent cn/T16 mc/CG1111 i/A6942069M
    Adds a student of the admission number A6942069M to the class T16 of module CG1111

Unassigning Student From Class : class delstudent

Unassigns a student from the class in the system.
Format: class delstudent cn/CLASS_NAME mc/MODULE_CODE i/MATRIC_NO

  • Module code must exist

  • Student must exist and enrolled in the module

  • Class must exist and belong to the module code before unassigning a student from the class

  • Student must be assigned to class in order to unassign them from the class

Examples:

  • class delstudent cn/T16 mc/CG1111 i/A6942069M
    Removes a student of the admission number A6942069M from the class T16 of module CG1111

Marking class attendance list : class markattendance

Mark the class attendance list for a specified student for the system.
Format: class markattendance cn/CLASS_NAME mc/MODULE_CODE i/MATRIC_NO

  • Student must exist

  • Module code must exist

  • Class must exist and belong to module before being able to mark student available for class attendance

  • Student must be in the specified class in order to mark student present

Examples:

  • class markattendance cn/T16 mc/CG1111 i/A6942069M
    Marks the attendance of the student of the admission number A6942069M for the class T16 for the module CG1111

Accessing class attendance list : class listattendance

Access the class attendance list for the system.
Format: class listattendance cn/CLASS_NAME mc/MODULE_CODE

  • Module must exist

  • Class must exist and belong to module before being able to access the class attendance list

Examples:

  • class listattendance cn/T16 mc/CG1111
    Displays the class attendance list for the class T16 for the module CG1111

Update Class Attendance List : class modattendance

Modifies the class attendance list for the system.
Format: class modattendance cn/CLASS_NAME mc/MODULE_CODE i/MATRIC_NO

  • Module code must exist

  • Student must exist

  • Class must exist and belong to module code before modifying a student’s attendance

  • Student belong to class and be marked present first

  • If current student is present, modifying will mark student as absent

Examples:

  • class modattendance cn/T16 mc/CG1111 i/A6942069M
    Modifies the attendance of the student of the admission number A6942069M for the class T16 of module CG1111 to be absent

Gradebook Management

Add Gradebook Component : gradebook add

Creates a grade item to a module code.
Format: gradebook add mc/MODULE_CODE cn/COMPONENT_NAME [mm/MAX_MARKS] [w/WEIGHTAGE]

  • Inputs are case sensitive.

  • Gradebook component name must NOT exist in existing module.

Examples:

  • gradebook add mc/CS2113 cn/Assignment 1 mm/60
    Adds gradebook component, Assignment 1 with maximum marks of 60, to module CS2040C.

Edit Gradebook Component : gradebook edit

Edits a gradebook item.
Format: gradebook edit mc/MODULE_CODE cn/COMPONENT_NAME [ei/EDITED_COMPONENT_NAME] [mm/EDITED_MAX_MARKS] [w/EDITED_WEIGHTAGE]

  • Inputs are case sensitive.

  • Grade component name must exist in existing module.

  • Accumulated weightage including the updated weightage must not exceed 100%.

Examples:

  • gradebook edit mc/CS2113 cn/Assignment 1 en/Finals
    Updated component name for CS2040C Assignment 1 to Finals.

  • gradebook edit mc/CS2113 cn/Assignment 1 mm/60 w/50
    Updated maximum marks and weightage of Assignment 1 in CS2113 to 60 and 50% respectively.

Remove Gradebook Component : gradebook delete

Removes a gradebook item to a module code.
Format: gradebook delete mc/MODULE_CODE cn/COMPONENT_NAME

  • Inputs are case sensitive.

  • Grade component name must exist in existing module.

Examples:

  • gradebook delete mc/CS2113 cn/Assignment 1
    Deletes Assignment 1 from module CS2113.

Find Gradebook Component : gradebook find

Finds gradebook component.
Format: gradebook find mc/MODULE_CODE cn/COMPONENT_NAME

  • Inputs are case sensitive.

  • Grade component name must exist in existing module.

Examples:

  • gradebook find mc/CS2113 cn/Assignment 1
    Finds Assignment 1 to module CS2113.

List Gradebook Components : gradebook list

Lists all the gradebook items in a certain module.
Format: gradebook list

Examples:

  • gradebook list
    Lists all the gradebook items found in Trajectory.

Grade Management

List Students Grades : grade list

Lists grades of all students enrolled in all modules.
Format: grade list

Examples:

  • grade list
    Lists all students grades recorded in Trajectory.

Add Student Grade : grade add

Assigns marks to a student.
Format: grade add mc/MODULE_CODE cn/COMPONENT_NAME i/MATRIC_NO m/MARKS

  • Inputs are case sensitive.

  • Students must be enrolled to the module.

  • Grade component name must exist in existing module.

  • Marks assigned to student for the particular gradebook component must not exceed its maximum marks.

Examples:

  • grade add mc/CS2113 cn/Assignment 1 i/A0167789S m/50
    Assigns 50 marks to CS2113 student with matric number A0167789S for Assignment 1.

Edit Student Grade : grade edit [coming in v2.0]

Edit marks of a student.
Format: grade edit mc/MODULE_CODE cn/COMPONENT_NAME i/MATRIC_NO m/MARKS

  • Inputs are case sensitive.

  • Students must be enrolled to the module.

  • Grade component name must exist in existing module.

  • Marks assigned to student for the particular gradebook component must not exceed its maximum marks.

Examples:

  • grade edit mc/CS2113 cn/Assignment 1 i/A0167789S m/20
    Assigns 20 marks to CS2113 student with matric number A0167789S for Assignment 1.

Display Graph of Student Grades : grade graph

Displays graph of all students of one grade component of an existing module.
Format: grade graph mc/MODULE_CODE cn/COMPONENT_NAME

  • Inputs are case sensitive.

  • Grade component name must exist in existing module.

  • Marks of all students taking the module should be added in.

Examples:

  • grade graph mc/CS2113 cn/Finals
    Displays graph which shows result of 'Finals' grade component of all CS2113 students.

Notes Management

Add Note : note add

Adds a note to a module.
Format: note add [mc/MODULE_CODE] [tt/TITLE] [sd/START_DATE] [st/START_TIME] [ed/END_DATE] [et/END_TIME] [lc/LOCATION]

  • The START_DATE and END_DATE parameters allows the following date formats only.

    • d-M-yyyy (e.g. 2-11-2018)

    • d/M-yyyy (e.g. 2/11/2018)

    • d.M.yyyy (e.g. 2.11.2018)

    • d-MMM-yyyy (e.g. 2-Nov-2018)

    • d MMM yyyy (e.g. 2 Nov 2018)

    • d-MMM-yy (e.g. 2-Nov-18)

    • d MMM yy (e.g. 2 Nov 18)

  • The START_TIME and END_TIME parameters follows the following time format only.

    • h:m AM/PM (e.g. 4:00 PM)

- MODULE_CODE strictly follows the following:
Module code should begin with 2 or 3 uppercase letters, followed by a 4-digit number and an optional uppercase letter at the end.
- The date and time fields are case-insensitive which means the user can enter 2-nOv-2018 as date.
- If dates are specified but not the time, the system defines a default time of 12:00 AM for START_DATE and 11:59 PM for END_DATE.
- Specifying an END_DATE or any time parameters requires the START_DATE to be defined. Otherwise, the system will show an error message.
- The TITLE and LOCATION parameters allows characters up to 30 and 80 maximum respectively. Otherwise, an error message will be displayed.
- Omitting the TITLE will show a "(No title)" when the note is displayed.
- Defining the START_DATE but not the END_DATE automatically assigns the same date to it.
- Entering a START_DATE and START_TIME later than END_DATE and END_TIME is not allowed.
- Specifying the prefix but with an empty field is not allowed. (e.g. tt/ )
  • Upon entering the note add command, the system will prompt the user to type his/her note in a new window.

  • To save the note, the user can press CTRL+S. Note that saving blank text field is not allowed.

  • The user can choose to cancel anytime during the process by pressing CTRL+Q.

Examples:

  • note add
    This creates a note in Trajectory without any other information except for the note’s content itself.

  • note add mc/CS2113 tt/Lecture sd/2.11.2018 st/4:00 PM et/6:00 pm lc/LT15
    This tells the system that the note is to be saved in the CS2113 module with a title "Lecture", a start date (2 Nov 2018) and end date (2 Nov 2018) from 4PM to 6PM at LT15.

Edit note : note edit

Edits an existing note.
Format: note edit INDEX [mc/NEW_MODULE_CODE] [sd/NEW_START_DATE] [st/NEW_START_TIME] [ed/NEW_END_DATE] [et/NEW_END_TIME] [lc/NEW_LOCATION]

  • Edits the note with the specified INDEX.

  • The INDEX refers to the corresponding number of each note when note list command is invoked.

  • Upon entering the note edit command, the system will prompt the user to type his/her modifications to the note.

  • The user can complete his/her edits by pressing CTRL+S.

  • The user can choose to cancel anytime during the editing stage with CTRL+Q.

The system does not allow calling this command when the notes list is not displayed. This is to prevent accidentally editing another note.

Examples:

  • note list mc/CS1010
    A list of all notes saved in CS1010 module is displayed.
    note edit 3 tt/Changed the title lc/NUS
    The user will now be able to edit the note that corresponds to INDEX=3 in the list. The modified note will be saved with its attributes changed accordingly.

Delete note : note delete

Delete notes.
Format: note delete INDEX [MORE_INDEXES]..

  • Delete one or more notes with the specified INDEX.

  • The command allows for multiple deletion by entering multiple INDEXES separated by space.

  • Entering a range of INDEXES separated by a hyphen (e.g. 2-4) is also allowed.

  • The INDEX refers to the corresponding number of each note when note list command is invoked.

Examples:

  • note list
    A list of all notes is displayed.
    note delete 2 1 4-6
    Delete notes that are numbered #1, #2, #4, #5, and #6 from the list.

Find note : note find

Search and display existing notes using keywords.
Format: note find k/KEYWORD [k/MORE_KEYWORDS]..

  • The command searches for notes that contains ALL of the keywords.

  • It only matches with TITLE and the note’s text.

  • Multiple keywords can be accepted.

  • A minimum of one keyword is required for the command to work.

  • Keywords are case-insensitive.

  • Each keyword must consist only of a single word (e.g. "Sort", "Git-Hub") and is not separated by spaces.

Examples:

  • note find k/git k/OOP
    Lists all notes which contain both keywords "git" and "OOP".

List notes : note list

Shows a list of all saved notes.
Format: note list [mc/MODULE_CODE]

  • MODULE_CODE field is case-insensitive, hence the user can use either lowercase or uppercase.

Examples:

  • note list
    This will list all existing notes from Trajectory.

  • note list mc/CS1231
    This will list all notes saved in CS1231 module.

Export notes: note export

Converts all exportable notes to CSV.
Format: note export fn/FILE_NAME

  • This command creates a <FILE_NAME>.csv file in the local storage.

  • Directory: {Trajectory’s path}/data/CSVexport/<FILE_NAME>.csv

  • The format follows the Google Calendar’s CSV import formatting. Hence, the user can import their CSV notes to Google Calendar with this command.

  • Only notes with dates are exportable.

Viewing help : help

Shows the help page
Format: help

Listing entered commands : history

Lists all the commands that you have entered in reverse chronological order.
Format: history

Pressing the and arrows will display the previous and next input respectively in the command box.

Exiting the program : exit

Exits the program.
Format: exit

Saving the data

Trajectory data are saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

FAQ

Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Address Book folder.

Command Summary

  • Add course : course add c/COURSE_CODE n/COURSE_NAME f/FACULTY_NAME
    e.g. course add c/CEG n/Computer Engineering f/FoE

  • Delete course : course delete c/COURSE_CODE
    e.g. course delete c/CEG

  • Edit course : course edit c/COURSE_CODE [n/COURSE_NAME] [f/FACULTY_NAME]
    e.g. course edit c/CEG n/Comp Eng

  • List all courses : course list

  • List all students ordered by courses : course liststudents

  • Add student : student add n/NAME i/ADMIN_NUMBER c/COURSE_CODE p/MOBILE_NUMBER e/EMAIL a/ADDRESS
    e.g. student add n/Megan Nicole c/CEG e/E0169113@u.nus.edu a/14 Changi South i/A0177897E p/92667921

  • Update student : student edit INDEX [n/NAME] [i/ADMIN_NUMBER] [c/CLASS] [p/MOBILE_NUMBER] [e/EMAIL a/ADDRESS] `
    e.g. `student edit 1 p/99887890 a/14 Simei Avenue 1

  • Finding a student by name : student find STUDENT_NAME
    e.g. student find Megan Nicole

  • List all students : student list

  • Delete student by INDEX : student delete
    e.g. student delete 2

  • Export students [COMING IN V2.0] : student export
    e.g. student export C:\export

  • Add module : module add mc/MODULE_CODE mn/MODULE_NAME
    e.g. module add mc/CS2113 mn/Software Engineering

  • Update module : module edit mc/MODULE_CODE​ mn/MODULE_NAME
    e.g. module edit mc/CS2113 mn/Software

  • Remove module : module delete mc/MODULE_CODE​
    e.g. module delete mc/CS2113

  • View module details : module view mc/MODULE_CODE
    e.g. module view mc/CS2113

  • Find module by module code : module find KEYWORD [MORE_KEYWORDS]​
    e.g. module find cs2113 structures

  • List modules : module list​

  • Enrol student in module : module enrol mc/MODULE_CODE i/MATRIC_NUMBER…​
    e.g. module enrol mc/CS2113 i/A0167263X i/A0179821B

  • Archive module : module archive mc/MODULE_CODE​ [coming in v1.4]
    e.g. module archive mc/CS2113

  • Assign TA : module assign mc/MODULE_CODE [i/MATRIC_NUMBER] [e/EMAIL] [coming in v2.0]
    e.g. module assign mc/CS2113 i/A0171234B

  • Add Gradebook Component : gradebook add mc/MODULE_CODE cn/COMPONENT_NAME [mm/MAX_MARKS] [w/WEIGHTAGE]
    e.g. gradebook add mc/CS2113 cn/Assignment 1 mm/60

  • Edit Gradebook Component : gradebook edit mc/MODULE_CODE cn/COMPONENT_NAME [en/EDITED_COMPONENT_NAME] [mm/EDITED_MAX_MARKS] [w/EDITED_WEIGHTAGE]
    e.g. gradebook edit mc/CS2113 cn/Assignment 1 en/Finals

  • Delete Gradebook Component : gradebook delete mc/MODULE_CODE cn/COMPONENT_NAME
    e.g. gradebook delete mc/CS2113 cn/Assignment 1

  • List Gradebook Components : gradebook list
    e.g. gradebook list

  • Find Gradebook Components : gradebook find mc/MODULE_CODE cn/COMPONENT_NAME
    e.g. gradebook find mc/CS2113 cn/Assignment 1

  • List Students Grades : grade list
    e.g. grade list

  • Add Student Grade : grade add mc/MODULE_CODE cn/COMPONENT_NAME i/MATRIC_NO m/MARKS
    e.g. grade add mc/CS2113 cn/Assignment 1 i/A0167789S m/50

  • Edit Student Grade : grade edit mc/MODULE_CODE cn/COMPONENT_NAME i/MATRIC_NO m/MARKS [coming in v2.0]
    e.g. grade edit mc/CS2113 cn/Assignment 1 i/A0167789S m/20

  • Display Graph of Student Grades : grade graph mc/MODULE_CODE cn/COMPONENT_NAME
    e.g. grade graph mc/CS2113 cn/Finals

  • Creating a class class add cn/CLASS_NAME mc/MODULE_CODE e/ENROLLMENT_SIZE
    e.g. class add cn/T16 mc/CG1111 e/20

  • List class class list
    e.g. class list

  • Modifying class enrollment limits class edit cn/CLASS_NAME mc/MODULE_CODE e/ENROLLMENT_SIZE
    e.g. class edit cn/T16 mc/CG1111 e/69

  • Deleting a class class delete cn/CLASS_NAME mc/MODULE_CODE
    e.g. class delete cn/T16 mc/CG1111

  • Assigning a student to class class addstudent cn/CLASS_NAME mc/MODULE_CODE i/MATRIC_NO
    e.g. class addstudent cn/T16 mc/CG1111 i/A6942069M

  • Unassigning a student from class class delstudent cn/CLASS_NAME mc/MODULE_CODE i/MATRIC_NO
    e.g. class delstudent cn/T16 mc/CG1111 i/A6942069M

  • Marking class attendance list class markattendance cn/CLASS_NAME mc/MODULE_CODE i/MATRIC_NO
    e.g. class markattendance cn/T16 mc/CG1111 i/A6942069M

  • Accessing class attendance list class listattendance cn/CLASS_NAME mc/MODULE_CODE
    e.g. class listattendance cn/T16 mc/CG1111

  • Modifying class attendance list class modattendance cn/CLASS_NAME mc/MODULE_CODE i/MATRIC_NO
    e.g. class modattendance cn/T16 mc/CG1111 i/A6942069M

  • Add a note note add [mc/MODULE_CODE] [sd/START_DATE] [st/START_TIME] [ed/END_DATE] [et/END_TIME] [lc/LOCATION]
    e.g. note add tt/Consultation lc/NUS Techno Edge

  • List notes note list [mc/MODULE_CODE]
    e.g. note list mc/CS2113

  • Delete a note note delete INDEX
    e.g. note delete 8

  • Edit a note note edit INDEX [mc/NEW_MODULE_CODE] [sd/NEW_START_DATE] [st/NEW_START_TIME] [ed/NEW_END_DATE] [et/NEW_END_TIME] [lc/NEW_LOCATION]
    e.g. note edit 5 ed/30-12-2018

  • Find a note note find k/KEYWORD [k/MORE_KEYWORDS]..
    e.g. note find k/bubble k/queue

  • Export notes note export fn/FILE_NAME
    e.g. note export fn/notes

  • History : history

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.

Class Add feature

Current Implementation

The add mechanism is facilitated by ClassroomManager supported by StorageController. It makes use of the following operations:

  • ClassroomManager#addClassroom() — Adds a new classroomList to the in-memory array list.

  • ClassroomManager#readClassroomList() — Gets the classroom list from storage and converts it to a Classroom array list.

  • ClassroomManager#saveClassroomList() — Converts the classroom array list and invokes the StorageController to save the current classroom list to file.

These operations are used in the ClassAddCommand class under ClassAddCommand#execute().

Given below is an example usage scenario and how the add/list mechanism behaves at each step.

Step 1. The user launches the application for the first time. The StorageController#retrieveData() will retrieve all datasets saved locally.

Step 2. The user executes class add c/16…​ command to add a new classroom to Trajectory. The class add command calls the ClassAddCommand#execute(). The ClassroomManager will be instantiated and read the classroom list from the storage and converts the data from XmlAdaptedClassroom to the Classroom data type.

Step 3. The classroomManager#saveClassroomList() will be called to converts the classroom array list and invokes the StorageController to save the current classroom list to file. This is done by first converting our Classroom object into XmlAdaptedClassroom objects and saving it.

The following sequence diagram summarizes what happens when a user executes a new command:

sequencediagramclassadd

Class List feature

Current Implementation

The list mechanism is facilitated by ClassroomManager supported by StorageController. It makes use the following operations:

  • ClassroomManager#readClassroomList() — Gets the classroom list from storage and converts it to a Classroom array list.

  • ClassroomManager#saveClassroomList() — Converts the classroom array list and invokes the StorageController to save the current classroom list to file.

  • ClassroomManager#getClassroomList() — Gets the classroom list from the in-memory array list.

These operations are used in the ClassListCommand class under ClassListCommand#execute()..

Given below is an example usage scenario and how the add/list mechanism behaves at each step.

Step 1. The user launches the application for the first time. The StorageController#retrieveData() will retrieve all datasets saved locally.

Step 2. The user executes class list command to list all classrooms to Trajectory. The class list command calls the ClassListCommand#execute(). The ClassroomManager will be instantiated and read the classroom list from the storage and converts the data from XmlAdaptedClassroom to the Classroom data type.

Step 3. The classroom list with the corresponding classroom information will be appended to the with the support of the StringBuilder and displayed as a message successfully.

The following activity diagram summarizes what happens when a user executes a new command:

classaddlist

Use case: Assign Student To Class

Precondition(s) :

  • Module code exists in data file.

  • Student exists and enrolled into module in data file.

  • Class must not be full.

  • Class belonging to the module code exists in data file.

Guarantees :

  • NIL

MSS :

  1. User enters command to assign a student to class.

  2. Student gets assigned to class.

  3. System displays message of successful assignment of student to class.

    Use case ends.

Extensions :

  • 1a. User entered invalid command.

    • 1a1. System shows ‘invalid format’ error.

      Use case resumes at step 1.

  • 1b. Class doesn’t exist.

    • 1b1. System displays class not found error.

      Use case resumes at step 1.

Use case: Unassign Student From Class

Precondition(s) :

  • Module code exists in data file.

  • Student exists and enrolled into module in data file.

  • Class belonging to the module code exists in data file.

  • Student must be assigned to class before unassigning them.

Guarantees :

  • NIL

MSS :

  1. User enters command to unassign a student from class.

  2. Student gets unassigned from class.

  3. System displays message of successful unassignment of student from class.

    Use case ends.

Extensions :

  • 1a. User entered invalid command.

    • 1a1. System shows ‘invalid format’ error.

      Use case resumes at step 1.

  • 1b. Module code doesn’t exist.

    • 1b1. System displays module not found error.

      Use case resumes at step 1.

  • 1c. Specified student does not belong to class.

    • 1c1. System displays specified student does not belong to class error.

      Use case resumes at step 1.

Use case: Mark Class Attendance List

Precondition(s) :

  • Student exists in data file.

  • Module code exists in data file.

  • Class belonging to module code exists in data file.

  • Student must be assigned to class.

Guarantees :

  • NIL

MSS :

  1. User enters command to mark class attendance.

  2. Class attendance is marked for specified student.

  3. System displays message of successful marking of class attendance list.

    Use case ends.

Extensions :

  • 1a. User entered invalid command.

    • 1a1. System shows ‘invalid format’ error.

      Use case resumes at step 1.

  • 1b. Specified student does not belong to class.

    • 1b1. System displays specified student does not belong to class error.

      Use case resumes at step 1.

Use case: Access Class Attendance List

Precondition(s) :

  • Module code exists in data file.

  • Class belonging to module code exists in data file.

Guarantees :

  • NIL

MSS :

  1. User enters command to view class attendance list.

  2. System displays the class attendance list.

    Use case ends.

Extensions :

  • 1a. User entered invalid command.

    • 1a1. System shows ‘invalid format’ error.

      Use case resumes at step 1.

Use case: Modify Class Attendance List

Precondition(s) :

  • Module code exists in data file.

  • Class belonging to the module code exists in data file.

  • Student exists in data file and must be marked present.

Guarantees :

  • NIL

MSS :

  1. User enters command to modify class attendance list.

  2. The class attendance list is updated.

  3. System displays message of successful modification of class attendance list.

    Use case ends.

Extensions :

  • 1a. User entered invalid command.

    • 1a1. System shows ‘invalid format’ error.

      Use case resumes at step 1.