From 29230cb6c242945178a122a245b25e027f2b5b81 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 04:14:33 +0000 Subject: [PATCH] Add model files without nested repository --- .../uk/ac/rhul/cs2800/model/cs2800-lab-2024 | 1 - .../CW1/StudentGradeManagement/.classpath | 40 ++++ .../CW1/StudentGradeManagement/.gitignore | 1 + .../StudentGradeManagement/.mvn/jvm.config | 0 .../StudentGradeManagement/.mvn/maven.config | 0 .../CW1/StudentGradeManagement/.project | 29 +++ .../org.eclipse.core.resources.prefs | 4 + .../.settings/org.eclipse.jdt.core.prefs | 8 + .../.settings/org.eclipse.m2e.core.prefs | 4 + .../CW1/StudentGradeManagement/pom.xml | 173 ++++++++++++++++++ .../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 ++ .../rhul/cs2800/model/RegistrationTest.java | 18 ++ .../uk/ac/rhul/cs2800/model/StudentTest.java | 52 ++++++ .../NoGradeAvailableExceptionTest.java | 14 ++ .../NoRegistrationExceptionTest.java | 14 ++ .../cs2800/model/cs2800-lab-2024/README.md | 5 + 23 files changed, 624 insertions(+), 1 deletion(-) delete mode 160000 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024 create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.classpath create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.gitignore create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.mvn/jvm.config create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.mvn/maven.config create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.project create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.core.resources.prefs create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.jdt.core.prefs create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.m2e.core.prefs create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/pom.xml create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Grade.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Module.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Registration.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Student.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableException.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationException.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/GradeTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/ModuleTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/RegistrationTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/StudentTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableExceptionTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationExceptionTest.java create mode 100644 CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/README.md diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024 b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024 deleted file mode 160000 index c600a40..0000000 --- a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c600a405403a49cbcf627610878d5dae48e2a58a diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.classpath b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.classpath new file mode 100644 index 0000000..7a9a105 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.classpath @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" output="target/classes" path="src/main/java"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + <attribute name="optional" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="src" output="target/test-classes" path="src/test/java"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + <attribute name="test" value="true"/> + </attributes> + </classpathentry> + <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + <attribute name="test" value="true"/> + <attribute name="optional" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="output" path="target/classes"/> +</classpath> diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.gitignore b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.mvn/jvm.config b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.mvn/jvm.config new file mode 100644 index 0000000..e69de29 diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.mvn/maven.config b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.mvn/maven.config new file mode 100644 index 0000000..e69de29 diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.project b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.project new file mode 100644 index 0000000..28cc2e2 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.project @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>StudentGradeManagement</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>net.sf.eclipsecs.core.CheckstyleBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + <nature>net.sf.eclipsecs.core.CheckstyleNature</nature> + </natures> +</projectDescription> diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.core.resources.prefs b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f9fe345 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/<project>=UTF-8 diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.jdt.core.prefs b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..eeac0e7 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.m2e.core.prefs b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/pom.xml b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/pom.xml new file mode 100644 index 0000000..d711719 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/pom.xml @@ -0,0 +1,173 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>uk.ac.rhul.cs2800.model</groupId> + <artifactId>StudentGradeManagement</artifactId> + <version>1.0-SNAPSHOT</version> + + <name>StudentGradeManagement</name> + <!-- FIXME change it to the project's website --> + <url>http://www.example.com</url> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.release>17</maven.compiler.release> + </properties> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.junit</groupId> + <artifactId>junit-bom</artifactId> + <version>5.11.0</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <scope>test</scope> + </dependency> + <!-- Optionally: parameterized tests support --> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-params</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <version>3.4.0</version> + <configuration> + <configLocation>google_checks.xml</configLocation> + <consoleOutput>true</consoleOutput> + <failsOnError>true</failsOnError> + <violationSeverity>warning</violationSeverity> + </configuration> + </plugin> + <plugin> + <groupId>com.github.spotbugs</groupId> + <artifactId>spotbugs-maven-plugin</artifactId> + <version>4.8.6.0</version> + <configuration> + <threshold>High</threshold> + </configuration> + </plugin> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <version>0.8.12</version> + <executions> + <execution> + <goals> + <goal>prepare-agent</goal> + </goals> + </execution> + <execution> + <id>report</id> + <phase>test</phase> + <goals> + <goal>report</goal> + </goals> + </execution> + <execution> + <id>jacoco-check</id> + <goals> + <goal>check</goal> + </goals> + <configuration> + <rules> + <rule> + <element>PACKAGE</element> + <limits> + <limit> + <counter>LINE</counter> + <value>COVEREDRATIO</value> + <minimum>0.9</minimum> + </limit> + </limits> + </rule> + </rules> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + + </build> + + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <version>3.20.0</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-project-info-reports-plugin</artifactId> + <version>3.6.2</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>3.1.0</version> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <version>3.5.0</version> + <configuration> + <configLocation>google_checks.xml</configLocation> + <failsOnError>true</failsOnError> + <violationSeverity>warning</violationSeverity> + </configuration> + <reportSets> + <reportSet> + <reports> + <report>checkstyle</report> + </reports> + </reportSet> + </reportSets> + </plugin> + <plugin> + <groupId>com.github.spotbugs</groupId> + <artifactId>spotbugs-maven-plugin</artifactId> + <version>4.8.6.0</version> + </plugin> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <version>0.8.12</version> + <reportSets> + <reportSet> + <reports> + <report>report</report> + </reports> + </reportSet> + </reportSets> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>3.10.0</version> + <configuration> + <doclint>all,-missing</doclint> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Grade.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Grade.java new file mode 100644 index 0000000..3557cea --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Module.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Module.java new file mode 100644 index 0000000..beed787 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Registration.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Registration.java new file mode 100644 index 0000000..7fb54ff --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Student.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/Student.java new file mode 100644 index 0000000..f50c16d --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableException.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableException.java new file mode 100644 index 0000000..0e819c1 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationException.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/main/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationException.java new file mode 100644 index 0000000..e5f9c87 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/GradeTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/cs2800-lab-2024/CW1/StudentGradeManagement/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/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/ModuleTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/cs2800-lab-2024/CW1/StudentGradeManagement/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/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/RegistrationTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/cs2800-lab-2024/CW1/StudentGradeManagement/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/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/StudentTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/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/cs2800-lab-2024/CW1/StudentGradeManagement/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/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableExceptionTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/exception/NoGradeAvailableExceptionTest.java new file mode 100644 index 0000000..2dfb757 --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/exception/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/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationExceptionTest.java b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/exception/NoRegistrationExceptionTest.java new file mode 100644 index 0000000..b43c5cc --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/CW1/StudentGradeManagement/src/test/java/uk/ac/rhul/cs2800/model/exception/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/cs2800-lab-2024/README.md b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/README.md new file mode 100644 index 0000000..61a684e --- /dev/null +++ b/CW1/StudentGradeManagment/src/test/java/uk/ac/rhul/cs2800/model/cs2800-lab-2024/README.md @@ -0,0 +1,5 @@ +#CS2800 NEW PROJECT>>>> +HI my name is sulema + +software engineering + -- GitLab