Tässä tehtävässä harjoitellaan erityisesti seuraavia asoita:
Tee Eclipseen uusi projekti, jonka nimi on tehtava7_2. Luo sitten tähän projektiin moduli puhelinluettelo ja kirjoita siihen ohjelma, jota käyttäjä voi käyttää puhelinluettelona.
Opetusmonisteessa on esimerkkejä siitä, miten puhelinluettelon voi toteuttaa Pythonin sanakirjarakenteen avulla. Opetusmonisteen esimerkissä puhelinluettelon tiedot on kuitenkin annettu suoraan käskyissä. Sinun tehtävänäsi on kirjoittaa ohjelma, jonka avulla käyttäjä voi syöttää puhelinluetteloon uusia numeroita, muuttaa ja poistaa niitä sekä hakea puhelinnumeroa nimen perusteella.
Ohjelman alussa luodaan puhelinluetteloa varten tyhjä sanakirjarakenne. Tämän jälkeen ohjelma pyytää käyttäjää valitsemaan toiminnon seuraavasta listasta:
1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. LopetaKäyttäjän valinnan mukaan ohjelma suorittaa halutun toiminnon, esimerkiksi lisää sanakirjaan uuden nimi - puhelinnumero -parin. Numeron voi lisätä luetteloon vain, jos samalla nimellä ei jo ole luettelossa numeroa. Vastaavasti numeron voi muuttaa, poistaa tai hakea vain, jos halutulla nimellä on jo luettelossa numero. Muussa tapauksessa ohjelma antaa virheilmoituksen. Katso esimerkkiajosta tarkemmin, millainen ohjelman tulosteen pitää olla eri tilanteissa. Jos käyttäjä antaa jonkun muun valinnan kuin 1 - 5, ohjelma vain tulostaa mahdolliset valinnat uudelleen. Kun käyttäjä valitsee ohjelman lopetuksen, ohjelma vielä tulostaa "Ohjelma paattyy." ja lopettaa toimintansa.
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 4.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.
Windows-koneissa luettujen merkkijonojen lopussa voi kuitenkin olla
ylimääräistä "roskaa", joten kannattaa lukea tehtävässä 6.2 annettu
kommentti, jos haluaa vertailla suoraan merkkijonoja.)
Ohjelma tallentaa nimet siinä muodossa kuin käyttäjä on ne antanut. Jos esimerkiksi käyttäjä on antanut nimen muodossa "pekka", niin sitä ei löydetä haettaessa nimeä "Pekka".
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 (numeron lisäys, haku jne) varten kannattaa kirjoittaa omat funktionsa, jotka saavat parametrina käytettävän sanakirjarakenteen.
Palauta Gobliniin tiedosto puhelinluettelo.py.
Vinkki: testausvaiheessa ohjelmaan kannattaa lisätä ylimäräinen
valinta, joka vain tulostaa puhelinluettelon sisällön yhdellä
print
-käskyllä. Tämän avulla on helpompi testata sitä,
onko luettelon 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 puhelinluettelon 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ä.
[ohjelman suoritus alkaa] Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 1 Anna lisattava nimi. Virtanen Maija Anna lisattava numero. 050-9955221 Lisays tehty! Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 1 Anna lisattava nimi. Aalto Matti Anna lisattava numero. 09-663219 Lisays tehty! Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 1 Anna lisattava nimi. Virtanen Maija Nimi on jo luettelossa, ei voida lisata. Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 1 Anna lisattava nimi. Virta Veijo Anna lisattava numero. 06-7349727 Lisays tehty! Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 2 Mihin nimeen liittyvaa numeroa muutetaan? Malli Anna Nimi ei ole luettelossa, numeroa ei voida muuttaa. Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 2 Mihin nimeen liittyvaa numeroa muutetaan? Virta Veijo Anna uusi numero. 0400-123456 Muutos tehty! Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 4 Kenen numeron haluat hakea? Virta Veijo Numero on 0400-123456. Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 4 Kenen numeron haluat hakea? aalto maija Nimi ei ole luettelossa. Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 6 Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 3 Mihin nimeen liittyva numero poistetaan? aalto maija Nimi ei ole luettelossa, numeroa ei voida poistaa. Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 3 Mihin nimeen liittyva numero poistetaan? Virtanen Maija Numero poistettu! Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 4 Kenen numeron haluat hakea? Virtanen Maija Nimi ei ole luettelossa. Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta 4 Kenen numeron haluat hakea? Aalto Matti Numero on 09-663219. Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 5. Lopeta -1 Puhelinluettelo - valitse toiminto: 1. Lisaa uusi numero 2. Muuta numero 3. Poista numero 4. Hae numero 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