In CSCI 160, there are two types of grades: quiz grades (out of 30) and
regular grades. The lowest quiz grade is dropped in computing a
student's total score.
For example, if a student scored 30/35 and 24/35 on two labs
and 20/30, 15/30, and 30/30 on three quizzes, the
student's total score would be (30 + 24 + 20 + 30) / (35 + 35 + 30 + 30)
= 104 / 130 = 80%, since the lowest score is dropped.
Write a class Student to accumulate a single student's grade. This class should have three methods.
I should be able to execute the following class to test your Student class.
import csbsju.cs160.*;
public class StudentTest {
public static void main(String[] args) {
Student stud = new Student();
stud.addRegularScore(30, 35);
stud.addRegularScore(24, 35);
stud.addQuizScore(20);
stud.addQuizScore(15);
stud.addQuizScore(30);
IO.println(100.0 * stud.getTotal() + "%"); // prints ``80.0%''
}
}
public class Student {
private static final int QUIZ_POSSIBLE = 30;
private int total_score;
private int total_possible;
private boolean has_quiz;
private int min_quiz;
public Student() {
total_score = 0;
total_possible = 0;
has_quiz = false;
min_quiz = 0;
}
public double getTotal() {
return (double) total_score / total_possible;
}
public void addRegularScore(int score, int possible) {
total_score += score;
total_possible += possible;
}
public void addQuizScore(int score) {
if(has_quiz) {
if(score < min_quiz) { // we have a new minimum
total_score += min_quiz;
total_possible += QUIZ_POSSIBLE;
min_quiz = score;
} else { // this quiz score counts
total_score += score;
total_possible += QUIZ_POSSIBLE;
}
} else {
min_quiz = score;
has_quiz = true;
}
}
}