- COMP.CS.140
- 4. Suuren ohjelman toteuttaminen
- 4.7 ⌛⌛ Opiskelijarekisteri
⌛⌛ 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.
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 näytölle. 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ä. 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
order
on"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 parametrinorder
puuttuminen.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.