Kierros 8, tehtävä 1

Lukujen lukeminen tiedostosta (150 p)

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

Tämän tehtävän tarkistuksessa ollut virhe on nyt korjattu, ja tehtävän voi palauttaa Gobliniin normaalisti.

Tee Eclipseen uusi projekti, jonka nimi on tehtava8_1, ja tähän projektiin moduuli myyntiraportti. Kirjoita sitten moduuliin ohjelma, joka lukee tiedostosta myyntiraportin, jossa myyntisummat on annettu dollareina. Ohjelma tulostaa myyntisummat sekä dollareina että euroina. Tarkempi selostus ohjelmasta on alla.

Yritys saa sen USAn konttoriltaan sopivin väliajoin tiedoston, joka sisältää konttorin päivittäiset myyntisummat dollareina. Myyntisummat on tallennettu teksitiedostoon niin, että kunkin päivän kokonaismyynti (yksi desimaaliluku) on tallennettu omalle rivilleen. Rivillä ei ole mitään muuta tietoa. (Olisi järkevää, jos rivillä olisi ennen myyntisummaa päivämäärä, mutta se on jätetty tässä tehtävän helpottamiseksi pois.) Yrityksen johtaja haluaa kuitenkin nähdä myyntisummat euroina. Sinun tehtävänäsi on kirjoittaa ohjelma, joka lukee myyntisummat käyttäjän haluamasta tiedostosta ja tulostaa sitten kunkin päivän myynnin sekä dollareina että euroina. Käytettävä vaihtokurssi valuutan muuntamiseen pyydetään käyttäjältä (jokaisen päivän kohdalla käytetään samaa vaihtokurssia). Voit katsoa mallia tiedostoston muodosta tiedostosta myyntilukuja1.txt ja vähän virheellisestä tiedostosta myyntilukuja2.txt. Tallenna nämä tiedostot samaan hakemistoon ohjelmakoodisi kanssa ohjelmasi testaamista varten. Oikea hakemisto on Unix-koneissa tyohakemisto/tehtava8_1/src/, missä tyohakemisto on Eclipsessä käyttämäsi työtilan (workspace) hakemisto.

Jos tiedoston lukemisessa tapahtuu virhe (esimerkiksi haluttua tiedostoa ei ole olemassa), ohjelma tulostaa, että tiedoston lukemisessa on tapahtunut virhe ja lopettaa toimintansa. Jos tiedoston jollain rivillä on jotain muuta kuin yksi kokonaisluku, ohjelma tulostaa ilmoituksen virheellisestä luvusta ja lopettaa toimintansa. Ohjelma kuitenkin tulostaa ennen virheellistä riviä olleet myyntiluvut ja niiden muunnokset euroiksi normaalisti. Jos käyttäjän antamaa valuutan vaihtokurssia ei voi tulkita desimaaliluvuksi, ohjelma ilmoittaa virheestä ja lopettaa toimintansa.

Ohjelman ei tarvitse kuitenkaan tarkistaa, että luetut myyntisummat ovat järkevällä välillä, vaan kaikki rivit, jotka voidaan tulkita desimaaliluvuiksi (vaikka luku olisi negatiivinen), hyväkstytään ja muunnetaan euroiksi samalla kertoimella.

Ohjelman rakennetta ei ole tässä määrätty sen tarkemmin. Ohjelmaa ei tarvitse jakaa useampaan funktioon, vaan saat kirjoittaa koko koodin yhteen pääohjelmaan.

Tarkista, että ohjelmasi tulostus on esimerkkiajon mallin mukainen. Sekä dollari- että euromääräiset rahasummat on tulostettu kahden desimaalin tarkkuudella yhdeksän merkin levyisiin kenttiin. Kenttien välillä on lisäksi yksi välilyönti. Testaa ohjelmaasi ajamalla sitä itse ja käyttämällä eri luettavia tiedostoja (voit tehdä niitä helposti myös itse) ennen ohjelman palautusta Gobliniin. Palauta Gobliniin tiedosto arvosanoja.py.

Esimerkkejä ohjelman suorituksesta:

[ohjelman suoritus alkaa]
Mista tiedostosta myyntitiedot luetaan?
myyntilukuja1.txt
Anna kaytettava vaihtokurssi (euron arvo dollareina).
1.341
Myynti
dollaria   euroa
 12000.00   8948.55
147000.00 109619.69
 28000.00  20879.94
 12654.00   9436.24
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa, tiedostossa virheitä]
Mista tiedostosta myyntitiedot luetaan?
myyntilukuja2.txt
Anna kaytettava vaihtokurssi (euron arvo dollareina).
1.454
Myynti
dollaria   euroa
 45000.00  30949.11
120000.00  82530.95
 34000.00  23383.77
Virheellinen luku vaihtokurssina tai tiedostossa. Ohjelma paattyy.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa, tiedostoa ei löydy]
Mista tiedostosta myyntitiedot luetaan?
olematon.txt
Virhe tiedoston olematon.txt lukemisessa. Ohjelma paattyy.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa, vaihtokurssi ei ole luku]
Mista tiedostosta myyntitiedot luetaan?
myyntilukuja1.txt
Anna kaytettava vaihtokurssi (euron arvo dollareina).
ei luku
Virheellinen luku vaihtokurssina tai tiedostossa. Ohjelma paattyy.
[ohjelman suoritus päättyy]

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