Proffa ilmoittautumisen profiloija

Samankaltaiset tiedostot
Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Proffa ilmoittautumisen profiloija

Proffa ilmoittautumisen profiloija

Määrittelydokumentti. ilpo-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Lohtu-projekti. Testaussuunnitelma

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

Tietokannat II -kurssin harjoitustyö

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Hallintaliittymän käyttöohje

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy

Käyttöohje. Oppimistavoitteiden hallintajärjestelmä harri

Apix Vastaanota-palvelun lisäominaisuus. Vastaanota+ Pikaohje Versio 1.0

SUOMI LIIKKUU KOULULIIKUNTATAPAHTUMIEN ILMOITTAUTUMISJÄRJESTELMÄ

Ylläpitodokumentti Labra

Send-It ilmoittautumisjärjestelmä (judotapahtumat Suomessa)

LoCCaM Riistakamerasovellus. Dimag Ky dimag.fi

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Käyttöohje. Versiohistoria: versio Mari Kommenttien perusteella korjattu versio

1. Valitse suunniteltu valmistumisvuosi alasvetovalikosta ja tallenna valinta. 2. Luo uusi HOPS painikkeella pääset tekemään HOPSia.

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Käyttöohje. Aija. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

SQL Buddy JAMK Labranet Wiki

Suoritusten kirjaaminen WinOodissa: Opintoneuvojan ohje

LOVe-verkkokoulutuksen käyttöohje Avaimet käteen

Käyttöohje Suomen Pankin DCS2-järjestelmään rekisteröityminen

Käyttöohje. Visy Access Net UPM

Uuden Peda.netin käyttöönotto

Vaatimusmäärittely. Kymenlaakson partiopiirin jäsenrekisteri

Pohjantähden sähköinen vakuutushakemus Koulutus- ja esittelymateriaali

Webmailin käyttöohje. Ohjeen sisältö. Sähköpostin peruskäyttö. Lomavastaajan asettaminen sähköpostiin. Sähköpostin salasanan vaihtaminen

Ohjeet asiakirjan lisäämiseen arkistoon

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

KiMeWebin käyttöohjeet

LOVe-verkkokoulutuksen käyttöohje Opiskelijan osio

Toimittajaportaalin pikaohje

Tietokanta projektin alussa: create table kurssin_tila ( NOT NULL VARCHAR2(60) create table kurssin_tyyppi ( create table opintojakson_tyyppi (

Autentikoivan lähtevän postin palvelimen asetukset

Google-dokumentit. Opetusteknologiakeskus Mediamylly

Ohjeet S-ryhmän tuotetietoportaaliin

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

Informaatiotekniikan kehitysyksikkö

KYMP Webmail -palvelu

Action Request System

Toimittajaportaalin rekisteröityminen Toimittajaportaalin sisäänkirjautuminen Laskun luonti Liitteen lisääminen laskulle Asiakkaiden hallinta Uuden

1. Uuden Ilmon käytön eroavaisuudet vanhasta Ilmosta lyhyesti

Opintokohteiden muokkaus WebOodissa. Sisällys. Aluksi

Oppilaan opas. Visuaaliviestinnän Instituutti VVI Oy. Versio 0.2 ( )

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Opintokohteiden muokkaus

Opettajan ohje kypsyysnäytteen toteuttamiseen ja arvioimiseen sähköisenä Exam-tenttinä

Lupapiste käyttöönottokoulutus. Palvelun esittely

Sinkka Projekti Sivu 1 (6) Projektin tiedostokuvaus dokumentti

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tietokannan luominen:

Kennelliiton Omakoira-jäsenpalvelu Ohje yhdistyksille ja kennelpiireille: Kurssin anominen

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria

1. ASIAKKAAN OHJEET Varauksen tekeminen Käyttäjätunnuksen luominen Varauksen peruminen... 4

INTINU13A6 Java sovellukset

Raporttiarkiston (RATKI) käyttöohjeet Ohjeet

Sähköpostitilin käyttöönotto

WinhaWille-opas opiskelijoille

Vianova Systems Finland Oy:n Novapoint käytön tuki

SUOMEN PANKIN RAPORTOINTIPALVELUN KÄYTTÖOHJE. Maksutaseen kuukausikysely ulkomaisista rahoitussaamisista ja -veloista (BOPM)

FTP -AINEISTOSIIRRON OHJE PC / MAC Ympäristö

Tietokannat II -kurssin harjoitustyö

JAKELUPISTE KÄYTTÖOHJE 2/6

VSP webmail palvelun ka yttö öhje

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

Sisältö. Päivitetty viimeksi Sivu 2 / 14

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOJEN SIIRTO JA TARKISTAMINEN

Käyttöohje. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Meeting Plannerin käyttöohje

Opas administraattori-tason käyttäjille. MANAGERIX -ohjelman esittely... 2 Kirjautuminen... 2

ARVI-järjestelmän ohje arvioinnin syöttäjälle

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

ORGANISAATION KIRJAUTUMINEN TURVASIRU.FI-PALVELUUN

Pedanet oppilaan ohje Aleksanteri Kenan koulu Eija Arvola

Suunnitteludokumentti

Titta-palvelun käyttöohje

Käyttöohje. Labra. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

ADMIN. Käyttöopas 08Q4

SQL - STRUCTURED QUERY LANGUAGE

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Opintokohteiden muokkaus

Testaussuunnitelma Labra

LINUX-HARJOITUS, MYSQL

KÄYTTÖOHJE / Ver 1.0 / Huhtikuu WordPress KÄYTTÖOHJE Sotkamo 2016

ehopsin käyttöohje opiskelijalle

Fakta versio Forecast versio

Asio. Ohjelma on selainpohjainen, joten ohjelmaa varten tarvitaan internet-selain. Ohjelmaan pääsee osoitteella

Transkriptio:

Proffa ilmoittautumisen profiloija Suunnitteludokumentti Leila Juusola Ilari Moilanen Jyrki Salonen Olli Sinerma Hanna Sirola Helsinki 11.3.2005 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

HELSINGIN YLIOPISTO Matemaattis-luonnontieteellinen tiedekunta Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti Tekijät: Leila Juusola Ilari Moilanen Jyrki Salonen Olli Sinerma Hanna Sirola Työn nimi: Proffa ilmoittautumisen profiloija Oppiaine: Tietojenkäsittelytiede Työn laji: Suunnitteludokumentti Aika: 11.3.2005 Sivumäärä: 35 sivua + 39 liitesivua Tiivistelmä: Tämä suunnitteludokumentti on sisäinen ohje Proffa-ohjelmistotuotantoprojektiryhmälle siitä, kuinka ohjelmisto tullaan toteuttamaan. Dokumentin tarkoitus on kuvata toteutettavan ohjelmiston toiminta ja rakenne siinä laajuudessa, että ohjelmiston toteuttaminen on mahdollista yksinomaan tämän dokumentin pohjalta. Ohjelmiston sisäisiä osajärjestelmiä ovat Proffan oma tietokanta, Java/PHP-rajapinta, pääkäyttäjän järjestelmä sekä kurssivastaavan järjestelmä. Ulkoisia osajärjestelmiä ovat Desmond-tietokanta, ilmo-tietokanta ja Desmond-kantaan toteutettava JAR-rajapinta. Järjestelmän sivurakenne koostuu PHP-pohjaisista pääkäyttäjä-, kurssivastaava- ja kirjautumisnäkymästä sekä HTML-tulosteesta, joka toimii yhteenvetona ryhmäjaosta. Uusin versio tästä dokumentista on saatavilla Proffa-ryhmän kotisivuilla osoitteessa http://www.cs.helsinki.fi/group/proffa. Versiohistoria Versio Päiväys Tehdyt muutokset 1.0 2.3.2005 Hyväksyttiin muutoksin FTR:ssä 3.3.2005 2.0 11.3.2005 Tehty FTR:n mukaisia korjauksia. Avainsanat: Proffa, profilointiohjelma

Sisältö 1 Johdanto...1 1.1 Dokumentin tarkoitus...1 1.2 Dokumentin rakenne...1 1.3 Käytettävät termit ja lyhenteet...2 2 Järjestelmän yleiskuvaus...3 2.1 Toteutus- ja toimintaympäristö...3 2.2 Rajoitukset...3 3 Arkkitehtuurikuvaus...4 3.1 Sisäiset osajärjestelmät...5 3.1.1 Proffa-kanta...5 3.1.2 Pääkäyttäjänäkymä...10 3.1.3 Kurssivastaavanäkymä...10 3.1.4 Java/PHP-rajapinta...11 3.2 Ulkoiset osajärjestelmät...11 3.2.1 Ilmo-järjestelmä...11 3.2.2 Desmond-tietokanta...11 3.2.3 JAR-rajapinta...18 3.3 PHP-sivurakenne...19 3.3.1 Kirjautumisnäkymä (index.php)...20 3.3.2 Pääkäyttäjän näkymä (admin.php)...20 3.3.3 Kurssivastaavan näkymä (aloitus.php)...21 3.3.4 Kurssinäkymä (kurssi.php)...22 3.3.5 Opiskelijanäkymä (opiskelija.php)...23 3.3.6 Ryhmänäkymä (ryhma.php)...24 3.3.7 Ryhmäjaosta luotavan HTML-sivun muokkaus (kurssituloste.php)...25 4 Käyttöliittymäkuvaus...26 4.1 Sisäänkirjautuminen: index.php...26 4.2 Pääkäyttäjän näkymä: admin.php...27 4.3 Kurssivastaavan alkunäkymä: aloitus.php...28 4.4 Kurssivastaavan kurssinäkymä: kurssi.php...28 4.4.1 Kurssinäkymän vasen sivu: opiskelijat.php...29 4.4.2 Kurssinäkymän oikea sivu: ryhmat.php...32 4.5 Kurssitulosteen luonti: kurssituloste.php...33 4.6 Lopputulos: ryhmajako.html...34 5 Lähteet...35 Liite 1: Proffa-kannan testidatan insert-lauseet...36 Liite 2: JAR-rajapinnan koodit...37

1 1 Johdanto Kevään 2005 Proffa -ohjelmistotuotantoprojektissa tullaan toteuttamaan työkalu tietojenkäsittelytieteen laitoksen kurssivastaaville oppilaiden sijoittelemiseksi ryhmiin kursseilla Ohjelmistotuotantoprojekti, Tieteellinen kirjoittaminen ja Opettajatuutorointi. Ohjelmisto tulee keventämään automaattisella oppilaiden järjestelyllä kurssivastaavien suurehkoa käsinlajittelun työtaakkaa, joka tehtävään on tähän asti kuulunut. 1.1 Dokumentin tarkoitus Tämä suunnitteludokumentti on sisäinen ohje Proffa-ohjelmistotuotantoprojektiryhmälle siitä, kuinka ohjelmisto tullaan toteuttamaan. Dokumentin tarkoitus on kuvata toteutettavan ohjelmiston toiminta ja rakenne siinä laajuudessa, että ohjelmiston toteuttaminen on mahdollista yksinomaan tämän dokumentin pohjalta. 1.2 Dokumentin rakenne Ensimmäinen johdantoluku on yleiskuvaus projektin luonteesta, ja toimii esikatseluna dokumentille kokonaisuudessaan. Myös kuva 1 antaa kokonaiskuvan suunnitteilla olevasta järjestelmästä. Kuva 1: Yleiskuva Proffa-järjestelmästä Toisessa luvussa kuvaillaan järjestelmää yleisellä tasolla; tarkastelussa ovat sen toteutus- ja toimintaympäristö sekä järjestelmän rajaukset.

2 Kolmannen luvun arkkitehtuurisuunnitelma sisältää kuvauksen ohjelmiston sisäisistä ja ulkoisista osajärjestelmistä sekä PHP-sivurakenteesta. Ohjelmiston sisäisiä osajärjestelmiä ovat Proffan oma tietokanta, Java/PHP-rajapinta Oracle-tietokantaan, pääkäyttäjän järjestelmä sekä kurssivastaavan järjestelmä. Ulkoisia osajärjestelmiä ovat Desmond-tietokanta, ilmo-tietokanta ja Desmond-kantaan toteutettava Java-rajapinta. Järjestelmän PHP-pohjainen käyttäjänäkymä koostuu pääkäyttäjänäkymästä, kurssivastaavan näkymästä ja kirjautumisnäkymästä sekä HTML-tulosteesta, joka toimii yhteenvetona ryhmäjaosta. Neljännessä luvussa käydään läpi järjestelmän käyttöliittymän näkymät ja toiminnot. 1.3 Käytettävät termit ja lyhenteet Automaattinen ryhmiinjärjestely: Proffa-järjestelmän suorittama toimenpide, jonka asiakas käynnistää. Bodbacka: tietojenkäsittelytieteen laitoksen tietokantapalvelin, joka toimii Proffan kehitysalustana. Sisältää test-nimisen testikannan. Db: yliopiston palvelin, jonka kautta ollaan yhteydessä Bodbackaan ja Konttiin. Toimii Proffan kehitysalustana. Desmond: opiskelijoille suunnattu opintojensuunnittelujärjestelmä, johon tallentuvat opiskelijan opintosuunnitelmat. Ilmo: ilmoittautumisjärjestelmän tietokanta. JAR (Java Archive): useita Java-tyyppisiä tiedostoja sisältävä arkistotiedosto. JAR-rajapinta: tietojenkäsittelytieteen laitokselta saatava rajapinta, joka suorittaa esitietovaatimusten täyttymistä koskevat kyselyt Desmond-tietokantaan. Java/PHP-rajapinta muokkaa JAR-rajapinnan kautta saadut tiedot PHP-yhteensopiviksi. Projektiryhmä toteuttaa sen tarvittaessa. Kontti: vaihtoehtoinen palvelin Bodbackalle. Sisältää tktl nimisen testikannan. Oracle: relaatiotietokanta, jossa tietokantatauluja voidaan liittää pääavainten avulla toisiinsa. PHP: Hypertext Preprocessor, kieli jolla voidaan luoda dynaamisia HTML-dokumentteja eli web-sivuja. PostgreSQL: SQL-kieltä käyttävä avoimen lähdekoodin realatiotietokanta. Proffa: ilmoittautumisten profiloija, toteutettava ohjelmisto. Proffa-kanta: Proffa-järjestelmän sisäinen tietokanta, johon ladataan tietoa Desmondjärjestelmästä.

3 SQL: Structured Query Language, relaatiotietokantojen operaatioiden suorittamiseen tarkoitettu kyselykieli. 2 Järjestelmän yleiskuvaus Proffa on web-käyttöliittymällä toimiva ilmoittautumisen profiloija, jolla kurssivastaava kykenee muodostamaan ryhmiä opiskelijoiden ilmoon tallentaman tiedon perusteella. Proffan toiminta perustuu PHP-sivuihin eli dynaamiseen HTML:ään. Tietojen tallennus ja käsittely hoidetaan PostgreSQL-tietokannalla nimeltä Proffakanta. 2.1 Toteutus- ja toimintaympäristö Proffan testausympäristö on yliopiston Bodbacka-palvelimella ja sitä käsitellään db-palvelimen kautta. Proffa on yhteydessä Desmond-kantaan, joko JAR-rajapinnan välityksellä tai suoraan PHPsivuilla tehtävillä SQL-kyselyillä. Tietoturvakysymysten takia ilmo-järjestelmään ei päästä testi- Desmondin kautta, joten testausympäristönä tullaan käyttämään kuvitteellista yhteyttä testi- Desmondista ilmoon. Proffa-järjestelmä asennetaan laitoksen db-palvelimelle sen omaan testiympäristöön, jos asentaminen ilmo-palvelimelle ei ole mahdollista. Ohjelma toimitetaan lisäksi asiakkaalle CD-Rlevyllä, josta se voidaan asentaa haluttuun sijaintiin. Toteutuksen rakenne käsitellään tarkemmin luvussa 3 Arkkitehtuurikuvaus. 2.2 Rajoitukset Seuraavassa määritellään vaatimusdokumentin mukaiset rajoitukset Proffa-järjestelmän toteutukselle. Rarjoitukset koskevat teknistä toimintaympäristöä, sen versioita ja laitevaatimuksia. Lisäksi on mainittu ohjelmiston tuotantoon liittyvä rajoitus järjestelmän loppusijoituspaikasta. 2.2.1 Rajoitukset käyttäjälle Käyttäjän selaimen tulee olla Mozilla 1.6 ja koneen vähintään Pentium-tasoinen PC tai Macintoshtietokone. Koneessa tulee olla Internet-yhteys, joka on nopeudeltaan vähintään 128 kbs. Käyttäjän koneen pitää pystyä tukemaan 1280 x 1024 -resoluutiota. 2.2.2 Rajoitukset palvelimelle Proffa-järjestelmä vaatii toimiakseen i386-pohjaisen laitteistoympäristön tietojenkäsittelytieteen laitoksella. Palvelinkoneessa tulee olla ainakin 512 Mt keskusmuistia ja Pentium 4 tasoinen prosessori. Palvelimen kuormitus muilla samanaikaisilla tietokantaa vaativilla järjestelmillä vaikuttaa laitevaatimuksiin kasvavasti. Palvelimelle tulee olla asennettuna PostgreSQL-tietokanta ja Apache http -palvelin, jonka versio on joko 2.0.53 tai 1.3.33. Palvelimella tulee myös toimia PHP:n versio 5.0.3 tai sitä uudempi.

4 2.2.3 Ilmo-palvelin Järjestelmän toiminnan kannalta kriittiselle ilmo-palvelimelle on ulkoisten ohjelmien asennus kielletty, eikä palvelimen ohjelmisto täsmää projektin ohjelmistovaatimusten kanssa. Koska Oodiin ei saada yhteyttä ilmon ulkopuolelta ja järjestelmää ei ilmoon voidaan asentaa, pyritään tuote yllämainitusti asentamaan db-palvelimelle. Tuote luovutetaan myös CD-R -levyllä asiakkaalle. 3 Arkkitehtuurikuvaus Tässä luvussa kuvataan ohjelmiston käyttämät PHP-tiedostot, tietokanta, annettu lopputuloste sekä Proffan ulkoiset osajärjestelmät, kuten Desmond. Järjestelmän yleisarkkitehtuurikuvaus on esitetty kuvassa 2. Kuva 2: Proffa-järjestelmän yleisarkkitehtuuri Proffa-ohjelmisto koostuu seitsemästä PHP-sivusta: index.php, admin.php, aloitus.php, kurssituloste.php, kurssi.php ja sen kahdesta sisäsivusta opiskelijat.php:stä sekä ryhmat.php:stä. PHP-sivurakenne käsitellään luvussa 3.3. Järjestelmällä tulee olemaan oma PostgreSQL-tietokanta, johon se tallentaa tekemänsä operaatiot ja käyttämänsä tiedot. Kurssivastaava lataa Proffa-kannan tiedot Desmond-järjestelmästä kurssikohtaisesti. Tietojen käsittely ei vaikuta Desmondin eikä ilmon alkuperäisiin tietoihin. Proffa-kanta esitellään luvussa 3.1.1.

5 Mikäli Desmondin käsittelyyn tarvitaan Java/PHP-rajapintaa, tullaan myös tekemään järjestelmän sisäinen rajapinta, joka muokkaa Javasta saadun informaation PHP:n hyväksymään muotoon. Sisäisen kantansa ja sivurakenteensa lisäksi Proffa-ohjelmisto tarvitsee ulkoisia Desmond- ja ilmojärjestelmiä, joista se päivittää tietonsa. Java/PHP-rajapintaa käsitellään luvussa 3.1.4 ja JARrajapintaa luvussa 3.2.3. 3.1 Sisäiset osajärjestelmät Proffa-järjestelmä jakautuu kolmeen toteutettavaan ja yhteen mahdollisesti toteutettavaan osajärjestelmään: Proffa-kantaan, pääkäyttäjänäkymään, kurssivastaavanäkymään ja Java/PHPrajapintaan. Proffa-kanta käsittelee Desmondista ladattua tietoa ja jakaa sitä kahdelle PHP-rakenteiselle käyttäjänäkymälle. Pääkäyttäjänäkymässä luodaan uusia, poistetaan vanhoja ja muokataan jo olemassa olevia Kurssivastaavia. Kurssivastaavanäkymässä järjestellään opiskelijoita ryhmiin tuleville kursseille, asetetaan ohjaajia, luodaan ja poistetaan ryhmiä. Helsingin yliopiston tietojenkäsittelytieteen laitokselta on myös luvattu JAR-rajapinta, jolla Desmondin tietoja pystytään käsittelemään. Kun järjestelmä saadaan käytettäväksi, selviää, tarvitaanko Proffaan myös ylimääräinen osa, nk. Java/PHP-rajapinta, joka kääntää JAR-rajapinnan tietoa PHP:lle ymmärrettäväksi vai voidaanko informaatio siirtää suoraan Proffa-kantaan. 3.1.1 Proffa-kanta Proffa-järjestelmän oma tietokanta on PostgreSQL-kanta. Tietokantaa käytetään sovellustason PHPfunktioiden avulla. Tietokannan suunnittelussa on otettu huomioon, että samalla opiskelijalla voi olla uusia ja vanhoja ilmoittautumisia monille niistä kursseista, joilla ryhmäjakoa Proffajärjestelmässä tehdään. Lisäksi on otettu huomioon, että samasta kurssista voi tallentaa useita ryhmäjakoja. 3.1.1.1 Tietokantataulut Seuraavassa on kuvattu lyhyesti Proffa-tietokannan taulujen rakenne. Taulut on esitetty myös kaaviokuvana kuvassa 3. Kayttaja-taulu KAYTTAJA-taulu sisältää käyttäjien tunnukset ja salasanat. TUNNUS SALASANA NIMI ADMIN* * ADMIN = true, jos käyttäjä on pääkäyttäjä

6 Kurssi-taulu KURSSI-taulu sisältää kurssin tiedot. KURSSI_ID KURSSIKOODI LUKUKAUSI LUKUVUOSI TUNNUS NIMI Opiskelija-taulu OPISKELIJA-taulu sisältää opiskelijan tiedot. HETU KURSSI_ID ETUNIMI SUKUNIMI TILA* EMAIL PAA_AINE ALOITUSVUOSI LISATIETO ILMO_AIKA * TILA-kenttä saa seuraavia arvoja: -1 = alustettaessa eli opiskelija on jonossa -2 = vialliset vastaukset -3 = puuttuvat esitiedot (myös vastaukset voivat lisäksi olla puutteellisia kun TILA=-3) -4 = jälkikäteen lisätyt opiskelijat Positiivinen luku viittaa opiskelijan ryhmänumeroon. Ilmokysymys-taulu ILMOKYSYMYS-taulu sisältää ilmoittautumisen yhteydessä lomakkeella esitetyt kysymykset. KYSYMYS_NRO KURSSI_ID KYSYMYS LYHENNE KYSYMYSTYYPPI VAIHTOEHDOT ESITYSTILA Ilmovastaus-taulu ILMOVASTAUS-taulu sisältää opiskelijan antamat vastaukset ilmoittautumisen yhteydessä. KURSSI_ID

7 KYSYMYS_NRO HETU VASTAUS Esitietovaatimukset-taulu ESITIETOVAATIMUKSET-taulu sisältää opiskelijan puuttuvat esitietovaatimukset (jokaiselle kurssille ja saman kurssin eri pitohetkille erikseen). Jos opiskelijan esitietovaatimukset ovat kunnossa, hänestä ei ole rivejä tässä taulussa. HETU KURSSI_ID PUUTKURSSI* * PUUTKURSSI-kentän arvo on puuttuvan kurssin nimi Tallennus-taulu TALLENNUS-taulu sisältää ryhmätallennukset. TALLENNUS_ID KURSSI_ID NIMI PVM Ryhma-taulu RYHMA-taulu sisältää ryhmän tiedot. NRO TALLENNUS_ID MAXMAARA ESITTELY OHJAAJA NIMI KIINNI* * KIINNI-kentän arvo on 1, jos ryhmä on kiinni käyttöliittymässä, muuten 0. Opis_tallennus-taulu OPIS_TALLENNUS-taulu sisältää ryhmätallennuksissa mukana olevien opiskelijoiden tiedot. HETU TALLENNUS_ID RYHMA* KURSSI_ID * RYHMA = 0, jos opiskelija ei ole ryhmässä

Kuva 3: Proffa-tietokanta 8

9 3.1.1.2 Tietokannan PostgreSQL-luontilauseet create table KAYTTAJA ( TUNNUS varchar(8) primary key,salasana varchar(10),nimi varchar(60),admin boolean); create table KURSSI ( KURSSI_ID integer primary key,kurssikoodi varchar(15) not null,lukukausi varchar(1) not null,lukuvuosi integer not null,tunnus varchar not null REFERENCES KAYTTAJA,NIMI varchar not null); create table OPISKELIJA ( HETU varchar(11),kurssi_id integer REFERENCES KURSSI,ETUNIMI varchar(25) not null,sukunimi varchar(40) not null,tila integer not null,email varchar(50),paa_aine varchar(3),aloitusvuosi integer,lisatieto varchar,ilmo_aika timestamp,primary KEY(HETU,KURSSI_ID)); create table ILMOKYSYMYS ( KYSYMYS_NRO integer,kurssi_id integer REFERENCES KURSSI,KYSYMYS varchar(490),lyhenne varchar(20),kysymystyyppi varchar(16),vaihtoehdot varchar,esitystila varchar(2),primary KEY(KYSYMYS_NRO,KURSSI_ID)); create table ILMOVASTAUS ( KURSSI_ID integer REFERENCES KURSSI,KYSYMYS_NRO integer,hetu varchar(11),vastaus varchar,primary KEY(KURSSI_ID,KYSYMYS_NRO,HETU),FOREIGN KEY(KYSYMYS_NRO,KURSSI_ID) REFERENCES ILMOKYSYMYS,FOREIGN KEY(HETU,KURSSI_ID) REFERENCES OPISKELIJA);

10 create table ESITIETOVAATIMUKSET ( HETU varchar(11),kurssi_id integer REFERENCES KURSSI,PUUTKURSSI varchar(150),primary KEY(HETU,KURSSI_ID,PUUTKURSSI),FOREIGN KEY(HETU,KURSSI_ID) REFERENCES OPISKELIJA); create table TALLENNUS ( TALLENNUS_ID integer primary key,kurssi_id integer not null REFERENCES KURSSI,NIMI varchar(100) not null,pvm timestamp not null); create table RYHMA ( NRO integer,tallennus_id integer REFERENCES TALLENNUS,MAXMAARA integer not null,esittely varchar(200),ohjaaja varchar(60),nimi varchar,kiinni integer not null,primary KEY(TALLENNUS_ID,NRO)); create table OPIS_TALLENNUS ( HETU varchar(11),tallennus_id integer REFERENCES TALLENNUS,RYHMA integer,kurssi_id integer,primary KEY(HETU,TALLENNUS_ID,RYHMA),FOREIGN KEY(TALLENNUS_ID,RYHMA) REFERENCES RYHMA,FOREIGN KEY(HETU,KURSSI_ID) REFERENCES OPISKELIJA); 3.1.2 Pääkäyttäjänäkymä Proffa-järjestelmän käyttäjien tietoja hallinnoidaan PHP-pohjaisesta pääkäyttäjänäkymästä. Käyttäjän kirjautuessa sisään hänen tunnuksiaan verrataan Proffa-kantaan ja jos kyseessä on pääkäyttäjä, tapahtuu siirtyminen tähän järjestelmään. Kurssivastaavien tietoja käsitellään graafisen käyttöliittymän kautta taustalla toimivien SQL-kyselyiden muokatessa tietokantaa. Pääkäyttäjän näkymän graafinen kuvaus on luvussa 4.2. Pääkäyttäjänäkymän SQL-kyselyt ovat tämän dokumentin luvussa 3.3 PHP-sivurakenne. 3.1.3 Kurssivastaavanäkymä Kurssivastaavan näkymään ohjaudutaan kuten pääkäyttäjänäkymäänkin oikean tunnus ja salasana - yhdistelmän avulla. Kurssivastaavanäkymä on pääkäyttäjänäkymästä erillinen osio, johon tarvitaan erilliset tunnukset, eikä pääkäyttäjä pääse käsittelemään kurssivastaavan ryhmäjakoja eikä muitakaan kurssivastaavan vastuualueella olevaa materiaalia. Toiminnot tehdään graafisen käyttöliittymän välityksellä, jonka kuvaus löytyy luvuista 4.3-4.4. Sivut ovat PHP:llä tehtyä dynaamista HTML:ää ja tietokantaa operoidaan luvussa 3.3 esitetyillä SQL-kyselyillä.

11 3.1.4 Java/PHP-rajapinta Mikäli JAR-rajapinnasta saatu syöte tarvitsee tulkin, jotta Proffa voi käyttää sen informaatiota tai antaa sille syötetietoa, tulee projektiryhmä toteuttamaan Java/PHP-rajapinnan tähän tehtävään. 3.2 Ulkoiset osajärjestelmät Proffan testikannassa toteutetut ulkoiset osajärjestelmät sijaitsevat realistisesta toimintaympäristöstä poiketen samalla palvelimella. Proffa-järjestelmästä ei näin ollen tulla tekemään suoraa yhteyttä ilmo-järjestelmään, vaan sitä tullaan käsittelemään samalla yhteydellä Desmondin kautta. Normaalisti Desmond tarkistaa opiskelijan suoritukset Oodi-tietokannasta, kun opiskelija kirjautuu järjestelmään. Koska Oodi-kantaa voi käyttää vain ilmo-palvelimelta, sitä ei voida koekäyttää tässä projektissa. Näin ollen projektissa oletetaan, että opiskelijoiden tiedot ovat ajan tasalla Desmondin tietokannassa. Bodbacka-palvelimella sijaitsevassa testitietokannassa ovat aineistona kevään 2005 (k2005) Ohjelmistotuotantoprojektin ja Tieteellisen kirjoittamisen ilmoittautumiset sekä syksyn 2004 (s2004) ilmoittautumiset Opettajatuutorointiin. 3.2.1 Ilmo-järjestelmä Ilmo-järjestelmä on opiskelijoiden ilmoittautumisjärjestelmä, joka sisältää tietoa opiskelijoiden ilmoittautumisista ja niihin liittyvistä tiedoista. Esimerkiksi Proffan kannalta tärkeät ilmoittautumiskysymykset ja -vastaukset löytyvät ilmo-kannan tauluista. Proffalla on yhteys ilmoon Desmondin kautta. Yhteys Desmondiin taas suoritetaan JAR-rajapinnan välityksellä. Ilmo-tietokannan tauluista ovat käytössä pääasiassa Opiskelija, Osallistuminen, Ilmokysymys, Ilmovastaus, Henkilo ja Kurssi. Proffa-järjestelmä saa nämä tiedot Desmondin kautta. 3.2.2 Desmond-tietokanta Seuraavassa on lyhyet kuvaukset Desmond-tietokannan taulujen rakenteesta. Ilmo-tietokannan kanssa yhteiset taulut on identifioitu tk_opha. -merkinnällä. Taulut on esitetty myös kaaviokuvana kuvassa 4. Suoritukset-taulu SUORITUKSET-taulu sisältää tiedot opiskelijan pääainesuorituksista, jotka on haettu Ooditietokannasta. TUNNUS, not null, varchar2 (10) KURSSIKOODI, not null, varchar2 (15) ARVOSANA, varchar2 (20) HYVAKSYMIS_PVM, date KORVATTU*, number(1) OODI**, number (1)

12 OPINTOVIIKOT number (4, 1) * KORVATTU-kentän arvo on 1, jos suoritus on korvattu muilla opinnoilla. Muutoin sen arvo on 0. ** OODI-kenttä sisältää tiedon, onko suoritus luettu Oodi-tietokannasta. Suoritukset_sivuaine-taulu SUORITUKSET_SIVUAINE-taulu sisältää tiedot opiskelijan sivuainesuorituksista. TUNNUS, not null, varchar2 (10) SIVUAINE_ID, not null, number (22) KURSSIKOODI, varchar2 (15) NIMI, varchar2 (80) OPINTOVIIKOT, number (4, 1) HYVAKSYMIS_PVM, date OODI, number (1) ARVOSANA, varchar2 (20) Tk_opha.Opiskelija-taulu OPISKELIJA-taulu sisältää ilmo-järjestelmän tiedot opiskelijasta. HETU, not null, varchar2 (11) ETUNIMI, not null, varchar2 (25) SUKUNIMI, not null, varchar2 (40) ENTINEN_SUKUNIMI, varchar2 (80) OSOITE, varchar2 (50) PUHELIN, varchar2 (40) SAHKOPOSTIOSOITE, varchar2 (50) PAA_AINE, varchar2 (3) ALOITUSVUOSI, number (4) KAYTTO_PVM, date OPNRO, varchar2 (15) LUPA, varchar2 (12) VINKKI, varchar2 (40) VARMENNE, varchar2 (40) Tk_opha.Ilmokysymys-taulu ILMOKYSYMYS-taulu sisältää kysymykset, joihin opiskelijoiden tulee vastata ilmoittautumisvaiheessa. KURSSIKOODI, not null, varchar2 (15) KYSYMYS_NRO, not null, number (3) KYSYMYS, not null, varchar2 (1000) LYHENNE, varchar2 (20) KYSYMYSTYYPPI, varchar2 (16) VAIHTOEHDOT, varchar2 (1000) ESITYSTILA varchar2 (2)

13 Tk_opha.Ilmovastaus-taulu ILMOVASTAUS-taulu sisältää opiskelijan vastaukset kyselylomakkeen kysymyksiin. Jos opiskelijalla on vastauksia, hänellä on myös kirjattu ilmoittautuminen. KURSSIKOODI, not null, varchar2 (15) KYSYMYS_NRO, not null, number (3) HETU, not null, varchar2 (11) VASTAUS, not null, varchar2 (2000) LUKUVUOSI, number (4) LUKUKAUSI, char(1) TK_opha.Osallistuminen-taulu OSALLISTUMINEN-taulu sisältää opiskelijan osallistumiset tietylle kurssille. Taulu kertoo mm., ketkä ovat ilmoittautuneet tietylle kurssille. Taulussa on rivi kutakin ilmoittautumista kohden. Jos ilmoittautuminen on voimassa, on sarakkeessa VOIMASSA arvo 'K'. HETU, not null, varchar2 (11) KURSSIKOODI, not null, varchar2 (15) LUKUKAUSI, char(1) LUKUVUOSI, number (4) TYYPPI, not null, varchar2 (1) KURSSI_NRO, not null, number (2) RYHMA_NRO, not null, number (2) KOMMENTTI_1, varchar2 (240) KOMMENTTI_2, varchar2 (240) LABRATYO_NRO, varchar2 (6) LABRATYO_NIMI, varchar2 (60) LABRATYO_TUNNIT, number (3) LABRATYO_TILA, varchar2 (1) LABRATYO_VALMISTUMIS_PVM, date LASKARI_LASNAOLO_LKM, number (2) LASKARISUORITUKSET, varchar2 (54) LASKARISUORITUKSET_SUMMA, number (3) LASKARIHYVITYS, number (3) HARJOITUSTYO_LASNAOLO_LKM, number (2) HARJOITUSTYOPISTEET, varchar2 (54) HARJOITUSTYO_SUMMA, number (3) HARJOITUSTYOHYVITYS, number (3) KOEPISTEET, varchar2 (54) KOEPISTEET_SUMMA, number (3) YHTEISPISTEET, number (3) ARVOSANA, varchar2 (2) ILMOITTAUTUMIS_PVM, date VOIMASSA, varchar2 (1) AIHE, varchar2 (80) TENTTIJA, varchar2 (80) SUORITUSAIKA, varchar2 (80) TUTKINTO, varchar2 (80)

14 VIIMEINEN_KASITTELY_PVM, date OMISTAJA, varchar2 (30) ILMO_JNRO, number (2) KYPSYYS_PVM, date KYPSYYSPAIKKA, varchar2 (40) KYPSYYS_MUUTA, varchar2 (80) JAASSA, char (1) VINKKI, varchar2 (40) VARMENNE, varchar2 (20) Tk_opha.henkilo-taulu Tk_opha.henkilo-taulu sisältää kurssin vastuuhenkilön tiedot, kuten nimi ja käyttäjätunnus. Taulua ei tule sekoittaa henkilö-tauluun, jossa ovat opiskelijoiden tiedot. HTUNNUS, not null, varchar2(12) ETUNIMET, not null, varchar2(80) SUKUNIMI, not null, varchar2(80) KUTSUMANIMI, varchar2(15) AKTIIVISUUS, varchar2(1) HUONE_NRO, varchar2(5) HETU, varchar2(11) OPPIARVO, varchar2(5) TITTELI, varchar2(80) PUHELIN_TYO, varchar2(20) PUHELIN_KOTI, varchar2(20) KATUOSOITE, varchar2(40) POSTINRO, varchar2(5) POSTITOIMIPAIKKA, varchar2(20) VALVONTASALDO, number(5,2) SAHKOPOSTIOSOITE, varchar2(80) HALLINNOLLINEN_KOMMENTTI, varchar2(80) OPISKELIJA_KOMMENTTI, varchar2(80) KTUNNUS, varchar2(12) Tk_opha.kurssi-taulu TK_opha.kurssi -taulussa on yksilölliset tiedot kursseista alkamis- ja loppumispäivineen. KURSSIKOODI, not null, varchar2(15) LUKUKAUSI, not null, varchar2(1) LUKUVUOSI, not null, number(4) TYYPPI, not null, varchar2(1) KURSSI_NRO, not null, number(2) KIELIKOODI, not null, varchar2(1) NIMI, not null, varchar2(80) OPINTOVIIKOT, not null, number(3,1) LUENTOTUNNIT, number(3) LUENTOKERTA_LKM, number(3) HARJOITUSTUNNIT, number(3)

LASKARIKERTA_LKM, number(2) LYHENNE, varchar2(12) SALASANA, varchar2(30) SUORITUS_PVM, date TILA, varchar2(1) ALKAMIS_PVM, date PAATTYMIS_PVM, date PAIVITYS_PVM, date MAX_OSALLISTUJA_LKM, number(3) LASKARITEHTAVA_LKM, varchar2(54) PAKOLLISET_LASKARIKERTA_LKM, number(2) PAKOLLISET_LASKARITEHTAVA_LKM, number(3) MAX_LASKARIPISTEET, number(2) HYVAKSYTTY_LASKARILASNAOLO, varchar2(54) LISAPISTEALARAJA, number(3) LISAPISTERAJAT, varchar2(240) LISAPISTEIDEN_ASKELKOKO, number(4,1) HARJOITUSTYO_LKM, number(2) PAKOLLISET_HARJOITUSTYO_LKM, number(2) HARJOITUSTYOPISTEET, number(2) MAX_HARJOITUSTYOPISTEET, varchar2(54) MIN_HARJOITUSTYOPISTEET, varchar2(54) MIN_HARJOITUSTYOPISTEET_SUMMA, number(3) HARJOITUSTYON_PISTERAJAT, varchar2(240) HARJOITUSTOIDEN_ASKELKOKO, number(4,1) VALIKOKEET_LKM, number(2) PAKOLLISET_KOE_LKM, number(2) MAX_KOEPISTEET, varchar2(54) MIN_KOEPISTEET, varchar2(54) MIN_KOEPISTEET_SUMMA, number(3) MIN_YHTEISPISTEET, number(3) ARVOSTELUN_ASKELKOKO, number(4,1) ARVOSANARAJAT, varchar2(80) ARVOSTELLAANKO, varchar2(1) KOKONAISTIEDOT, varchar2(90) KUVAUSTIETO1, varchar2(800) KUVAUSTIETO2, varchar2(800) KUVAUSTIETO3, varchar2(800) HAKUKYSYMYKSET, varchar2(1) SUUNNITTELUKOMMENTTI, varchar2(240) OMISTAJA, varchar2(30) PERUTTAVISSA, char(1) LASKENTAKAAVA, number(2) ARVOSTELU_PVM, date SIIRTO_PVM, date HT_LISAPISTEALARAJA, number(3) ARVOSTELIJA, varchar2(30) 15

16 Henkilo-taulu HENKILO-taulussa on opiskelijan tiedot. TUNNUS, not null, varchar2(10) OPISKELIJA, number(1) TUUTOR, number(1) VASTUUHENKILO, number(1) YLLAPITAJA, number(1) OPISKELIJANRO, varchar2(11) ETUNIMI, varchar2(80) SUKUNIMI, VARCHAR2(80) OSOITE, varchar2(240) PUHELIN, varchar2(20) EMAIL, varchar2(40) ALOITUS_PVM, date LISATIEDOT, varchar2(1000) TILASTOKIELTO, number(1) ERAANTYMIS_PVM, date TUTKINTO_ID, varchar2(10) SUUNTAUTUMIS_ID, varchar2(10) SISAANLUKU_PVM, date VISUALISOINTIKUVA_URL, varchar2(100) VISUALISOINTIKUVA_LUOTU, date SUUNTAUTUMISVAIHTOEHTO, varchar2(1) Esitieto-taulu Kurssin vaatimat esitiedot ja niiden tärkeys ovat ESITIEDOT-taulussa. KURSSIKOODI, NOT NULL, varchar2(15) ESITIETO_KURSSIKOODI, NOT NULL, varchar2(15) ESITIEDON_TARKEYS, varchar2(15) Vastaavuudet-taulu Kurssien vastaavudet keskenään ovat VASTAAVUUDET-taulussa VASTAAVA_KURSSIKOODI, not null, varchar2(15) VASTAAVUUDEN_ID, not null, number(22) KURSSIKOODI, not null, varchar2(15)

Kuva 4: Desmond-tietokanta 17

18 3.2.3 JAR-rajapinta Juhani Haaviston toimittaman JAR-rajapinnan tehtävänä on kertoa, ovatko opiskelijan esivaatimukset kunnossa hänen pyrkimilleen kursseille. JAR-rajapinta hakee myös suoraan kurssien vastaavuudet Desmondista. Ohjelman pohjana tullaan käyttämään aiemman ohjelmistotuotantoprojektin, OS2:n, tekemää työtä, jonka lähdekoodi on liitteessä 2. JAR-rajapinta asettuu toteutuessaan Proffan ja Desmondin väliin ja vaatii mahdollisesti Java/PHP-rajapinnan, joka on esitelty luvussa 3.1.4.

19 3.3 PHP-sivurakenne index.php salasanan tarkistus ohjaaminen oikeaan näkymään admin.php luo / poista kurssivastaava muuta kurssivastaavan tietoja aloitus.php kurssin valinta vanhojen kurssien tietojen poisto uuden kurssin aloitus kurssitietojen haku ja tallennus omaan kantaan Yhteys Desmondiin kurssi.php opiskelijoiden siirto jonosta ryhmään ja ryhmästä toiseen tai jonoon automaattinen ryhmittely tallennetun ryhmäjaon lataus kehys kahdelle sisäsivulle ryhmän poistaminen opiskelijat.php opiskelijoiden tietojen näyttäminen listan järjestäminen halutun kriteerin mukaan esitietovaatimusten käsittely virheellisen ilmoittautumisdatan korjaus opiskelijan lisäys jälkikäteen opiskelijan ilmoittautumisen peruminen kurssisivun toimintojen käyttö lisätietojen näyttäminen opiskelijasta ryhmat.php ryhmien tietojen näyttäminen ryhmäjaon tallentaminen ohjaajan / ohjaajien kiinnittäminen ryhmään lisätietojen kirjaus kurssisivun toimintojen käyttö ryhmän lisääminen ryhmien koon muuttaminen kurssituloste.php ryhmistä luotavan html-sivun tietojen valinta ryhmajako.html Proffa-järjestelmän lopputuote ryhmistä luotu html-sivu Kuva 5: Proffa-järjestelmän PHP-sivurakenne

20 Kuvassa 5 on esitetty Proffa-järjestelmän sivurakenne. Seuraavissa luvuissa esitellään kukin sivu tarkemmin. Esittelyyn sisältyvät myös sivujen toiminnot, funktiot ja SQL-kyselyt. 3.3.1 Kirjautumisnäkymä (index.php) Kirjautumisnäkymä on järjestelmän alkutila, jossa käyttäjä kirjautuu sisään järjestelmään. Sivu tarkistaa käyttäjän tunnuksen ja salasanan ja ohjaa sen jälkeen tämän oikeustason mukaisesti joko pääkäyttäjän näkymään tai kurssivastaavan näkymään. Sivun toiminnallisuudet: Salasanan tarkistaminen Salasana ja käyttäjätunnus tarkistetaan Proffa-kannasta. Virheellisen salasana-tunnusyhdistelmän antaminen antaa virheilmoituksen. select salasana, admin from kayttaja where tunnus=$ktunnus; Ohjaaminen oikeustason mukaiseen näkymään Pääkäyttäjä-tunnuksilla siirrytään admin.php -sivulle, Kurssivastaavan tunnuksilla aloitus.php -sivulle. Käyttäjätunnusta kuljetetaan sessioilla eteenpäin, joten aloitus.phpsivulla Kurssivastaava näkee vain omat kurssinsa. select salasana, admin from kayttaja where tunnus=$ktunnus; 3.3.2 Pääkäyttäjän näkymä (admin.php) Pääkäyttäjän näkymässä on taulukko järjestelmän käyttäjistä ja näiden tiedoista. Taulukossa on valmiina tyhjä rivi uusien käyttäjien lisäämiseksi ja käyttäjien tiedot ovat suoraan editoitavissa ja tallennettavissa. Sivun saama parametri: $tunnus (kuka käyttää sivua) Sivun toiminnallisuudet: Uuden käyttäjän lisääminen (function tallennatiedot($nimi, $ktunnus, $salasana)) Toiminto asettaa järjestelmään uuden Kurssivastaavan tunnuksen. insert into KAYTTAJA values($ktunnus,$salasana,$nimi,'false'); Käyttäjän tietojen päivitys (function paivitakayttajaa($nimi, $ktunnus, $salasana) Toiminto päivittää olemassa olevan Kurssivastaavan tiedot. update kayttaja set salasana = $salasana, nimi = $nimi where ktunnus= $ktunnus; Käyttäjän poisto (function poistakayttaja($ktunnus)) Toiminto poistaa valitun Kurssivastaavan järjestelmästä. delete from kayttaja where ktunnus = $ktunnus;

21 Uloskirjautuminen (function kirjauduulos()) Toiminto kirjaa käyttäjän ulos järjestelmästä. (ei tietokantahakua) 3.3.3 Kurssivastaavan näkymä (aloitus.php) Kurssivastaavan näkymässä näkyvät kurssit, joiden vastuuhenkilönä kurssivastaava toimii. Näkymästä kurssivastaava pääsee muokkaamaan haluamaansa kurssia jostain tallennetusta tilasta, jos sellaisia on jo olemassa. Tällä sivulla kurssivastaava voi myös poistaa vanhoja kurssejaan tai aloittaa uuden. Tämä sivu myös noutaa Proffa-järjestelmän tarvitsemat tiedot kurssista ja sille ilmoittautuneista opiskelijoista ja tallentaa ne omaan tietokantaansa. Tarvittavat tiedot saadaan Desmondjärjestelmästä, johon päästään käsiksi JAR-rajapinnan avulla. Sivun saama parametri: $tunnus (kuka käyttää sivua, tämän perusteella näytetään käyttäjän kurssit) Sivun toiminnallisuudet: Kurssin tietojen poistaminen (function poistakurssi($kurssi_id)) Toiminto poistaa valittuna lukukautena pidetyn kurssin tiedot järjestelmästä. delete from ESITIETOVAATIMUKSET where kurssi_id=$kurssi_id; delete from ILMOVASTAUS where kurssi_id=$kurssi_id; delete from ILMOKYSYMYS where kurssi_id=$kurssi_id; delete from OPISKELIJA where kurssi_id=$kurssi_id; select id from TALLENNUS where kurssi_id=$kurssi_id; (seuraaville neljälle riville for-silmukka haettujen idien yli) $id = id delete from OPIS_TALLENNUS where tallennus_id=$id; delete from RYHMA where tallennus_id=$id; delete from TALLENNUS where id=$id; delete from KURSSI where kurssi_id=$kurssi_id; Kurssin aloittaminen (function aloitakurssi($tunnus)) Toiminto hakee uuden kurssin tiedot Desmond-järjestelmästä. (Desmondiin suoritettava SQL-kysely) Opiskelijoiden ilmodatan ja esitietojen alustava tarkistus (function tutkiopiskeiljanilmotieto($hetu, $kurssi_id)) Toiminto alustaa opiskelijan ilmottautumistietojen tilan. Tällä saadaan ne, joilla esitietovaatimuksissa puutteita: select * from ESITIETOVAATIMUKSET, OPISKELIJA where ESITIETOVAATUMUKSET.hetu=OPIKSELIJA.hetu and OPISKELIJA.kurssi_id=$kurssi_id and OPISKELIJA.hetu=$hetu and ESITIETOVAATIMUKSET.hetu=$hetu; ja jos on, niin: update OPISKELIJA set tila = '-3' where kurssi_id=$kurssi_id and hetu=$hetu;

22 jos ei, niin katsotaan, onko kysymyksissä ongelmia: select vastaus from ILMOVASTAUS where hetu=$hetu and kysymys_nro='"se jota tarkastellaan"' and kurssi_id=$kurssi_id; ja jos on ongelmia, niin: update OPISKELIJA set tila = '-2' kurssi_id=$kurssi_id and hetu=$hetu; ja jos ei, niin laitetaan tavalliseen jonoon: update OPISKELIJA set tila = '-1' kurssi_id=$kurssi_id and hetu=$; 3.3.4 Kurssinäkymä (kurssi.php) Tätä sivua kutsuttaessa: select min(id) from TALLENNUS where kurssi_id=$kurssi_id; $id = id-1 ja $aika=now() insert into TALLENNUS values($id,$kurssi_id,temp,$aika); (for kaikkien oletusryhmien yli) insert into RYHMA values(i,$id,$default, '', '', '',0); (for kaikkien kurssin opiskelijoiden yli) insert into OPIS_TALLENNUS('hetu',$id,0,$kurssi_id); Kurssinäkymässä kurssivastaava pääsee muokkaamaan kurssin ryhmäjakoa. Kurssinäkymä jakautuu kolmeen osaan, joista ensimmäinen on kurssi.php. Tämä sivu toimii kehys-rakenteena kahdelle alasivulle, jotka näyttävät kurssin opiskelijoiden ja ryhmien tiedot. Sivun saamat parametrit: $tunnus (käyttäjätunnus, onko käyttäjällä oikeus muokata ko. kurssia) $tallennus_id (tarkasteltava kurssi ja ryhmäjako) $toiminto (mitä sivun toimintoa on kutsuttu ja sen vaatimat parametrit, ks. seuraavat funktiot) Parametrit välitetään tarvittaessa edelleen alisivuille. Sivun toiminnallisuudet: Opiskelijoiden siirto jonosta ryhmään tai ryhmästä toiseen (function siirraopiskelija($hetu, $mista, $minne, $tallennus_id)) Tätä funktiota voidaan kutsua sekä opiskelija- että ryhmänäkymästä, riippuen siitä, mistä opiskelijaa ollaan siirtämässä. update OPIS_TALLENNUS set ryhma=$minne where hetu=$hetu and tallennus_id=$tallennus_id and ryhma=$mista; Opiskelijoiden automaattinen ryhmittely (function ryhmittele($ryhmittelyperuste, $tallennus_id)) Tämä funktio suorittaa opiskelijoiden automaattisen ryhmittelyn annetun ryhmittelyperusteen avulla. Funktio hyödyntää toiminnassaan funktiota siirraopiskelija($opiskelija, $mista, $minne, $tallennus_id). Ryhmäjakoa yritetään kaikille opiskelijoille, jotka ovat tavallisessa jonossa eli: select OPISKELIJA.hetu from OPISKELIJA,TALLENNUS,OPIS_TALLENNUS where OPIS_TALLENNUS.tallennus_id=$tallennus_id and TALLENNUS.tallennus_id=$tallennus_id and

23 ryhma=0 and OPISKELIJA.hetu=OPIS_TALLENNUS.hetu order by ilmo_aika; ja sitten jokaiselle opiskelijalle erikseen haku sen mukaan, miten ryhmitellään esim. select vastaus from ilmovastaus where kurssi_id=$kurssi_id and kysymys_nro='haluttu kysymys' and hetu=$hetu; ja sitten siirto toisella funktiolla. Tallennetun ryhmäjaon lataus (function lataaryhmajako($tallennus_id)) Tämä toiminto lataa tallennetun ryhmäjaon. Sen avulla voidaan myös aloittaa ryhmäjako alkutilanteesta. Tämän toiminnon SQL-haut on kuvattu luvuissa 3.3.5 ja 3.3.6. Ryhmän poistaminen (function poistaryhma($tallennus_id, $ryhma)) Toiminto poistaa jonkin kurssin ryhmistä. Ryhmään sijoitetut opiskelijat siirretään siirtofunktion avulla jonoon. Ensin siirretään toisella funktiolla opiskelijat ryhmästä jonoon ja sitten: delete from RYHMA where nro=$ryhma and tallennus_id=$tallennus_id; 3.3.5 Opiskelijanäkymä (opiskelija.php) Opiskelijanäkymä näyttää opiskelijoiden tiedot neljässä osassa: Ryhmiin sijoittamattomat opiskelijat Opiskelijat, joiden esitietovaatimuksissa on puutteita Opiskelijat, joiden ilmoittautumisdatassa on virheitä Järjestelmään jälkikäteen lisätyt opiskelijat Opiskelijalistaa voidaan järjestää valitun kriteerin mukaan. Opiskelijanäkymä tarjoaa käyttöliittymän kurssisivun toimintoihin opiskelijoiden ryhmiin siirtämiseen ja automaattiseen ryhmittelyyn. Sivun saamat parametrit: $tallennus_id (kurssi ja sen ryhmäjako) $jarjestys (missä järjestyksessä opiskelijat näytetään) select hetu, etunimi, sukunimi from OPISKELIJA where tila=-1 and kurssi_id=$kurssi_id; select hetu, etunimi, sukunimi from OPISKELIJA where tila=-2 and kurssi_id=$kurssi_id; select hetu, etunimi, sukunimi from OPISKELIJA where tila=-3 and kurssi_id=$kurssi_id; select hetu, etunimi, sukunimi from OPISKELIJA where tila=-4 and kurssi_id=$kurssi_id; Opiskelijanäkymän muut toiminnot: Esitietovaatimusten täyttyminen (function merkitsesuoritetuksi($hetu, $kurssi_id, $esitietovaatimus)) Kurssivastaava voi merkitä opiskelijan esitietopuutteet suoritetuiksi. Seuraavaa kutsutaan jokaiselle kurssille, joka merkitään suoritetuksi: delete from ESITIETOVAATIMUKSET where hetu=$hetu and kurssi_id=$kurssi_id and puutkurssi=$esitietovaatimus; jos kysymyksiin annettu virheellinen vastaus: select vastaus from ILMOVASTAUS where hetu=$hetu and kysymys_nro='"se jota tarkastellaan"' and kurssi_id=$kurssi_id;

24 ja jos on ongelmia niin: update OSALLISTUMINEN,OPISKELIJA set tila = '-2' kurssi_id=$kurssi_id and osallistuminen.hetu=$hetu and OSALLISTUMINEN.hetu=OPISKELIJA.hetu; ja jos ei, niin laitetaan tavalliseen jonoon: update OSALLISTUMINEN,OPISKELIJA set tila = '-1' kurssi_id=$kurssi_id and osallistuminen.hetu=$hetu and OSALLISTUMINEN.hetu=OPISKELIJA.hetu; Virheellisen ilmoittautumisdatan korjaaminen (function korjaailmodata($hetu, $mikatieto, $korjattudata, $kurssi_id)) Kurssivastaava voi korjata opiskelijan virheelliset ilmoittautumistiedot. update ILMOVASTAUS set vastaus=$korjattudata where hetu=$hetu and kysymys_nro=$mikatieto and kurssi_id=$kurssi_id; update OPISKELIJA set tila = '-1' kurssi_id=$kurssi_id and hetu=$hetu; Jälkikäteen ilmoittautuneen opiskelijan lisäys (function lisaaopiskelija($nimi, $hetu, $lisatieto)) Kurssivastaava voi lisätä jälkikäteen ilmoittautuneen opiskelijan syöttämällä tämän nimen, henkilötunnuksen ja mahdollista lisätietoa tämän ilmoittautumistoiveista / esitietovaatimuksista. insert into OPISKELIJA values($hetu,$kurssi_id,$nimi1,$nimi2,,,,-4,$lisatieto, ); select tallennus_id from TALLENNUS where kurssi_id=$kurssi_id; ja kaikille näille: insert into OPIS_TALLENNUS values($hetu,'tallennus_id',0,$kurssi_id); Opiskelijan poistaminen (function poistaopiskelija($hetu, $kurssi_id)) Toiminto peruu opiskelijan ilmoittautumisen jollekin kurssille. delete from OPISKELIJA where hetu=$hetu and kurssi_id=$kurssi_id; delete from OPIS_TALLENNUS where hetu = $hetu and tallennus_id = $tallennus_id delete from ILMO_VASTAUS where hetu = $hetu and kurssi_id = $kurssi_id 3.3.6 Ryhmänäkymä (ryhma.php) Ryhmänäkymä näyttää tiedot kurssin ryhmistä. Näkyvissä on ryhmän nimi, ohjaaja, täyttöaste, lisätietoa ja ryhmään lisätyt opiskelijat. Ryhmiä voi sulkea siten, että näkyviin jää vain nimi, ohjaaja ja täyttöaste. Ryhmänäkymä tarjoaa pääsyn kurssisivun ryhmäjaon lataukseen. Sivun saama parametri: $tallennus_id (tarkasteltava kurssi ja ryhmäjako) (for kaikkien ryhmien yli:) select etunimi,sukunimi from OPIS_TALLENNUS,OPISKELIJA where OPIS_TALLENNUS.hetu=OPISKELIJA.hetu and tallennus_id=$tallennus_id and ryhma='haluttu ryhmä'; select nro,maxmaara,maara,esittely,ohjaaja,nimi from RYHMA where tallennus_id=$tallennus_id and nro='tarkasteltava numero'; Ryhmänäkymän muut toiminnot: Ohjaajan kiinnitys (function tallennaohjaaja($tallennus_id, $ryhma, $ohjaajannimi)) Toiminto kiinnittää ryhmälle ohjaajan.

25 update RYHMA set ohjaaja=$ohjaajannimi where tallennus_id=$tallennus_id and nro=$ryhma; Lisätietojen kirjaaminen (function tallennalisatieto($tallennus_id, $ryhma, $lisatieto)) Toiminto tallentaa lisätietoa ryhmästä. update RYHMA set esittely=$lisatieto where tallennus_id=$tallennus_id and nro=$ryhma; Ryhmäjaon tallentaminen (function tallennaryhmajako($tallennus_id, $tallennusnimi)) Toiminto tallentaa senhetkisen ryhmäjaon. select max(id) from TALLENNUS; $uusi=entinenmax+1; select hetu,ryhma from OPIS_TALLENNUS where tallennus_id=$nykyinen; jokaiselle näistä: insert into OPIS_TALLENNUS values(hetu,$uusi,ryhma); select nro,maxmaara,maara,esittely,ohjaaja,nimi from RYHMA where tallennus_id=$nykyinen; jokaiselle näistä: insert into RYHMA values($uusi,nro,maxmaara,maara,esittely,ohjaaja,nimi); select kurssi_id from RYHMA where id=$nykyinen; $aika=now() insert into TALLENNUS values($uusi,kurssi_id,$tallennusnimi,$aika); Ryhmien koon muuttaminen (function muutaryhmakokoa($tallennus_id, $ryhmakoko)) Tämän toiminnon avulla voidaan muuttaa kurssin ryhmien kokoa. update RYHMA set maxmaara=$ryhmakoko where tallennus_id=$tallennus_id; Ryhmän lisääminen (function lisaaryhma($tallennus_id, $ryhma, $aihe)) Toiminto lisää kurssille uuden ryhmän. insert into RYHMA values($tallennus_id,$ryhma,$oletuskoko,,$aihe); 3.3.7 Ryhmäjaosta luotavan HTML-sivun muokkaus (kurssituloste.php) Tällä sivulla valitaan, mitä tietoja halutaan ryhmäjaosta tehtävälle HTML-sivulle. Sivun saama parametri: $tallennus_id Sivun toiminnallisuudet: Ryhmäsivun tulostaminen (function tulostasivu($tallennus_id, $halutut_tiedot)) Funktio tulostaa halutunlaisen sivun valitusta ryhmäjaosta. select nro, tallennus_id, esittely, ohjaaja, nimi from RYHMA where tallennus_id = $tallennus_id

26 4 Käyttöliittymäkuvaus Tässä luvussa on yksityiskohtainen kuvaus Proffa-järjestelmän käyttöliittymän näkymistä ja toiminnoista. Eri näkymät kuvaillaan tarkemmin alla. 4.1 Sisäänkirjautuminen: index.php Kuva 6: Kirjautumisnäyttö Kun käyttäjä menee Proffan www-sivuille, hänen eteensä ilmestyy kirjautumisnäyttö (kuva 6). Käyttäjän pitää syöttää käyttäjätunnuksensa ja salasanansa vastaaviin kenttiin, ja painaa Sisään painiketta. Tämän jälkeen ohjelma siirtää käyttäjän joko Pääkäyttäjän tai Kurssivastaavan näkymään riippuen käyttäjän oikeuksien tasosta. Mikäli käyttäjä syöttää tunnuksensa tai salasanansa väärin, järjestelmä ei päästä käyttäjää etenemään ja näyttää virheilmoituksen kirjautumissivulla.

27 4.2 Pääkäyttäjän näkymä: admin.php Kuva 7: Pääkäyttäjän näkymä Jos käyttäjä on pääkäyttäjä, hänelle ilmestyy yllä oleva näkymä (kuva 7). Tässä näkymässä pääkäyttäjä voi luoda uusia kurssivastaava-käyttäjiä kirjoittamalla uuden henkilön tiedot tyhjälle riville, tai poistaa jo olemassa olevia kurssivastaavia Poista-napista, joka on poistettavan henkilön kohdalla. Pääkäyttäjä voi myös muuttaa kurssivastaavien tietoja editoimalla suoraan tekstikenttiä. Muutokset ja uusien käyttäjien luonnit astuvat voimaan pääkäyttäjän painaessa Tallenna muutokset painiketta.

28 4.3 Kurssivastaavan alkunäkymä: aloitus.php Kuva 8: Kurssivastaavan alkunäkymä Jos sisäänkirjautunut henkilö on kurssivastaava, hänelle avautuu näkymä, josta käyvät ilmi hänen omat ryhmittelyä kaipaavat kurssinsa. Kurssivastaavan uudemmat kurssit löytyvät pudotusvalikosta (kuva 8). Taulukossa näkyviä kursseja pääsee editoimaan klikkaamalla linkkejä. Kurssin nimeä klikkaamalla jako alkaa puhtaalta pöydältä, ja aikaisemmin tallennettuja jakoja voi editoida klikkaamalla niiden linkkejä. Jos kurssilla ei ole tallennettujen jakojen kohdalla linkkejä, kurssin ryhmäjakoa ei ole vielä tehty. Jos käyttäjä haluaa poistaa kokonaan jonkin kurssin valikoimistaan, hän voi klikata kyseisellä rivillä olevaa Poista painiketta. Jos käyttäjä taas haluaa ryhmitellä kurssia, joka ei vielä ole taulukossa, hän voi siirtää kurssin taulukkoon valitsemalla sen pudotusvalikosta ja painamalla Lisää painiketta. 4.4 Kurssivastaavan kurssinäkymä: kurssi.php Seuraavassa on esitelty kurssinäkymä (kuva 9). Näkymä koostuu kahdesta eri sivusta (opiskelijat.php ja ryhmat.php); vasemmalla näkyvät opiskelijat, ja oikealla ryhmät joihin opiskelijoita voidaan sijoittaa. Alla käsitellään kumpikin sivu erikseen.

29 Kuva 9: Kurssinäkymä 4.4.1 Kurssinäkymän vasen sivu: opiskelijat.php Kuva 10: Opiskelijat-sivu

30 Opiskelijat on kuvattu allekkain sen mukaan, ovatko esitiedot kunnossa vai eivät. Ylimmäisenä listassa näkyvät opiskelijat, joiden esitietovaatimukset ovat kunnossa, ja heidän jälkeensä ne, joilla on puutteita esitiedoissa. Lisäksi viimeisenä listassa tulevat ne opiskelijat, jotka ovat syöttäneet tietoa väärässä muodossa järjestelmään ja sen takia jääneet automaattisesta prosessoinnista. Ensimmäinen linkki opiskelijasivulla (kuva 10, kohta 1) johtaa puutteellisia esitietoja omaavien opiskelijoiden listan alkuun. Toinen linkki (kuva 10, kohta 2) johtaa niiden kohdalle, jotka ovat syöttäneet virheellistä tietoa. Uusi opiskelija voidaan lisätä kurssille Lisää opiskelija painikkeesta (kuva 10, kohta 3; kuva 11). Opiskelijan tiedot kirjoitetaan ilmestyvään pop up ikkunaan. Kuva 11: Opiskelijan lisääminen Opiskelijat voidaan ryhmitellä automaattisesti ryhmätoiveidensa mukaan opiskelijoiden yllä olevista linkeistä (kuva 10, kohta 4). Opiskelijat voidaan laittaa listassa järjestykseen nimen, syntymäajan, aloitusvuoden tai opintoviikkojen mukaan (kuva 10, kohta 5). Opiskelijan lisätiedot näkyvät Lisätiedot kentässä (kuva 10, kohta 6), ja hänet voidaan poistaa kurssilta kokonaan painikkeesta Poista opiskelija kurssilta (kuva 10, kohta 7). Yksittäinen opiskelija voidaan siirtää nuolipainikkeista (kuva 10, kohta 8) haluttuun ryhmään.

31 Kuva 12: Puutteita esitietovaatimuksissa -lista Kuvassa 12 näkyy alkupäätä opiskelijalistan kohdasta, johon esitiedot täyttämättömät opiskelijat on sijoitettu. Kukin kurssi, joka on opiskelijalla suorittamatta, näkyy opiskelijan muiden tietojen alla. Kurssivastaava voi merkitä kurssit suoritetuiksi ruksaamalla kurssin kohdalla olevan laatikon ja painamalla sen jälkeen Merkitse valitut suoritetuiksi painiketta. Jos kaikki kurssit merkittiin suoritetuiksi, opiskelijan tiedot siirtyvät esitietovaatimukset täyttävien tai virheellistä dataa syöttäneiden opiskelijoiden joukkoon. Kuva 13: Virheellinen syöte Kuvassa 13 näkyy opiskelijalistan loppupää, eli ne, jotka ovat syöttäneet dataa väärin järjestelmään. Väärin syötetty data näkyy tekstikentässä, jossa kurssivastaava voi editoida tiedot kuntoon. Muutettuaan tietoja kurssivastaava painaa Muuta painiketta, jolloin opiskelija siirtyy esitietovaatimukset täyttävien jonoon.

32 Kurssivastaava voi myös siirtää opiskelijoita ryhmiin korjaamatta esitietovaatimuksia tai väärässä muodossa olevaa vastausta. 4.4.2 Kurssinäkymän oikea sivu: ryhmat.php Kuva 14: Ryhmät-sivu Kurssinäkymän vasemmalla puolella näkyvät ne ryhmät, joihin opiskelijoita voidaan kyseisellä kurssilla sijoittaa (kuva 14). Ryhmien yläpuolella (kuva 14, kohta 1) näkyvät linkkeinä tämän kurssin puitteissa aikaisemmin tehdyt jaot, ja näihin voidaan palata klikkaamalla jaottelun linkkiä. Ryhmäjako voidaan aloittaa myös kokonaan alusta (kuva 14, kohta 2), ja nykyinen jako voidaan tallentaa itse annetulla nimellä (kuva 14, kohta 3). Olemassa olevalle ryhmälle voidaan luoda rinnakkaisryhmä valitsemalla aihe pudotusvalikosta ja painamalla Luo painiketta, ja ryhmä, jolla on kokonaan uusi aihe, voidaan perustaa antamalla uusi aihe tekstikenttään ja painamalla vastaavaa Luo-painiketta (kuva 14, kohta 4). Kurssin ryhmien maksimikokoa voidaan vaihtaa kirjoittamalla uusi koko tekstikenttään ja painamalla Muuta painiketta (kuva 14, kohta 5). Ryhmien tiedot voidaan piilottaa tai avata vasemmalla olevien nuolipainikkeiden avulla (kuva 14, kohta 6). Ryhmästä näkyvät minimimuodossa nimi, koko ja ohjaaja. Ryhmän tiedoissa näkyvät siihen kuuluvat opiskelijat. Opiskelija voidaan poistaa nykyisestä ryhmästään hänen nimensä edessä olevasta linkistä, tai siirtää eri ryhmään nimen perässä olevasta pudotusvalikosta (kuva 14, kohta 7). Yksittäisen ryhmän kokoa voidaan säätää numerokentästä (kuva 14, kohta 8). Ohjaajat voidaan kirjoittaa vasemmassa sarakkeessa näkyviin tekstikenttiin

33 (kuva 14, kohta 9). Ryhmästä voidaan kirjoittaa lyhyt vapaamuotoinen kuvaus suurempaan tekstikenttään (kuva 14, kohta 10). 4.5 Kurssitulosteen luonti: kurssituloste.php Kuva 15: Kurssitulosteen luonti Kurssivastaava voi valita, mitä haluaa näkyviin lopulliseen tulosteeseen.

34 4.6 Lopputulos: ryhmajako.html Kuva 16: HTML-tuloste Proffa-järjestelmän lopputuote on HTML-sivu, jolla ryhmäjako on näkyvissä.

35 5 Lähteet Desmondin palvelut opiskelijoiden ryhmittelyä ajatellen, Juhani Haavisto 2005 (ei julkinen). Opetushallinnon tauluja, Harri Laine 2005. http://www.cs.helsinki.fi/u/laine/ophasys/ Proffa ilmoittautumisen profiloija. Määrittelydokumentti 20.2.2005. Ohjelmistotuotantoprojekti Proffa. http://www.cs.helsinki.fi/group/proffa/ Tietokantasovellusten harjoitustyön ohje, 2004. http://www.cs.helsinki.fi/u/ronkaine/tsoha/tietokantaohje.html

36 Liite 1: Proffa-kannan testidatan insert-lauseet insert into kayttaja values('mmetsala', 'kissa', 'Maija Metsälä', '0'); insert into kayttaja values('psammakk', 'koira', 'Pertti Sammakko', '1'); insert into kurssi values('0001', '581260-4', 'k', '2005', 'mmetsala'); insert into opiskelija values('011280-123f', 'aku', 'ankkanen','-1', 'akuonparas@jotain.com', 'TKT', '2005',''); insert into opiskelija values('011185-214x', 'iines', 'hanhi','-1', 'iines@jee.com', 'TKT', '1997', ''); insert into opiskelija values('221283-123x', 'keijo', 'kenkkunen','-1', 'kkenkkune@pitsinnyplays.net', 'TKT', '2000',''); insert into opiskelija values('111179-124g', 'ninja', 'kilppari','-1', 'ninja@cowabunga.net', 'TKT', '2001',''); insert into opiskelija values('220281-123d', 'kasari', 'hevi','-1', 'mieoonpaha666@hell.com', 'TKT', '1998', ''); insert into opiskelija values('010176-111x', 'pave', 'äijänen','-1', 'pave@ruuvimeisseli.com', 'TKT', '1999', ''); insert into opiskelija values('010167-018a', 'minna', 'käntty','-1', 'm-chan@postiloora.com', 'TKT', '2004', ''); insert into ilmokysymys values('1', '0001', 'Mihin ryhmään haluat? Laita 3 ryhmänumeroa paremmuusjärjestykseen pilkuilla eroteltuna.', 'mihin ryhmään', 'vapaa vastaus', '1,2,3,4', 'I'); insert into ilmovastaus values('0001', '1', '011280-123F', '1,2,3'); insert into ilmovastaus values('0001', '1', '011185-214X', '2,3,4'); insert into ilmovastaus values('0001', '1', '221283-123X', '4,3,1'); insert into ilmovastaus values('0001', '1', '111179-124G', '1,2,4'); insert into ilmovastaus values('0001', '1', '220281-123D', '4,3,2'); insert into ilmovastaus values('0001', '1', '010176-111X', '1,4,2'); insert into ilmovastaus values('0001', '1', '010167-018A', '4,1,2'); insert into esitietovaatimukset values('011280-123f', '0001', 'Tira'); insert into esitietovaatimukset values('011280-123f', '0001', 'Ohjelmoinnin perusteet'); insert into esitietovaatimukset values('220281-123d', '0001', 'Java ohejmointi'); insert into osallistuminen values('011280-123f', '0001', '19-NOV-04'); insert into osallistuminen values('011185-214x', '0001', '25-NOV-04'); insert into osallistuminen values('221283-123x', '0001', '24-DEC-04'); insert into osallistuminen values('111179-124g', '0001', '21-NOV-04'); insert into osallistuminen values('220281-123d', '0001', '29-NOV-04'); insert into osallistuminen values('010176-111x', '0001', '28-NOV-04'); insert into osallistuminen values('010167-018a', '0001', '10-DEC-04');

37 Liite 2: JAR-rajapinnan koodit Seuraavassa on kolmen Java-luokan, Esitietovaatimus, Kyselyt ja Vast_tark, lähdekoodit. Esitietovaatimus tarkistaa opiskelijan esitietovaatimukset. Kyselyt-luokan avulla muut pakkaukset voivat pyytä tietoa kurssien vastaavuuksista, esitietovaatimuksista, erikoiskursseista ja tutkintovaatimuksista. Vast_tark-luokan avulla muut luokat selvittävät, onko opiskelijalla suoritusten joukossa kursseja, jotka vastaavat tarkasteltavaa kurssia. Luokassa on myös metodi, jolla voi tarkistaa, mitä kurssijoukon kursseja kurssi vastaa. Esitietovaatimus-luokka package os2.etv; import opintosu.tietokanta.*; import os2.ljk.*; import os2.vastaavuus.*; import java.util.*; /** * Luokan avulla tarkastetaan puuttuuko opiskelijan suorituksista * kysytyn kurssin osallistumiseen vaadittavia esitietovaatimuksia. * Vaatimukset voivat olla pakollisia, hallittavia tai suosituksia. * * @version 1.1 21.02.2003 * @author Tomi Ahonen **/ public class Esitietovaatimus { private Collection esitiedot; private Collection puuttuvat; private Collection pakolliset, suositeltavat, hallittavat; /** * Konstruktori **/ public Esitietovaatimus() { esitiedot = new ArrayList(); puuttuvat = new HashSet(); pakolliset = new HashSet(); suositeltavat = new HashSet(); hallittavat = new HashSet(); /** * Metodi, jolla tarkistetaan kurssille asetetut esitietovaatimukset. * * @param suoritukset opiskelijan suorittamat kurssit * @param kurssi kurssi, jonka esitietovaatimuksia tarkastetaan * @return kurssit, jotka on suoritettava/hallittava/suositeltu suoritettavaksi * ennen kurssille osallistumista. **/ public Collection tarkasta(collection suoritukset, String kurssi) throws Exception { // haetaan pyydetyn kurssin esitietovaatimukset esitiedot = Kyselyt.haeEsitiedot(kurssi); // jos kurssilla ei ole vaatimuksia, niin voidaan lopettaa tähän if(esitiedot.size() == 0) {