CS102/enrolment
Report
enrolment›src›schoolcourseenrolmentsystem›Assessment.java

class· schoolcourseenrolmentsystem

Assessment.java

Assessment links a student ID, a course code and an exam type to a score. It also holds the grade-viewing logic students reach through the View grades menu.

public class Assessment
Nested enum
ExamType: Quiz_1–4, Midterm_1–2, Final, Project
Key
studentId + courseCode + examType
Setters
Assign directly, no validation
Saved to
assessments.txt

Responsibilities#

  • Store one score for one student in one course
  • Assign or update a grade
  • Show one exam score, all grades in a course, or an average

Fields & enums#

enum ExamTypeL8

Quiz_1Quiz_2Quiz_3Quiz_4Midterm_1Midterm_2FinalProject
TypeNameModifiersLine
StringstudentIdprivateL14
StringcourseCodeprivateL15
ExamTypeexamTypeprivateL16
doublescoreprivateL17
StringassessmentNameprivateL18

Constructors#

  • Assessment(String studentId, String courseCode, ExamType examType, double score, String assessmentName)ParameterisedL21

    Sets all five fields, so every Assessment is complete when created.

1 method

Recording#

  • void assignGrade(List<Assessment> listOfGrades, String studentId, String courseCode, Assessment.ExamType examType, double score)L73

    Update the score if a matching record exists, otherwise add a new one.

    • Match on course code, student ID and exam type
    • Prints “Grade updated successfully.” or “Grade recorded successfully.”

3 methods

Viewing#

  • void viewSpecificExamScore(List<Assessment> listOfGrades, Student student)L142

    Pick a course and an exam type, then print that one score.

  • void viewAllGradesForCourse(List<Assessment> listOfGrades, Student student)L94

    Pick one of your courses and print every exam type and score in it.

  • void viewTotalAverageGrade(List<Assessment> listOfGrades, String studentId, String courseCode)L124

    Average every score for a student in one course.

Getters & setters#

Getters and setters for all five fields, assigned without validation.

10 accessors
  • String getStudentId()L30
  • void setStudentId(String studentId)L34
  • String getCourseCode()L39
  • void setCourseCode(String courseCode)L43
  • ExamType getExamType()L47
  • void setExamType(ExamType examType)L51
  • double getScore()L55
  • void setScore(double score)L59
  • String getAssessmentName()L63
  • void setAssessmentName(String assessmentName)L67

Source

