Viikkotehtävä 2
Kaikille tasoille yhteiset vaatimukset:
- Tehtävät on toteutettava python-ohjelmointikielellä CGI-ohjelmina.
- Koodin oleelliset osat on oltava kommentoitu.
- Sivujen sisältämä XHTML-koodi tulee olla validia.
- Sivun ulkoasumuotoilut on tehtävä CSS:ää käyttäen. CSS:n on oltava myös validia CSS2:sta.
- Sivun ulkoasu tulee olla layoutin osalta suunnilleen mallikuvien mukainen. Värit sen sijaan saa päättää itse.
- Ainoat sallitut Python-kirjastot ovat cgi, random ja cgitb
Taso 1
- Tee python-sivu, joka toimii lottorivin arpojana. Katso mallikuva: taso1.png.
- Ohjeita:
- Arvotaan siis seitsemän numeroa väliltä 1-39.
- Samassa rivissä ei saa olla kahta samaa numeroa.
- Tulostettaessa numerot tulee olla järjestettynä pienimmästä suurimpaan.
Taso 3
- Tee python-sivu, joka toimii lottorivin arpojana. Katso mallikuvat: taso3.png, taso3a.png, taso3b.png ja taso3c.png.
- Ohjeita:
- Ensin käyttäjä syöttää lottokoneen asetukset, eli numeroiden määrän, lisänumeroiden määrän ja arvontavälin. Mallikuva. Käytetty lomake saa olla erillinen staattinen sivu.
- Jos käyttäjä on määrännyt arvottavaksi 7 numeroa, tulostetaan sivun alaotsikoksi "Lotto". Kuuden numeron tapauksessa alaotsikoksi tulostetaan "Viking Lotto" ja kaikissa muissa tapauksissa "Tuntematon lottoarvonta".
- Samassa rivissä ei saa olla kahta samaa numeroa. HUOM! Myöskään lisänumerona ei voi olla sellainen numero, joka on jo varsinaisena numerona.
- Tulostettaessa numerot tulee olla järjestettynä pienimmästä suurimpaan.
Taso 5
- Tee python-sivu, joka toimii lottorivin arpojana. Katso mallikuvat: taso5a.png, taso5b.png ja taso5c.png.
- Ohjeita:
- Sovellus toimii seuraavasti:
- Ensin käyttäjä syöttää lottokoneen asetukset, eli numeroiden määrän, lisänumeroiden määrän ja arvontavälin. Mallikuva
- Seuraavaksi käyttäjä syöttää oman lottorivinsä. Mallikuva
- Kolmannessa vaiheessa arvotaan lottonumerot ja kerrotaan käyttäjälle, montako numeroa hän sai oikein. Tulossivulla näytetään sekä käyttäjän syöttämät numerot, että arvonnassa tulleet numerot. Mallikuva
- Kaikki ohjelman vaiheet tapahtuvat samassa osoitteessa eli samalla WWW-sivulla
- Jos käyttäjä on määrännyt arvottavaksi 7 numeroa, tulostetaan tulossivulla sivun alaotsikoksi "Lotto". Kuuden numeron tapauksessa alaotsikoksi tulostetaan "Viking Lotto" ja kaikissa muissa tapauksissa "Tuntematon lottoarvonta".
- Arvotussa lottorivissä ei saa olla kahta samaa numeroa. HUOM! Myöskään lisänumerona ei voi olla sellainen numero, joka on jo varsinaisena numerona.
- Tulostettaessa numerot tulee olla järjestettynä pienimmästä suurimpaan.
- Käyttäjän syötteitä ei tarvitse tarkistaa mitenkään, eli riittää, että sovellus toimii oikein silloin, kun käyttäjän syöte on järkevä. Esimerkiksi käyttäjän tulee syöttää kaikki numerot, samaa numeroa ei saa syöttää useampaan kertaan ja syötetyt numerot tulevat olla annetulta arvontaväliltä. Tarkistuksien tekeminen ja sovelluksen toimiminen myös virhesyötteiden kanssa ei toki haittaa.
- Vinkki: Koska lomakkeen täyttäminen on monivaiheinen eikä tallennustekniikoita (sessiot yms.) saa käyttää, täytyy käyttäjän syöttämiä asetuksia kuljettaa lomakkeella mukana viimeiseen vaiheeseen asti, jotta silloin osataan arpoa lottonumerot oikeilla asetuksilla. Mukana kuljettaminen onnistuu lomakkeen hidden-kenttien avulla.
- Sovellus toimii seuraavasti:

Käyttäjien kommentit
En pysty ymmärtämään tason 5 vaatimusta "sovelluksen on toimittava samalla WWW-sivulla" kuin siten, että selain ei sovelluksen vaiheiden aikana lataa uutta sivua. Eli logiikka pitäisi saada selaimeen tekemällä sovellus kokonaan Javascriptillä tai päivittämällä käyttöliittymä AJAXilla. Vai kuinka? Jos sovelluksen halutaan toimivan samassa URLissa eri vaiheiden ajan, kuten oletan, se mielestäni tarkoittaa eri asiaa kuin tuo "sama WWW-sivu".
Jaahas, saan harjoitella sisälukua hieman. Selvästihän tuossa sanotaan kohdassa 4. että samassa osoitteessa eli samalla WWW-sivulla.