Overview
Purpose
-
This project portfolio was written to document my role and contributions to the EazyTutors project. I was responsible for creating the
Attendance
related features and the display of students' attendance.
The Team
-
My team comprises of students from the National University of Singapore and we decided on creating this application after observing the hassle tutors have to deal with when marking attendance.
The Application
-
EazyTutors is a desktop statistics recording application used for managing classes of students. It was created with NUS tutors in mind, but can be extended to tutors or teachers from other organizations as well. 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.
Features
-
Mark students' attendance
-
Record students' assignment scores
-
Calculate assignment statistics
-
Calculate class performance
-
Add students' photos
-
Record notes about students
Summary of contributions
Preface
This section serves to inform you of the improvements I made to the project, including code, documentation and administrative tasks.
Enhancements
-
Major enhancement: added the ability to add/delete/edit a class session
-
What it does: allows the user to add, delete or edit session information, and mark the attendance of a specific student.
-
Justification: This feature will allow tutors to mark and track the attendance of each student, so that marks could be given for participation and tutors can direct their attention towards students who have missed their lessons, to provide make-up lessons and help if necessary
-
Highlights:
-
-
Minor enhancement: added a panel in the GUI for displaying a student’s attendance in lessons of a specific module.
-
Minor enhancement: added some tests for enhanced
AddCommand
. -
Code contributed: [Project Code Dashboard]
-
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. |
Add a lesson: addLesson
Adds a lesson to the list of lessons in the address book.
Format: addLesson n/NAME d/DATE
Mark a student’s attendance: attend
Creates an attendance entry for the person identified by the index number used in the displayed person list.
Format: attend INDEX id/SESSION_INDEX at/ATTENDANCE
Delete a session: deleteAttendance
Deletes a lesson from the list of lessons in the address book.
Format: deleteAttendance id/SESSION_INDEX
Edit a session: editLesson
Edits the name and date of an existing lesson.
Format: editLesson id/SESSION_INDEX n/UPDATED_NAME d/UPDATED_DATE
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. |
Attendance data structure
Provides a representation of an attendance session for a particular date. This enables a mapping between each student and multiple attendance sessions with a record of attendance/absence for that session.
Design Considerations
Aspect: Data Structure to support attendance operations
-
Alternative 1 (current choice): Adaptation of Assignment model, using a HashMap for each student to record the attendance/absence with the uniqueId of the Attendance session. AttendanceMark is a subclass of the Mark class from the Assignment model, limited to a value of 1 or 0. The Attendance session date is represented with the Deadline class from the Assignment model.
-
Pros: Limited code duplication, consistent model implementation, prevents inconsistent attendance records across the class.
-
Cons: Calculating attendance requires iterating and mapping.
-
-
Alternative 2: Store a list of attendance marks for each student.
-
Pros: Higher cohesion with attendance data represented together with student.
-
Cons: Attendance session data is distributed across all students which increases complexity of operations affecting all students.
-
Edit Lesson Feature
This is a feature to let users edit the name and date of a lesson.
The following sequence diagram shows how the editLesson
command works
-
The user executes the
editLesson id/SESSION_INDEX n/UPDATED_NAME d/UPDATED_DATE
command, with parametersSESSION_INDEX
and optional parametersUPDATED_NAME
,UPDATED_DATE
. -
The
AddressBookParser
class parses the command to create a newEditLessonCommand
class. -
The
getFilteredAttendanceList
command is executed and handled by theModelManager
class. -
A new
Attendance
object is created bycreateEditedAttendance
command, using information parsed from parser. -
The new
Attendance
is attached to theModel
atSESSION_INDEX
. -
The new lesson information will now stored.
Delete Attendance Feature
This is a feature to let users remove a lesson from the address book.
The following sequence diagram shows how the deleteAttendance
command works
-
The user executes the
deleteAttendance id/SESSION_INDEX
command, with parameterSESSION_INDEX
. -
The
AddressBookParser
class parses the command to create a newdeleteAttendanceCommand
class. -
The
getFilteredAttendanceList
command is executed and handled by theModelManager
class. -
The target
Attendance
object is removed bycreateEditedAttendance
command, using information parsed from parser. -
The target lesson information will now be removed.
Add Lesson Feature
This is a feature to let users add a lesson to the address book.
The following sequence diagram shows how the addLesson
command works
-
The user executes the
addLesson n/NAME d/DATE
command, with parametersNAME
,DATE
. -
The
AddressBookParser
class parses the command to create a newAddAttendanceCommand
class. -
The
getFilteredAttendanceList
command is executed and handled by theModelManager
class. -
A new
Attendance
object is created using information parsed from parser. -
The new
Attendance
is attached to theModel
. -
The new lesson information will now stored.
Proposed Enhancement for v2.0
-
Adding features to notify students of upcoming deadlines
-
Add tabs feature so that the app can be used for multiple classes