Rästitehtävä 3

Puhelinluettelo (450 p)

Tällä rästitehtävällä voit korvata yhden kierroksista 7, 8 tai 9. Jos sinulta puuttuu minimipisteet kahdelta näistä kierroksista, sinun pitää tehdä sekä tämä tehtävä että rästitehtävä 1 tai 2. Jos sinulta puuttuu minimipisteet kaikilta näiltä kierroksilta, tee kaikki rästitehtävät. Jotta rästitehtävä korvaisi tehtäväkierroksen, siitä on saatava vähintään 300 pistettä. Vaikka saisit tehtävästä enemmän pisteitä, niin harjoitustehtäväarvosanaa määrättäessä tällä tehtävällä korvatun kierroksen pistemääräksi lasketaan kuitenkin vain korvattavan kierroksen minimipistemäärä.

Tutustu valmiiksi annettuihin luokkin Puhelintieto ja Puhelinluettelo. Luokat ovat myös Eclipse-projektissa tehtava10_3 yhdessä ratkaisun testaamisen tarkoitetun tiedoston puhelinnumerot1.txt kanssa. ATK-keskuksen UNIX-koneissa projekti on tallennettu hakemistoon /p/edu/tik-106.1206. Näitä luokkia ei ole selitetty tehtävänannossa tarkemmin, vaan sinun pitää tutustua luokkiin itse niiden koodin ja metodien kommenttien perusteella.

Sinun tehtävänäsi on kirjoittaa käyttöliittymäluokka Puhelinluettelo-luokalle samaan tapaan kuin tehtävässä 6.3 kirjoitettiin käyttöliittymäluokka Kompleksiluku2-luokalle. Erona tässä tehtävässä on kuitenkin se, että puhelinluettelon lähtötiedot luetaan tiedostosta ja että Scanner-luokkaa ei saa käyttää tämän tehtävän ratkaisussa lainkaan. Anna käyttöliittymäluokkasi nimeksi Numerotiedustelu.java. Kirjoita se samaan projektiin valmiina annettujen tiedostojen kanssa.

Ohjelmasi lukee käytettävän puhelinluettelon tiedot komentoriviparametrina annettavasta tiedostosta. Tiedostossa puhelinnumerot on annettu siten, että jokaisella rivillä on aina yksi nimi, sen jälkeen kaksoispiste ja tämän jälkeen nimeen kuuluva puhelinnumero. Voit katsoa mallia tiedostosta puhelinnumerot1.txt. Voit luottaa siihen, että jos tiedosto on olemassa, siinä on rivejä ja sitä pystytään lukemaan, niin tiedoston rivit ovat virheettömässä muodossa.

Määrittele luokalle Numerotiedustelu seuraavat kentät:

Kirjoita sitten luokkaan seuraavat konstruktori ja metodit (katso esimerkkiajoista, millaisia ohjelmasi tulostusten pitää täsmällisesti olla):

Huomautuksia:

Palauta Gobliniin tiedosto Numerotiedustelu.java.

Esimerkki testiohjelman toiminnasta:

[ohjelman käynnistetään komentoriviparametrilla puhelinnumerot1.txt]

Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
4
Luettelon tiedot:
Ahonen Minna: 050-112277
Virtanen Jesse: 040-8866991
Makela Riku: 045-1234876
Mustala Tatu: 09-3576419
Heikkila Heikki: 09-4488664
Markkula Anna: 09-4488664


Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
0

Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
6

Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
1
Anna luetteloon lisattava nimi.
Virta Esko
Anna luetteloon lisattava numero.
09-6539861
Lisays onnistui.

Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
4
Luettelon tiedot:
Ahonen Minna: 050-112277
Virtanen Jesse: 040-8866991
Makela Riku: 045-1234876
Mustala Tatu: 09-3576419
Heikkila Heikki: 09-4488664
Markkula Anna: 09-4488664
Virta Esko: 09-6539861


Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
1
Anna luetteloon lisattava nimi.
Makela Riku
Anna luetteloon lisattava numero.
040-1144667
Numeroa ei voitu lisata.

Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
3
Kenen numeron haluat vaihtaa?
Makela Riku
Anna uusi puhelinnumero.
040-1144667
Puhelinnumero vaihdettiin.

Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
4
Luettelon tiedot:
Ahonen Minna: 050-112277
Virtanen Jesse: 040-8866991
Makela Riku: 040-1144667
Mustala Tatu: 09-3576419
Heikkila Heikki: 09-4488664
Markkula Anna: 09-4488664
Virta Esko: 09-6539861


Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
2
Kenen numeron haluat hakea?
Heikkila Heikki
Puhelinnumero on 09-4488664

Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
2
Kenen numeron haluat hakea?
Olematon Oskari
Nimea ei ole luettelossa!

Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
3
Kenen numeron haluat vaihtaa?
Olematon Oskari
Anna uusi puhelinnumero.
000-000000
Numeron vaihto ei onnistunut!

Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
4
Luettelon tiedot:
Ahonen Minna: 050-112277
Virtanen Jesse: 040-8866991
Makela Riku: 040-1144667
Mustala Tatu: 09-3576419
Heikkila Heikki: 09-4488664
Markkula Anna: 09-4488664
Virta Esko: 09-6539861


Puhelinluettelo, valitse toiminto:
1. Lisaa rivi luetteloon
2. Hae numero
3. Vaihda numero
4. Tulosta luettelo
5. Lopeta
5
[ohjelman suoritus päättyy]

[ohjelman käynnistetään komentoriviparametrilla puhelinnumerot2.txt
tiedosto on olemassa, mutta se on tyhjä.]
Puhelinluettelon lukeminen ei onnistunut.
[ohjelman suoritus päättyy]

[ohjelman käynnistetään komentoriviparametrilla puhelinnumerot3.txt tiedosto on olemassa, mutta ohjelmalla ei ole oikeuksia lukea sitä.] Puhelinluettelotiedoston lukeminen ei onnistu! Puhelinluettelon lukeminen ei onnistunut. [ohjelman suoritus päättyy]

[ohjelman käynnistetään ilman komentoriviparametreja.] Ohjelmalle pitaa antaa tasmalleen yksi komentoriviparametri! [ohjelman suoritus päättyy]

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