Skip to content
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
95 changes: 94 additions & 1 deletion src/main/java/io/zipcoder/Classroom.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,97 @@
package io.zipcoder;

public class Classroom {
import java.util.*;

public class Classroom{
private Student[] studentsInClass;

public Classroom(int numberOfStudents) {
studentsInClass = new Student[numberOfStudents];
}
public Classroom(Student[] students){
this.studentsInClass = new Student[students.length];
System.arraycopy(students, 0, studentsInClass, 0, students.length);

// for (int i = 0; i < students.length; i++) {
// studentsInClass[i] = students[i];
// }
}
public Classroom(){
this.studentsInClass = new Student[30];
}

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


public Double getClassAverageExamScore() {
Double average = 0.0;
for (Student student: studentsInClass) {
average += student.getAverageExamScore();
}
return average/studentsInClass.length;
}

public void addStudent(Student student) {
ArrayList<Student> addingStudents = new ArrayList<>(Arrays.asList(studentsInClass));
addingStudents.add(student);
this.studentsInClass = addingStudents.toArray(new Student[0]);
}

public void removeStudent(String firstName, String lastName) {
ArrayList<Student> removingStudent = new ArrayList<>(Arrays.asList(studentsInClass));
for (Student student:removingStudent) {
if(student.getFirstName().equals(firstName) && student.getLastName().equals(lastName)){
removingStudent.remove(student);
removingStudent.add(null);
break;
}
}
this.studentsInClass = removingStudent.toArray(new Student[0]);
}


public void getStudentByScore() {
//Arrays.sort(studentsInClass);

List<Student> sortMe = Arrays.asList(studentsInClass);
Comparator<Student> byScore = Comparator.comparing(Student :: getAverageExamScore);
Comparator<Student> byLastName = Comparator.comparing(Student :: getLastName);
Comparator<Student> byFirstName = Comparator.comparing(Student :: getFirstName);

Collections.sort(sortMe, byScore.thenComparing(byLastName).thenComparing(byFirstName));
Collections.reverse(sortMe);
this.studentsInClass = sortMe.toArray(new Student[0]);
}

public void getGradedBook(){

//Assign letter grades to students
double result = 0.0;
double standardDevi = 0.0;
for (Student eachStudent : studentsInClass) {

Double classAvg = getClassAverageExamScore();
Double studentAvg = eachStudent.getAverageExamScore();

Integer numOfStudents = studentsInClass.length;

result += Math.pow(studentAvg - classAvg, 2);

standardDevi = Math.sqrt(result/(numOfStudents - 1));

if (studentAvg >= (classAvg + (standardDevi * 2))) {
eachStudent.setLetterGrade("A");
} else if (studentAvg >= (classAvg + (standardDevi))){
eachStudent.setLetterGrade("B");
} else if (studentAvg < (classAvg + standardDevi) && studentAvg > classAvg){
eachStudent.setLetterGrade("C");
} else if (studentAvg <= (classAvg - standardDevi)) {
eachStudent.setLetterGrade("D");
} else if (studentAvg <= (classAvg - (standardDevi * 2))) {
eachStudent.setLetterGrade("F"); }
}

}
}
93 changes: 92 additions & 1 deletion src/main/java/io/zipcoder/Student.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,95 @@
package io.zipcoder;

public class Student {
import java.util.ArrayList;
import java.util.Collections;

public class Student implements Comparable<Student> {
private String firstName;
private String lastName;
private ArrayList<Double> examScores = new ArrayList<>();
String letterGrade;


public Student(String firstName, String lastName, Double[] testScores, String letterGrade) {
this.firstName = firstName;
this.lastName = lastName;
Collections.addAll(this.examScores, testScores);
this.letterGrade = letterGrade;
}
public String getLetterGrade() {
return this.letterGrade;
}

public void setLetterGrade(String letterGrade) {
this.letterGrade = letterGrade;
}

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;
}

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

public String getExamScores() {
int index = 1;
String result = "Exam Scores:\n";
for (Double score: examScores) {
result += "Exam " + index + " -> " +score + "\n";
index++;
}
return result;
}

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

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

public Double getAverageExamScore() {
Double allExamScore = 0.0;
for (Double score: examScores) {
allExamScore += score;
}
return allExamScore/examScores.size();
}

/**
* Student Name: Leon Hunter
* > Average Score: 125
* > Exam Scores:
* Exam 1 -> 100
* Exam 2 -> 150
* Exam 3 -> 250
* Exam 4 -> 0
*/

@Override
public String toString(){
String result = "Student Name: " + firstName + " " + lastName + "\n" +
"Average Score: " + getAverageExamScore() + "\n" + getExamScores() +
"Letter Grade:" + getLetterGrade() + "\n";
return result;
}

@Override
public int compareTo(Student student) {
return (int) (this.getAverageExamScore() - student.getAverageExamScore());
}
}
7 changes: 7 additions & 0 deletions src/main/java/io/zipcoder/StudentSorter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package io.zipcoder;

public class StudentSorter {
public Student[] sort(Student[] studentArray){
return null;
}
}
Loading