Assessment.java190 lines · from the project report
1package schoolcourseenrolmentsystem;
2
3import java.util.*;
4
5public class Assessment {
6 // Defines the types of exams/assessments available (quizzes, midterms, final
7 // exam, project).
8 public enum ExamType {
9 Quiz_1, Quiz_2, Quiz_3, Quiz_4, Midterm_1, Midterm_2, Final, Project
11 }
13 // Attributes
14 private String studentId;
15 private String courseCode;
16 private ExamType examType;
17 private double score;
18 private String assessmentName;
20 // Constructor
21 public Assessment(String studentId, String courseCode, ExamType examType, double score, String
22 assessmentName) {
23 setStudentId(studentId);
24 setCourseCode(courseCode);
25 setExamType(examType);
26 setScore(score);
27 setAssessmentName(assessmentName);
28 }
29 //======================= Setters and Getters =======================
30 public String getStudentId() {
31 return studentId;
32 }
34 public void setStudentId(String studentId) {
36 this.studentId = studentId;
37 }
39 public String getCourseCode() {
40 return courseCode;
41 }
43 public void setCourseCode(String courseCode) {
44 this.courseCode = courseCode;
45 }
47 public ExamType getExamType() {
48 return examType;
49 }
51 public void setExamType(ExamType examType) {
52 this.examType = examType;
53 }
55 public double getScore() {
56 return score;
57 }
59 public void setScore(double score) {
60 this.score = score;
61 }
63 public String getAssessmentName() {
64 return assessmentName;
65 }
67 public void setAssessmentName(String assessmentName) {
68 this.assessmentName = assessmentName;
69 }
71 //======================= Methods=======================
73 public void assignGrade(List<Assessment> listOfGrades, String studentId, String courseCode,
74 Assessment.ExamType examType, double score) {
75 boolean gradeUpdated = false;
77 for (Assessment grade : listOfGrades) {
78 if (grade.getCourseCode().equals(courseCode)
79 && grade.getStudentId().equals(studentId)
80 && grade.getExamType() == examType) {
81 grade.setScore(score); // Update existing score
82 System.out.println("Grade updated successfully.");
83 gradeUpdated = true;
84 break;
85 }
86 }
87 if (!gradeUpdated) {
88 Assessment newGrade = new Assessment(studentId, courseCode, examType, score, examType.name());
89 listOfGrades.add(newGrade);
90 System.out.println("Grade recorded successfully.");
91 }
92 }
94 public void viewAllGradesForCourse(List<Assessment> listOfGrades, Student student) {
95 List<Course> courses = student.getEnrolledCoursesList();
96 if (courses.isEmpty()) {
97 System.out.println("You are not enrolled in any courses.");
98 return;
99 }
100 System.out.println("Select a course to view all your grades:");
101 for (int i = 0; i < courses.size(); i++) {
102 System.out.printf((i + 1) + ".%s (%s).", courses.get(i).getCourseName(), courses.get(i).getCourseCode());
103 }
104 int courseChoice = Helpers.getSafeIntInput("Option: ");
105 if (courseChoice < 1 || courseChoice > courses.size()) { //Option can't be less than 1 or more than listed courses.
106 System.out.println("Invalid course selection.");
107 return;
108 }
109 String courseCode = courses.get(courseChoice - 1).getCourseCode();
111 boolean found = false;
113 for (Assessment grade : listOfGrades) {
114 if (grade.getStudentId().equals(student.getId()) && grade.getCourseCode().equals(courseCode)) {
115 System.out.println(grade.getExamType() + ": " + grade.getScore());
116 found = true;
117 }
118 }
119 if (!found) {
120 System.out.println("No grades found for this course.");
121 }
122 }
124 public void viewTotalAverageGrade(List<Assessment> listOfGrades, String studentId, String courseCode) {
125 double total = 0;
126 int count = 0;
128 for (Assessment grade : listOfGrades) {
129 if (grade.getStudentId().equals(studentId) && grade.getCourseCode().equals(courseCode)) {
130 total += grade.getScore();
131 count++;
132 }
133 }
134 if (count > 0) {
135 double average = total / count;
136 System.out.println("Your total average grade in " + courseCode + " is: " + average);
137 } else {
138 System.out.println("No grades found for this course.");
139 }
140 }
142 public void viewSpecificExamScore(List<Assessment> listOfGrades, Student student) {
143 List<Course> listOfCourses = student.getEnrolledCoursesList();
144 if (listOfCourses.isEmpty()) {
145 System.out.println("You are not enrolled in any courses.");
146 return;
147 }
149 System.out.println("Select a course: ");
150 for (int i = 0; i < listOfCourses.size(); i++) {
151 System.out.printf((i + 1) + ".%s (%s).\n", listOfCourses.get(i).getCourseName(),
152 listOfCourses.get(i).getCourseCode());
153 }
154 int courseChoice = Helpers.getSafeIntInput("Choice: ");
155 if (courseChoice < 1 || courseChoice > listOfCourses.size()) {
156 System.out.println("Invalid selection.");
157 return;
158 }
160 String courseCode = listOfCourses.get(courseChoice - 1).getCourseCode();
162 // Choose exam type
163 Assessment.ExamType[] types = Assessment.ExamType.values();
164 System.out.println("Select an exam to view:");
165 for (int i = 0; i < types.length; i++) {
166 System.out.println((i + 1) + ". " + types[i]);
167 }
169 int examChoice = Helpers.getSafeIntInput("Choice: ");
170 if (examChoice < 1 || examChoice > types.length) {
171 System.out.println("Invalid exam type.");
172 return;
173 }
175 Assessment.ExamType selected = types[examChoice - 1];
176 boolean found = false;
177 for (Assessment assessment : listOfGrades) {
178 if (assessment.getStudentId().equals(student.getId()) &&
179 assessment.getCourseCode().equals(courseCode) &&
180 assessment.getExamType() == selected) {
181 System.out.println("Your " + selected + " score: " + assessment.getScore());
182 found = true;
183 }
184 }
186 if (!found) {
187 System.out.println("No " + selected + " score found for this course.");
188 }
189 }