Kierros 7, tehtävä 3

Menokirjanpito (200 p)

Tässä tehtävässä harjoitellaan erityisesti seuraavia asioita:

Tee Eclipseen uusi projekti, jonka nimi on tehtava7_3, ja siihen moduuli menokirjanpito. Kirjoita moduuliin ohjelma, jonka avulla käyttäjä voi pitää kirjaa siitä, kuinka paljon hän on käyttänyt rahaa erityyppisiin menoihin (esim. asunto, ruoka, opiskelu, vapaa-aika jne.)

Kirjanpito toteutetaan sanakirjarakenteen avulla. Siinä avaimena toimii menolajin nimi (esim. asuminen) ja avaimeen liittyvänä arvona ko. menolajiin liittyvät kokonaismenot (desimaaliluku) tähän mennessä. Sinun tehtävänäsi on kirjoittaa ohjelma, jonka avulla käyttäjä voi syöttää rekisteriin uusia menotietoja, kysyä haluamansa menolajin kokonaismenoja, kysyä sitä menolajia, johon liittyvät suurimmat menot, ja kysyä kaikkien rekisterissä olevien menolajien yhteismenoja.

Ohjelman alussa luodaan kirjanpitoa varten tyhjä sanakirjarakenne. Tämän jälkeen ohjelma pyytää käyttäjää valitsemaan toiminnon seuraavasta listasta:

1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
Käyttäjän valinnan mukaan ohjelma suorittaa halutun toiminnon. Eri toiminnot kuvataan tarkemmin alla.

Mahdolliset toiminnot:

Katso esimerkkiajosta tarkemmin, millainen ohjelman tulostuksen pitää olla eri tilanteista. Jos käyttäjä valitsee halutuksi toiminnoksi jotain muuta kuin jonkin luvuista 1-5, ohjelma vain tulostaa mahdolliset vaihtoehdot uudelleen.

Käyttäjälle annettava valikko kannattaa tulostaa print-käskyllä. Tämän jälkeen käyttäjän valinta luetaan raw_input-käskyllä, jolle ei ole annettu lainkaan tulostettavaa kehotetta (ei edes rivinvaihtomerkkiä). Voit katsoa mallia esimerkiksi 2.2. pidetyn luennon luentokalvojen valikko-ohjelmaesimerkistä. (Tosin luettua valintaa ei tarvitse välttämättä muuttaa kokonaisluvuksi, kuten esimerkissä oli tehty, koska tuossa vaiheessa kurssilla ei oltu vielä opetettu merkkijonojen vertailua.)

Ohjelma tallentaa menolajien nimet siinä muodossa kuin käyttäjä on ne antanut. Jos esimerkiksi käyttäjä on antanut nimen muodossa "asuminen", niin sitä ei löydetä haettaessa menolajia "Asuminen".

Ohjelman rakennetta ei ole tässä määrätty sen tarkemmin, vaan saat itse suunnitella, mitä funktioita kirjoitat ohjelmaasi. Älä kuitenkaan kirjoita koko ohjelmaa yhdeksi pääohjelmaksi, vaan käytä myös muita funktioita järkevästi. Esimerkiksi eri toimintoja (menon lisäys jne.) varten kannattaa kirjoittaa omat funktionsa, jotka saavat parametrina käytettävän sanakirjarakenteen.

Testaa ohjelmaasi ajamalla sitä monta kertaa itse ennen palautusta. Palauta Gobliniin tiedosto menokirjanpito.py.

Vinkki: halutessasi voit testausvaiheessa lisätä ohjelmaan ylimäräisen valinnan, joka vain tulostaa sanakirjan sisällön yhdellä print-käskyllä. Tämän avulla on helpompi testata sitä, onko rekisterin sisältö eri vaiheissa se, mikä sen pitäisi olla. Poista kuitenkin tämä valinta ennen kuin palautat ohjelman Gobliniin.

Huomautus: ohjelmasta tulee huomattavasti käyttökelpoisempi, jos kirjanpidon tiedot luetaan ohjelman alussa jostain tiedostosta ja tallennetaan ohjelman päätyttyä tiedostoon. Näin tiedot säilyvät ohjelman eri suorituskertojen välillä. Tätä ei kuitenkaan vaadita tässä tehtävässä.

Esimerkki ohjelman suorituksesta:

[ohjelman suoritus alkaa]
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
3
Kirjanpidossa ei ole menoja.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
4
Kaikki menot yhteensa ovat 0.00 euroa.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
1
Anna menolajin nimi.
asuminen
Anna menon rahasumma euroina.
325.0
Lisattiin kirjanpitoon uusi menolaji.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
1
Anna menolajin nimi.
ruoka
Anna menon rahasumma euroina.
5.0
Lisattiin kirjanpitoon uusi menolaji.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
1
Anna menolajin nimi.
ruoka
Anna menon rahasumma euroina.
12.8
Arvo lisattiin lajin ruoka kokonaismenoihin.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
1
Anna menolajin nimi.
vaatteet
Anna menon rahasumma euroina.
56.8
Lisattiin kirjanpitoon uusi menolaji.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
1
Anna menolajin nimi.
vaatteet
Anna menon rahasumma euroina.
23.0
Arvo lisattiin lajin vaatteet kokonaismenoihin.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
1
Anna menolajin nimi.
ruoka
Anna menon rahasumma euroina.
43.7
Arvo lisattiin lajin ruoka kokonaismenoihin.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
3
Suurimmat menot:
asuminen: 325.00 euroa
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
2
Minka menolajin kokonaiskulut haluat tietaa?
Ruoka
Menolajille ei ole kirjattu menoja.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
2
Minka menolajin kokonaiskulut haluat tietaa?
ruoka
Lajin kokonaismenot ovat 61.50 euroa.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
4
Kaikki menot yhteensa ovat 466.30 euroa.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
1
Anna menolajin nimi.
huvit
Anna menon rahasumma euroina.
15.0
Lisattiin kirjanpitoon uusi menolaji.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
1
Anna menolajin nimi.
ruoka
Anna menon rahasumma euroina.
32.6
Arvo lisattiin lajin ruoka kokonaismenoihin.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
7
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
2
Minka menolajin kokonaiskulut haluat tietaa?
ruoka
Lajin kokonaismenot ovat 94.10 euroa.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
2
Minka menolajin kokonaiskulut haluat tietaa?
opiskelu
Menolajille ei ole kirjattu menoja.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
3
Suurimmat menot:
asuminen: 325.00 euroa
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
4
Kaikki menot yhteensa ovat 513.90 euroa.
Menokirjanpito - valitse toiminto:
1. Lisaa meno
2. Kerro menolajin kulut
3. Etsi suurin menolaji
4. Laske menot yhteensa
5. Lopeta
5
Ohjelma paattyy.
[ohjelman suoritus päättyy]

Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta