Viikkotehtävä 3
Toteuta pienimuotoinen tulomenolaskuri. Yhteiset vaatimukset:
- Käytetään Python-kieltä.
- Sovelluksen täytyy olla PSP eli Python Server Pages -sovellus.
- Kommentoikaa koodin oleellisimpia osia!
- Käsittelijän on tarkistettava syötettyjen tietojen oikeellisuus.
- Virheellinen tai puutteellinen tieto palautetaan takaisin syöttölomakkeelle. Kyseisen lomake-elementin viereen ilmestyy selvä virheilmoitus mallikuvien tyyliin.
- Virhetapauksessa aiemmin syötetyt tiedot näkyvät lomakekentissä, ettei käyttäjän tarvitse uudestaan täyttää tietoja.
- Tulostettuihin tietoihin ei saa päästä käyttäjän syöttämää HTML-koodia.
- Kaikkien sivujen on oltava validia XHTML 1.0 Strictiä.
- Sivun ulkoasumuotoilut on tehtävä CSS:ää käyttäen. CSS:n on oltava myös validia CSS2:sta.
- Sivun ulkoasu tulee olla layoutin ja värien osalta suunnilleen mallikuvien mukainen.
- Sovellus toimii kokonaisuudessaan yhdellä ja samalla WWW-sivulla eli koko ajan pysytään samassa osoitteessa.
- Sessioiden käyttäminen on kiellettyä
Taso 1
- Toteuta mallin mukainen lomake.
- Toteuta virheentarkistukset (mallikuva):
- Tulon/menon suuruus syötetään euroina ja sentteinä esim. 5 tai 3.55. Tulot ovat positiivisia lukuja ja menot negatiivisia lukuja
- Meno saa olla suurimmillaan (pienimmillään) -500 000
- Tulo saa olla suurimmillaan 100 000
- Tekstiä ei saa hyväksyä.
- Tyhjä kenttä tarkoittaa, että kyseistä tuloa tai menoa ei ole
- Toteuta tulosten näyttäminen
mallin mukaan, jossa on:
- Tulojen ja menojen kokonaismäärät
- Tulojen ja menojen erotus
- Keskimääräinen meno
- Suurin meno (luku ja tulon nimi)
- Keskimääräinen tulo
- Suurin tulo (luku ja tulon nimi)
- Tulokset lasketaan ja näytetään vasta kun lomake on virheettömästi täytetty
- Tulokset listataan kahden sentin (desimaalin) tarkkuudella
Taso 3
- Toteuta mallin mukainen lomake johon syötettyjen tietojen perusteella luot uuden lomakkeen.
- Toteuta taso 1:n mukaiset virheentarkistukset.
- Sovelluksen on toimittava, vaikka ensimmäisellä lomakkeella olevien päivien tai lajien määrä muuttuisi.
- Toteuta tulosten näyttäminen
mallin mukaan, jossa on taso 1:en mukaisten tietojen lisäksi:
- Lomakkeella olevan ajanjakson pituus päivinä (eli käytännössä kuinka monta täytettävää riviä lomakkeella).
- Keskimääräinen tulo tai meno yhdelle päivälle. Keskiarvo lasketaan aina huomioiden kaikki lomakkeella olevat päivät, eli keskiarvoon vaikuttavat myös ne päivät, jolloin ei ole tuloja tai menoja ollenkaan.
- Kunkin tulomenotyypin kokonaissumma.
- Kunkin päivän yhteenlaskettu tulo/meno.
- Huom. mallikuvissa olevat tulokset eivät ole oikein laskettuja
Taso 5
- Toteuta taso 3 mukainen aloituslomake, johon syötettyjen tietojen perusteella luot uuden lomakkeen. Ohjelma palaa takaisin aloitussivulle ja ilmoittaa virheestä jos yhtään päivää tai tulomenotyyppiä ei ole valittu.
- Lisää rivi-painikkeella voi lisätä halutun päivän kohdalle uuden tulomenosyöttörivin. Varmista, että lomakkeelle tätä ennen syötetyt tiedot säilyvät lomakkeella!
- Toteuta taso 1 ja taso 3 mukaiset virheentarkistukset.
- Toteuta tulosten näyttäminen taso 3 mukaan
- Sovelluksen on toimittava vaikka päivien tai tulomenotyyppien määrä muuttuisi.

Käyttäjien kommentit