⌛⌛ Opiskelijarekisteri¶
Tehtävään on tarjolla valmiina totetusta testaava luokka sekä testisyötetiedosto student_template_project
-repositoriossa hakemistossa Round4/studentregister
.
Aseta vastauksesi tiedostoihin Student.java, Course.java, Attainment.java ja
StudentRegister.java. Palautusta varten tiedostot tulee olla hakemiston /Round4/studentregister/
alla.
Toteuta opiskelijadatan ylläpitoon soveltuvat luokat Student
, Course
, Attainment
ja
StudentRegister
, joilla on alla kuvatut julkiset ominaisuudet. Voit suunnitella luokkien
yksityiset jäsenet haluamallasi tavalla.
Student
Tallettaa opiskelijan nimen ja opiskelijanumeron.
Julkiset rakentimet/jäsenfunktiot:
Rakennin
Student(String name, String studentNumber)
: alustaaStudent
-olioon rakentimen parametreina saamat nimen ja opiskelijanumeron.Jäsenfunktiot
getName()
jagetStudentNumber()
: palauttavat opiskelijan nimen ja opiskelijanumeronString
-merkkijonoina.
Course
Tallettaa kurssin koodin, nimen ja laajuuden opintopisteinä.
Julkiset rakentimet/jäsenfunktiot:
Rakennin
Course((String code, String name, int credits)
: alustaaCourse
-olioon rakentimen parametreina saamat koodin, nimen ja opintopistemäärän.Jäsenfunktiot
getCode()
,getName()
jagetCredits()
: palauttavat kurssin koodin ja nimen (jotka ovatString
-merkkijonoja) sekä laajuuden (joka onint
-arvo).
Attainment
Kuvaa kurssisuorituksen tallettamalla kurssikoodin, opiskelijanumeron ja arvosanan.
Julkiset rakentimet/jäsenfunktiot:
Rakennin
Attainment(String courseCode, String studentNumber, int grade)
: alustaaAttainment
-olioon rakentimen parametreina saamat kurssikoodin, opiskelijanumeron ja arvosanan.Jäsenfunktiot
getCourseCode()
,getStudentNumber()
jagetGrade()
: palauttavat suorituksen kurssikoodin ja opiskelijanumeron (jotka ovatString
-merkkijonoja) sekä arvosanan (joka onint
-arvo).
StudentRegister
Toteuttaa yksinkertaisen opintorekisterin, joka ylläpitää tietoa opiskelijoista, kursseista ja kurssisuorituksista.
Julkiset rakentimet/jäsenfunktiot:
Rakennin
StudentRegister()
: alustaa tyhjänStudentRegister
-olion, jossa ei vielä ole tietoa opiskelijoista, kursseista tai kurssisuorituksista.Jäsenfunktio
getStudents()
: palauttaaArrayList<Student>
-tyyppisen listan, joka sisältää opintorekisteriin talletetut opiskelijat nimien aakkosjärjestyksen mukaisessa järjestyksessä.Jäsenfunktio
getCourses()
: palauttaaArrayList<Course>
-tyyppisen listan, joka sisältää opintorekisteriin talletetut kurssit kurssien nimien aakkosjärjestyksen mukaisessa järjestyksessä.Jäsenfunktio
addStudent(Student student)
: lisää parametrina saadun opiskelijan opintorekisteriin.Jäsenfunktio
addCourse(Course course)
: lisää parametrina saadun kurssin opintorekisteriin.Jäsenfunktio
addAttainment(Attainment att)
: lisää parametrina saadun kurssisuorituksen opintorekisteriin.Jäsenfunktio
printStudentAttainments(String studentNumber, String order)
: tulostaa parametrina saatua opiskelijanumeroa vastaavan opiskelijan kurssisuoritukset standarditulostevirtaan. Toinen parametriorder
ilmaisee, missä järjestyksessä tiedot tulostetaan.Ellei rekisterissä ole parametrina saatua opiskelijanumeroa vastaavaa opiskelijaa, tulostetaan muotoa “
Unknown student number: studentNumber
” oleva viesti.Aluksi tulostetaan muotoa “
studentName (studentNumber):
” oleva otsakerivi.Otsakerivin jälkeen tulostetaan kukin kurssisuoritus muodossa “`` courseCode courseName: grade``”. Huomaa kaksi välilyöntiä alussa.
Jos
order
on “by name”, tulostetaan suoritukset kurssien nimien aakkosjärjestyksessä. Huomaa aakkosjärjestyksessä isojen kirjainten vaikutus. Aakkosjärjestyksellä tarkoitetaan tässä ns. leksikografista eli sanakirjajärjestystä, jossa isot kirjaimet tulevat ennen pieniä.Jos
order
on “by code”, tulostetaan suoritukset kurssikoodien aakkosjärjestyksessä.Muuten suoritukset tulostetaan siinä järjestyksessä kuin ne on lisätty opintorekisteriin: ensimmäisenä rekisteriin kaikkein aikaisimmin lisätty suoritustieto ja viimeisenä kaikkein myöhäisimmin rekisteriin lisätty kurssisuoritus.
Jäsenfunktio
printStudentAttainments(String studentNumber)
: tulostaa parametrina saatua opiskelijanumeroa vastaavan opiskelijan kurssisuoritukset standarditulostevirtaan siinä järjestyksessä kuin ne on lisätty opintorekisteriin. Tämän ja edellä kuvatun toisenprintStudentAttainments
-funktion ainoa ero on parametrinorder
puuttuminen.
Toteutuksen testaus¶
Voit testata luokkiasi tiedostossa StudentRegisterTest.java
annetun valmiin testiohjelman,
tiedostoissa students.txt
, courses.txt
ja attainments.txt
annetun testidatan, ja
tiedostossa output.txt
annetun esimerkkitulosteen avulla. Aseta nämä tiedostot sekä omat
luokkatoteutuksesi samaan hakemistoon, käännä ohjelma esim. tapaan javac *.java
, ja suorita
tapaan java StudentRegisterTest students.txt courses.txt attainments.txt
. Suorituksen pitäisi
tuottaa tiedostossa output.txt
kuvattu tuloste.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.