⌛⌛ 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.
StudentTallettaa 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.
CourseTallettaa 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).
AttainmentKuvaa 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).
StudentRegisterToteuttaa 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 parametriorderilmaisee, 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öntia alussa.
Jos
orderon “by name”, tulostetaan suoritukset kurssien nimien aakkosjärjestyksessä.Jos
orderon “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ättu 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 parametrinorderpuuttuminen.
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.