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_2FinalProjectConstructors#
Assessment(String studentId, String courseCode, ExamType examType, double score, String assessmentName)ParameterisedL21Sets 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)L73Update 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)L142Pick a course and an exam type, then print that one score.
void viewAllGradesForCourse(List<Assessment> listOfGrades, Student student)L94Pick one of your courses and print every exam type and score in it.
void viewTotalAverageGrade(List<Assessment> listOfGrades, String studentId, String courseCode)L124Average every score for a student in one course.
Getters & setters#
Getters and setters for all five fields, assigned without validation.
10 accessors
String getStudentId()L30void setStudentId(String studentId)L34String getCourseCode()L39void setCourseCode(String courseCode)L43ExamType getExamType()L47void setExamType(ExamType examType)L51double getScore()L55void setScore(double score)L59String getAssessmentName()L63void setAssessmentName(String assessmentName)L67
Source
Assessment.java190 lines · from the project report
1package schoolcourseenrolmentsystem;
3import java.util.*;
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 }
190}