From 8835227a50157e3031d5980aa0fe02ecbd17b438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CSulemaMalik=E2=80=9D?= <“WMIS228@live.rhul.ac.uk”> Date: Fri, 1 Nov 2024 07:01:49 +0000 Subject: [PATCH] Edit README.md file --- .../java/uk/ac/rhul/cs2800/model/Grade.java | 34 +++++++ .../java/uk/ac/rhul/cs2800/model/Module.java | 32 +++++++ .../uk/ac/rhul/cs2800/model/Registration.java | 27 ++++++ .../java/uk/ac/rhul/cs2800/model/Student.java | 89 +++++++++++++++++++ .../exception/NoGradeAvailableException.java | 21 +++++ .../exception/NoRegistrationException.java | 17 ++++ .../uk/ac/rhul/cs2800/model/GradeTest.java | 24 +++++ .../uk/ac/rhul/cs2800/model/ModuleTest.java | 18 ++++ .../model/NoGradeAvailableExceptionTest.java | 14 +++ .../model/NoRegistrationExceptionTest.java | 14 +++ .../rhul/cs2800/model/RegistrationTest.java | 18 ++++ .../uk/ac/rhul/cs2800/model/StudentTest.java | 52 +++++++++++ READ.md | 4 + 13 files changed, 364 insertions(+) create mode 100644 CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Grade.java create mode 100644 CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Module.java create mode 100644 CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Registration.java create mode 100644 CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Student.java create mode 100644 CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableException.java create mode 100644 CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationException.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/GradeTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/ModuleTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/NoGradeAvailableExceptionTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/NoRegistrationExceptionTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/RegistrationTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/StudentTest.java create mode 100644 READ.md diff --git a/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Grade.java b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Grade.java new file mode 100644 index 0000000..3557cea --- /dev/null +++ b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Grade.java @@ -0,0 +1,34 @@ +package uk.ac.rhul.cs2800.model; + +/** + * This class represents a grade with both a numeric score and a module it belongs to. + */ +public class Grade { + + private int score; + private Module module; + + /** + * Constructs a Grade with the score and module. + * score of the grade module associated with the grade + */ + + public Grade(int score, Module module) { + this.score = score; + this.module = module; + } + + public int getScore() { + return score; + } + + public Module getModule() { + return module; + } + + + public void setScore(int score) { + this.score = score; + } + +} diff --git a/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Module.java b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Module.java new file mode 100644 index 0000000..beed787 --- /dev/null +++ b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Module.java @@ -0,0 +1,32 @@ +package uk.ac.rhul.cs2800.model; + +/** + * Represents a module with its code, name, and mandatory status. + */ + +public class Module { + private String code; + private String name; + private boolean nmc; + + /** + * Defines a module, including its code, name, and whether it's a mandatory module. + */ + public Module(String code, String name, boolean nmc) { + this.code = code; + this.name = name; + this.nmc = nmc; + } + + public String getCode() { + return code; + } + + public String getName() { + return name; + } + + public boolean isNmc() { + return nmc; + } +} diff --git a/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Registration.java b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Registration.java new file mode 100644 index 0000000..7fb54ff --- /dev/null +++ b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Registration.java @@ -0,0 +1,27 @@ +package uk.ac.rhul.cs2800.model; + +/** + * Registers a student to a specified module. + */ + +public class Registration { + private Student student; + private Module module; + + /** + * Registers a student to a specified module. + */ + + public Registration(Student student, Module module) { + this.student = student; + this.module = module; + } + + public Student getStudent() { + return student; + } + + public Module getModule() { + return module; + } +} diff --git a/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Student.java b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Student.java new file mode 100644 index 0000000..f50c16d --- /dev/null +++ b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/Student.java @@ -0,0 +1,89 @@ +package uk.ac.rhul.cs2800.model; + +import java.util.ArrayList; +import java.util.List; +import uk.ac.rhul.cs2800.model.exception.NoGradeAvailableException; + +/** + * Represents a student with personal and academic information. + */ +public class Student { + + private Long id; + private String grade; + private String firstName; + private String lastName; + private String username; + private String email; + private List<Grade> grades = new ArrayList<>(); + private List<Module> modules = new ArrayList<>(); + + /** + * Represents a student with basic identifying information. Each student has a unique ID, personal + * details, and contact information. + */ + + public Student(Long id, String firstName, String lastName, String username, String email) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + this.username = username; + this.email = email; + } + + /** + * Adds a grade to the student's list of grades. + * + * @param g the grade to add + */ + + public void addGrade(Grade g) { + grades.add(g); + } + + /** + * Adds a grade to the student's list of grades. + * + * + */ + + public Grade getGrade(Module m) throws NoGradeAvailableException { + for (Grade grade : grades) { + if (grade.getModule().equals(m)) { + return grade; + } + } + throw new NoGradeAvailableException("No grade available for module: " + m.getName()); + } + + /** + * Adds a grade to the student's list of grades. + * + * @param m the grade to add + */ + public void registerModule(Module m) { + modules.add(m); + } + + /** + * 0 if grade is empty. + */ + + public float computeAverage() { + if (grades.isEmpty()) { + return 0; + } + int total = 0; + for (Grade grade : grades) { + total += grade.getScore(); + } + return (float) total / grades.size(); + } + + + + public List<Module> getModules() { + return modules; + } + +} diff --git a/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableException.java b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableException.java new file mode 100644 index 0000000..0e819c1 --- /dev/null +++ b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableException.java @@ -0,0 +1,21 @@ +package uk.ac.rhul.cs2800.model.exception; + +/** + * Custom exception used when a grade is unavailable or missing. Includes a message to explain the + * reason. + */ + +public class NoGradeAvailableException extends Exception { + private static final long serialVersionUID = 1L; + + /** + * Custom exception to handle cases when registration cannot be completed. The message provides + * further context. + */ + + public NoGradeAvailableException(String message) { + super(message); + } +} + + diff --git a/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationException.java b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationException.java new file mode 100644 index 0000000..e5f9c87 --- /dev/null +++ b/CW1/StudentGradeManagment/src/main/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationException.java @@ -0,0 +1,17 @@ +package uk.ac.rhul.cs2800.model.exception; + +/** + * Creates an association between a student and a module for registration purposes. + */ +public class NoRegistrationException extends Exception { + private static final long serialVersionUID = 1L; + + /** + * Registers a student to a specified module. + */ + + public NoRegistrationException(String message) { + super(message); + + } +} diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/GradeTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/GradeTest.java new file mode 100644 index 0000000..3b16fcf --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/GradeTest.java @@ -0,0 +1,24 @@ +package uk.ac.rhul.cs2800.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class GradeTest { + + @Test + void testGradeInitialization() { + Module module = new Module("CS2800", "CS4600", false); + Grade grade = new Grade(50, module); + + equals(50); + assertEquals(module, grade.getModule()); + } + + @Test + void testSetScore() { + Grade grade = new Grade(50, null); + grade.setScore(95); + assertEquals(95, grade.getScore()); + } +} diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/ModuleTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/ModuleTest.java new file mode 100644 index 0000000..60cf663 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/ModuleTest.java @@ -0,0 +1,18 @@ +package uk.ac.rhul.cs2800.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + +import org.junit.jupiter.api.Test; + +class ModuleTest { + + @Test + void testModuleInitialization() { + Module module = new Module("CS2800", "ComputerScience", false); + + assertEquals("CS2800", module.getCode()); + assertEquals("ComputerScience", module.getName()); + assertFalse(module.isNmc()); + } +} diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/NoGradeAvailableExceptionTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/NoGradeAvailableExceptionTest.java new file mode 100644 index 0000000..2dfb757 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/NoGradeAvailableExceptionTest.java @@ -0,0 +1,14 @@ +package uk.ac.rhul.cs2800.model.exception; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class NoGradeAvailableExceptionTest { + + @Test + void testExceptionMessage() { + NoGradeAvailableException exception = new NoGradeAvailableException("No grade found."); + assertEquals("No grade found.", exception.getMessage()); + } +} diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/NoRegistrationExceptionTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/NoRegistrationExceptionTest.java new file mode 100644 index 0000000..b43c5cc --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/NoRegistrationExceptionTest.java @@ -0,0 +1,14 @@ +package uk.ac.rhul.cs2800.model.exception; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class NoRegistrationExceptionTest { + + @Test + void testExceptionMessage() { + NoRegistrationException exception = new NoRegistrationException("No registration found."); + assertEquals("No registration found.", exception.getMessage()); + } +} diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/RegistrationTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/RegistrationTest.java new file mode 100644 index 0000000..f658d75 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/RegistrationTest.java @@ -0,0 +1,18 @@ +package uk.ac.rhul.cs2800.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class RegistrationTest { + + @Test + void testRegistrationInitialization() { + Student student = new Student(1L, "Anna", "Angelina", "Alina", "Izzy"); + Module module = new Module("CS2800", "ComputerScience", false); + Registration registration = new Registration(student, module); + + assertEquals(student, registration.getStudent()); + assertEquals(module, registration.getModule()); + } +} diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/StudentTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/StudentTest.java new file mode 100644 index 0000000..1fbedc3 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/StudentTest.java @@ -0,0 +1,52 @@ +package uk.ac.rhul.cs2800.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import uk.ac.rhul.cs2800.model.exception.NoGradeAvailableException; + + +class StudentTest { + + private Student student; + private Module module; + private Grade grade; + + + @BeforeEach + void setUp() { + student = new Student(1L, "Anna", "Angelina", "Alina", "Izzy"); + module = new Module("CS2800", "ComputerScience", false); + grade = new Grade(85, module); + } + + @Test + void testAddGrade() throws NoGradeAvailableException { + student.addGrade(grade); + assertEquals(grade, student.getGrade(module)); + } + + @Test + void testComputeAverage() { + student.addGrade(new Grade(50, module)); + student.addGrade(new Grade(90, new Module("CS2800", "ComputerScience", false))); + assertEquals(70.0, student.computeAverage(), 0.01); + } + + @Test + void testGetGradeThrowsExceptionWhenNoGrade() { + Module newModule = new Module("CS2800", "ComputerScience", false); + assertThrows(NoGradeAvailableException.class, () -> student.getGrade(newModule)); + } + + @Test + void testRegisterModule() { + student.registerModule(module); + + assertTrue(student.getModules().contains(module)); + } +} diff --git a/READ.md b/READ.md new file mode 100644 index 0000000..c9a0fe3 --- /dev/null +++ b/READ.md @@ -0,0 +1,4 @@ +This is my project +for CS2800 + +CW1 -- GitLab