diff --git a/src/main/java/Student.java b/src/main/java/Student.java new file mode 100644 index 00000000..f4ed51b5 --- /dev/null +++ b/src/main/java/Student.java @@ -0,0 +1,58 @@ +import java.util.ArrayList; +import java.util.List; + +public class Student { + + private long id; + private String name; + private ArrayList grades; + + public Student(long id, String name) { + this.id = id; + this.name = name; + this.grades = new ArrayList<>(); + } + + // returns the student's id + public long getId() { + return id; + } + + // returns the student's name + public String getName() { + return name; + } + + public List getGrades() { + return grades; + } + + // adds the given grade to the grades list + public void addGrade(int grade) { + grades.add(grade); + } + + // returns the average of the students grades + public double getGradeAverage() { + if (grades.isEmpty()) { + return 0.0; + } + int sum = 0; + for (int grade : grades) { + sum += grade; + } + return (double) sum / grades.size(); + } + + public void updateGrade(int index, int newGrade) { + if (index >= 0 && index < grades.size()) { + grades.set(index, newGrade); + } + } + + public void deleteGrade(int index) { + if (index >= 0 && index < grades.size()) { + grades.remove(index); + } + } +} diff --git a/src/test/java/StudentTest.java b/src/test/java/StudentTest.java new file mode 100644 index 00000000..fa84f157 --- /dev/null +++ b/src/test/java/StudentTest.java @@ -0,0 +1,51 @@ +import org.junit.Test; +import static org.junit.Assert.*; +import java.util.ArrayList; + +public class StudentTest { + @Test + public void testStudentConstructorAndGetters() { + long id = 123456789; + String name = "Jimmy John"; + Student student = new Student(id, name); + + assertEquals(id, student.getId()); + assertEquals(name, student.getName()); + assertEquals(new ArrayList(), student.getGrades()); + } + + @Test + public void testAddGradeAndGetGradeAverage() { + Student student = new Student(123456789, "Jimmy John"); + + student.addGrade(80); + assertEquals(80, student.getGrades().get(0).intValue()); + assertEquals(80.0, student.getGradeAverage(), 0.001); + + student.addGrade(90); + assertEquals(90, student.getGrades().get(1).intValue()); + assertEquals(85.0, student.getGradeAverage(), 0.001); + } + + @Test + public void testUpdateGrade() { + Student student = new Student(123456789, "Jimmy John"); + student.addGrade(80); + student.addGrade(90); + + student.updateGrade(1, 95); + assertEquals(95, student.getGrades().get(1).intValue()); + assertEquals(87.5, student.getGradeAverage(), 0.001); + } + + @Test + public void testDeleteGrade() { + Student student = new Student(123456789, "Jimmy John"); + student.addGrade(80); + student.addGrade(90); + + student.deleteGrade(0); + assertEquals(90, student.getGrades().get(0).intValue()); + assertEquals(90.0, student.getGradeAverage(), 0.001); + } +}