Praktikumitöö:võrgurakendus: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
69. rida: 69. rida:


* seejärel loe sisse arv, mis tuleb kohe selle lõigu järel.
* seejärel loe sisse arv, mis tuleb kohe selle lõigu järel.
Sama põhimõtte järel õnnestub leida teistegi parameetrite info. Pane oma programmi
sisse iga boksist valitava parameetri jaoks sobiv meetod: kas siis eraldi koodijupp,
vastavalt otsitavad tekstid massiivis vms. Kõige lihtsam on tõenäoliselt teha iga
parameetri jaoks eraldi koodijupp.


== Kasulikke tutoriale (lisaks Ecki raamatule) ==
== Kasulikke tutoriale (lisaks Ecki raamatule) ==

Redaktsioon: 24. oktoober 2005, kell 11:59

Ülesandeks on teha käsurealt käivitav rakendus, mis esitab graafiliselt kahe erineva riigi (nt Eesti-India, Leedu-Läti jne) mitmesuguste geograafiliste ja rahvastikuliste parameetrite võrdlust, hankides andmeid võrgust CIA factbook'st (http://www.cia.gov/cia/publications/factbook/).

Pindalaühikute võrdlemiseks kuvatakse vastavate pindaladega ruudud, muude ühikute (protsendid, elanikkonna arv vms)võrdlemiseks kuvatakse vastavate kõrgustega tulbad. Ruudu või tulba alla või kohale tuleb kirjutada vastava riigi nimi ja arvuline väärtus tekstina.

Andmed kahe riigi kohta tuleb võtta http://www.cia.gov/cia/publications/print (äsjamainitud leht ise lahti ei lähe!) alt olevatelt lehtedelt, kus iga riigi jaoks on üks leht (Eesti: en.html, India: in.html jne), tervikuna siis näiteks http://www.cia.gov/cia/publications/factbook/print/en.html ja http://www.cia.gov/cia/publications/factbook/print/in.html. Kõigi riikide loetelu ja url-d leiad lehelt http://www.cia.gov/cia/publications/factbook/countrylisting.html.

Milliseid andmeid võrrelda? Vali ise vahemikus 3-10 erinevat parameetrit CIA lehtedelt, mida sinu rakendus kasutajale võrdlemiseks pakub. Kindlasti peab nende seas olema kogupindala (Eesti jaoks näiteks: Area: total: 45,226 sq km) ja rahvaarv (Eesti jaoks näiteks Population: 1,332,893).


Kasutajaliides

Kasutajaliides peab koosnema vähemalt järgmistest komponentidest:

  • nupupaneel, kus on kolm valikuboksi ja "võrdle!" nupp:
    • esimese riigi valikuboks (sisaldab kõiki maailma riike!)
    • teise riigi valikuboks (sisaldab samuti kõiki maailma riike)
    • võrreldava parameetri valikuboks (3-10 valikut, näiteks "Kogupindala", "Rahvaarv" jms)
    • "võrdle!" nupp, millele vajutamisel võetakse valikubokside sisu järgi andmed võrgust ja kuvatakse võrdlus graafiliselt välja.
  • joonistamispaneel, kuhu rakendus kasutaja valitud andmete saamise järel kas siis kaks ruutu või kaks tulpa (koos tekstiga nende all/kohal) joonistab.

Vigade korral kuvatakse veatekst joonistamispaneelile.

Alustamiseks võid kasutada seda näiterakendust, mida loengus oleme arendanud: guiexample.java.

Võrgust lugemine

Kõigepealt soovitan teha eraldi katse selle http://java.sun.com/docs/books/tutorial/networking/urls/readingURL.html näiteprogrammiga.

Kui ta ei suuda võrgust lugeda, siis on tõenäoline põhjus selles, et Sinu arvuti ei saa otse internetti ühendust, vaid peab töötama läbi nn proxy.

NB! On võimalik (kuid mitte kindel: proovi järgi!) et kõik AK arvutiklasside arvutid peavad töötama läbi proxy. Siis viidatud näiteprogramm arvutiklassides võrgust lugeda otse ei suuda. Loe TTÜ AK proxy kohta: mida TTÜ AK arvutiklassides töötades vaja teha, KUI proxy osutub vajalikuks.

Tõenäoliselt aga Sinu koduarvutis või kusagil mujal arvutis sellist piirangut ei ole ja näiteprogramm suudab otse võrgust lugeda.

Kuidas CIA html-lehelt vajalikku infot saada?

Oletame, et tahaksid lehelt http://www.cia.gov/cia/publications/factbook/print/en.html leida pindala-infot (näiteks: Area: total: 45,226 sq km). Vaata kõigepealt selle lehe source ja uuri, mille järgi vastava number leida.

Üks variant selline:

  • otsi tekstilõiku
   <div align="right">Area:</div>
  • leitud lõigust otsi lõiku
   <i>total:</i>
  • seejärel loe sisse arv, mis tuleb kohe selle lõigu järel.

Sama põhimõtte järel õnnestub leida teistegi parameetrite info. Pane oma programmi sisse iga boksist valitava parameetri jaoks sobiv meetod: kas siis eraldi koodijupp, vastavalt otsitavad tekstid massiivis vms. Kõige lihtsam on tõenäoliselt teha iga parameetri jaoks eraldi koodijupp.

Kasulikke tutoriale (lisaks Ecki raamatule)