- COMP.CS.140
- 4. Suuren ohjelman toteuttaminen
- 4.5 ⌛⌛ Opiskelijarekisteri
⌛⌛ Opiskelijarekisteri¶
Tehtävän palautus koostuu Maven-projektista. Sijoita pom.xml
-tiedosto paikallisen tietovarastosi
round4/studentregister
-hakemistoon ja tee tähän hakemistoon src/main/java
-niminen alihakemisto.
Tee luokkatiedostot Student.java, Course.java, Attainment.java ja StudentRegister.java ja liitä ne
fi.tuni.prog3.studentregister
-nimiseen pakkaukseen. Tiedostojesi tulee olla siten hakemistossa
round4/studentregister/src/main/java/fi/tuni/prog3/studentregister
. NetBeans osaa luoda tehtävässä
pakkausta vastaavan hakemistorakenteen automaattisesti, kun annat Maven-projektia luodessasi
oikeat tiedot.
Tehtävään on tarjolla toteutusta testaava luokka sekä testisyötetiedosto valmiin
materiaalin etävaraston 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.
Automaattiset sekä alla kuvatut testit olettavat, että teet projektitiedostoosi pom.xml
seuraavat määritykset:
artifactId
-elementin arvo onstudentregister
.version
-elementin arvo on1.0
.maven.compiler.source
jamaven.compiler.target
-elementtien arvo on17
tai pienempi. Tarkistimella on asennettuna Java 17, joten tätä uudempaa versiota ei voi käyttää.Onejar-liitännäisen määritys, jonka
mainClass
-elementin arvo onStudentRegisterTest
, joka on alla kuvattu valmiina annettu testiluokka.
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 StudentRegisterTest.java
Maven-projektisi alihakemiston src/main/java
juureen ja muut
tiedostot Maven-projektisi juurihakemistoon pom.xml
tiedoston seuraksi. Edellä on huomattava,
että StudentRegisterTest.java
ei sisällä pakkausmääritystä, joten sitä ei siksi aseteta syvempään
alihakemistoon.
Voit tämän jälkeen kääntää ohjelman komennolla mvn package
ja suorittaa testin antamalla komennon
java -jar target/studentregister-1.0.one-jar.jar students.txt courses.txt attainments.txt
projektin juurihakemistossa. Ohjelman suorituksen pitäisi tuottaa
tiedostossa output.txt
kuvattu tuloste.
Palautus¶
Tehtävä palautetaan tavalliseen tapaan puskemalla tiedostot etätietovarastoon ja antamalla etätietovaraston verkko-osoite alla olevaan kenttään.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.