Információ Európa országairól (összetett alkalmazás) Információ Európa osrzágairól Készítsünk webes felületet, melyen Európa térképe klikkelésre érzékeny (szenzitív) képként jelenik meg! Bármelyik országot választva, a rá jellemző legfontosabb adatok (ország neve, főváros, terület, lakók száma, népsűrűség, nemzeti jövedelem, beszélt nyelvek, pénznem, egy főre eső nemzeti jövedelem) és az ország zászlaja jelenjenek meg a képernyőn! Készítsünk összesítő “Európainfo” táblázatot, melyen valamennyi európai ország jellemző adatai kölönböző szempontok szerint rendezve egyszerre láthatók. Az adatok tárolásához szöveges fájlt használjunk! A feladat megvalósítása Szöveges fájl készítése Először el kell készíteni a szöveges fájlt. A fájl egy-egy sorába egy-egy ország adatait írjuk. Az egyes tulajdonságokat vesszővel választjuk el egymástól. Példaként a Magyarországgal kapcsolatos sor a következő: Magyarország,93030,10068000,108,Budapest,magyar,4640,forint/fillér, mazaszlo.gif A tulajdonságok sorrendje minden ország esetében azonos: ország neve, terület, lakók száma, népsűrűség, főváros, nyelv, nemzeti jövedelem, valutanem, zászlót ábrázoló képfájl neve. (Az adatok a Fischer Almanach 2002-ben megjelent kiadványából vannak.) Zászlók képeinek összegyűjtése A zászlók képeit egy mappában célszerű összegyűjteni. Ezek az internetről is könnyen letölthetők. A webes megjelenítés miatt kiterjesztésük gif, jpg vagy png lehet. A szenzitív Európa-térkép elkészítése Keresni (esetleg rajzolni) kell egy térképet, melyen az országok jól láthatók. A képet szkennerrel digitalizáljuk. A létrehozott képfájlt megfelelő programmal (Paint, Microsoft Photo Editor) jpg vagy gif formába konvertáljuk. A klikkelésre érzékeny helyek feltérképezéséhez gondolatban minden ország belsejébe egy-egy kört írunk, s feljegyezzük középpontjának koordinátáit és sugarát. Az egér különböző helyzeteihez tartozó x,y koordináták az említett szoftvereket használva a képernyőről leolvashatók.
A rendezési szempontokat tartalmazó menüt és szenzitív képet megjelenítő weboldal elkészítése (europa.html) Létrehozunk egy oldalt, melynek bal felére a menüt, jobb felére az Európa-térképet tesszük. A menü minden eleme egy-egy hivatkozás (link), ezek bármelyikére klikkelve a választott szempont szerint rendezett Európainfo táblázatot kapjuk. Ahogy a listából látható, a kölönböző szempontok szerint rendezett lista előállításához a sort.php programot hívjuk. A program neve után írt ?sort=x kifejezéssel adjuk át a programnak, hogy éppen mely szempont szerint kívánunk rendezni (pl: x=o esetén ország neve, x=t esetén terület szerint rendezünk). A <MAP NAME="EUROPA"> tag-ek között a kép klikkelésre érzékeny részeit definiáljuk. A SHAPE és COORDS tulajdonságok a szenzitív tartományok alakját, ill. koordinátáit mutatják. Az AREA HREF= bejegyzés után a hívásra kerülő programot tüntetjük fel a hívási paraméterrel. Az átadott paraméter esetünkben mindig az ország neve. Például
a
Magyarország
belsejében levő körre klikkelve az orszaginfo.php?orsz=Magyarország hívással az orszaginfo.php aktivizálódik, melynek feladata a Magyarországra jellemző adatoknak és a magyar zászlónak a felhasználó képernyőjén való megjelenítése.
<MAP NAME="EUROPA">
A választott országgal kapcsolatos információt megjelenítő oldal dinamikus generálása (orszaginfo.php) Az orszaginfo.php?orsz=x formájú programhívásnál x a választott ország neve. Az x nevű országra jellemző adatok eléréséhez az Europainfo.txt szöveges fájlt olvasásra kell megnyitni. Addig kell olvasni a sorokat, míg a megjelölt országig el nem jutunk. Ha megtaláltuk, akkor ezt a sort ($sor változó tartalmát) szét kell szedni alkotóelemeire. Ezen elemek az országra jellemző tulajdonságok. A $sor tartalmát a vessző karakter mentén 'robbantjuk' szét ($szavak=explode(",",$sor)). Az így különválasztott adatok a szavak tömb egy-egy elemét képezik. Az ország neve például a szavak tömb 0., az országra jellemző valuta a szavak tömb 7., a zászlót tároló fájl neve a tömb 8. elemébe kerül. Végül a képernyőn megjelennek az országra jellemző adatok, s megjelenik a zászló képe is.
PC EUROPA
Információ Európa országairól
?>
$f=fopen("Europainfo.txt","r"); $i=0; while($sor=fgets($f,10000)) { $szavak=explode(",",$sor); if ($szavak[0]==$orsz) break; }
Terület: Főváros: Népesség: Népűrűség: Nyelvek: Pénznem: Nemzeti jövedelem: |
echo echo echo echo echo
$szavak[1] $szavak[4] $szavak[2] $szavak[3] $szavak[5]
?> km<SUP>2 ?> ?> fő ?> fő/km<SUP>2 ?>
|
$/fő
A kívánt szempont szerint rendezett “Európainfo” tábla előállítása és megjelenítése (sort.php) Az adatok rendezéséhez egy adat nevű tömböt hozunk létre. A tömbnek annyi eleme van, ahány országa van Európának. Definiálunk továbbá egy orszag nevű objektumosztályt. Ennek tulajdonságai a definícióból egyértelműen láthatók: class orszag { var var var var var var var var }
$orsz; $ter; $lakos; $neps; $fov; $nyelv; $joved; $penz;
Az adat tömb minden eleme az ország objektumosztály egy-egy előfordulása. A sort.php program három fő egységből áll: 1. Az adat tömb feltöltése a szöveges fájl (Europainfo.txt) adataival 2. A rendezés A sort.php programot paraméteresen hívjuk. A rendezési szempontot a hívási paraméter adja meg. Például a sort.php?sort=o hívással az ország szerinti rendezést kérjük. A rendezés a buborék algoritmus szerint (bubble sort) valósul meg, azaz a rendezés során mindig a szomszédos elemeket vizsgáljuk meg és cseréljük ki, ha az szükséges. A tömb elemein többször is végigmenve megvizsgáljuk a szomszédos elemek rendezési szempont szerinti tulajdonságát. Az adat tömb i-edik és i+1-edik elemének megfelelő tulajdonságát hasonlítjuk össze, s szükség esetén felcseréljük a két elemet. A rendezésnek akkor van vége, ha a teljes tömböt végignézve nincs szükség további cserére. A rendezési feltétel a hívási paraméter értékétől függ. Ha például ország szerint kívánunk rendezni, a feltételes kifejezés a következő: $felt=$adat[$i]->orsz >$adat[$i+1]->orsz
Mivel többféle elv szerint kérhetjük a rendezést, a többirányú elágazást a programban a switch utasítással valósítjuk meg. Ha a kijelölt feltétel igaz, a $felt változó értéke 1 lesz, a szomszédos elemeket ki kell cserélni.
Az Európatábla megjelenítése A program a rendezett tömb adataival HTML-oldalt generál. Ezt a táblázatot a kliens browsere jeleníti meg.
Európa országai
Vissza
class orszag { var $orsz; var $ter; var $lakos; var $neps; var $fov; var $nyelv; var $joved; var $penz; } // Tömb feltöltése az Europainfo.txt adataival $f=fopen("Europainfo.txt","r"); $i=0; while($sor=fgets($f,10000)) { $szavak=explode(",",$sor); $adat[$i] = new orszag; $adat[$i]->orsz = $szavak[0]; $adat[$i]->ter = $szavak[1]; $adat[$i]->lakos = $szavak[2]; $adat[$i]->neps = $szavak[3]; $adat[$i]->fov = $szavak[4]; $adat[$i]->nyelv = $szavak[5]; $adat[$i]->joved = $szavak[6]; $adat[$i]->penz = $szavak[7]; $i++; } fclose($f); $n=$i;
// Rendezés do { $cs=0; for ($i=0; $i<$n-1; $i++) { switch($sort) { case "o": $felt=$adat[$i]->orsz >$adat[$i+1]->orsz; break; case "f": $felt=$adat[$i]->fov >$adat[$i+1]->fov; break; case "t": $felt=$adat[$i]->ter > $adat[$i+1]->ter; break; case "j": $felt=$adat[$i]->joved > $adat[$i+1]->joved; break; case "l": $felt=$adat[$i]->lakos > $adat[$i+1]->lakos; break; case "n": $felt=$adat[$i]->neps > $adat[$i+1]->neps; break; } if ($felt==1) { $cs=1; $seg=$adat[$i]; $adat[$i]=$adat[$i+1]; $adat[$i+1]=$seg; }
} } while ($cs==1);
// Táblázat megjelenítése echo "
"; echo "Ország | Főváros | Terület | Nemz.jöved | Lakók száma | Népsűrűség"; for ($i=0; $i<$n; $i++) { echo " |
---|
"; echo "".$adat[$i]->orsz; echo " | ".$adat[$i]->fov; echo " | ".$adat[$i]->ter; echo " | ".$adat[$i]->joved; echo " | ".$adat[$i]->lakos; echo " | ".$adat[$i]->neps; echo " |
"; } echo "
";
?>