Skip to content

Lab Done #39

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions org/junit/annotations.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<root>
<item name='org.junit.Test'>
<annotation name='java.lang.Deprecated'/>
</item>
</root>
77 changes: 76 additions & 1 deletion src/main/java/io/zipcoder/Classroom.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,79 @@
package io.zipcoder;

import java.util.*;

public class Classroom {
}

private Student[] students;

//Constructors
public Classroom(int maxNumberOfStudents) {
students = new Student[maxNumberOfStudents];
}

public Classroom(Student[] students) {
this.students = students;
}

public Classroom() {
this(30);
}


public Student[] getStudents() {
return students;
}

public Double getAverageExamScore() {
double classTotalScore = 0;
double numberOfStudents = students.length;

for (int i = 0; i < students.length; i++)
classTotalScore += students[i].getAverageExamScore();

return (classTotalScore / numberOfStudents);
}

public String addStudent(Student student) {

for (int index = 0; index < students.length; index++) {
if (students[index] == null) {
students[index] = student;

return student.toString();
}
}

return "Classroom is full";
}

public boolean removeStudent(String firstName, String lasName) {

for (int index = 0; index < students.length; index++) {
Student student = students[index];

if (student.getFirstName().contains(firstName) &&
student.getLastName().contains(lasName)) {

students[index] = null;
return true;
}
}

return false;
}

public List getStudentByScore(double score) {
List<Student> studentScore = new ArrayList<>();

for (Student student : getStudents()) {
if (student.getExamScores().contains(String.valueOf(score)))
studentScore.add(student);
}

Collections.sort(studentScore, new NameComparator());

return studentScore;
}

}
11 changes: 11 additions & 0 deletions src/main/java/io/zipcoder/NameComparator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.zipcoder;

import java.util.Comparator;

public class NameComparator implements Comparator<Student> {

@Override
public int compare(Student o1, Student o2) {
return o1.getFirstName().compareTo(o2.getFirstName());
}
}
84 changes: 84 additions & 0 deletions src/main/java/io/zipcoder/Student.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,88 @@
package io.zipcoder;

import java.util.ArrayList;
import java.util.Arrays;

public class Student {

private String firstName;
private String lastName;
private ArrayList<Double> examScores;


//Constructor

public Student(String firstName, String lastName, Double[] examScores) {
this.firstName = firstName;
this.lastName = lastName;
this.examScores = new ArrayList(Arrays.asList(examScores));
;
}


//setters and getters

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}


//methods
public int getNumberOfExamsTaken(){
return examScores.size();
}

public String getExamScores(){
String outputOfScores = "";

for(int index = 0; index < examScores.size(); index ++){

int exam = (index + 1);
double score = examScores.get(index);

outputOfScores += ("Exame " + exam + " -> " + score + "\n");
}

return outputOfScores;
}

public void addExamScore(double newScore){
examScores.add(newScore);
}

public void setExamScore(int examNumber, double newScore){
examScores.set(examNumber - 1, newScore);
}

public Double getAverageExamScore(){
double totalScore = 0.00;

for(int index = 0; index < examScores.size(); index++)
totalScore += examScores.get(index);

return (totalScore/examScores.size());
}

@Override
public String toString(){

String ouput = ("\n> Student Name: " + firstName + " " + lastName + "\n" +
"> Average Score: " + getAverageExamScore() + "\n" +
"> Exam Scores: \n" + getExamScores());

return ouput;
}

}
104 changes: 103 additions & 1 deletion src/test/java/io/zipcoder/ClassroomTest.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,106 @@
package io.zipcoder;

import org.junit.Assert;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.TreeMap;

import static org.junit.Assert.*;

public class ClassroomTest {
}

@Test
public void getAverageExamScoreTest(){
// : Given
Double[] s1Scores = { 100.0, 150.0 };
Double[] s2Scores = { 225.0, 25.0 };

Student s1 = new Student("student", "one", s1Scores);
Student s2 = new Student("student", "two", s2Scores);

Student[] students = {s1,s2};
Classroom classroom = new Classroom(students);

// When
double output = classroom.getAverageExamScore();

// Then
System.out.println(output);
}

@Test
public void addStudentTest(){
// : Given
int maxNumberOfStudents = 1;
Classroom classroom = new Classroom(maxNumberOfStudents);
Double[] examScores = { 100.0, 150.0, 250.0, 0.0 };
Student student = new Student("Leon", "Hunter", examScores);

// When
Student[] preEnrollment = classroom.getStudents();
String preEnrollmentAsString = Arrays.toString(preEnrollment);
System.out.println("===========================");
System.out.println(preEnrollmentAsString);

classroom.addStudent(student);
Student[] postEnrollment = classroom.getStudents();
String postEnrollmentAsString = Arrays.toString(postEnrollment);
System.out.println("===========================");
System.out.println(postEnrollmentAsString);
}

@Test
public void removeStudentTest() {
// : Given
int maxNumberOfStudents = 2;
Classroom classroom = new Classroom(maxNumberOfStudents);

Double[] examScores = {100.0, 150.0, 250.0, 0.0};
Student student = new Student("Leon", "Hunter", examScores);

Double[] examScores2 = {100.0, 150.0, 250.0, 0.0};
Student student2 = new Student("Lilian", "Smith", examScores2);

classroom.addStudent(student);
classroom.addStudent(student2);

// When
Student[] preRemovingStudent = classroom.getStudents();
String preRemovingAsString = Arrays.toString(preRemovingStudent);
System.out.println("===========================");
System.out.println(preRemovingAsString);

classroom.removeStudent("Leon", "Hunter");

Student[] afterRemoving = classroom.getStudents();
String afterRemovigAsString = Arrays.toString(afterRemoving);
System.out.println("===========================");
System.out.println(afterRemovigAsString);
}

@Test
public void getStudentByScoreTest(){
int maxNumberOfStudents = 4;
Classroom classroom = new Classroom(maxNumberOfStudents);
Double[] examScoresS1 = {92.0, 150.0, 250.0, 50.0};
Double[] examScoresS2 = {250.0, 100.0, 100.0, 100.0};
Double[] examScoresS3 = {92.0, 150.0, 250.0, 50.00};
Double[] examScoresS4 = {90.0, 120.0, 99.0, 100.0};
// When
Student testS1 = new Student("Leon", "Hunter", examScoresS1);
Student testS2 = new Student("Joe", "Smith", examScoresS2);
Student testS3 = new Student("Mike", "Jones", examScoresS3);
Student testS4 = new Student("Bob", "Johnson", examScoresS4);

classroom.addStudent(testS1);
classroom.addStudent(testS2);
classroom.addStudent(testS3);
classroom.addStudent(testS4);

System.out.println(classroom.getStudentByScore(100.0).toString());
}

}
Loading