Deze opgave is het tweede deel van de Puntenboek-opgave.
In deze opgave zal je, gespreid over 2 deelopgaves, een programma maken waarin je de punten van studenten kan beheren. Nadat je in het eerste deel een Student
hebt gemodelleerd, zal je in de deze deelopgave je Student
-klasse gebruiken om schoolresultaten op te vragen en te tonen.
Aangezien datastructuren buiten de scope van deze cursus vallen, kun je een implementatie van de Gradebook
-klasse downloaden die reeds voor jou werd gemaakt: Gradebook.java1. Deze klasse maakt gebruik van jouw Student
-klasse uit de vorige opgave, bevat een constructor die geen argumenten vereist en beschikt over volgende methoden. Deze klasse mag je NIET aanpassen.
// Vraag de gemiddelde score op voor het meegegeven vak.
double getAverageScore(String course);
// Vraag de gemiddelde score op voor de meegegeven student.
double getAverageScore(Student student);
// Vraag de score op voor de gegeven student, voor het gegeven vak.
double getScore(String course, Student student);
// Vult de score in voor de gegeven student, voor het gegeven vak.
void setScore(String course, Student student, double score);
Schrijf een Java programma (Grades.java
) dat een main()
-methode heeft, waarin je via een Scanner
gegevens opvraagt aan de gebruiker en deze opslaat in een object van de Gradebook
-klasse, om vervolgens de gemiddelde scores te printen. Je programma moet volgende flow volgen, bekijk ook zeker de onderstaande voorbeelduitvoer voor extra verduidelijkingen.
De nextInt()
-methode van de Scanner
-klasse houdt geen rekening met het end-of-line teken (\n
) en werkt dus niet correct wanneer je 2 getallen na elkaar wil inlezen die niet op dezelfde regel staan. Om alle problemen te vermijden, kun je doubles en integers inlezen door de nextLine()
-methode van de Scanner
-klasse te gebruiken. Dit geeft je een String
, die je naar een double
of int
kan converteren door respectievelijk Double.parseDouble()
en Integer.parseInt()
te gebruiken.
Voorbeeld
Scanner keyboard = new Scanner(System.in);
int intGetal = Integer.parseInt(keyboard.nextLine());
int doubleGetal = Double.parseDouble(keyboard.nextLine());
De tekst in het rood stelt invoer van de gebruiker voor (deze wordt niet uitgeprint door je programma).
Hoeveel vakken zijn er? 3 Wat is de naam van het 1e vak? Defence Against the Dark Arts Wat is de naam van het 2e vak? Potions Wat is de naam van het 3e vak? Transfiguration Hoeveel studenten zijn er? 2 Hoe heet de 1e student? Harry Hoe oud is Harry? 16 Waar woont Harry? Little Whinging Welke score behaalde Harry voor Defence Against the Dark Arts? 18 Welke score behaalde Harry voor Potions? 14 Welke score behaalde Harry voor Transfiguration? 10 Hoe heet de 2e student? Ron Hoe oud is Ron? 17 Waar woont Ron? The Burrow Welke score behaalde Ron voor Defence Against the Dark Arts? 12 Welke score behaalde Ron voor Potions? 8 Welke score behaalde Ron voor Transfiguration? 4 2 studenten scoren gemiddeld 15.0 voor Defence Against the Dark Arts. 2 studenten scoren gemiddeld 11.0 voor Potions. 2 studenten scoren gemiddeld 7.0 voor Transfiguration. Harry scoort gemiddeld 14.0. Ron scoort gemiddeld 8.0.
Hierbij nog wat uitleg over de Dodona-testen voor deze oefening: