⌛⌛ Opiskelijarekisteri¶
Palautusongelmasta
Plussan pitäisi ottaa nyt vastaan palautuksia tähän tehtävään.
Tehtävään on tarjolla totetusta testaava luokka sekä testisyötetiedosto valmiin
materiaalin etävaraston hakemistossa round4/studentregister.
Aseta vastauksesi tiedostoihin Student.java, Course.java, Attainment.java ja
StudentRegister.java. Palautusta varten tiedostojen tulee olla hakemistossa
/round4/studentregister/.
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 näytölle. 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öntiä alussa.Jos
orderon"by name", tulostetaan suoritukset kurssien nimien aakkosjärjestyksessä. Saat oikean järjestyksen aikaiseksi käyttämällä vertailufunktionaString-luokancompareTo-funktiota. Nimet järjestyvät siten, että isot kirjaimet tulevat ennen pieniä. Tästä ei tarvitse huolestua. Nyt on hyvä vain tietää, että ohjelmointikielet lajittelevat kirjaimia usein tällä tavoin.Jos
orderon"by code", tulostetaan suoritukset kurssikoodien aakkosjärjestyksessä. KäytäString-luokancompareTo-funtiota apuna myös koodien lajittelussa.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 näytölle siinä järjestyksessä kuin ne on lisätty opintorekisteriin. Tämän ja edellä kuvatun toisenprintStudentAttainments-funktion ainoa ero on parametrinorderpuuttuminen.Näet tarkempia esimerkkejä tulostuksesta oheismateriaalina annetusta tulostiedostosta.
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 esimerkiksi komennolla javac *.java,
ja suorita komennolla java StudentRegisterTest students.txt courses.txt attainments.txt.
Suorituksen pitäisi tuottaa tiedostossa output.txt kuvattu tuloste.
Palautus¶
Varmista ennen palautusta, että luokkasi ovat paikallisen tietovarastosi hakemistossa
/round4/studentregister/ ja että olet muistanut puskea kaikki muutokset
henkilökohtaiseen etätietovarastoosi. Anna sitten alla olevaan kenttään henkilökohtaisen
etätietovarastosi verkko-osoite, joka on muotoa https://course-gitlab.tuni.fi/compcs140-spring2023/------,
missä ------ on Tuni-käyttäjätunnuksesi.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.