Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace Aplikace pro spr´ avu Univerzitn´ı florbalov´ e ligy
Plzeˇ n, 2014
David Koˇsek
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 6. kvˇetna 2014
David Koˇsek
Podˇ ekov´ an´ı Touto cestou bych r´ad podˇekoval Ing. Ladislavu Lencovi za odborn´e veden´ı bakal´aˇrsk´e pr´ace, konzultace, cenn´e podnˇety a pˇripom´ınky, kter´e vedly ke zd´arn´emu vypracov´an´ı.
Abstrakt Bakal´aˇrsk´a pr´ace se zab´ yv´a vytvoˇren´ım informaˇcn´ıho syst´emu pro spr´avu florbalov´eho dˇen´ı na Z´apadoˇcesk´e univerzitˇe. Souˇca´st´ı pr´ace je anal´ yza vhodn´ ych technologi´ı pro v´ yvoj webov´ ych str´anek vˇcetnˇe datab´azov´eho syst´emu se zamˇeˇren´ım na open source produkty. Z anal´ yzy pˇrech´az´ıme do praktick´e ˇc´asti, kde jako prvn´ı navrhneme a vytvoˇr´ıme datab´azov´ y model. Pot´e je implementov´ana webov´a aplikace vˇcetnˇe administr´atorsk´eho prostˇred´ı. Po vytvoˇren´ı v´ ysledn´e aplikace ji otestujeme a zhodnot´ıme v´ ysledky. V z´avˇeru shrneme pr´aci a navrhneme moˇzn´e rozˇs´ıˇren´ı.
Abstract The bachelor´s thesis focuses on the creation of an information system for the administration of University of West Bohemia floorball events. The analysis of suitable technologies for web application development is part of the thesis. Mainly the open source products are addressed. From the analysis we go on to practical part where at first a database model is designed and created. Then the web application including administration interface is implemented. After the application has been finished, it is tested and its results are evaluated. In the conclusion we summarize the thesis and we suggest possible extension.
Obsah ´ 1 Uvod
1
2 Z´ akladn´ı popis aplikace ˇ . 2.1 Z´akladn´ı informace o florbalu na ZCU 2.1.1 Z´akladn´ı informace o UFL . . . 2.2 Poˇzadavky na aplikaci . . . . . . . . . 2.2.1 Veˇrejn´a informaˇcn´ı ˇc´ast . . . . ˇ ast pro registrovan´e . . . . . . 2.2.2 C´ 2.2.3 Administr´atorsk´a ˇca´st . . . . . 2.2.4 Export soubor˚ u do PDF . . . . 2.2.5 Rozlosov´an´ı z´apas˚ u . . . . . . . 2.2.6 Desktopov´a aplikace . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
2 2 3 3 3 4 5 6 7 7
3 Anal´ yza a problematika prostˇ redk˚ u pro tvorbu 3.1 Programovac´ı jazyky . . . . . . . . . . . . . . . 3.2 Hosting a dom´ena . . . . . . . . . . . . . . . . . 3.3 Datab´azov´ y syst´em . . . . . . . . . . . . . . . . 3.4 Architektonick´e vzory . . . . . . . . . . . . . . . 3.5 Knihovny a n´astroje . . . . . . . . . . . . . . . 3.5.1 Knihovna DIBI . . . . . . . . . . . . . . 3.5.2 Knihovny pro export PDF soubor˚ u . . . 3.5.3 HTML editor . . . . . . . . . . . . . . . 3.6 Odes´ıl´an´ı zpr´av . . . . . . . . . . . . . . . . . .
aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
8 8 9 10 12 14 14 14 15 16
4 N´ avrh datab´ azov´ eho modelu 4.1 Konceptu´aln´ı n´avrh sch´ematu 4.1.1 Spr´ava uˇzivatel˚ u . . . 4.1.2 Spr´ava z´apas˚ u. . . . . 4.1.3 Spr´ava text˚ u a aktualit 4.2 Z´avislost vztah˚ u. . . . . . . . 4.3 V´ ychoz´ı hodnoty atribut˚ u . .
. . . . . .
. . . . . .
. . . . . .
17 17 18 27 30 33 33
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . . . .
. . . . . .
. . . . . . . . .
. . . . . .
. . . . . . . . .
. . . . . .
. . . . . . . . .
. . . . . .
. . . . . . . . .
. . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . .
. . . . . . . . .
. . . . . .
. . . . . . . . .
. . . . . .
. . . . . . . . .
. . . . . .
. . . . . .
OBSAH 4.4
OBSAH Fyzick´ y datov´ y model . . . . . . . . . . . . . . . . . . . . . . 34
5 Implementace aplikace 35 5.1 Webov´a aplikace . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.2 Administr´atorsk´e prostˇred´ı . . . . . . . . . . . . . . . . . . . . 38 6 Testov´ an´ı 41 6.1 Testov´an´ı v´ ysledn´eho syst´emu . . . . . . . . . . . . . . . . . . 41 6.2 Zhodnocen´ı testovac´ıch v´ ysledk˚ u . . . . . . . . . . . . . . . . . 42 7 Z´ avˇ er
44
Literatura
46
Seznam pouˇ zit´ıch zkratek
48
Seznam tabulek
50
Seznam obr´ azk˚ u
52
A Konceptu´ aln´ı sch´ ema
53
B Fyzick´ y model
54
C Uk´ azka skript˚ u
55
D Obsah CD-ROM
57
E Uˇ zivatelsk´ a pˇ r´ıruˇ cka
58
F Uk´ azka webov´ eho rozhran´ı
64
´ 1 Uvod Tato bakal´aˇrsk´a pr´ace se zab´ yv´a v´ yvojem informaˇcn´ıho syst´emu pro spr´avu Univerzitn´ı florbalov´e ligy na Z´apadoˇcesk´e univerzitˇe. Univerzitn´ı florbalov´a liga je soutˇeˇz amat´ersk´ ych t´ ym˚ u, kter´a prob´ıh´a pod z´aˇstitou Katedry tˇelˇesn´e ˇ v´ ychovy a sportu. Soutˇeˇze se u ´ˇcastn´ı studenti a absolventi ZCU. C´ılem pr´ace je navrhnout a implementovat informaˇcn´ı syst´em pro spr´avu florbalov´e ligy. Jednou ˇca´st´ı syst´emu bude prezentaˇcn´ı ˇc´ast, kter´a zpˇr´ıstupn´ı d˚ uleˇzit´e informace u ´ˇcastn´ık˚ um ligy i veˇrejnosti. Druhou ˇca´st´ı bude sada n´astroj˚ u pro spr´avu ligy, kter´a bude slouˇzit administr´atorovi. Syst´em bude navrˇzen podle poˇzadavk˚ u spr´avce florbalu na KTS. Souˇc´ast´ı pr´ace je rovnˇeˇz anal´ yza a v´ ybˇer vhodn´ ych prostˇredk˚ u pro tvorbu syst´emu. Motivac´ı k t´eto pr´aci je pˇredevˇs´ım usnadnˇen´ı a ˇc´asteˇcn´a automatizace u ´kon˚ u spojen´ ych s organizac´ı florbalov´e ligy, zaznamen´av´an´ım v´ ysledk˚ u a prezentac´ı d˚ uleˇzit´ ych statistik. KTS v souˇcasnosti nem´a obdobn´ y informaˇcn´ı syst´em k dispozici a veˇsker´a agenda je vedena v pap´ırov´e podobˇe. Aplikace tedy bude pˇr´ınosem hlavnˇe pro spr´avce florbalov´e ligy a tak´e pro vedouc´ı jednotliv´ ych t´ ym˚ u. V n´asleduj´ıc´ıch kapitol´ach se nejprve sezn´am´ıme s poˇzadavky kladen´ ych na aplikaci a jej´ı funkcionalitu. Pot´e provedeme anal´ yzu vhodn´ ych prostˇredk˚ u pro vytvoˇren´ı aplikace. Jedno z tˇeˇziˇst’ t´eto pr´ace je n´avrh datab´azov´eho modelu s popisem a zobrazen´ım vˇsech entit, vztah˚ u i zvolen´ ych atribut˚ u. Na z´akladˇe dosud z´ıskan´ ych informac´ı zd˚ uvodn´ıme v´ ybˇer pouˇzit´ ych prostˇredk˚ u. Hlavn´ı tˇeˇziˇstˇe t´eto pr´ace je v n´avrhu a implementaci webov´e aplikace, kter´a bude splˇ novat veˇsker´e poˇzadavky formulovan´e v seznamu poˇzadavk˚ u. Nakonec zhodnot´ıme v´ ysledky a shrneme pr´aci. Pˇr´ılohou bakal´aˇrsk´e pr´ace je pˇredevˇs´ım uˇzivatelsk´a dokumentace k syst´emu. Je pˇriloˇzeno i kompletn´ı sch´ema datab´azov´eho modelu a tak´e uk´azka skriptu generuj´ıc´ı vybranou ˇc´ast datab´aze. Kompletn´ı zdrojov´e k´ody i elektronick´a podoba tohoto dokumentu je rovnˇeˇz uvedena ve formˇe pˇr´ılohy na CD-ROM.
1
2 Z´akladn´ı popis aplikace Tato kapitola struˇcnˇe popisuje z´akladn´ı poˇzadavky na navrhovan´ y syst´em. Jej´ım z´amˇerem je sezn´amen´ı ˇcten´aˇre s ˇreˇsenou problematikou a formulace poˇzadavk˚ u na jednotliv´e ˇca´sti syst´emu. Webov´a aplikace bude rozdˇelena na tˇri hlavn´ı ˇc´asti – veˇrejn´a ˇca´st bude ˇ 1. poskytovat vˇsem n´avˇstˇevn´ık˚ um webu informace o florbalov´em dˇen´ı na ZCU Aministr´atorsk´a ˇca´st bude slouˇzit pro spr´avu str´anek a univerzitn´ı florbalov´e ligy. Posledn´ı ˇc´ast bude tak´e neveˇrejn´a a bude slouˇzit registrovan´ ym uˇzivatel˚ um. Registrovan´ı uˇzivatel´e budou m´ıt k dispozici roˇs´ıˇrenou funkˇcnost. Veˇrejn´a ˇc´ast bude zamˇeˇrena na prezentaci obecn´ ych informac´ı a bude poskytovat i komunikaˇcn´ı sluˇzby pomoc´ı pˇr´ıstupu do veˇrejn´eho f´ora. Administr´atorsk´e prostˇred´ı bude pˇr´ıstupno pouze spr´avci florbalu urˇcen´eho KTS2 . Bude nab´ızet snadn´e a pˇrehledn´e veden´ı florbalov´e univerzitn´ı ligy a moˇznost editace jednotliv´ ych str´anek pro veˇrejnou ˇca´st. Posledn´ı ˇca´st pro registrovan´e uˇzivatele zpˇr´ıstupn´ı hr´aˇc˚ um jednoduch´ y pˇrehled o sv´em t´ ymu a pro diskuzi vlastn´ı t´ ymov´e f´orum. Rozhodˇc´ım pak umoˇzn´ı zapisovat se na z´apasy, kter´e jsou ochotni p´ıskat a ani zde nebude chybˇet soukrom´e f´orum pro rozhodˇc´ı. Souˇca´st´ı poˇzadavk˚ u na syst´em je nez´avisl´a desktopov´a aplikace. Ta umoˇzn ˇuje zad´avat spr´avci informace i bez internetov´eho pˇr´ıpojen´ı. Desktopov´a aplikace simuluje svˇetelnou tabuli v hale ukazuj´ıc´ı hlavnˇe ˇcas utk´an´ı a pr˚ ubˇeˇzn´e sk´ore.
2.1
ˇ Z´ akladn´ı informace o florbalu na ZCU
Florbal je vˇseobecnˇe popul´arn´ı sport a ˇc´ım d´al v´ıce se rozˇsiˇruje. Na Z´apadoˇcesk´e univerzitˇe se mu vˇenuje nejen spoustu student˚ u, ale tak´e zamˇestnanc˚ u. To vedouc´ıho florbalu na univerzitˇe vede k zaloˇzen´ı turnaj˚ u jak pro studenty, tak pro zamˇestnance. Reprezentaˇcn´ı univerzitn´ı t´ ym sloˇzen´ y ze stu3 ˇ dent˚ u kaˇzdoroˇcnˇe reprezentuje Z´apadoˇceskou univerzitu na CAH , aby poˇ e Republice. mˇeˇrily sv´e s´ıly s ostatn´ımi t´ ymy v Cesk´ ˇ – University of West Bohemia in Pilsen ZCU KTS – Katedra tˇelesn´e v´ ychovy a sportu 3ˇ ˇ e akademick´e hry CAH – Cesk´
1
2
2
Z´akladn´ı popis aplikace
2.1.1
Poˇzadavky na aplikaci
Z´ akladn´ı informace o UFL
Univerzitn´ı florbalovou ligu mohou hr´at studenti a absolventi vˇsech studijn´ıch program˚ u (bakal´aˇrsk´ y, magistersk´ y, doktorandsk´ y) veˇrejn´ ych a soukrom´ ych 4 ˇ vysok´ ych ˇskol CR a jejich pˇr´atel´e bez rozd´ılu vˇeku. UFL se hraje podle pravidel Mezin´arodn´ı florbalov´e federace IFF5 . Hrac´ı syst´em se m˚ uˇze mˇenit podle pˇrihl´aˇsen´ ych t´ ym˚ u a vyˇrazovac´ı ˇca´st (play – off) nen´ı povinn´a.
2.2
Poˇ zadavky na aplikaci
Jedn´ım z hlavn´ıch poˇzadavk˚ u je rozˇs´ıˇren´ı informac´ı o florbalov´em dˇen´ı na univerzitˇe pro studenty, ale i zamˇestnance. Uˇzivatel bude moci zaregistrovat sv˚ uj t´ ym pomoc´ı pˇripraven´eho formul´aˇre. Pˇrihl´aˇsen´ı do syst´emu mu bude povoleno, aˇz spr´avce potvrd´ı jeho u ´ˇcast. Pot´e bude moci, vedouc´ı t´ ymu pˇridat hr´aˇce na soupisku sv´eho t´ ymu. Bude i moˇznost registrace rozhodˇc´ıch. Aplikace bude schopna zobrazovat r˚ uzn´e statistick´e u ´daje, jako napˇr´ıklad kanadsk´e bodov´an´ı hr´aˇc˚ u seˇrazen´e podle bod˚ u od nejvyˇsˇs´ıho. Po kaˇzd´em z´apase se budou uchov´avat kompletn´ı informace tj. hlavnˇe datum, kdy se z´apas odehr´al, kdo proti komu nastoupil a koneˇcn´ y v´ ysledek. Aplikace bude schopna odes´ılat emailov´e a textov´e zpr´avy hromadnˇe vˇsem uˇzivatel˚ um, ˇci jednotlivc˚ um. Velk´ y d˚ uraz bude kladen na rozlosov´an´ı z´apas˚ u ligy do jednotliv´ ych kol podle pˇrihl´aˇsen´ ych t´ ym˚ u a zad´an´ı ˇcasov´eho rozmez´ı vˇcetnˇe vynech´an´ı zimn´ıho zkouˇskov´eho obdob´ı. Pro pˇrehlednost jsou zbyl´e poˇzadavky na aplikaci d´ale rozdˇeleny do menˇs´ıch celk˚ u. Z poˇzadavk˚ u na syst´em a z jednotliv´ ych celk˚ u budeme vych´azet pˇri n´avrhu datab´azov´eho modelu.
2.2.1
Veˇ rejn´ a informaˇ cn´ı ˇ c´ ast
Informaˇcn´ı ˇc´ast webu pˇredstavuj´ı zejm´ena texty a ˇcl´anky o univerzitn´ı lize, ale tak´e o celkov´em florbalov´em dˇen´ı. Tato ˇc´ast bude poskytov´ana vˇsem, kteˇr´ı web navˇst´ıv´ı. Jedn´a se pˇredevˇs´ım o informace ke hran´ı UFL, kde se doˇcteme vˇsechny potˇrebn´e informace, jak se do ligy pˇrihl´asit, a co vˇsechno je nutn´e splnit. Dozv´ıme se i, jak prob´ıh´a aktu´aln´ı sez´ona, a jak si kter´ y t´ ym i hr´aˇc vede v bodov´an´ı. V pˇr´ıpadˇe z´ajmu o hran´ı ligy, ale nedostatku hr´aˇc˚ u pro za4 5
UFL – University floorball league IFF – International Floorball Federation
3
Z´akladn´ı popis aplikace
Poˇzadavky na aplikaci
loˇzen´ı t´ ymu bude zde i v´ ypis vedouc´ıch pˇrihl´aˇsen´ ych t´ ymu s jejich kontakty. Je zde uvedeno, co je nutn´e k tomu st´at se rozhodˇc´ım. D´ale budou k dispozici ˇ kde se dozv´ıme vˇsechny potˇrebn´e informace informace o reprezentaci ZCU, o tom, jak t´ ym reprezentuje svoj´ı univerzitu, a jak je moˇzn´e se do nˇej dostat. D´ale budou zveˇrejnˇeny i florbalov´e turnaje, kter´e KTS poˇra´d´a, jak pro studenty, tak pro zamˇestnance se vˇsemi potˇrebn´ ymi informacemi. Pˇr´ıstup na veˇrejn´e f´orum m´a kaˇzd´ y a kaˇzd´ y zde m˚ uˇze zanechat vzkaz. Ve veˇrejn´e ˇca´sti se budou nach´azet i soubory ke staˇzen´ı, kde mohou b´ yt r˚ uzn´e soubory, kter´e administr´ator urˇc´ı. Pro publikaci ˇcl´ank˚ u bude nutn´e kontaktovat spr´avce. Ve ˇ veˇrejn´e pas´aˇzi nebudou chybˇet ani kontakty na vedouc´ıho florbalu na ZCU. Shrnut´ı poˇzadavk˚ u na informaˇcn´ı ˇc´ast: 1. Vhodn´a a pˇrehledn´a prezentace ˇcl´ank˚ u a text˚ u (str´anek). 2. Vhodn´e zobrazen´ı struktury vˇsech bodov´an´ı. 3. Dok´azat rozliˇsit turnaje student˚ u od turnaj˚ u zamˇestnanc˚ u. 4. Vytvoˇren´ı formul´aˇr˚ u pro registraci t´ ymu/rozhodˇc´ıho. 5. Vytvoˇren´ı jednoduch´eho veˇrejn´eho f´ora. 6. Moˇznost staˇzen´ı souboru/z´apisu k z´apasu.
2.2.2
ˇ ast pro registrovan´ C´ e
Tato ˇca´st webu nen´ı veˇrejn´a. Je nutn´e pˇrihl´aˇsen´ı pomoc´ı jm´ena a hesla. Aplikace bude schopna sama rozpoznat, zda se jedn´a o hr´aˇce, nebo rozhodˇc´ıho a podle toho nastav´ı uˇzivateli pr´ava. Hr´aˇci se zobraz´ı struˇcn´ y statistick´ y pˇrehled prob´ıhaj´ıc´ı sez´ony. Zde uvid´ı kanadsk´e bodov´an´ı v t´ ymu, statistiky brank´aˇr˚ u t´ ymu, z´apasy odehran´e a jeˇstˇe ty, co t´ ym v sez´onˇe ˇcek´a odehr´at. Hr´aˇc bude m´ıt pˇr´ıstup do t´ ymov´eho f´ora, kter´e je soukrom´e. Kaˇzd´ y t´ ym m´a sv´e vlastn´ı. Pokud je hr´aˇc nav´ıc vedouc´ı t´ ymu, m´a moˇznost pˇrid´avat hr´aˇce do t´ ymu, ale i je mazat. Pokud je hr´aˇc z´aroveˇ n i rozhodˇc´ı, tak m´a pr´ava obou uˇzivatel˚ u. Rozhodˇc´ı m´a pˇr´ıstup ke vˇsem z´apas˚ um, kter´e se budou jeˇstˇe hr´at, ale s moˇznost´ı se pˇrihl´asit na z´apas, kter´ y je ochoten p´ıskat. Samozˇrejmost´ı je, ˇze rozhodˇc´ı maj´ı tak´e sv´e vlastn´ı f´orum pro snazˇs´ı komunikaci. V pˇr´ıpadˇe jak´ehokoliv probl´emu bude zde pˇripraven v´ ypis vˇsech rozhodˇc´ıch s jejich kontakty. Vˇsichni pˇrihl´aˇsen´ı uˇzivatel´e bez rozd´ılu funkce maj´ı moˇznost editovat sv´e u ´daje vyplnˇen´e pˇri registraci zejm´ena pˇrihlaˇsovac´ı jm´eno, heslo 4
Z´akladn´ı popis aplikace
Poˇzadavky na aplikaci
a kontakty. Shrnut´ı poˇzadavk˚ u jsem zobrazil pomoc´ı digramu pouˇzit´ı i s poznatky z pˇredchoz´ı ˇca´sti (Obr. 2.1). Diagram pouˇz´ıt´ı zobrazuj´ıc´ı role uˇzivatel˚ u kromˇe administr´atora. Vlozit prispevek na verejne forum Registrovat se jako rozhodci
Prihlasit tym Neregistrovany uzivatel
Prihlasit/odhlasit se na zapas
Stahnout zapis k zapasu v PDF
Vlozit prispevek na forum pro rozhodci Registrovany rozhodci
Editovat vlastni udaje Vlozit prispevek na tymove forum Registrovany hrac
Pridat/odstranit hrace
Hrac v roli vedouciho tymu
Obr´azek 2.1: Diagram pouˇzit´ı uˇzivatel˚ u.
2.2.3
Administr´ atorsk´ aˇ c´ ast
Do t´eto ˇc´asti aplikace se dostane pouze spr´avce florbalu urˇcen´ y KTS pomoc´ı zad´an´ı uˇzivatelsk´eho jm´ena a hesla. Po pˇrihl´aˇsen´ı ˇcek´a administr´atora rychl´ y pˇrehled prob´ıhaj´ıc´ı sez´ony. Spr´avce bude m´ıt pˇrehled o vˇsech uˇzivatel´ıch rozdˇelen´e podle funkcionality (hr´aˇc nebo rozhodˇc´ı) a bude moci editovat jejich u ´daje, popˇr´ıpadˇe je smazat ze syst´emu. Samozˇrejmˇe bude moci uˇzivatele i pˇrid´avat na soupisku pˇrihl´aˇsen´ ych t´ ym˚ u. D´ale bude spr´avci zpˇr´ıstupnˇeno nastavov´an´ı kanadsk´ ych bod˚ u vˇcetnˇe statistik brank´aˇr˚ u a nastaven´ı bod˚ u t´ ymu za odehran´e z´apasy. Dalˇs´ı schopnost´ı administr´atora bude u ´prava rozhodˇc´ıch k jednotliv´ ym z´apas˚ um, to znamen´a, ˇze bude moci editovat, kdo bude p´ıskat dan´ y z´apas. Spr´avce bude schopen odes´ılat emailov´e nebo textov´e zpr´avy. V neposledn´ı ˇradˇe bude pro administr´atora pˇripraven export soubor˚ u do PDF6 . Spr´avce bude povˇeˇren rozlosov´an´ım z´apas˚ u pro nadch´azej´ıc´ı sez´onu. Jeden z hlavn´ıch poˇzadavk˚ u pro administr´atora bude zmˇena text˚ u a ˇcl´ank˚ u ve veˇrejn´e ˇc´asti. St´avaj´ıc´ı texty bude moci editovat, ˇcl´anky bude schopen pˇrid´avat, mazat ˇci editovat. Spr´avce, stejnˇe jako ostatn´ı uˇzi6
PDF – Portable Document Format
5
Z´akladn´ı popis aplikace
Poˇzadavky na aplikaci
vatel´e, bude moci mˇenit sv´e pˇrihlaˇsovac´ı u ´daje. Pro shrnut´ı poˇzadavk˚ u jsem vyuˇzil opˇet digram pouˇzit´ı (Obr. 2.2). Diagram pouˇz´ıt´ı zobrazuj´ıc´ı moˇznosti administr´atora. Povolovani hracu/tymu/rozhodcich
Pridat/odstranit/upravit uzivatele
Pridat/odstranit/upravit tym
Upravit piskani zapasu
Upravit/odstranit zapas
Nastaveni bodovani
Upravit/odstranit zapas Spravce Rozlosovani zapasu
Odeslani emailu
Export do PDF
Editace verejnych stranek
Pridani/odstraneni/upraveni aktualit
Nastaveni prihlasovacich udaju
Obr´azek 2.2: Diagram pouˇzit´ı administr´atora.
2.2.4
Export soubor˚ u do PDF
Export soubor˚ u budou vyuˇz´ıvat hlavnˇe hr´aˇci a administr´ator. Hr´aˇci si budou moci vyexportovat ˇc´asteˇcnˇe pˇredvyplnˇen´ y z´apis k utk´an´ı. V z´apise budou pˇredvyplnˇen´e soupisky obou muˇzstev, kter´a maj´ı proti sobˇe nastoupit. D´ale n´azvy obou t´ ym˚ u rozˇrazen´e do kolonek dom´ac´ı a host´e. Pokud budou k utk´an´ı pˇrihl´aˇseni i rozhodˇc´ı, nebudou chybˇet ani jejich jm´ena. V posledn´ı ˇradˇe budou pˇredvyplnˇen´e zbyl´e formality, jako jsou ˇc´ıslo utk´an´ı, datum utk´an´ı, ˇcas utk´an´ı a poˇra´daj´ıc´ı t´ ym. Druh´ y styl exportu bude vyuˇz´ıvat pouze administr´a6
Z´akladn´ı popis aplikace
Poˇzadavky na aplikaci
tor, jedn´a se pˇredevˇs´ım o struˇcn´ y seznam vˇsech registrovan´ ych hr´aˇc˚ u hraj´ıc´ı univerzitn´ı ligu. D´ale vˇsechny statistick´e tabulky (kanadsk´e bodov´an´ı, statistiky brank´aˇr˚ u, celkov´ y pohled na tabulku), seznam rozhodˇc´ıch a podrobnˇejˇs´ı soupisky jednotliv´ ych t´ ym˚ u.
2.2.5
Rozlosov´ an´ı z´ apas˚ u
Rozlosov´an´ı z´apas˚ u na novou sez´onu bude m´ıt na starost administr´ator. Zde bude tˇreba zadat datum zaˇca´tku sez´ony (prvn´ı z´apas), jako dalˇs´ı datum bude zad´an´ı zimn´ıho zkouˇskov´eho obdob´ı, jelikoˇz se pˇres nˇej liga nehraje a posledn´ı datum z´apasu (konec sez´ony). Hrac´ı dny budou pouze pondˇel´ı a stˇreda vˇzdy od 19:40 prvn´ı z´apas a od 20:25 druh´ y z´apas v hrac´ı den. Syst´em si s´am zjist´ı poˇcet t´ ym˚ u a podle zadan´eho ˇcasov´eho obdob´ı rozvrhne z´apasy pro celou sez´onu. Pˇred koneˇcn´ ym potvrzen´ım si administr´ator m˚ uˇze data z´apas˚ u upravit podle sv´eho. D˚ uleˇzit´e pˇri potvrzen´ı rozlosov´an´ı je, aby se automaticky doplnily poˇr´adaj´ıc´ı t´ ymy, to znamen´a, ˇze prvn´ı z´apas v hrac´ı den poˇra´d´a dom´ac´ı t´ ym z druh´eho z´apasu a analogicky druh´ y z´apas poˇra´d´a dom´ac´ı t´ ym z prvn´ıho z´apasu, vˇzdy je poˇra´daj´ıc´ı dom´ac´ı t´ ym. Shrnut´ı poˇzadavk˚ u na rozlosov´an´ı: 1. Rozlosov´an´ı z´apas˚ u pro 4 – 10 t´ ym˚ u. 2. Moˇznost upraven´ı dat. 3. Zad´an´ı libovoln´eho ˇcasov´eho obdob´ı.
2.2.6
Desktopov´ a aplikace
Tato aplikace se bude pouˇz´ıvat v pˇr´ıpadˇe nefunkˇcn´ı svˇeteln´e informaˇcn´ı tabule v hale KTS. Ta zobrazuje aktu´aln´ı ˇcas z´apasu, g´oly dom´ac´ıch, host˚ u a aktu´aln´ı tˇretinu. Aplikace by mˇela ukazovat stejn´e hodnoty.
7
3 Anal´yza a problematika prostˇ redk˚ u pro tvorbu aplikace V t´eto kapitole si ˇrekneme, jak´e jsou vhodn´e prostˇredky pro ˇreˇsen´ı aplikace obdobn´eho rozsahu. Zm´ın´ıme i moˇznosti, kde by mohly nastat potenci´aln´ı probl´emy.
3.1
Programovac´ı jazyky
K programov´an´ı webov´ ych aplikac´ı se nejˇcastˇeji pouˇz´ıv´a znaˇckovac´ı HTML1 jazyk. S t´ımto jazykem se daj´ı vytvoˇrit statick´e webov´e str´anky. Znaˇckovac´ım jazykem se naz´ yv´a proto, ˇze zaˇc´ın´a znakem (napˇr.
) a konˇc´ı tak´e znakem, pˇred kter´ ym je nav´ıc lom´ıtko (napˇr.
). Pro naform´atov´an´ı stylu webov´e str´anky (barva, um´ıstˇen´ı textu, p´ısmo. . . ) se pouˇz´ıv´a CSS2 styly neboli kask´adov´e styly. Lze jich m´ıt na webu v´ıce, ale lze m´ıt i pouze jeden a form´atovat t´ım cel´ y web. Kask´adov´ y styl je vytvoˇren´ y ze selektor˚ u a deklarace. Selektor urˇcuje, na kter´e HTML prvky str´anky se pravidlo vztahuje. Proˇc se ˇr´ık´a kask´adov´e styly? Kask´ada urˇcuje zp˚ usob aplikov´an´ı pravidel. ” Uˇzivatelsk´e styly potlaˇc´ı vˇsechny ostatn´ı styly, individu´aln´ı styly potlaˇc´ı vloˇzen´e, pˇripojen´e a importovan´e styly. Vloˇzen´e styly maj´ı pˇrednost pˇred pˇripojen´ ymi styly. Pˇripojen´e a importovan´e styly jsou rovnocenn´e a aplikuj´ı se vˇsude, kde nejsou pouˇzity jin´e druhy styl˚ u. Styly prohl´ıˇzeˇce se pouˇz´ıvaj´ı v pˇr´ıpadˇe, ˇze nejsou zad´any jin´e styly.“ [5] Pro oˇziven´ı webov´ ych str´anek se pouˇz´ıv´a JavaScript. Pˇr´ıkladem pouˇzit´ı m˚ uˇze b´ yt napˇr´ıklad rozbalovac´ı menu, mˇen´ıc´ı se obr´azky a dalˇs´ı. JavaScript je z´avisl´ y na prohl´ıˇzeˇci hlavnˇe z d˚ uvodu, ˇze si ho uˇzivatel m˚ uˇze vypnout, nav´ıc v r˚ uzn´ ych verz´ıch nemus´ı pracovat spr´avnˇe. D´ale se pro programov´an´ı webov´ ych str´anek pouˇz´ıv´a jazyk PHP3 . S t´ımto jazykem nab´ yv´a web dynamiˇcnosti. Podstatnou vlastnost´ı tohoto jazyka je, ˇze 1
HTML – HyperText Markup Language CSS – Cascading Style Sheets 3 PHP – Hyperrtext Preprocessor 2
8
Anal´yza a problematika prostˇredk˚ u pro tvorbu aplikace
Hosting a dom´ena
nebˇeˇz´ı na stranˇe klienta, ale na stranˇe serveru, na rozd´ıl od JavaScriptu. Pomoc´ı PHP m˚ uˇzeme ukl´adat ˇci mˇenit data na webu, slouˇz´ı tak´e pro komunikaci s datab´az´ı. Dalˇs´ı v´ yhodou PHP je, ˇze zdrojov´ y k´od nelze zobrazit jako napˇr´ıklad HTML. Kromˇe tohoto jazyke lze pouˇz´ıt i jin´e programovac´ı jazyky (napˇr. Java, C#, Python). Zat´ım lze zm´ınˇen´e jazyky libovolnˇe kombinovat. Z´asadn´ı zmˇena je pˇri pouˇzit´ı webov´eho frameworku ASP.NET4 . Pˇri pouˇzit´ı tohoto frameworku ho nelze vyuˇz´ıvat s konkurenˇcn´ım PHP. ASP.NET je mnoˇzstv´ı knihoven pro v´ yvoj webov´ ych aplikac´ı v jazyce C#5 . Tento jazyk jako jazyk PHP bˇeˇz´ı na stranˇe serveru a umoˇzn ˇuje tak´e komunikaci s datab´az´ı. Hlavn´ım rozd´ılem je, ˇze PHP je dynamick´ y jazyk C# je silnˇe typovan´ y. ASP je vyv´ıjeno Microsoftem, oproti tomu PHP je opensource – tj. zdrojov´e ” k´ody jsou kaˇzd´emu k dispozici a kaˇzd´ y pokroˇcil´ y program´ator si jej m˚ uˇze dle libosti upravit. Jazyk se d´ıky tomu m˚ uˇze snadno d´al rozv´ıjet.“ [1] Projekt vyuˇz´ıv´a datab´azi, proto dalˇs´ım jazykem, kter´ y pouˇzijeme je SQL6 . Tento jazyk je standardem pro komunikaci s datab´az´ı, ˇcasto se mu tak´e ˇr´ık´a dotazovac´ı (komunikaˇcn´ı) jazyk. Syntaxe jazyku je podobn´a norm´aln´ımu jazyku (angliˇctinˇe).
3.2
Hosting a dom´ ena
Jelikoˇz budeme cht´ıt str´anky um´ıstit na internet, budeme potˇrebovat webhosting, kter´ y se st´av´a ned´ılnou souˇca´st´ı t´eto pr´ace. V dneˇsn´ı dobˇe je mnoho firem poskytuj´ıc´ıch tuto sluˇzbu. Nab´ıdky se liˇs´ı v nab´ızen´ ych technologi´ıch bezpeˇcnostn´ıch prvk˚ u, e-mailov´ ych schr´anek a tak´e podpoˇre r˚ uzn´ ych datov´ ych u ´loˇziˇst’ (MySQL, PostreSQL). Podle nab´ızen´ ych technologi´ı se odv´ıj´ı i cena za poskytnut´ı hostingu. Souˇca´st´ı kaˇzd´eho hostingu je dom´ena, coˇz je vlastnˇe adresa internetov´ ych str´anek. Dom´ena je pevnˇe definovan´a a pˇri jej´ım zad´av´an´ı se nerozliˇsuj´ı mal´a a velk´a p´ısmena, lze pouˇz´ıt i ˇc´ıslice a pomlˇcky. 4
ASP.NET – Active Server Pages .NET C# – C sharp 6 SQL – Structured Query Language 5
9
Anal´yza a problematika prostˇredk˚ u pro tvorbu aplikace
3.3
Datab´azov´y syst´em
Datab´ azov´ y syst´ em
Webov´e aplikace vyuˇz´ıvaj´ı r˚ uzn´a datov´a u ´loˇziˇstˇe. Pro tento projekt jsou vhodn´ ymi kandid´aty datab´azov´e syst´emy MySQL a PosgreSQL.
MySQL MySQL je relaˇcn´ı datab´azov´ y syst´em, kter´ y komunikuje jazykem SQL zm´ınˇen´ ym v´ yˇse. Tento datab´azov´ y syst´em je opensource, a je tedy volnˇe ˇsiˇriteln´ y. MySQL je v´ıce vyuˇz´ıv´an u webov´ ych aplikac´ı z d˚ uvodu jeho podpory pˇri poskytov´an´ı hostingu. Pro spr´avu datab´azov´eho syst´emu MySQL je vhodn´ y phpMyAdmin, coˇz je pokroˇcil´ y n´astroj pro spr´avu syst´emu pˇres webov´e rozhran´ı. MySQL se nejˇcastˇeji vyuˇz´ıv´a s PHP jazykem, kter´ y umoˇzn ˇuje pˇr´ıstup k dat˚ um (Obr. 3.1). Jak jsem zm´ınil, jde o relaˇcn´ı datab´azi, coˇz se d´a vysvˇetlit tak, ˇze datab´aze je zaloˇzen´a na tabulk´ach (Obr. 3.2). Kaˇzd´a tabulka obsahuje sloupce naz´ yvan´e atributy a hodnoty jsou ukl´ad´any do ˇra´dku. Tato datab´aze je typovan´a, to znamen´a, ˇze kaˇzd´ y sloupec m´a urˇcen´ y datov´ y typ. Uk´azka komunikace mezi klientem a datab´az´ı.
KLIENT
SERVER PHP
DATABÁZE MySQL
Obr´azek 3.1: Model komunikace klient – datab´aze
10
Anal´yza a problematika prostˇredk˚ u pro tvorbu aplikace
Datab´azov´y syst´em
MySQL
Databáze 1
tabulka 1 data
tabulka 2 data
Databáze 2
tabulka 1 data
Databáze 3
tabulka 1 data
tabulka 2 data tabulka 3 data
Obr´azek 3.2: Uk´azka struktury MySQL
PostgreSQL PostgreSQL je relaˇcn´ı datab´azov´ y syst´em. Stejnˇe jako MySQL jde o volnˇe ˇsiˇriteln´ y syst´em, zdrojov´e k´ody jsou veˇrejn´e. Jedn´a se o multiplatformn´ı datab´azov´ y syst´em pouˇziteln´ y pod syst´emy Linux i Windows. Datab´azov´ y syst´em m´a za sebou znaˇcn´ y v´ yvoj a i d´ıky tomu patˇr´ı ke ˇspiˇcce v oboru. PostgreSQL nab´ız´ı v´ıce datov´ ych typ˚ u neˇz zm´ınˇen´ y syst´em, nicm´enˇe nepodporuje ˇc´ısla bez znam´enka.
MySQL a PostgreSQL jsou dvˇe r˚ uzn´e datab´aze s rozd´ılnou filozofi´ı a samo” zˇrejmˇe i rozd´ıln´ ym uˇzivatelsk´ ym rozhran´ım. Pˇr´ıklad rozd´ıln´e funkcionality mezi MySQL a PostgreSQL -ˇ C´ ıslo zadan´ e jako r ˇetˇ ezecn na MySQL projde na PostgreSQL ne: SELECT 1+1 AS val; -> MySql: 2 PostgreSql: 2 SELECT 1+’1’ AS val; -> MySql: 2 PostgreSql: chyba SELECT 1+CAST(’1’ AS INT) AS val; -> MySql: 2 PostgreSql: 2“ [12]
11
Anal´yza a problematika prostˇredk˚ u pro tvorbu aplikace Architektonick´e vzory
3.4
Architektonick´ e vzory
Pro v´ yvoj aplikac´ı lze vyuˇz´ıt r˚ uzn´e n´avrhov´e vzory. V´ yhodou n´avrhov´ ych vzor˚ u je logick´e rozˇclenˇen´ı aplikace a pˇrehlednˇejˇs´ı k´od. My si zde pop´ıˇseme nejˇcastˇejˇs´ı pˇr´ıpad, se kter´ ym se setk´av´ame u webov´ ych technologi´ı. Je j´ım 7 MVC model, kter´ y srovn´ame s jeho velk´ ym bratrem MVP8 modelem.
MVC Nyn´ı si pop´ıˇseme, jak vypadaj´ı komponenty M, V a C v prostˇred´ı webu. Pro lepˇs´ı pochopen´ı a pˇredstavu je MVC model zn´azornˇen na obr´azku n´ıˇze (obr. 3.3). Model Model obsahuje logiku. Slouˇz´ı pro komunikaci s datab´az´ı, mohou zde b´ yt v´ ypoˇcty a dalˇs´ı. Funkc´ı modelu je pˇrijet´ı parametr˚ u, pˇriˇcemˇz nez´aleˇz´ı na tom, odkud jsou. Jeho v´ ystupem jsou v´ ystupn´ı data, pˇriˇcemˇz netuˇs´ı, jak budou data zform´atov´ana a zobrazena. Model nem´a se zobrazen´ım nic spoleˇcn´eho. [10] [11] View (pohled) Jak n´azev napov´ıd´a, funkc´ı t´eto ˇca´sti je zobrazen´ı v´ ystupu uˇzivateli a obsahuje minimum logiky. S vˇetˇs´ı pravdˇepodobnost´ı je v´ ystupem vyrenderov´an´ı HTML, ale v nˇekter´ ych pˇr´ıpadech to m˚ uˇze b´ yt i jin´ y form´at napˇr´ıklad XML9 . Tak jako Model, View netuˇs´ı, odkud mu data pˇriˇsla. [10] [11] Controller Tato komponenta propojuje celou architekturu, Controller se obˇcas povaˇzuje za prostˇredn´ıka, se kter´ ym komunikuj´ı vˇsechny komponenty vˇcetnˇe uˇzivatele. Controller se nejˇcastˇeji skl´ad´a ze dvou ˇca´st´ı, prvn´ı je Front Controller, obˇcas naz´ yvan´ y Router, kter´ y zavol´a pˇr´ısluˇsn´ y Controller na z´akladˇe parametr˚ u. Volan´ y Controller podle parametr˚ u pozn´a, co se po nˇem ˇz´ad´a. [10] [11] 7
MVC – Model, View, Controller MVP – Model , View, Presenter 9 XLM – Extensible Markup Language – obecn´ y znaˇckovac´ı jazyk. 8
12
Anal´yza a problematika prostˇredk˚ u pro tvorbu aplikace Architektonick´e vzory Zobrazen´ı MVC architektury vˇcetnˇe datab´aze a uˇzivatele, m´ısto uˇzivatele si lze pˇredstavit prohl´ıˇzeˇc. požadavek Controller
Model
Uživatel
data
dotaz do DB
zobrazení požadavku Databáze MySQL
View
Obr´azek 3.3: Sch´ema MVC architektury.
MVP Tento model struˇcnˇe srovn´ame s pˇredeˇsl´ ym modelem a pro pˇredstavu ho opˇet zn´azorn´ıme pomoc´ı sch´ematu (obr. 3.4). Zmˇen oproti MVC je pomˇernˇe dost. Uˇzivatel nyn´ı komunikuje pouze s View. Z toho vypl´ yv´a, ˇze zpracov´av´a vstup i v´ ystup na rozd´ıl od MVC, kde vstup zpracov´aval Controller. View nem´a ˇza´dnou aplikaˇcn´ı logiku, pouze vol´a pˇr´ısluˇsn´e metody v Presenteru na z´akladˇe vstupu. Presenter uˇz obsahuje aplikaˇcn´ı i prezenˇcn´ı logiku. Presenter m´a vazbu s Modelem, coˇz mu zajiˇst’uje urˇcitou manipulaci, ˇc´ımˇz zajist´ı aktualizaci ve View, nebo pˇr´ımo s´am ovlivn ˇuje View. MVP se d´a d´ale rozdˇelit podle zodpovˇednosti, jakou nese, na dvˇe variace. Prvn´ı se naz´ yv´a Supervising Controller a druh´a Passive View. [10] [11]
13
Anal´yza a problematika prostˇredk˚ u pro tvorbu aplikace Knihovny a n´astroje Zobrazen´ı MVP architektury vˇcetnˇe datab´aze a uˇzivatele, m´ısto uˇzivatele si lze pˇredstavit prohl´ıˇzeˇc.
Presenter
Uživatel
Model
požadavek
data
dotaz do DB
zobrazení požadavku Databáze MySQL
View
Obr´azek 3.4: Sch´ema MVP architektury.
3.5
Knihovny a n´ astroje
V t´eto ˇca´sti pop´ıˇseme knihovny a n´astroje, kter´e n´am budou uˇziteˇcn´e pˇri realizaci pr´ace.
3.5.1
Knihovna DIBI
DIBI je knihovna pro komunikaci s datab´az´ı. Podporuje mnoho datab´azov´ ych syst´em˚ u i dva vhodn´e kandid´aty zm´ınˇen´e v kapitole 3.3. Jedn´a se o jednoduchou knihovnu pro elegantn´ı z´apis pˇr´ıkaz˚ u. DIBI lze svobodnˇe pouˇz´ıvat i v komerˇcn´ıch projektech. Jej´ım c´ılem je maxim´alnˇe ulehˇcit pr´aci program´ator˚ um (snadn´ y pˇr´ıstup k metod´am, zjednoduˇsit z´apis SQL pˇr´ıkaz˚ u. . . ), eliminovat v´ yskyt chyb, pˇrenositelnost mezi datab´azov´ ymi syst´emy a zachovat maxim´aln´ı jednoduchost. Tˇr´ıda dibi m´a jednu v´ yhodu, kv˚ uli kter´e ji vyuˇz´ıv´am, a to, ˇze je vˇzdy po ruce. Nemus´ım z´ısk´avat instanci pˇripojen´ı. [8]
3.5.2
Knihovny pro export PDF soubor˚ u
Aplikace m´a b´ yt schopna generovat PDF soubory. K tomu je ˇcasto vyuˇz´ıv´ana nˇekter´a z knihoven pro generov´an´ı PDF dokument˚ u. Pˇri vyuˇzit´ı PHP
14
Anal´yza a problematika prostˇredk˚ u pro tvorbu aplikace Knihovny a n´astroje
je jedna z nejzn´amˇejˇs´ıch knihoven mPDF, samozˇrejmˇe existuj´ı i jin´e, napˇr´ıklad TCPDF knihovna. Pˇri vyuˇzit´ı ASP.NET to je iTextSharp knihovna.
mPDF Tato knihovna je volnˇe pouˇziteln´a. Knihovna vytv´aˇr´ı PDF soubory v UTF–8 k´odov´an´ı, tedy vˇcetnˇe ˇcesk´ ych znak˚ u. Funguje na principu, ˇze vezme HTML k´od, popˇr´ıpadˇe i CSS, a vytvoˇr´ı z nˇej PDF soubor. D´a se ˇr´ıct, ˇze vytiskne do souboru naprogramovanou str´anku v HTML.
iTextSharp Tato knihovna umoˇzn ˇuje vytv´aˇret PDF soubory na z´akladˇe dat z XML nebo datab´aze. Knihovna je open source, tud´ıˇz je volnˇe pouˇziteln´a.
3.5.3
HTML editor
Jedn´ım z poˇzadavk˚ u na aplikaci je u ´prava st´avaj´ıc´ıch HTML str´anek ve veˇrejn´e ˇca´sti a moˇznost pˇrid´an´ı ˇci u ´prava ˇcl´ank˚ u. HTML editory se daj´ı rozdˇelit 10 na textov´e, objektov´e a WYSIWYG . Pro n´aˇs u ´ˇcel vyuˇzijeme WYSIWYG editor, protoˇze nevyˇzaduje ˇza´dnou znalost HTML jazyka. Tˇechto editor˚ u existuje nespoˇcetn´e mnoˇzstv´ı, my si zde pop´ıˇseme pouze jeden, kter´ y pozdˇeji vyuˇzijeme v implementaci.
CLEditor Editor je pˇrehledn´ y a jeho nejvˇetˇs´ı v´ yhodou oproti ostatn´ım HTML editor˚ um je jeho velikost, kterou zab´ır´a. Mezi dalˇs´ı v´ yhody patˇr´ı jeho rychlost naˇc´ıt´an´ı a snadn´e pouˇz´ıv´an´ı. Tento n´astroj je vyd´av´an pod svobodnou licenc´ı a nebr´an´ı n´am v jej´ım vyuˇzit´ı. Editor je postaven nad knihovnou jQuery. [9] 10
WYSIWYG – What You See Is What You Get
15
Anal´yza a problematika prostˇredk˚ u pro tvorbu aplikace
3.6
Odes´ıl´an´ı zpr´av
Odes´ıl´ an´ı zpr´ av
Z poˇzadavk˚ u vypl´ yv´a, ˇze administr´ator m˚ uˇze odes´ılat e-mailov´e a textov´e zpr´avy. Zde by se mohly vyskytnout probl´emy pˇri realizaci syst´emu. Odeslat e-mailovou zpr´avu lze pomoc´ı funkce v PHP jazyce, pokud to poskytovatel umoˇzn ˇuje. V opaˇcn´em pˇr´ıpadˇe je nutn´e si napsat vlastn´ıho SMTP11 klienta a n´aslednˇe vyuˇz´ıt funkce PHP pro odesl´an´ı. Pro odes´ıl´an´ı textov´ ych zpr´av se vyuˇz´ıv´a tzv. SMS br´ana. Dˇr´ıve s t´ım nebyl takov´ y probl´em jako dnes. Princip byl v tom, ˇze se zpr´ava odeslala jako e-mail, kde se ˇca´st adresy pˇred zavin´aˇcem vyplnila telefonn´ım ˇc´ıslem a ˇca´st za zavin´aˇcem byl n´azev oper´atora. Nˇekteˇr´ı ˇceˇst´ı oper´atoˇri tuto moˇznost nab´ızej´ı ˇ sen´ım tohoto probl´emu m˚ i dnes, nˇekteˇr´ı ˇc´asteˇcnˇe a nˇekteˇr´ı v˚ ubec. Reˇ uˇze b´ yt placen´a SMS br´ana, kde se plat´ı za kaˇzdou odeslanou zpr´avu. Po konzultaci se zadavatelem jsme tuto moˇznost vyˇradili. Odes´ıl´an´ı textov´ ych zpr´av jen ˇc´asti uˇzivatel˚ um nem´a smysl.
11
SMTP – Simple Mail transfer Protocol
16
4 N´avrh datab´azov´eho modelu Z´akladem webov´e aplikace je spr´avn´ y n´avrh datab´aze. Jej´ı struktura je pops´ana pomoc´ı datov´eho modelu, kter´ y obsahuje kompletn´ı definici vˇsech uvaˇzovan´ ych entit, atribut˚ u a relac´ı vych´azej´ıc´ıch z poˇzadavk˚ u na aplikaci. Z v´ ysledn´eho modelu lze jiˇz pˇr´ımo vygenerovat pr´azdnou datab´azi pro florbalov´e ˇ kterou je pot´e moˇzno plnit daty. V t´eto kapitole se tedy sezn´adˇen´ı na ZCU, m´ıme s n´avrhem datab´aze na poˇzadovanou aplikaci. Pˇri vytv´aˇren´ı datov´eho modelu jsem se snaˇzil co nejv´ıce vych´azet z poˇzadavk˚ u na aplikaci. C´ılem je navrhnout kvalitn´ı datovou strukturu pro konkr´etn´ı aplikaci a datab´azov´ y syst´em, kter´ y bude tato aplikace vyuˇz´ıvat k uloˇzen´ı dat. Standardn´ı f´aze n´avrhnu datab´aze. Požadaky na aplikaci
Konceptuální návrh
Logický návrh
Fyzický návrh
Obr´azek 4.1: Model n´avrhu datab´aze
4.1
Konceptu´ aln´ı n´ avrh sch´ ematu
V t´eto ˇca´sti si ˇrekneme, co je obsahem datab´aze. Nebereme v u ´vahu pozdˇejˇs´ı implementaci ani pouˇzit´ y datab´azov´ y syst´em. Sch´ema si pro usnadnˇen´ı rozdˇel´ıme do v´ıce u ´rovn´ı podle funkcionality, ze kter´ ych pak vznikne v´ ysledn´ y datab´azov´ y model. Sloˇzen´e sch´ema nalezneme v Pˇr´ıloze A na obr. 7.1. Zad´an´ı ˇcasto explicitnˇe neˇr´ık´a, co m´a syst´em obsahovat, ale sp´ıˇse to, co ” od nˇej klient oˇcek´av´a nebo jak by mˇel fungovat. Naˇs´ım u ´kolem bude v zad´an´ı identifikovat tzv. z´akladn´ı entity. Jedn´a se o prvky, kter´e jsou pro n´as zaj´ımav´e a o kter´ ych m´a z datab´azov´eho hlediska smysl uchov´avat data. Model, ve kter´em jsou vyobrazeny tyto entity a vztahy mezi nimi, se naz´ yv´a konceptu´aln´ı.“ [4]
17
N´avrh datab´azov´eho modelu
4.1.1
Konceptu´aln´ı n´avrh sch´ematu
Spr´ ava uˇ zivatel˚ u
ˇ ast pro spr´avu uˇzivatel˚ C´ u slouˇz´ı pˇredevˇs´ım k tomu, aby bylo zˇrejm´e, jakou funkci dan´ y uˇzivatel zast´av´a. Z poˇzadavk˚ u plyne, ˇze uˇzivatel m˚ uˇze b´ yt hr´aˇc nebo rozhodˇc´ı, ˇci oboje, proto jsem se rozhodl udˇelat nadˇrazenou strukturu, abych zamezil duplicitˇe dat (napˇr. je zbyteˇcn´e m´ıt jm´eno a pˇr´ıjmen´ı u rozhodˇc´ıho nebo u hr´aˇce, kdyˇz jde o jednoho a toho sam´eho uˇzivatele). V tuto chv´ıli m´ame dostatek informac´ı pro vytvoˇren´ı potˇrebn´ ych entit, kter´e jsou nutn´e pro aplikaˇcn´ı funkcionalitu t´eto ˇc´asti. Na n´asleduj´ıc´ım obr´azku jsou zobrazeny vˇsechny entity vˇcetnˇe jejich vztah˚ u a atribut˚ u slouˇz´ıc´ı pro uchov´an´ı informac´ı o uˇzivateli. STATUS
FAKULTA
# * id status o status o zkratka_statusu o cena_semestr
# * id fakulty o zkratka_fakulty
UZIVATELE studuje
GOLMAN * id golman o pocet zapasu o obdrzene goly o zakroky o pocet vyher
HRAC # * id hrace * golman o cislo dresu o vstrelene goly o asistence o trestne minuty o karty
je
je
# * id uzivatele o jmeno o prijmeni o email o telefon o aktivni o rozhodci o prihlasovaci_jmeno o heslo o poznamky
POST # * id post o post o zkratka
je ROZHODCI # * id rozhodci o poznamky
hraje
hraje za
ROLE o id role o role
TYM # * id teamu o nazev o vyhry o prohry o remizi o poznamky
FORUM # * id zpravy o text o email o vlozeno
Obr´azek 4.2: Konceptu´aln´ı sch´ema ˇc´asti pro rozdˇelen´ı uˇzivatel˚ u.
18
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
Vztahy mezi entitami Po vytvoˇren´ı entit v pˇredchoz´ı ˇc´asti si pop´ıˇseme jednotliv´e vztahy. Pro pˇrehlednost si definujeme strukturu popisu, kter´a bude vypadat n´asledovnˇe, a budeme ji vyuˇz´ıvat i u ostatn´ıch ˇca´st´ı. V prvn´ı ˇradˇe bude slovn´ı prohl´aˇsen´ı, pot´e n´asleduje sch´ema a nakonec bliˇzˇs´ı popis. Jeden uˇzivatel m˚ uˇze b´yt jeden hr´aˇc. Hr´aˇc je pr´avˇe jeden uˇzivatel. UZIVATELE
HRAC je
Obr´azek 4.3: Vztah UZIVATELE – HRAC Uˇzivatel je nadˇrazen´a struktura pro registrovan´e osoby. Slouˇz´ı k rozdˇelen´ı na hr´aˇce nebo rozhodˇc´ı. Uˇzivatel m˚ uˇze b´ yt hr´aˇcem i rozhodˇc´ım z´aroveˇ n. Jeden uˇzivatel m˚ uˇze b´yt jeden rozhodˇc´ı. Rozhodˇc´ı je pr´avˇe jeden uˇzivatel. UZIVATELE
ROZHODCI je
s Obr´azek 4.4: Vztah UZIVATELE – ROZHODCI Popis t´eto vazby je stejn´ y jako popis vztahu UZIVATELE – HRAC. Jeden hr´aˇc m˚ uˇze b´yt brank´aˇrem. Brank´aˇr je jeden hr´aˇc. HRAC
GOLMAN je
Obr´azek 4.5: Vztah HRAC – GOLMAN Tato vazba vznikla z d˚ uvodu toho, ˇze uˇzivatel m˚ uˇze b´ yt brank´aˇrem i hr´aˇcem z´aroveˇ n. Pravidla nezakazuj´ı, aby hr´aˇc jednou hr´al v roli u ´toˇcn´ıka a podruh´e nastoupil do br´any jako brank´aˇr. V pˇr´ıpadˇe, ˇze by se toto pravidlo zak´azalo, tak by se uˇzivatel dˇelil jeˇstˇe na brank´aˇre.
19
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
Jeden t´ym m´a v´ıce hr´aˇc˚ u. V´ıce hr´aˇc˚ u hraje za jeden t´ym. HRAC
TYM hraje
Obr´azek 4.6: Vztah HRAC – TYM Kaˇzd´ y hr´aˇc hraje pr´avˇe za jeden urˇcit´ y t´ ym. Hr´aˇc nem˚ uˇze hr´at za v´ıce t´ ym˚ u z´aroveˇ n. Kaˇzd´ y t´ ym m˚ uˇze m´ıt libovoln´ y poˇcet hr´aˇc˚ u. V´ıce hr´aˇc˚ u zast´av´a jednu roli. Jednu roli m˚ uˇze zast´avat v´ıce hr´aˇc˚ u. HRAC
ROLE hraje
Obr´azek 4.7: Vztah HRAC – ROLE Kaˇzd´ y hr´aˇc zast´av´a urˇcitou roli v t´ ymu (napˇr. vedouc´ı t´ ymu), tato vazba n´am pˇriˇrazuje ke kaˇzd´emu hr´aˇci jeho roli. Kaˇzd´ y hr´aˇc m˚ uˇze zast´avat pouze jednu roli. Jeden post m˚ uˇze hr´at v´ıce hr´aˇc˚ u. V´ıce hr´aˇc˚ u hraje jeden post. HRAC
POST hraje
Obr´azek 4.8: Vztah HRAC – POST Kaˇzd´ y hr´aˇc m´a urˇcit´ y post (napˇr. u ´toˇcn´ık). Pomoc´ı t´eto vazby rozpozn´ame posty u jednotliv´ ych hr´aˇc˚ u. Kaˇzd´ y hr´aˇc m˚ uˇze hr´at ofici´alnˇe jeden post, n´ ybrˇz v z´apase se nekontroluje, zda je hr´aˇc na dan´em postu.
20
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
V´ıce hr´aˇc˚ u m´a jeden status. Jeden status m˚ uˇze m´ıt v´ıce hr´aˇc˚ u. HRAC
STATUS
Obr´azek 4.9: Vztah HRAC – STATUS Kaˇzd´ y hr´aˇc m´a sv˚ uj urˇcit´ y status (napˇr. zda je student zapsan´ y ve stagu). D´ıky t´eto vazbˇe v´ıme, jak´ y m´a hr´aˇc status. Kaˇzd´ y hr´aˇc m˚ uˇze m´ıt pouze jeden status. Jedna fakulta m´a v´ıce hr´aˇc˚ u. V´ıce hr´aˇc˚ u m˚ uˇze studovat jednu fakultu. HRAC
FAKULTA studuje
Obr´azek 4.10: Vztah HRAC – FAKULTA Hr´aˇci studuj´ı r˚ uzn´e fakulty a tato vazba n´am pˇriˇrazuje ke kaˇzd´emu jednu z pˇreddefinovan´ ych fakult. Hr´aˇc m˚ uˇze m´ıt pˇriˇrazenou pouze jednu fakultu, i kdyˇz ve skuteˇcnosti m˚ uˇze studovat v´ıce fakult. Je na uˇzivateli, kterou fakultu zvol´ı. Jeden t´ym m˚ uˇze vloˇzit v´ıce pˇr´ıspˇevk˚ u. V´ıce pˇr´ıspˇevk˚ u m˚ uˇze b´yt od jednoho t´ymu. TYM
FORUM
Obr´azek 4.11: Vztah TYM – FORUM Kaˇzd´ y t´ ym m´a sv´e soukorm´e f´orum pro komunikaci mezi hr´aˇci. Hr´aˇci nejsou omezeni v poˇctu vloˇzen´ ych zpr´av. D´ıky t´eto vazbˇe dok´aˇzeme urˇcit t´ ym, kter´ y vloˇzil pˇr´ıspˇevek.
21
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
Jeden rozhodˇc´ı m˚ uˇze vloˇzit v´ıce zpr´av. V´ıce zpr´av m˚ uˇze b´yt od jednoho rozhodˇc´ıho ROZHODCI
FORUM
. Obr´azek 4.12: Vztah ROZHODCI – FORUM Rozhodˇc´ı maj´ı pro lepˇs´ı komunikaci svoje soukrom´e f´orum. D´ıky t´eto vazbˇe dok´aˇzeme urˇcit, kter´e zpr´avy vloˇzili rozhodˇc´ı. Atributy jednotliv´ ych entit V t´eto ˇca´sti si pop´ıˇseme jednotliv´e atributy z navrhnut´ ych entit. Vˇsechny atributy vych´azej´ı z poˇzadavk˚ u na aplikaci. Stejnˇe jako u vztah˚ u mezi entitami i zde si definujeme urˇcitou strukturu, kterou budeme dodrˇzovat. Nejprve si o urˇcit´e entitˇe ˇrekneme, k ˇcemu slouˇz´ı, a pot´e pop´ıˇseme jednotliv´e atributy entity vˇcetnˇe datov´ ych typ˚ u. V pˇr´ıpadˇe jedn´a-li se o prim´arn´ı kl´ıˇc, bude za datov´ ym typem zkratka PK, jedn´a-li se o ciz´ı kl´ıˇc, bude zkratka FK. Nakonec bude n´asledovat struˇcn´ y popis konkr´etn´ıho atributu. Atributy konkr´etn´ı entity budou vyznaˇcov´any bezpatkov´ ym p´ısmem, datov´ e typy budou vyznaˇcov´any strojov´ ym p´ısmem. N´azev ENTITY bude oznaˇcen velk´ ym p´ısmem a kapit´alkami.
22
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
UZIVATELE Tato entita slouˇz´ı pro uchov´an´ı informac´ı o uˇzivatel´ıch, jde pˇredevˇs´ım o jm´eno a pˇr´ıjmen´ı, kontaktn´ı u ´daje ve formˇe telefonn´ıho ˇc´ısla a emailov´e adresy, pˇrihlaˇsovac´ı u ´daje a pˇr´ıpadn´ y koment´aˇr. Kaˇzd´ y, kdo se registruje a zast´av´a ˇcinnost rozhodˇc´ıho nebo hr´aˇce m´a v t´eto tabulce z´aznam. N´ azev atributu
Datov´ y typ
Popis
id uzivatele jmeno prijmeni email telefon aktivni rozhodci prihlasovaci jmeno heslo poznamky
INTEGER, PK VARCHAR(32) VARCHAR(32) VARCHAR(64) VARCHAR(32) BOOLEAN BOOLEAN VARCHAR(32) VARCHAR(16) TEXT
Identifikaˇcn´ı ˇc´ıslo uˇzivatele Jm´eno uˇzivatele Pˇr´ıjmen´ı uˇzivatele Emailov´a adresa uˇzivatele Telefonn´ı ˇc´ıslo na uˇzivatele Identifik´ator, zda je uˇzivatel aktivn´ı Identifik´ator, zda je uˇzivatel rozhodˇc´ı Pˇrihlaˇsovac´ı jm´eno uˇzivatele do syst´emu Heslo k pˇrihl´aˇsen´ı uˇzivatele M´ısto pro pˇr´ıpadn´e pozn´amky k uˇzivateli
Tabulka 4.1: Atributy entity UZIVATELE
ROZHODCI Zde si uchov´av´ame vˇsechny rozhodˇc´ı, kter´e se pˇrihlaˇsuj´ı na z´apasy, kter´e chtˇej´ı p´ıskat. Rozezn´av´ame je podle jejich identifik´ator˚ u. N´ azev atributu id rozhodci id uzivatele poznamky
Datov´ y typ
Popis
INTEGER, PK Identifikaˇcn´ı ˇc´ıslo rozhodˇc´ıho INTEGER, FK Identifikaˇcn´ı ˇc´ıslo uˇzivatele TEXT, FK M´ısto pro pˇr´ıpadn´e pozn´amky k rozhodˇc´ımu Tabulka 4.2: Atributy entity ROZHODCI
23
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
HRAC Entita HRAC uchov´av´a urˇcit´e informace o hr´aˇci, jedna z nejd˚ uleˇzitˇejˇs´ıch je, za jak´ ym t´ ym hr´aˇc hraje, pot´e jeho bodov´an´ı. Nechyb´ı zde ani informace napˇr´ıklad o tom, co hr´aˇc studuje za fakultu nebo jak´a je jeho role v t´ ymu. N´ azev atributu
Datov´ y typ
Popis
id hrace id uzivatele id tymu id status id fakulty id post id role golman cislo dresu vstrelene goly asistence trestne minuty karty
INTEGER, PK INTEGER, FK INTEGER, FK INTEGER, FK INTEGER, FK INTEGER, FK INTEGER, FK BOOLEAN INTEGER INTEGER INTEGER INTEGER INTEGER
Identifikaˇcn´ı ˇc´ıslo hr´aˇce Identifikaˇcn´ı ˇc´ıslo uˇzivatele Identifikaˇcn´ı ˇc´ıslo t´ ymu, za kter´ y hr´aˇc hraje Identifikaˇcn´ı ˇc´ıslo urˇcuj´ıc´ı status hr´aˇce Identifikaˇcn´ı ˇc´ıslo fakulty hr´aˇce, kterou hraje Identifikaˇcn´ı ˇc´ıslo postu, kter´ y hr´aˇc zast´av´a Identifikaˇcn´ı ˇc´ıslo role, kterou hr´aˇc zastav´a Identifik´ator, zda je hr´aˇc golman ˇ ıslo dresu s kter´ C´ ym hr´aˇc hraje Poˇcet vstˇrelen´ ych g´ol˚ u Poˇcet asistenc´ı Poˇcet trestn´ ych minut Poˇcet ˇcerven´ ych karet
Tabulka 4.3: Atributy entity HRAC GOLMAN Zde jsou ukl´ad´any vˇsechny potˇrebn´e informace pro veden´ı statistik brank´aˇr˚ u, ze kter´ ych lze vypoˇc´ıtat napˇr. procentu´aln´ı u ´spˇeˇsnost a dalˇs´ı. N´ azev atributu
Datov´ y typ
Popis
id golman id uzivatele pocet zapasu obdrzene goly zakroky pocet vyher
INTEGER, PK INTEGER, FK INTEGER INTEGER INTEGER INTEGER
Identifikaˇcn´ı ˇc´ıslo brank´aˇre Identifikaˇcn´ı ˇc´ıslo uˇzivatele Poˇcet odchytan´ ych z´apas˚ u Poˇcet obdrˇzen´ ych branek Celkov´ y poˇcet z´akrok˚ u Poˇcet v´ yher
Tabulka 4.4: Atributy entity GOLMAN
24
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
TYM Entita pro spr´avu t´ ymu, zde si uchov´av´ame potˇrebn´e informace k jednotliv´ ym t´ ym˚ um pro vyhodnocen´ı tabulky. Zde je uchov´av´a i n´azev t´ ymu. N´ azev atributu id tymu nazev vyhry prohry remizy poznamky
Datov´ y typ INTEGER, PK VARCHR(32), FK INTEGER INTEGER INTEGER TEXT
Popis Identifikaˇcn´ı ˇc´ıslo t´ ymu N´azev t´ ymu Poˇcet v´ yher t´ ymu Poˇcet proher t´ ymu Poˇcet rem´ız t´ ymu Pˇr´ıpadn´e m´ısto pro pozn´amky k t´ ymu
Tabulka 4.5: Atributy entity TYM
FAKULTA V t´eto entitˇe m´ame uchovan´e pˇreddefinovan´e zkratky fakult na Z´apadoˇcesk´e univerzitˇe v Plzni. N´ azev atributu id fakulty zkratka fakulty
Datov´ y typ
Popis
INTEGER, PK Identifikaˇcn´ı ˇc´ıslo fakulty ˇ VARCHR(16) Zkratka fakult ZCU Tabulka 4.6: Atributy entity FAKULTA
25
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
POST Zde m´ame uchovan´e pˇreddefinovan´e posty, kter´e m˚ uˇzou hr´aˇci zast´avat. N´ azev atributu id post post zkratka
Datov´ y typ
Popis
INTEGER, PK Identifikaˇcn´ı ˇc´ıslo postu VARCHR(16) N´azev hrac´ıho postu VARCHR(2) Zkratka hrac´ıch pozic Tabulka 4.7: Atributy entity POST
ROLE V t´eto entitˇe m´ame uchovan´e pˇreddefinovan´e role, kter´e m˚ uˇzou hr´aˇci zast´avat. N´ azev atributu id role role
Datov´ y typ
Popis
INTEGER, PK Identifikaˇcn´ı ˇc´ıslo role VARCHR(32) N´azev role Tabulka 4.8: Atributy entity ROLE
STATUS Zde m´ame uloˇzen´e pˇreddefinovan´e statusy, kter´e m˚ uˇzou hr´aˇci vlastnit. N´ azev atributu
Datov´ y typ
Popis
id status status zkratka statusu cena semestr
INTEGER, PK VARCHR(16) VARCHR(4) INTEGER
Identifikaˇcn´ı ˇc´ıslo statusu N´azev statusu Zkratka statusu Cena, kterou m´a hr´aˇc zaplatit za semestr
Tabulka 4.9: Atributy entity STATUS
26
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
FORUM V t´eto entitˇe si ukl´ad´ame pˇr´ıspˇevky ze vˇsech f´or (pro t´ ymy, rozhodˇc´ı a veˇrejn´e). N´ azev atributu id zpravy vlozil text email vlozeno
Datov´ y typ
Popis
INTEGER, PK Identifikaˇcn´ı ˇc´ıslo zpr´avy VARCHR(32) Jm´eno, pˇrezd´ıvka pod kterou se zobraz´ı zpr´ava TEXT Vloˇzen´ y pˇr´ıspˇevek VARCHR(32) Kontaktn´ı email DATETIME Vloˇzen´ y pˇr´ıspˇevek Tabulka 4.10: Atributy entity FORUM
4.1.2
Spr´ ava z´ apas˚ u
Tato ˇc´ast se zab´ yv´a strukturou z´apasu, z poˇzadavk˚ u plynou vˇsechny potˇrebn´e informace pro vytvoˇren´ı jednotliv´ ych z´apas˚ u. Na n´asleduj´ıc´ım obr´azku jsou zobrazeny vˇsechny entity potˇrebn´e k vytvoˇren´ı z´apasu vˇcetnˇe jejich vazeb. Ke kaˇzd´emu z´apasu jsou potˇreba tˇri t´ ymy, jeden dom´ac´ı, druh´ y host´ı a tˇret´ı poˇra´daj´ıc´ı. K p´ısk´an´ı z´apasu jsou nutn´ı dva rozhodˇc´ı, kteˇr´ı se budou moci na z´apas sami zapisovat. Dvˇe entity na tomto obr´azku byly jiˇz pops´any dˇr´ıve (viz. 5.1.1 Spr´ava uˇzivatel˚ u), tud´ıˇz je nebudeme znovu popisovat. ZAPAS TEAM
# * id zapasu o den o datum o goly domaci o goly hoste o hraci kolo
# * id teamu o nazev o vyhry o prohry o remizi o poznamky
ROZHODCI # * id rozhodci o poznamky
ROZLOSOVANI # * id_rozlosovani o domaci o hoste o pocet_tymu
Obr´azek 4.13: Konceptu´aln´ı sch´ema spr´avy z´apas˚ u.
27
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
Vztahy mezi entitami Jak jiˇz bylo ˇreˇceno v´ yˇse, pop´ıˇseme vztahy mezi entitami pomoc´ı definovan´e struktury. Entita rozlosov´an´ı nem´a ˇza´dnou vazbu s ostatn´ımi entitami. Jeden t´ym m˚ uˇze hr´at v´ıce z´apas˚ u jako dom´ac´ı, host´e nebo b´yt poˇradatelem. V´ıce z´apas˚ u m˚ uˇze hr´at, ˇci poˇr´adat jeden t´ym. TYM
ZAPAS
Obr´azek 4.14: Vztah TYM – ZAPAS K odehr´an´ı z´apasu jsou nutn´e tˇri r˚ uzn´e t´ ymy, proto je tato vazba ve sch´ematu tˇrikr´at, my si j´ı zn´azorn´ıme pouze jednou, protoˇze ostatn´ı dvˇe jsou analogick´e k t´e prvn´ı. Tato vazba n´am pˇriˇrazuje t´ ymy k utk´an´ı. Z´apasy jsou generov´any automaticky s pˇrihl´aˇsen´ ymi t´ ymy. Jeden rozhodˇc´ı m˚ uˇze p´ıskat v´ıce z´apas˚ u. V´ıce z´apas˚ u m˚ uˇze p´ıskat jeden rozhodˇc´ı. ROZHODCI
ZAPAS
Obr´azek 4.15: Vztah ROZHODCI – ZAPAS Ke kaˇzd´emu z´apasu jsou potˇreba dva rozhodˇc´ı, kteˇr´ı urˇcuj´ı z´apas. Tak jako u pˇredchoz´ı vazby si zn´azorn´ıme pouze jednu vazbu, i kdyˇz v koncov´em n´avrhu jsou dvˇe. Jde opˇet o analogii vazby, jelikoˇz jsou tˇreba dva rozhodˇc´ı.
28
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
ZAPAS Zde m´ame uchov´av´ame informace o z´apasech vygenerovan´e pomoc´ı rozlosov´an´ı. Pouze rozhodˇc´ı se na z´apas pˇrihlaˇsuj´ı sami, v pˇr´ıpadˇe nouze m˚ uˇze administr´ator rozhodˇc´ı k z´apasu upravit. Vˇsechny informace jsou upraviteln´e (napˇr. z d˚ uvodu rektorsk´eho volna) kromˇe identifik´atoru z´apasu. N´ azev atributu
Datov´ y typ
Popis
id zapasu den datum cas id domaci id hoste id poradatel id rozhodci 1 id rozhodci 2 goly domaci goly hoste hraci kolo
INTEGER, PK VARCHR(8) DATETIME VARCHAR(16) INTEGER, FK INTEGER, FK INTEGER, FK INTEGER, FK INTEGER, FK INTEGER INTEGER INTEGER
Identifikaˇcn´ı ˇc´ıslo z´apasu Zkratka hrac´ıho dne, vˇzdy (po,st) Datum z´apasu ˇ v kolik zaˇc´ın´a z´apas, vˇzdy (19:40, 20:25) Cas Identifikaˇcn´ı ˇc´ıslo domac´ıho t´ ymu Identifikaˇcn´ı ˇc´ıslo hostuj´ıc´ıho t´ ymu Identifikaˇcn´ı ˇc´ıslo poˇr´adaj´ıc´ıho t´ ymu Identifikaˇcn´ı ˇc´ıslo rozhodˇc´ıho Identifikaˇcn´ı ˇc´ıslo rozhodˇc´ıho Poˇcet vstˇrelen´ ych g´ol˚ u dom´ac´ım t´ ymem Poˇcet vstˇrelen´ ych g´ol˚ u hostuj´ıc´ım t´ ymem ˇ ıslo hrac´ıho kola C´
Tabulka 4.11: Atributy entity ZAPAS
Atributy jednotliv´ ych entit Vˇsechny atributy vych´azej´ı z poˇzadavk˚ u na aplikaci a jsou nutn´e pro spr´avn´ y chod aplikace. Nav´ıc dvˇe zobrazen´e entity jsou pops´any v´ yˇse (tab. 4.2 a 4.5)
29
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
ROZLOSOVANI Tato entita slouˇz´ı pro spr´avn´e rozlosov´an´ı z´apas˚ u. Jsou zde uloˇzeny modely z´apas˚ u pro rozlosov´an´ı v rozmez´ı 4–10t´ ym˚ u. N´ azev atributu
Datov´ y typ
Popis
id rozlosovani domaci hoste pocet tymu
INTEGER, PK INTEGER INTEGER VARCHAR(8)
Identifikaˇcn´ı ˇc´ıslo rozlosov´an´ı ˇ ıslo t´ C´ ymu hraj´ıc´ı jako domac´ı ˇ C´ıslo t´ ymu hraj´ıc´ı jako host´e ˇ ısla pro kolik je dan´ C´ y z´apas t´ ym˚ u (napˇr. 4, 5)
Tabulka 4.12: Atributy entity ROZLOSOVANI
4.1.3
Spr´ ava text˚ u a aktualit
Tato ˇca´st se zamˇeˇruje na texty a ˇcl´anky zobrazen´e ve veˇrejn´e ˇca´sti webov´e aplikace. Z poˇzadavk˚ u na aplikaci je zˇrejmˇe, ˇze spr´avce bude mˇenit obsahy ˇ jednotliv´ ych str´anek a tak´e, ˇze buce pˇrid´avat aktu´aln´ı ˇcl´anky o dˇen´ı na ZCU. Jelikoˇz pro editaci obsahu je nutn´e si uchov´avat jin´e parametry neˇz pro editaci aktualit, je potˇreba vytvoˇrit dvˇe r˚ uzn´e entity.
TEXTY # * id_textu o text
AKTUALITY # * id_aktuality o vlozeno o nadpis o text
zobrazuje
STRANKA # * id_stranky o stranka
Obr´azek 4.16: Konceptu´aln´ı sch´ema spr´avy text˚ u a aktualit.
30
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
TEXTY V t´eto entitˇe si ukl´ad´ame jednotliv´e obsahy str´anek ve formˇe HTML. N´ azev atributu id textu text
Datov´ y typ
Popis
INTEGER, PK Identifikaˇcn´ı ˇc´ıslo textu (obsahu) TEXT Text, kter´ y se m´a zobrazit na dan´e str´ance Tabulka 4.13: Atributy entity TEXTY
Vztahy mezi entitami Pop´ıˇseme vztah mezi entitami pomoc´ı definovan´e struktury. Entita aktuality nem´a ˇza´dnou vazbu s ostatn´ımi. Jeden str´anka m´a jeden obsah. Jeden obsah je zobrazen na jedn´e str´ance. TEXTY
STRANKA zobrazuje
stranka
Obr´azek 4.17: Vztah TEXTY – STRANKA Tato vazba n´am pˇriˇrazuje k jednotliv´ ym text˚ um obsahy str´anek, kter´e maj´ı zobrazit.
Atributy jednotliv´ ych entit Vˇsechny atributy jednotliv´ ych entit jsou potˇrebn´e pro splnˇen´ı poˇzadavk˚ u a funkcionality.
31
N´avrh datab´azov´eho modelu
Konceptu´aln´ı n´avrh sch´ematu
STRANKA Zde m´ame uloˇzen´e n´azvy str´anek, kter´e lze editovat. N´ azev atributu id stranky stranka
Datov´ y typ
Popis
INTEGER, PK Identifikaˇcn´ı ˇc´ıslo str´anky TEXT N´azev str´anky, kter´e lze mˇenit obsah Tabulka 4.14: Atributy entity STRANKA
AKTUALITY V t´eto entitˇe si ukl´ad´ame jednotliv´e ˇcl´anky, aktuality ve formˇe HTML. N´ azev atributu
Datov´ y typ
Popis
id aktuality vlozeno nadpis text
INTEGER, PK DATETIME VARCHAR(64) TEXT
Identifikaˇcn´ı ˇc´ıslo aktuality Datum pˇrid´an´ı nov´e aktuality/ˇcl´anku Nadpis aktuality/ˇcl´anku Text (obsah) aktuality/ˇcl´anku
Tabulka 4.15: Atributy entity AKTUALITY
32
N´avrh datab´azov´eho modelu
4.2
Z´avislost vztah˚ u
Z´ avislost vztah˚ u
V t´eto ˇca´sti se sezn´am´ıme se vˇsemi z´avislostmi z´aznam˚ u u jednotliv´ ych entit. Jedna ze z´avislost´ı vych´az´ı z UZIVATELE, pokud odstran´ıme z´aznam z t´eto entity, je nutn´e odstranit z´aznamy i v ostatn´ıch entit´ach. Odstran´ımeli tedy uˇzivatele (napˇr. bude hr´aˇc i rozhodˇc´ı), neodstran´ıme pˇr´ısluˇsn´ y z´aznam jen v UZIVATELE, ale tak´e v ROZHODCI a HRAC, kter´ y urˇc´ıme podle ciz´ıho kl´ıˇce. Analogicky pokud dojde k odstranˇen´ı hr´aˇce, odstran´ı se i z´aznam v UZIVATELE, pokud nen´ı dan´ y uˇzivatel rozhodˇc´ı. V tomto pˇr´ıpadˇe dojde k odstranˇen´ı z´aznamu pouze v HRAC, z´aznam v UZIVATELE z˚ ustane kv˚ uli vazbˇe s rozhodˇc´ım. Stejnˇe to funguje i s rozhodˇc´ım, dojde-li ke smaz´an´ı rozhodˇc´ıho, odstran´ı se z´aznam v ROZHODCI, a pokud je uˇzivatel hr´aˇcem, z´aznam v UZIVATELE z˚ ustane, v opaˇcn´em pˇr´ıpadˇe se odstran´ı. Dalˇs´ı z´avislosti n´am plynou z pˇredchoz´ıch pˇr´ıklad˚ u, pˇri odstranˇen´ı rozhodˇc´ıho je jeˇstˇe tˇreba upravit utk´an´ı, na kter´e je rozhodˇc´ı pˇrihl´aˇsen v entitˇe ZAPAS. Dojde pouze k nastaven´ı hodnoty na null, cel´ y z´aznam se neodstran´ı. V pˇr´ıpadˇe odstranˇen´ı hr´aˇce je nutn´e zjistit, zda nebyl brank´aˇrem, pokud ano, doch´az´ı k odstranˇen´ı z´aznamu v GOLMAN. Nejkomplikovanˇejˇs´ı odstranˇen´ı pˇrich´az´ı pˇri smaz´an´ı t´ ymu. Doch´az´ı t´ım ke smaz´an´ı vˇsech hr´aˇc˚ u na soupisce t´ ymu. Odstranˇen´ı hr´aˇce, brank´aˇre, uˇzivatele a rozhodˇc´ıho jsem zm´ınil jiˇz v´ yˇse. V entitˇe ZAPAS se odstran´ı pˇr´ısluˇsn´e z´apasy s t´ımto t´ ymem. V posledn´ı ˇradˇe se odstran´ı t´ ymov´e zpr´avy vloˇzen´e na t´ ymov´e f´orum, jelikoˇz nem´a smysl uchov´avat tyto zpr´avy i nad´ale. Tyto zpr´avy se odstran´ı z FORUM.
4.3
V´ ychoz´ı hodnoty atribut˚ u
U nˇekter´ ych z atribut˚ u jsou nastaveny v´ ychoz´ı hodnoty. To znamen´a, ˇze pˇri ukl´ad´an´ı nov´ ych z´aznam˚ u jsou urˇcit´e hodnoty vyplnˇeny v´ ychoz´ımi hodnotami, pokud nejsou zadan´e explicitnˇe jinak. Pˇri zvolen´ı vhodn´ ych hodnot to m˚ uˇze b´ yt velmi u ´ˇcinn´e. Napˇr´ıklad pˇri pˇrid´av´an´ı hr´aˇce m´a bodov´an´ı (vstˇrelen´e g´oly, asistence. . . ) nastaven´e na 0. Defaultnˇe byl tento atribut pr´azdn´ y, a tud´ıˇz pˇri vypisov´an´ı kanadsk´eho bodov´an´ı se zobraz´ı pr´azdn´a kolonka. Po nastaven´ı v´ ychoz´ı hodnoty se zobraz´ı 0, coˇz vypad´a l´epe. Analogicky jsou nastaveny brank´aˇrsk´e statistiky a t´ ymov´e statistiky.
33
N´avrh datab´azov´eho modelu
4.4
Fyzick´y datov´y model
Fyzick´ y datov´ y model
Po realizaci konceptu´aln´ıho sch´ematu vych´azej´ıc´ıho z poˇzadavk˚ u na aplikaˇcn´ı funkcionalitu lze vytvoˇrit fyzick´ y datov´ y model. Informace shrom´aˇzdˇen´e z popisu jednotliv´ ych vztah˚ u a entit se zobraz´ı do cel´eho n´avrhu datov´eho modelu. Pro navrˇzen´ı modelu jsem zvolil prostˇred´ı Oracle SQL Developer 4.0 – Data Modeler. Sch´ema datov´eho modelu ukazuje celkov´e ˇreˇsen´ı n´avrhu a je uvedeno v Pˇr´ıloze B na str. (jeˇstˇe nev´ım) obr. 7.2. N´asleduje Pˇr´ıloha C, kde jsou uk´azky skript˚ u generuj´ıc´ı ˇca´st navrˇzen´e datab´aze. Kv˚ uli rozsahu datab´aze jsou kompletn´ı zdrojov´e k´ody pro navrˇzen´ı datab´azov´eho modelu na disku CD-ROM, kter´ y nalezneme v Pˇr´ıloze D.
34
5 Implementace aplikace V pˇredchoz´ı ˇc´asti jsem navrhl datab´azov´ y model, kter´ y lze nyn´ı plnit daty. Struˇcnˇe pop´ıˇsi vybran´e prostˇredky pro implementaci a samotnou implementaci pro vytvoˇren´ı webov´e aplikace a administr´atorsk´eho prostˇred´ı. Pro v´ yvoj aplikace jsem vyuˇzil vˇsechny programovac´ı jazyky zm´ınˇen´e v kapitole 3.1. Programovac´ı jazyky, kromˇe jazyka ASP.NET, kter´ y nelze pouˇz´ıt v pˇr´ıpadˇe vyuˇzit´ı PHP. PHP jsem si zvolil z d˚ uvodu vˇetˇs´ı podpory u hosting˚ u a tak´e d´ıky jeho rozˇs´ıˇren´ı mezi webov´ ymi aplikacemi. Osobnˇe upˇrednostˇ nuji PHP. Ostatn´ı vybran´e jazyky jsou standardem pˇri vytv´aˇren´ı obdobn´ ych projekt˚ u. Jako datov´e u ´loˇziˇstˇe vyuˇziji datab´azov´ y syst´em MySQL popsan´ y v´ yˇse. Ke komunikaci s datab´az´ı vyuˇz´ıv´am knihovnu DIBI. Z konkr´etn´ıch vybran´ ych technologi´ı lze vybrat poskytovatele hostingu. Po pˇredloˇzen´ı m´eho n´avrhu a po konzultaci s katedrou tˇelesn´e v´ ychovy a sportu 1 jsme se rozhodli pro zaloˇzen´ı webov´eho projektu na CIVu , kter´ y vyuˇzijeme pro hosting webov´ ych str´anek. Webov´ y hosting poskytovan´ y CIVem n´am nab´ız´ı, jak vyuˇzit´ı PHP tak MySQL technologii. Nejvˇetˇs´ı v´ yhodou tohoto hostingu je vybr´an´ı libovoln´e neobsazen´e dom´eny a jeho cena za poskytnut´ı. Je zcela zdarma. Jako adresu str´anek si KTS vybrala www.florbal.zcu.cz, kde je spuˇstˇen´ y projekt. Pro export poˇzadovan´ ych dokument˚ u jsem vyuˇzil knihovnu mPDF, jelikoˇz jsem zvolil k tomu pˇrizp˚ usoben´ y jazyk PHP.
5.1
Webov´ a aplikace
Tato ˇca´st aplikace je vytvoˇrena pomoc´ı procedur´aln´ıho programov´an´ı. Struktura implementace je rozdˇelen´a do v´ıce sloˇzek podle jejich u ´ˇcelu. Kask´adov´ y styl se nach´az´ı ve sloˇzce css. Soubory ke staˇzen´ı jsou ve sloˇzce download. Pouˇzit´e speci´aln´ı p´ısmo najdeme ve sloˇzce fonts. Pouˇzit´e obr´azky v img, knihovna pro pr´aci s datab´az´ı je ve sloˇzce lib. Pot´e n´asleduje sloˇzka pages, kter´a obsahuje vˇsechny obsahy str´anek a skript˚ u, kter´e m˚ uˇze uˇzivatel vidˇet. Posledn´ı 1
CIV – Centrum informatizace a v´ ypoˇcetn´ı techniky.
35
Implementace aplikace
Webov´a aplikace
sloˇzka je zapis, kde je vˇse potˇrebn´e pro vygenerov´an´ı z´apisu k utk´an´ı v pdf, tud´ıˇz zde nalezneme knihovnu mPDF. Posledn´ı soubor je index.php, kter´ y se naˇc´ıt´a jako prvn´ı pˇri navˇst´ıven´ı webu. Vˇsechny str´anky vych´azej´ı pr´avˇe ze zm´ınˇen´eho index.php. Jedn´a se o kostru webu, do kter´e je naˇc´ıt´an obsah jednotliv´ ych str´anek pomoc´ı PHP funkce include(). Str´anka je rozdˇelena na hlaviˇcku (head) a tˇelo (body). V hlaviˇcce jsou tzv. meta tagy, kde se nastavuje k´odov´an´ı, kl´ıˇcov´a slova, popisek pro vyhled´avaˇce a dalˇs´ı. Ve sv´e pr´aci jsem pouˇzil vˇsechny zm´ınˇen´e tagy. D´ale jsem v hlaviˇcce nastavil cestu ke kask´adov´emu stylu pomoc´ı linku, kter´ y pouˇz´ıv´am pro naform´atov´an´ı obsahu str´anek. Jako posledn´ı vˇec v hlaviˇcce jsem nastavil title, coˇz je nadpis str´anek v z´aloˇzce ve webov´em prohl´ıˇzeˇci. V tˇele kostry doch´az´ı k naˇcten´ı skriptu pro pˇrihl´aˇsen´ı do datab´aze opˇet pomoc´ı funkce include(). N´aslednˇe doch´az´ı k nastartov´an´ı SESSION funkc´ı uˇzeme m´ıt uloˇzen´e session start(), coˇz je super glob´aln´ı promˇenn´a, ve kter´e m˚ v´ıce parametr˚ u. Tuto promˇennou vyuˇz´ıv´am pro uchov´an´ı informac´ı o pˇrihl´aˇsen´em uˇzivateli. Pomoc´ı toho dok´aˇzi rozliˇsit, zda je uˇzivatel pˇrihl´aˇsen, popˇr´ıpadˇe nastav´ım informaˇcn´ı panel na str´ance o tom, kde uˇzivatel vid´ı svoje pˇrihlaˇsovac´ı jm´eno a moˇznost upravit sv´e u ´daje. N´asleduje vytvoˇren´ı menu pomoc´ı HTML tag˚ u, kde se nach´az´ı vˇsechny z´aloˇzky (napˇr. UFL, REPREZENTACE, TURNAJE, KONTAKY. . . ). Pokud je pˇrihl´aˇsen hr´aˇc, m´a o z´aloˇzku nav´ıc, kter´a ho odkazuje na souhrn informac´ı o jeho t´ ymu, coˇz rozpozn´am d´ıky nastaven´ı SESSION. Pod menu se nach´az´ı tabulka t´ ym˚ u seˇrazen´a podle jejich z´ıskan´ ych bod˚ u. T´ ymy si naˇctu z datab´aze pomoc´ı knihovn´ı funkce dibi a to dibi::fetchAll(), kter´a n´am vr´at´ı pole vˇsech ˇra´dk˚ u (z´aznam˚ u) v tabulce TYM. D´ıky moˇznostem jazyka SQL n´am datab´aze vr´at´ı jiˇz seˇrazen´e t´ ymy podle bod˚ u (k seˇrazen´ı ˇr´adk˚ u v dotazu slouˇz´ı pˇr´ıkaz ORDER BY, pro z´ısk´an´ı z´aznam˚ u SELECT). Pot´e z´ıskan´e hodnoty proch´az´ım cyklem foreach a postupnˇe vypisuji t´ ymy do tabulky. Jako posledn´ı na str´ance jsou tˇri odkazy v podobˇe ikon na facebookov´e str´anky KTS, n´asleduje odkaz na str´anky KTS a jako posledn´ı je ikona pro pˇrihl´aˇsen´ı. Pokud je hr´aˇc pˇrihl´aˇsen, ikona o pˇrihl´aˇsen´ı zmiz´ı, to rozpozn´am d´ıky nastaven´ı SESSION. Dosud vˇsechno zm´ınˇen´e je zobrazeno na vˇsech str´ank´ach webu a mˇen´ı se pouze jejich stˇred (obsah) pomoc´ı jiˇz zm´ınˇen´e funkce PHP include(). Defaultnˇe je nastaveno naˇcten´ı u ´vodn´ı str´anky. V pˇr´ıpadˇe upraven´ı adresy a nenalezen´ı poˇzadovan´e str´anky je naˇctena opˇet u ´vodn´ı strana.
Jednotliv´e str´anky obsahuj´ı vˇzdy nadpis, kter´ y naznaˇcuje jejich u ´ˇcel. Pot´e n´asleduje informaˇcn´ı text, pˇr´ıpadn´e tlaˇc´ıtka odkazuj´ıc´ı se na jin´e str´anky ˇci formul´aˇre. 36
Implementace aplikace
Webov´a aplikace
Pˇri zobrazen´ı nˇekter´ ych text˚ u je nutn´e z´ıskat dan´ y obsah str´anky z datab´aze, protoˇze obsah nˇekter´ ych str´anek je editovateln´ y. Pomoc´ı funkce dibi::fetch a SQL dotazu z´ısk´am jeden z´aznam z tabulky TEXTY uloˇzen´ y ve formˇe HTML, kter´ y n´aslednˇe zobraz´ım. Str´anky, kde je zobrazen´ y text, kter´ y nelze editovat, jsou tak´e ve formˇe HTML, ale jiˇz bez pˇr´ıstupu do datab´aze. Vˇsechny formul´aˇre na webu vˇzdy zpracov´av´a pˇr´ısluˇsn´ y skript. Napˇr´ıklad pˇri registraci t´ ymu dojde k vyplnˇen´ı formul´aˇre a n´aslednˇe ho uˇzivatel odeˇsle. Skript (registrujTym.php) jako prvn´ı ovˇeˇr´ı, zda jsou vyplnˇeny vˇsechny povinn´e u ´daje, pokud ne vyp´ıˇse chybu, kter´a nastala, jinak pokraˇcuje d´al. Pro tuto kontrolu u ´daj˚ u jsem vyuˇzil funkci empty(), kter´a vrac´ı true v pˇr´ıpadˇe, ˇze je parametr pr´azdn´ y, false v pˇr´ıpadˇe, kdyˇz parametr nˇeco obsahuje. N´aslednˇe kdyˇz jsou vˇsechny u ´daje vyplnˇen´e, tak se zkontroluj´ı hesla, zda se shoduj´ı. Zde jsem vyuˇzil funkci strcmp() pro porovn´an´ı dvou ˇretˇezc˚ u, kter´a opˇet vrac´ı true v pˇr´ıpadˇe, ˇze se ˇretˇezce shoduj´ı a false, kdyˇz ne. Pot´e se zkontroluje d´elka pˇrihlaˇsovac´ıho jm´ena a hesla. K tomu n´am slouˇz´ı funkce strlen(), kter´a n´am vrac´ı poˇcet znak˚ u zadan´eho parametru. N´asleduje ovˇeˇren´ı spr´avnosti tvaru emailu a telefonu. Kde jsem vyuˇzil regul´arn´ı v´ yrazy a funkci preg match(), kter´a vrac´ı true, pokud parametr splˇ nuje definovan´ y tvar a false, pokud ne. Pak si z datab´aze naˇctu poˇcet pˇrihlaˇsovac´ıch jmen, email˚ u, telefon˚ u a t´ ym˚ u, kde jsou u ´daje stejn´e jako ve vyplnˇen´em formul´aˇri. Pomoc´ı dibi::fetchAll() z´ısk´am vˇsechny tyto z´aznamy a pomoc´ı count() zjist´ım poˇcet vˇsech tˇechto z´aznam˚ u. Pokud je jiˇz nˇekter´ yzu ´daj˚ u v datab´azi, je uˇzivatel poˇz´ad´an o zmˇenu dan´eho u ´daje. Po d˚ ukladn´e kontrole vyplnˇen´ ych u ´daj˚ u je dan´ y t´ ym s vedouc´ım registrov´an a vloˇzen do datab´aze. K tomu jsem opˇet vyuˇzil DIBI a jej´ı funkci dibi::query(). N´aslednˇe vyp´ıˇsi uˇzivateli zpr´avu o pˇrid´an´ı a pomoc´ı funkce header() ho pˇresmˇeruji na u ´vodn´ı stranu. Vˇsechny ostatn´ı skripty funguj´ı na velmi podobn´e logice. Jedin´ y skript na generov´an´ı z´apisu k utk´an´ı funguje na jin´e logice. Ten funguje na principu z´ısk´an´ı informac´ı z datab´aze o vybran´em utk´an´ı, jako je soupiska hr´aˇc˚ u, n´azvy t´ ym˚ u atd. Pot´e se nastav´ı jm´eno PDF souboru, k´odov´an´ı (UTF–8) a form´at souboru (A4–L – A4 na ˇs´ıˇrku). Pomoc´ı y jako parafunkce file get contents() z´ısk´ame obsah CSS souboru uveden´ metr. N´aslednˇe aktivujeme pomoc´ı funkce ob start() v´ ystupn´ı buffer. Pak HTML tagy vyp´ıˇseme potˇrebn´e u ´daje. Pot´e do promˇenn´e pomoc´ı funkce ob get contents() uloˇz´ıme obsah bufferu. Jeˇstˇe pˇred vygenerov´an´ım v´ ysledn´eho PDF vypr´azdn´ıme po sobˇe v´ ystupn´ı buffer funkc´ı ob end clea(). Posledn´ım krokem vygenerujeme PDF soubor se zadan´ ymi parametry. K tomu jsem pouˇzil funkci getSimplPdfWindow(), kam jako prvn´ı parametr je vloˇzen n´azev souboru, n´asleduje HTML k´od a pouˇzit´e CSS.
37
Implementace aplikace
5.2
Administr´atorsk´e prostˇred´ı
Administr´ atorsk´ e prostˇ red´ı
Tato ˇc´ast na rozd´ıl od pˇredchoz´ı ˇca´sti je vytvoˇrena pomoc´ı objektovˇe orientovan´eho programov´an´ı s vyuˇzit´ım MVC architektury. Pouˇzit´a architektura vych´az´ı ze spoleˇcn´eho projektu ze ZSWI. Struktura administr´atorsk´eho prostˇred´ı je komplikovanˇejˇs´ı a tak m´ısto popisu jsem se rozhodl ji zachytit pomoc´ı n´asleduj´ıc´ıho sch´ematu (obr. 5.1).
js jquery-1.9.1.min ...
«include»
inc
«include»
index.php
menu.php «include» font
css
FontAwesome.otf
basic.css
...
...
«include»
«include»
_config.php router.php
cleditor
«include» lib dibi.min.php ...
«include»
class (kontroléry)
view
«include» home.class.php
homeShow.php
...
...
...
...
export model
home.model.php ... ...
Obr´azek 5.1: Struktura administr´atorsk´eho prostˇred´ı.
38
«include»
Implementace aplikace
Administr´atorsk´e prostˇred´ı
Pokud se chce spr´avce dostat do prostˇred´ı, mus´ı se nejdˇr´ıv pˇrihl´asit v pˇredchoz´ı ˇc´asti, pot´e je pˇresmˇerov´an do administraˇcn´ıho prostˇred´ı. Vˇsechny str´anky opˇet vych´azej´ı ze souboru index.php. Zde jako prvn´ı vˇec zapneme SEy SSION funkc´ı session start(), abychom z´ıskali informace o uˇzivateli, kter´ se snaˇz´ı do prostˇred´ı dostat. N´asleduje podm´ınka, kter´a n´am oˇsetˇruje, zda je dan´ y uˇzivatel opr´avnˇen ke vstupu a funkc´ı isset() zjist´ıme, zda jsou SESSION v˚ ubec nastaveny. Pˇri z´aporn´em vyhodnocen´ı je uˇzivatel vr´acen na veˇrejnou ˇc´ast. Pokud je pˇrihlaˇsovan´ y spr´avcem, pˇr´ıkazem require once() naˇcteme pˇr´ısluˇsn´ y konfiguraˇcn´ı soubor pro pˇripojen´ı do datab´aze config.php a soubory na nastaven´ı routov´an´ı router.php a kontrol´er controler.class.php. Pˇr´ıkaz uvodu toho, ˇze pokud byl k´od ze souboru jiˇz require once() jsem vyuˇzil z d˚ dˇr´ıve vloˇzen, nevloˇz´ı se znovu. Funkce routov´an´ı router.php je urˇcen´ı, jak´ y kontrol´er zavolat. Jako prvn´ı si funkc´ı expole() rozdˇel´ım adresu do pole podle oddˇelovaˇce &. Funkc´ı array shift() si vezeme prvn´ı prvek z pole, kter´ y mi urˇcuje n´azev str´anky. Tato funkce n´am vyjme prvn´ı prvek a posune vˇsechny prvky dopˇredu, funguje na principu fronty. Potom zjist´ıme, zda n´azev str´anky nen´ı pr´azdn´ y funkc´ı empty(), pokud je, za str´anku oznaˇc´ıme u ´vodn´ı home a za kontrol´er home.class.php. V opaˇcn´em pˇr´ıpadˇe oznaˇc´ıme dan´ y kontrol´er. Potom zbyl´e argumenty proch´az´ım cyklem foreach a rozdˇeluji je d´al, kter´e si ukl´ad´am do jednotliv´ ych promˇenn´ ych. Pot´e doch´az´ı k ovˇeˇren´ı, zda dan´ y kontrol´er existuje funkc´ı file exists(), pokud ne je vyps´ana chyba a skript je ukonˇcen pomoc´ı funkce die(). Pokud dan´ y kontrol´er existuje, je naˇcten pomoc´ı include once(). Pot´e pˇrevedu prvn´ı p´ısmeno kontrol´eru na velk´e funkc´ı ucfirst a to oznaˇc´ım za n´azev tˇr´ıdy kontrol´eru. N´aslednˇe funkc´ı class exists() ovˇeˇr´ım, jej´ı existenci. V pˇr´ıpadˇe, ˇze tˇr´ıda neexistuje, je skript ukonˇcen s v´ ypisem chybov´e hl´aˇsky funkc´ı die(). Pokud existuje, dojde k vytvoˇren´ı nov´e instance tˇr´ıdy kontrol´eru. Kontrol´er controler.class.php m´a dvˇe metody, kter´e ostatn´ı kontrol´ery od nˇej dˇed´ı. Jsou to metody main() a render(). V prvn´ı zmiˇ novan´ y metodˇe si kontrol´er zjist´ı, jakou metodu m´a volat (napˇr. show). Druh´a zmin ˇovan´a metoda, slouˇz´ı pro zobrazen´ı pˇr´ısluˇsn´eho view. Nejprve si naˇcteme dan´ y view, potom ovˇeˇr´ıme jeho existenci opˇet metodou file exists(). Pokud neexistuje, oznaˇc´ıme za view chybovou str´anku, kterou n´aslednˇe zobraz´ıme. N´aslednˇe doch´az´ı k zapnut´ı bufferov´an´ı v´ ystupu funkc´ı ob start(), naˇcteme pˇr´ısluˇsnou str´anku pomoc´ı include() a do promˇenn´e si uloˇz´ıme obsah intern´ıho bufferu pomoc´ı ob get contents(). N´aslednˇe po sobˇe obsah bufferu vymaˇzeme pomoc´ı ob end clean() a zobraz´ıme pˇr´ıkazem echo.
Nyn´ı se vrac´ıme zpˇet k souboru index.php. Tak jako v pˇredchoz´ım souboru 39
Implementace aplikace
Administr´atorsk´e prostˇred´ı
index.php, i zde je str´anka rozdˇelena na tˇelo (body) a hlaviˇcku (head). V hlaviˇcce jsou pouˇzit´e podobn´e meta tagy, jako v pˇredchoz´ı ˇc´asti. Nav´ıc je zde pouze tag pro naˇcten´ı javasript˚ u. Pot´e doch´az´ı k zavol´an´ı dotyˇcn´e metody main() z jiˇz vytvoˇren´e instance tˇr´ıdy. Jako posledn´ı k ˇcemu na str´ance doch´az´ı je naˇcten´ı menu pomoc´ı funkce include(). Vˇse doted’ zm´ınˇen´e n´am poskytuje kostru administr´atorsk´eho prostˇred´ı. Dok´aˇze naˇc´ıst kteroukoliv str´anku, z kter´ehokoliv kontrol´eru a zobrazit j´ı. Posledn´ı, co n´am zb´ yv´a zm´ınit je pouˇzit´ı modelu. Do pˇr´ısluˇsn´eho kontrol´eru vˇzdy naˇcteme pˇr´ısluˇsn´ y model. V kontrol´eru si pot´e vytvoˇr´ıme instanci modelu, abychom dok´azali z nˇej vyuˇz´ıvat pˇr´ısluˇsn´e metody. V modelu jsou nejˇcastˇeji metody pro z´ısk´an´ı/odstranˇen´ı/aktualizaci dat z datab´aze. Ve view si opˇet naˇc´ıt´ame model, kter´ y budeme potˇrebovat funkc´ı require once(). Pro z´ısk´an´ı dat si nejprve vytvoˇr´ıme instanci modelu a d´ıky nˇemu, pot´e vol´ame pˇr´ısluˇsn´e metody. Struktura jednotliv´ ych str´anek je podobn´a tˇem z pˇredchoz´ı ˇc´asti. Jako prvn´ı na str´ance je nadpis a n´asleduje informaˇcn´ı text, v´ ypis z´aznam˚ u, formul´aˇr ˇci tlaˇc´ıtka odkazuj´ıc´ı se na dalˇs´ı str´anky. Zde pouze nevyhodnocuje str´anku pˇr´ısluˇsn´ y skript, ale kontrol´er. Pro kontrolu dat z formul´aˇr˚ u jsem opˇet vyuˇzil regul´arn´ı v´ yrazy a funkce zm´ınˇen´e v´ yˇse. Celkovˇe pouˇzit´e funkce v t´eto ˇc´asti jsou velmi podobn´e funkc´ım z ˇc´asti pˇredchoz´ı. Pro pr´aci s datab´az´ı jsem vyuˇzil funkce knihovny dibi, opˇet zm´ınˇen´e v´ yˇse. Export soubor˚ u je stejn´ y, jako v pˇredchoz´ı ˇc´asti. V pˇr´ıpadˇe nejasnost´ı je cel´ y zdrojov´ y k´od d˚ ukladnˇe okomentov´an.
40
6 Testov´an´ı Testov´an´ı se zav´ad´ı z d˚ uvodu ovˇeˇrov´an´ı kvality hotov´eho syst´emu. Testov´an´ı se zab´ yv´a vyhled´av´an´ım chyb, to je zˇrejm´e, ale liˇs´ı se v jeho velikosti z´abˇeru. Testov´an´ı lze rozdˇelit do v´ıce test˚ u napˇr. testy pouˇzitelnosti, testy spolehlivosti, testy podpory a jin´e. Webov´e aplikace se liˇs´ı od desktopov´ ych zejm´ena v tom, ˇze webov´e aplikace vyuˇz´ıvaj´ı prohl´ıˇzeˇc. Uˇz to lze povaˇzovat za prvn´ı probl´em, na kter´ y bychom si mˇeli d´at pozor. Uˇzivatel´e maj´ı na webu vˇetˇs´ı volnost pohybu, neˇz u desktopov´ ych aplikac´ı. My se budeme soustˇredit na testy kompatibility mezi r˚ uzn´ ymi prohl´ıˇzeˇci, pˇri r˚ uzn´em rozliˇsen´ı obrazovky a samozˇrejmˇe na funkcionalitu aplikace. Webovou aplikaci je nejlepˇs´ı testovat ruˇcnˇe neˇz pomoc´ı automatick´ ych test˚ u.[6]
6.1
Testov´ an´ı v´ ysledn´ eho syst´ emu
Zab´ yvat se budeme pouze dynamickou kontrolou syst´emu, to znamen´a, ˇze aplikace odpov´ıd´a poˇzadavk˚ um na aplikaci. Dynamick´e testov´an´ı vyˇzaduje testov´an´ı na bˇeˇz´ıc´ı aplikaci a prob´ıh´a hlavnˇe na z´akladˇe r˚ uzn´ ych vstup˚ u a posuzov´an´ı v´ ystup˚ u. Aplikace je testov´ana na stroji Lenovo ThinkPad T520, Intel(R) Cote(TM) i7-2670QM CPU @ 2.20GHZ, 8,00 GB RAM na syst´emu Windows 7 Proffesional 64bitov´e verzi. Jako prvn´ı jsem testoval kompatibilitu mezi prohl´ıˇzeˇci. Abych vˇedˇel, na jak´ ych prohl´ıˇzeˇc´ıch bych mˇel aplikaci testovat, tak pro z´ısk´an´ı statistik pouˇz´ıv´an´ı prohl´ıˇzeˇc˚ u jsem vyuˇzil str´anky uveden´e v literatuˇre [7]. Jako prvn´ım testovan´ ym prohl´ıˇzeˇcem byl Google Chrome – verze 34.0, kteˇ r´ y je v Cesk´e Republice nejrozˇs´ıˇrenˇejˇs´ı. N´asledoval Mozilla Firefox – verze 28.0. Jako tˇret´ı prohl´ıˇzeˇc jsem zvolil Internet Explorer 10 – verze 10.0. Posledn´ı prohl´ıˇzeˇc jsem vybral Operu – verze 20.0. Shrnut´ı v´ ysledk˚ u kompatibility mezi prohl´ıˇzeˇci. Podle oˇcek´av´an´ı Google Chrome dopadl pro danou aplikaci jako nejlepˇs´ı. To pˇredevˇs´ım z d˚ uvodu, ˇze aplikace byla vyv´ıjena pro tento prohl´ıˇzeˇc. Firefox jako druh´ y nejpouˇz´ıvanˇejˇs´ı prohl´ıˇzeˇc prok´azal v´ ybornou kompatibilitu a s aplikac´ı nemˇel sebemenˇs´ı probl´em. Prvn´ı probl´em pˇrich´az´ı s prohl´ıˇzeˇcem Internet Explorer 10. Zde bylo nalezeno ˇspatn´e zobrazen´ı pˇri stahov´an´ı z´apisu k utk´an´ı, kolem ikony ke staˇzen´ı je nav´ıc r´ameˇcek. V administr´atorsk´em prostˇred´ı u poloˇzek menu jsou vidˇet odr´aˇzky. Vˇsechny nalezen´e chyby v tomto prohl´ıˇzeˇci nemaj´ı vliv na 41
Testov´an´ı
Zhodnocen´ı testovac´ıch v´ysledk˚ u
funkcionalitu, ale pouze na vzhled. Jako posledn´ı prohl´ıˇzeˇc byl Opera, kde nenastal ˇza´dn´ y probl´em. Po testov´an´ı r˚ uzn´ ych prohl´ıˇzeˇc˚ u jsem testoval r˚ uzn´e rozliˇsen´ı obrazovky. Pro z´ısk´an´ı nejpouˇz´ıvanˇejˇs´ıch rozliˇsen´ı jsem opˇet vyuˇzil str´anky jako u statistiky prohl´ıˇzeˇc˚ u. Uk´azalo se, ˇze nejpouˇz´ıvanˇejˇs´ı rozliˇsen´ı je 1366x786, n´asleduje 1920x1080, 1280x1024 a 1280x800. Rozliˇsen´ı 1024x768 jiˇz nen´ı, tak aktu´aln´ı jako pˇred lety, tud´ıˇz jsem se rozhodl jej do testov´an´ı nezahrnout. Pˇri testov´an´ı zm´ınˇen´ ych rozliˇsen´ıch jsem nenarazil na probl´em s komponenty ˇci jejich zobrazen´ım. Pouze u niˇzˇs´ıch rozliˇsen´ı se m˚ uˇze uˇzivateli zd´at zobrazen´a str´anka trochu vˇetˇs´ı, neˇz by bylo tˇreba. Doporuˇcen´a rozliˇsen´ı jsou dvˇe nejpouˇz´ıvanˇejˇs´ı 1920x1080 a 1366x786. Dosud jsme testovali r˚ uzn´a prostˇred´ı s r˚ uzn´ ymi moˇznostmi zobrazen´ı. Nyn´ı otestujeme funkcionalitu aplikace podle poˇzadavk˚ u na syst´em (viz. 2. Z´akladn´ı popis aplikace). Zaˇcnu testov´an´ım formul´aˇr˚ u. Pot´e budu testovat moˇzn´e role uˇzivatel˚ u. D´ale budu zkouˇset mˇenit parametry v URL1 adrese. Pˇri vyplˇ nov´an´ı veˇsker´ ych formul´aˇr˚ u jsem nenarazil na ˇza´dn´ y probl´em a vˇse funguje podle poˇzadavk˚ um. Pˇri testov´an´ı jsem nejprve zad´aval oˇcek´avan´e hodnoty a pot´e neoˇcek´avan´e, pokaˇzd´e aplikace reagovala korektnˇe. V pˇr´ıpadˇe role hr´aˇce, ˇci rozhodˇc´ıho se ˇz´adn´ y probl´em nevyskytl. V roli administr´atora jsem narazil na chybu. Chyba byla v odhl´aˇsen´ı se z administr´atorsk´eho prostˇred´ı, aplikace nereagovala na tento poˇzadavek korektnˇe. Jin´e probl´emy v rol´ıch uˇzivatel˚ u nebyly zjiˇstˇeny. Pˇri posledn´ım testov´an´ı mˇenˇen´ı parametr˚ u nebo cel´e URL adresy jsem narazil na v´ıce probl´em˚ u. Jednalo se o chyby stejn´eho typu, jenom na v´ıce str´ank´ach. Napˇr´ıklad po pˇrihl´aˇsen´ı rozhodˇc´ıho jsem se mohl dostat na spr´avu t´ ymu, i kdyˇz rozhodˇc´ı ˇza´dn´ y t´ ym nem´a a v ˇz´adn´em nehraje. Stejnˇe tak po pˇrihl´aˇsen´ı hr´aˇce, nebo rozhodˇc´ıho jsem se po upraven´ı URL adresy dostal do administr´atorsk´eho prostˇred´ı.
6.2
Zhodnocen´ı testovac´ıch v´ ysledk˚ u
Jedn´a-li se o prostˇred´ı, kde m´ame spuˇstˇenou aplikaci, lze ze zjiˇstˇen´ ych informac´ı vyvodit z´avˇer, ˇze vytvoˇren´a aplikace je bezprobl´emov´a. Pˇri testov´an´ı funkcionality aplikace byly nalezeny chyby. D˚ usledkem chyb jsou pouze menˇs´ı nepˇr´ıjemnosti. Vˇsechny objeven´e probl´emy vznikly nepozornost´ı program´atora nebo ˇspatn´ ym odhadem dan´eho probl´emu. Vˇsechny 1
URL – Uniform Resource Locator.
42
Testov´an´ı
Zhodnocen´ı testovac´ıch v´ysledk˚ u
chyby byly opraveny a aplikace je pˇripravena na pˇred´an´ı koncov´emu uˇzivateli.
43
7 Z´avˇer Tato bakal´aˇrsk´a pr´ace se zab´ yvala navrˇzen´ım a implementov´an´ım webov´e aplikace pomoc´ı vhodn´ ych prostˇredk˚ u. V poˇzadavc´ıch na syst´em je zm´ınˇena i desktopov´a aplikace, kter´a je povaˇzov´ana za sekund´arn´ı ˇc´ast. Po domluvˇe s KTS nakonec tato aplikace nen´ı poˇzadov´ana z d˚ uvodu mal´e pravdˇepodobnosti v´ ypadku funkˇcnosti aktu´aln´ı informaˇcn´ı tabule v hale KTS. V´ yvojem aplikace chceme dos´ahnout vˇetˇs´ı informovanosti student˚ u a zamˇestnanc˚ u ˇ o florbalov´em dˇen´ı. Spr´avce d´ıky administraˇcn´ımu prostˇred´ı dok´aˇze ˇr´ıdit ZCU celou univerzitn´ı florbalovou ligu. Na zaˇca´tku pr´ace jsem se zamˇeˇril na technologie potˇrebn´e pro tvorbu webu vˇcetnˇe datab´azov´eho syst´emu vych´azej´ıc´ı ze studia odborn´ ych publikovan´ ych ˇcl´ank˚ u a literatury. Na z´akladˇe poˇzadavk˚ u jsem navrhl konceptu´aln´ı sch´ema se vˇsemi potˇrebn´ ymi entitami pro spr´avnou funkcionalitu vˇcetnˇe jejich vztah˚ u a atribut˚ u. Jeho grafick´e zn´azornˇen´ı je v Pˇr´ıloze A (obr. 7.1). Pro bliˇzˇs´ı pochopen´ı popisuji vztahy mezi jednotliv´ ymi entitami a v´ ychoz´ı hodnoty atribut˚ u. Pot´e byl vytvoˇren fyzick´ y model, kter´ y specifikuje vlastnosti datab´aze jiˇz konkr´etn´ıch datov´ ych typ˚ u. Nad navrˇzen´ ym datab´azov´ ym modelem byla implementov´ana webov´a aplikace. Jako prvn´ı jsem zaˇcal implementaci veˇrejn´e ˇca´sti s moˇznost´ı pˇrihl´aˇsen´ı uˇzivatel˚ u. To jsem vytvoˇril pomoc´ı procedur´aln´ıho programov´an´ı. Druhou ˇca´st webu tvoˇr´ı administr´atorsk´e prostˇred´ı, kter´e jsem vytvoˇril pomoc´ı objektovˇe orientovan´eho programov´an´ı. Po vytvoˇren´ı aplikace lze tyto dva zp˚ usoby programov´an´ı srovnat. Pro menˇs´ı weby se d´a urˇcitˇe vyuˇz´ıt procedur´aln´ıho programov´an´ı. Pro weby rozs´ahlejˇs´ı bych rozhodnˇe doporuˇcil objektovˇe orientovan´e programov´an´ı, z d˚ uvodu lepˇs´ı architektury a lepˇs´ı pˇrehlednosti. Bˇeˇzn´ y n´avˇstˇevn´ık webu nepozn´a metodu programov´an´ı, tud´ıˇz vybran´a metoda nem´a na funkcionalitu ˇz´adn´ y vliv. U administr´atorsk´eho prostˇred´ı jsem vyuˇzil n´avrhov´eho vzoru MVC. Po vytvoˇren´ı aplikace jsem provedl jej´ı testov´an´ı. D´ıky tomu jsem odhalil chyby, kter´e byly n´aslednˇe opraveny. Chyby u rozs´ahl´e webov´e aplikace vzniknou velmi snadno. Hlavn´ım zdrojem chyb bylo opomenut´ı program´atora. Str´anky byly vytvoˇreny s pouˇzit´ım programovac´ıho jazyka PHP. Pro 44
uchov´an´ı dat byla pouˇzita datab´aze MySQL. V souˇcasn´e dobˇe web slouˇz´ı ˇ pro poskytnut´ı informac´ı o florbalov´em dˇen´ı na ZCU. Od nov´eho ˇskoln´ıho roku bude slouˇzit i pro spr´avu florbalov´e univerzitn´ı ligy. Webov´e str´anky jsou dostupn´e na http://www.florbal.zcu.cz. Uk´azky rozhran´ı jsou uvedeny v Pˇr´ıloze E. Web by se mohl do budoucna rozˇs´ıˇrit o galerii obr´azk˚ u. Dalˇs´ı moˇznost´ı 1 rozˇs´ıˇren´ı je vyuˇzit´ı OCR pro automatick´e naˇc´ıt´an´ı z´apis˚ u o utk´an´ı. To by pˇrineslo dalˇs´ı automatizaci a zjednoduˇsen´ı pr´ace pro administr´atora.
1
OCR – Optical Character Recognition
45
Literatura [1]
Tvorba WWW - o webdesignu, grafice a reklame: ASP Active Server Pages [online]. [cit. 2014-04-11]. Dostupne z: http://www.tvorba-webu.cz/php/asp.php
[2]
ˇ BC. VIKTOR MLADENKA. Charakteristika datab´azov´ ych syst´em˚ u a tvorba datab´aze [online]. [cit. 2014-04-11]. Dostupn´e z: http://www.vn.cz/ mladenkav/izm/mpi/MPI%2012.doc
[3]
ˇ APKA, ´ ´ C David. 1. d´ıl - Uvod do ASP.NET. Devbook.cz [online]. [cit. 2014-04-12]. Dostupn´e z: http://www.devbook.cz/tutorialuvod-do-asp-dot-net
[4]
ˇ APKA, ´ C David. Datab´aze: Tvorba konceptu´aln´ıho modelu z business zad´an´ı. Devbook.cz [online]. [cit. 201404-12]. Dostupn´e z: http://www.devbook.cz/databaze-navrhkonceptualni-model-z-business-zadani
[5]
HOLZSCHLAG, Molly E. HTML a CSS jdi do toho. Praha: Grada Publishing, a.s., 2006. ISBN 80-247-1451-X.
[6]
Testov´an´ı softwaru: z´aklady testov´an´ı. BOROV´ COVA, Anna. [online]. [cit. 2014-04-19]. Dostupn´e z: http://testovanisoftwaru.blogspot.cz/
[7]
StatCounter: GlobalStat. [online]. [cit. 2014-04-19]. Dostupn´e z: http://gs.statcounter.com/
[8]
Dibi is Database Abstraction Library for PHP 5. | dibi [online]. 2008, 2014 [cit. 2014-04-20]. Dostupn´e z: http://dibiphp.com/cs/
46
[9]
OZANA, Roman. CLEditor fajn´ y WYSIWYG HTML Editor. [online]. [cit. 2014-04-20]. Dostupn´e z: http://www.nabito.net/cleditor-fajny-wysiwyg-html-editor/
[10]
MVC architektura. Devbook.cz [online]. [cit. 2014-04-20]. Dostupn´e z: http://www.devbook.cz/mvc-architektura-navrhovyvzor
[11]
Prezentaˇcn´ı vzory z rodiny MVC. Zdrojak.cz [online]. [cit. 201404-20]. Dostupn´e z: http://www.zdrojak.cz/clanky/prezentacnivzory-zrodiny-mvc/
[12]
Pˇrechod z MySQL. Postgres.cz [online]. 2013 [cit. 2014-04-20]. Dostupn´e z: http://postgres.cz/wiki/Pˇrechod z MySQL
47
Seznam pouˇ zit´ıch zkratek ˇ (University of West Bohemia) ZCU Zkratka pro Z´apadoˇceskou univerzitu v Plzni. KTS Katedra tˇelesn´e v´ ychovy a sportu. ˇ CAH ˇ e akademick´e hry. Cesk´ UFL (University floorball league) Univerzitn´ı florbalov´a liga. IFF (International Floorball Federation) Mezin´arodn´ı florbalov´a federace. PDF (Portable Document Format) Soubor´ y form´at pro ukl´ad´an´ı dokument˚ u. HTML (HyperText Markup Language) Hypertextov´ y znaˇckovac´ı jazyk.. CSS (Cascading Style Sheets) Kask´adovac´ı styl pro desing webu. PHP ( Hyperrtext Preprocessor) Skriptovac´ı programovac´ı jazyk. ASP.NET (Active Server Pages .NET) Souˇca´st .NET Frameworku pro tvorbu webov´ ych aplikac´ı a sluˇzeb. C# (C sharp) Vysoko´ urovˇ nov´ y objektovˇe orientovan´ y programovac´ı jazyk. SQL (Structured Query Language) Strukturovan´ y dotazovac´ı jazyk pouˇz´ıvan´ y pro pr´aci s daty v datab´az´ıch. MVC (Model, View, Controller) Tˇr´ıvrstv´a architektura, pro oddˇelen´ı logiky od v´ ystupu. MVP (Model , View, Presenter) Tˇr´ıvrstv´a architektura. XLM (Extensible Markup Language)
48
Obecn´ y znaˇckovac´ı jazyk. WYSIWYG (What You See Is What You Get) Pˇrekl´ad´ano jako Co vid´ıte, to dostanete“. ” SMTP (Simple Mail transfer Protocol) Internetov´ y protokol pro pˇrenos zpr´av. CIV Centrum informatizace a v´ ypoˇcetn´ı techniky. URL (Uniform Resource Locator) Definuje adresu urˇcuj´ıc´ı um´ıstˇen´ı dokumentu na internetu. OCR (Optical Character Recognition) Metoda, kter´a pomoc´ı scanneru umoˇzn ˇuje digitalizaci tiˇstˇen´ ych text˚ u..
49
Seznam tabulek 4.1
Atributy entity UZIVATELE
4.2
Atributy entity ROZHODCI . . . . . . . . . . . . . . . . . . 23
4.3
Atributy entity HRAC
4.4
Atributy entity GOLMAN . . . . . . . . . . . . . . . . . . . 24
4.5
Atributy entity TYM . . . . . . . . . . . . . . . . . . . . . . 25
4.6
Atributy entity FAKULTA . . . . . . . . . . . . . . . . . . . 25
4.7
Atributy entity POST . . . . . . . . . . . . . . . . . . . . . . 26
4.8
Atributy entity ROLE
4.9
Atributy entity STATUS . . . . . . . . . . . . . . . . . . . . 26
4.10 Atributy entity FORUM
. . . . . . . . . . . . . . . . . 23
. . . . . . . . . . . . . . . . . . . . . 24
. . . . . . . . . . . . . . . . . . . . . 26
. . . . . . . . . . . . . . . . . . . . 27
4.11 Atributy entity ZAPAS . . . . . . . . . . . . . . . . . . . . . 29 4.12 Atributy entity ROZLOSOVANI 4.13 Atributy entity TEXTY
. . . . . . . . . . . . . . . 30
. . . . . . . . . . . . . . . . . . . . 31
4.14 Atributy entity STRANKA
. . . . . . . . . . . . . . . . . . 32
4.15 Atributy entity AKTUALITY . . . . . . . . . . . . . . . . . 32
50
Seznam obr´ azk˚ u 2.1
Diagram pouˇzit´ı uˇzivatel˚ u. . . . . . . . . . . . . . . . . . . . .
5
2.2
Diagram pouˇzit´ı administr´atora. . . . . . . . . . . . . . . . . .
6
3.1
Model komunikace klient – datab´aze . . . . . . . . . . . . . . 10
3.2
Uk´azka struktury MySQL . . . . . . . . . . . . . . . . . . . . 11
3.3
Sch´ema MVC architektury. . . . . . . . . . . . . . . . . . . . . 13
3.4
Sch´ema MVP architektury. . . . . . . . . . . . . . . . . . . . . 14
4.1
Model n´avrhu datab´aze . . . . . . . . . . . . . . . . . . . . . . 17
4.2
Konceptu´aln´ı sch´ema ˇca´sti pro rozdˇelen´ı uˇzivatel˚ u. . . . . . . . 18
4.3
Vztah UZIVATELE – HRAC . . . . . . . . . . . . . . . . . . 19
4.4
Vztah UZIVATELE – ROZHODCI . . . . . . . . . . . . . . . 19
4.5
Vztah HRAC – GOLMAN . . . . . . . . . . . . . . . . . . . . 19
4.6
Vztah HRAC – TYM . . . . . . . . . . . . . . . . . . . . . . . 20
4.7
Vztah HRAC – ROLE . . . . . . . . . . . . . . . . . . . . . . 20
4.8
Vztah HRAC – POST . . . . . . . . . . . . . . . . . . . . . . 20
4.9
Vztah HRAC – STATUS . . . . . . . . . . . . . . . . . . . . . 21
4.10 Vztah HRAC – FAKULTA . . . . . . . . . . . . . . . . . . . . 21 51
4.11 Vztah TYM – FORUM . . . . . . . . . . . . . . . . . . . . . . 21 4.12 Vztah ROZHODCI – FORUM . . . . . . . . . . . . . . . . . . 22 4.13 Konceptu´aln´ı sch´ema spr´avy z´apas˚ u. . . . . . . . . . . . . . . 27 4.14 Vztah TYM – ZAPAS . . . . . . . . . . . . . . . . . . . . . . 28 4.15 Vztah ROZHODCI – ZAPAS . . . . . . . . . . . . . . . . . . 28 4.16 Konceptu´aln´ı sch´ema spr´avy text˚ u a aktualit. . . . . . . . . . 30 4.17 Vztah TEXTY – STRANKA . . . . . . . . . . . . . . . . . . 31 5.1
Struktura administr´atorsk´eho prostˇred´ı. . . . . . . . . . . . . . 38
7.1
Kompletn´ı konceptu´aln´ı sch´ema navrˇzen´e pro aplikaci. . . . . 53
7.2
Fyzick´ y datov´ y model pro navrˇzenou aplikaci. . . . . . . . . . 54
7.3
Ikona pro pˇrihl´aˇsen´ı. . . . . . . . . . . . . . . . . . . . . . . . 58
7.4
Uk´azka veˇrejn´e ˇc´asti po pˇrihl´aˇsen´ı. . . . . . . . . . . . . . . . 64
7.5
Uk´azka administr´atorsk´e ˇc´asti po pˇrihl´aˇsen´ı. . . . . . . . . . . 64
52
Pˇ r´ıloha A – Konceptu´ aln´ı sch´ ema
GOLMAN
POST
studuje
# * id hrace * golman o cislo dresu o vstrelene goly o asistence o trestne minuty o karty
FAKULTA # * id fakulty o zkratka_fakulty
je
hraje
ROLE
STATUS # * id status o status o zkratka_statusu o cena_semestr
HRAC
hraje za
TYM
je
# * id zpravy o text o email o vlozeno
FORUM
# * id uzivatele o jmeno o prijmeni o email o telefon o aktivni o rozhodci o prihlasovaci_jmeno o heslo o poznamky
UZIVATELE
je ROZHODCI
ZAPAS
# * id rozhodci o poznamky
# * id zapasu o den o datum o goly domaci o goly hoste o hraci kolo
# * id_textu o text
TEXTY
zobrazuje
STRANKA
# * id_stranky o stranka
ROZLOSOVANI
# * id_rozlosovani o domaci o hoste o pocet_tymu
AKTUALITY
# * id_aktuality o vlozeno o nadpis o text
53
# * id golman o pocet zapasu o obdrzene goly o zakroky o pocet vyher
# * id post o post o zkratka
# * id_role o role
# * id teamu o nazev o vyhry o prohry o remizi o poznamky
Obr´azek 7.1: Kompletn´ı konceptu´aln´ı sch´ema navrˇzen´e pro aplikaci.
Pˇ r´ıloha B – Fyzick´ y model
Obr´azek 7.2: Fyzick´ y datov´ y model pro navrˇzenou aplikaci.
54
Pˇ r´ıloha C – uk´ azka skript˚ u Definice tabulek Uk´azka vytvoˇren´ı tabulky HRAC CREATE TABLE HRAC( id_hrace id_uzivatele id_teamu id_fakulty id_status id_role id_post golman id_golmana cislo_dresu vstrelene_goly asistence trestne_minuty karty
INTEGER NOT INTEGER NOT INTEGER NOT INTEGER NOT INTEGER NOT INTEGER NOT INTEGER NOT CHAR (1) , INTEGER , INTEGER , INTEGER , INTEGER , INTEGER , INTEGER
NULL NULL NULL NULL NULL NULL NULL
, , , , , , ,
);
Definice prim´ arn´ıch kl´ıˇ c˚ u, ciz´ıch kl´ıˇ c˚ u Nastaven´ı prim´arn´ıho kl´ıˇce k dan´e tabulce: ALTER TABLE HRAC ADD CONSTRAINT HRAC_PK PRIMARY KEY ( id_hrace ); Nastaven´ı ciz´ıch kl´ıˇc˚ u: ALTER TABLE HRAC ADD CONSTRAINT HRAC_FAKULTA_FK FOREIGN KEY ( id_fakulty ) REFERENCES FAKULTA ( id_fakulty );
ALTER TABLE HRAC ADD CONSTRAINT HRAC_GOLMAN_FK FOREIGN KEY ( id_golman ) REFERENCES GOLMAN ( id_golman );
55
ALTER TABLE HRAC ADD CONSTRAINT HRAC_POST_FK FOREIGN KEY ( id_post ) REFERENCES POST ( id_post );
ALTER TABLE HRAC ADD CONSTRAINT HRAC_ROLE_FK FOREIGN KEY ( id_role ) REFERENCES ROLE ( id_role );
ALTER TABLE HRAC ADD CONSTRAINT HRAC_STATUS_FK FOREIGN KEY ( id_status ) REFERENCES STATUS ( id_status );
ALTER TABLE HRAC ADD CONSTRAINT HRAC_TYM_FK FOREIGN KEY ( id_teamu ) REFERENCES TYM ( id_teamu );
ALTER TABLE HRAC ADD CONSTRAINT HRAC_UZIVATELE_FK FOREIGN KEY ( id_uzivatele ) REFERENCES UZIVATELE ( id_uzivatele );
Definice zbyl´ eho nastaven´ı U urˇcit´ ych atribut˚ u nastav´ıme v´ ychoz´ı hodnoty: ALTER TABLE ‘hrac‘ CHANGE ‘vstrelene_goly‘ ‘vstrelene_goly‘ INT( 11 ) NULL DEFAULT ’0’;
ALTER TABLE ‘hrac‘ CHANGE ‘asistence‘ ‘asistence‘ INT( 11 ) NULL DEFAULT ’0’;
ALTER TABLE ‘hrac‘ CHANGE ‘trestne_minuty‘ ‘trestne_minuty‘ INT( 11 ) NULL DEFAULT ’0’;
ALTER TABLE ‘hrac‘ CHANGE ‘karty‘ ‘karty‘ INT( 11 ) NULL DEFAULT ’0’;
56
Pˇ r´ıloha D – Obsah CD-ROM CD-ROM je um´ıstˇen´ y v na pˇredn´ı stranˇe desek bakal´aˇrsk´e pr´ace. Obsah disku je uveden n´ıˇze:
Dokumentace Skripty Sch´ ema Zdrojov´ e k´ ody
Adres´aˇr s t´ımto dokumentem a jeho zdrojov´ ym textem. Skripty pro vytvoˇren´ı datab´azov´eho modelu. Sch´ema datab´azov´eho modelu. Adres´aˇr se vˇsemi zdrojov´ ymi k´ody.
57
Pˇ r´ıloha E – Uˇ zivatelsk´ a pˇ r´ıruˇ cka Uˇzivatelsk´a dokumentace je rozdˇelena podle jednotliv´ ych rol´ı. V pˇr´ıloze F jsou zobrazeny screenshoty webov´e aplikace. Hr´aˇc˚ um registrovan´ ym vedouc´ım t´ ymu je doporuˇceno, aby sv´e pˇrihlaˇsovac´ı u ´daje pˇri prvn´ı n´avˇstˇevˇe zmˇenili! Po pˇreˇcten´ı uˇzivatelsk´e dokumentace by mˇelo b´ yt ˇcten´aˇri jasn´e, jak danou aplikace ovl´adat.
Pro hr´ aˇ ce Aby se mohli hr´aˇci pˇrihl´asit, je nejprve nutn´e zaregistrovat t´ ym. Tento u ´kol m´a na starost vedouc´ı t´ ymu, kter´ y pod´a pˇrihl´aˇsku pomoc´ı formul´aˇre na str´ance pro pˇrihl´aˇsen´ı t´ ymu, na kterou se dostane n´asleduj´ıc´ı cestou UFLˇ ´ SKA->Pˇ ˇ >PRIHL A rihlas t´ym!. Pokud vedouc´ı t´ ymu vˇse vypln´ı spr´avnˇe, pˇrihl´aˇska se odeˇsle do syst´emu, kde na jej´ı potvrzen´ı ˇcek´a spr´avce. Po potvrzen´ı spr´avcem pˇrijde vedouc´ımu t´ ymu email o aktivaci pˇr´ıstupu. Do t´eto doby se hr´aˇc nemohl pˇrihl´asit! Pokud spr´avce t´ ym vymaˇze, vedouc´ı t´ ymu o tom bude informov´an emailovou zpr´avou. Po aktivaˇcn´ım emailu se m˚ uˇze vedouc´ı pˇrihl´asit do syst´emu pomoc´ı kliknut´ı na ikonu pod tabulkou na str´ank´ach (obr. 7.3).
Obr´azek 7.3: Ikona pro pˇrihl´aˇsen´ı. ˚ TYM. ´ Po u ´spˇeˇsn´em pˇrihl´aˇsen´ı pˇribyde uˇzivateli v menu nov´a z´aloˇzka MUJ Kliknut´ım na tuto z´aloˇzku je moˇzn´e se dostat do struˇcn´eho pˇrehledu sv´eho t´ ymu. Zde se nach´az´ı aktu´aln´ı informace a dvˇe moˇznosti. ´ Prvn´ı z nich je moˇznost vstoupit na t´ ymov´e f´orum pomoc´ı tlaˇc´ıtka TY´ FORUM ´ MOVE a komunikovat s ostatn´ımi hr´aˇci t´ ymu. Pro pˇrid´an´ı vzkazu je ˇ ˇ se dostazapotˇreb´ı kliknout na tlaˇc´ıtko PRIDAT VZKAZ, tlaˇc´ıtkem ZPET neme zp´atky na informace o t´ ymu. Pˇri pˇrid´av´an´ı nov´e zpr´avy n´am nabˇehne textov´e pole, do kter´eho m˚ uˇze napsat naˇsi zpr´avu. Tlaˇc´ıtkem SMAZAT odstran´ıme veˇsker´ y text z textov´eho pole. Tlaˇc´ıtkem ODESLAT se zpr´ava odeˇsle a dojde k pˇresmˇerov´an´ı zpˇet na t´ ymov´e f´orum. Pro poˇr´adek se jako autor 58
zpr´avy bere automaticky pˇr´ıjmen´ı hr´aˇce. ´ ´ Druh´a z moˇznost´ı je tlaˇc´ıtko SPRAVA TYMU. Tuto moˇznost m´a pouze vedouc´ı t´ ymu! Po kliknut´ı na toto tlaˇc´ıtko se zobraz´ı seznam hr´aˇc˚ u v t´ ymu vˇcetnˇe vedouc´ıho. Zde m´a vedouc´ı t´ ymu dalˇs´ı moˇznosti. Jedna z nich je tlaˇ ´CE, ˇ kter´a po stisknut´ı nab´ıdne formul´aˇr pro pˇrid´an´ı hr´aˇce ˇc´ıtko PRIDEJ HRA na soupisku. Pˇri spr´avn´em vyplnˇen´ı u ´daj˚ u a odesl´an´ım formul´aˇre pomoc´ı tlaˇc´ıtka Pˇridej hr´aˇce je hr´aˇc zaps´an na soupisku t´ ymu. Pˇridan´emu hr´aˇci pˇrijde upozornˇen´ı na email, ˇze byl registrov´an i s pˇrihlaˇsovac´ımi u ´daji. Pˇridan´ y hr´aˇc je aktivn´ı, spr´avce nemus´ı nic povolovat. Vedouc´ı t´ ymu po pˇrid´an´ı hr´aˇce je vr´acen na soupisku t´ ymu. Dalˇs´ı z moˇznost´ı vedouc´ıho je, maz´an´ı hr´aˇc˚ u pomoc´ı tlaˇc´ıtka Smazat, kter´e je vˇzdy vedle kaˇzd´eho hr´aˇce na soupisce. Po stisknut´ı tlaˇc´ıtka je hr´aˇc nevratnˇe smaz´an, pro jeho opˇetovnou u ´ˇcast v lize ho mus´ıte znovu pˇridat pomoc´ı pˇr´ıkaz˚ u zm´ınˇen´ ych v´ yˇse. Opˇet i zde je tlaˇc´ıtko ˇ kter´e n´as vr´at´ı na informaˇcn´ı str´anku o t´ ZPET, ymu. Pˇri pˇrihl´aˇsen´ı se uˇzivateli v prav´em horn´ım rohu str´anky objev´ı informaˇcn´ı panel s moˇznostmi odhl´aˇsen´ı, k tomu slouˇz´ı tlaˇc´ıtko Odhl´asit se, po stisknut´ı je uˇzivatel odhl´aˇsen. Druh´e tlaˇc´ıtko Nastaven´ı slouˇz´ı k nastaven´ı sv´ ych u ´daj˚ u. Stisknut´ım tohoto tlaˇc´ıtka se uˇzivateli naˇctou jeho u ´daje, kter´e m˚ uˇze mˇenit. Pro potvrzen´ı nov´ ych u ´daj˚ u o hr´aˇci slouˇz´ı tlaˇc´ıtko Aktualizuj u ´daje, pro nastaven´ı pˇrihlaˇsovac´ıch u ´daj˚ u slouˇz´ı tlaˇc´ıtko Aktualizuj pˇrihlaˇsovac´ı u ´daje. Vedouc´ımu t´ ymu je doporuˇceno aktualizovat si sv´e data, kter´e po nˇem nebyly u registrace poˇzadov´any! Pokud se chce hr´aˇc st´at rozhodˇc´ım a nechce m´ıt dvoje pˇrihlaˇsovac´ı u ´daje, je ´ dobr´e b´ yt pˇrihl´aˇsen a registrovat se. Udaje se automaticky vypln´ı z jiˇz registrovan´eho uˇzivatele a je automaticky zaˇrazen mezi rozhodˇc´ı. V´ıce informac´ı k t´eto vˇeci jsou v n´asleduj´ıc´ı ˇc´asti vˇenovan´e rozhodˇc´ım.
Pro rozhodˇ c´ı St´at se rozhodˇc´ım m˚ uˇze kdokoliv, kdo splˇ nuje povinnosti rozhodˇc´ıho uveden´e na str´ance pro registraci a v region´aln´ıch propozic´ıch UFL pro Plzeˇ n (cesta UFL->PROPOZICE->Region´aln´ı propozice UFL pro Plzeˇ n). Pro reˇ I´ gistraci rozhodˇc´ıho je nutn´e vyplnit formul´aˇr na str´ance UFL->ROZHODC >Registruj se!. Nezapomeˇ nte, pokud jste hr´aˇcem, pˇrihlaste se a aˇz pot´e se registrujte! Po spr´avn´em vyplnˇen´ı stisknˇete tlaˇc´ıtko Registruj se, v pˇr´ıpadˇe bezprobl´emov´eho vyplnˇen´ı formul´aˇre rozhodˇc´ı ˇcek´a na aktivaˇcn´ı email. Ten se mu odeˇsle, aˇz spr´avce potvrd´ı jeho moˇznou u ´ˇcast, jako rozhodˇc´ı. V pˇr´ıpadˇe smaz´an´ı registrace rozhodˇc´ıho je o tom uˇzivatel informov´an opˇet emailovou
59
zpr´avou. Tak jako hr´aˇci se po pˇrihl´aˇsen´ı zobraz´ı v prav´em horn´ım rohu informaˇcn´ı panel s moˇznostmi odhl´aˇsen´ı a nastaven´ı u ´daj˚ u (viz. Pˇr´ıruˇcka pro hr´aˇce). Pˇrihl´asit se do syst´emu jde kliknut´ım na ikonu pod tabulkou na str´ank´ach (obr. 7.3). Pro pˇrihl´aˇsen´ı na z´apas mus´ı rozhodˇc´ı j´ıt zpˇet na str´anku, kde se registroval. Zde uˇz nen´ı moˇzn´a registrace jako takov´a, ale rozhodˇc´ı uvid´ı seznam z´apas˚ u, kter´e se jeˇstˇe neodehr´aly. Ke vˇsem tˇemto z´apas˚ um existuj´ı tˇri moˇznosti, kter´e m˚ uˇzou nastat. Pro pˇrihl´aˇsen´ı na z´apas m´ame moˇznost ˇ ´ PRIHL ASIT, stisknut´ım t´eto moˇznosti se pˇrihl´as´ıme na z´apas, kter´ y chceme p´ıskat. U dan´eho z´apasu n´aslednˇe vid´ıme sv´e pˇr´ıjmen´ı mezi rozhodˇc´ımi a moˇz´ nost ODHLASIT. Po stisknut´ı t´eto moˇznosti se odhl´as´ıme ze z´apasu. Posledn´ı moˇznost, kter´a m˚ uˇze nastat, je, pokud bude z´apas jiˇz obsazen rozhodˇc´ımi, pot´e nejde se na dan´ y z´apas dostat a vid´ıme OBSAZENO. Stejnˇe jako t´ ymy maj´ı rozhodˇc´ı tak´e sv´e f´orum pro komunikaci, do t´eto ´ ˇc´asti se dostaneme tlaˇc´ıtkem R-FORUM, kter´e je um´ıstˇeno nad z´apasy, na kter´e se lze pˇrihl´asit. Ovl´ad´an´ı je stejn´e jako u f´ora t´ ymu (viz. Pˇr´ıruˇcka pro hr´aˇce). Posledn´ı moˇznost, kterou rozhodˇc´ı m´a, je zobrazen´ı kontakt˚ u na ostatn´ı rozhodˇc´ı, na kter´e se d´a dostat pomoc´ı tlaˇc´ıtka KONTAKTY NA ´ OSTATNI´ um´ıstˇen´e vedle tlaˇc´ıtka R-FORUM.
Pro administr´ atora Administr´ator se nemus´ı nijak registrovat. Pˇrihlaˇsovac´ı u ´ˇcet je automaticky vygenerov´an. Pro pˇrihl´aˇsen´ı do administr´atorsk´eho prostˇred´ı je opˇet nutn´e kliknout na ikonu pod tabulkou na str´ank´ach (obr. 7.3). Po spr´avn´em vyplnˇen´ı u ´daj˚ u je spr´avce pˇresmˇerov´an do sv´eho prostˇred´ı, kde jako prvn´ı vid´ı struˇcn´ y pˇrehled. Pˇrev´aˇznˇe vˇsechny vypsan´e informace jsou zobraziteln´e i d´ale, po kliknut´ı na kter´ ykoliv u ´daj, se zobraz´ı detailnˇejˇs´ı popis toho, na co spr´avce zm´aˇckl. V prostˇred´ı je menu um´ıstˇeno nahoˇre str´anky po cel´e d´elce. Jednotliv´e z´aloˇzky jsou rozˇrazeny podle jejich funkcionality. Prvn´ı poloˇzkou je Florbal, kter´a n´as po kliknut´ı pˇresmˇeruje zpˇet na u ´vodn´ı str´anku administr´atorsk´eho prostˇred´ı. N´asleduje poloˇzka Hr´aˇci, ve kter´e jsou podz´aloˇzky Pˇridat hr´aˇce a Seznam hr´aˇc˚ u. Jak uˇz n´azev napov´ıd´a, tak pro pˇrid´an´ı hr´aˇce zvol´ıme prvn´ı zm´ınˇenou moˇznost. Po spr´avn´em vyplnˇen´ı a odesl´an´ı formul´aˇre tlaˇc´ıtkem Pˇriˇ dat uˇzivatele je hr´aˇc zaps´an na soupisku vybran´eho t´ ymu. Cerven´ e poloˇzky jsou povinn´e, modr´e nepovinn´e. Doporuˇcen´ı je, ale vyplnit popˇr´ıpadˇe vybrat z moˇznost´ı vˇsechny informace. Podz´aloˇzkou Seznam hr´aˇc˚ u se n´am zobraz´ı struˇcn´ y seznam vˇsech registrovan´ ych hr´aˇc˚ u, kde jsou vedle kaˇzd´eho z´aznamu 60
tˇri moˇznosti. Prvn´ı je tlaˇc´ıtko Detail, kter´e n´as pˇresmˇeruje na str´anku s detaily vybran´eho hr´aˇce, zde je moˇznost pˇrej´ıt rovnou k jeho editaci, ˇci smaz´an´ı pomoc´ı tlaˇc´ıtek Upravit a Smazat. Stejn´e tlaˇc´ıtka jsou i dvˇe zbyl´e moˇznosti pˇri v´ ypisu hr´aˇc˚ u. Tlaˇc´ıtkem Smazat se hr´aˇc odstran´ı. Tlaˇc´ıtkem Upravit se zobraz´ı formul´aˇr pro jeho u ´pravu informac´ı. Analogicky to je u z´aloˇzky T´ymy a Rozhodˇc´ı. U t´ ym˚ u je tˇreba si d´at pozor, ˇze pˇri smaz´an´ı t´ ymu se odstran´ı i jeho vˇsichni hr´aˇci! Rozhodˇc´ı maj´ı jednu podz´aloˇzku nav´ıc a to Pˇrehled p´ısk´an´ı. Po kliknut´ı na tuto moˇznost se n´am zobraz´ı seznam z´apas˚ u s v´ ypisem rozhodˇc´ıch. U kaˇzd´eho z´apasu je tlaˇc´ıtko Upravit, kter´e slouˇz´ı pro nastaven´ı rozhodˇc´ıch k dan´emu z´apasu. Po kliknut´ı na toto tlaˇc´ıtko m´ame moˇznost pozmˇenit rozhodˇc´ı v´ ybˇerem jin´eho, popˇr´ıpadˇe uvolnit pozici. Pro uvolnˇen´ı pozice je zde moˇznost - - - - - - -. Tlaˇc´ıtkem Upravit p´ıskaj´ıc´ı se nastav´ı vybran´ y rozhodˇc´ı k z´apasu. Dalˇs´ı poloˇzkou v menu je moˇznost Statistiky, kter´a m´a podz´aloˇzky Kanadsk´e bodov´an´ı, Brank´aˇrsk´e statistiky a Tabulka. Kliknut´ım na prvn´ı zm´ınˇenou moˇznost se n´am zobraz´ı seznam hr´aˇc˚ u seˇrazen´ y podle celkov´eho poˇctu bod˚ u. Ke kaˇzd´emu z´aznamu jsou moˇznosti Pˇridej G, kter´ y na kliknut´ı pˇrid´a hr´aˇci g´ol. Dalˇs´ı je Pˇridej A, kter´ y po stisknut´ı pˇrid´a hr´aˇci asistence. N´asleduje tlaˇc´ıtko Pˇridej 2 TM, kter´ y pˇrid´a dvˇe trestn´e minuty. Posledn´ı moˇznost´ı je Nastav bodov´an´ı, kter´e n´as po kliknut´ı pˇresmˇeruje na formul´aˇr pro ruˇcn´ı zad´an´ı hodnot. Tlaˇc´ıtkem Uprav statistiky se nastav´ı zadan´e hodnoty. Pro usnadnˇen´ı je zde vyhled´avaˇc, podle soupisek jednotliv´ ych t´ ym˚ u. Moˇznost´ı Hledej hr´aˇce se n´am zobraz´ı seznam hr´aˇc˚ u vybran´eho t´ ymu. Tlaˇc´ıtkem Zpˇet na v´ypis se dostaneme zpˇet na v´ ypis vˇsech hr´aˇc˚ u. Brank´aˇrsk´e statistiky funguj´ı podobnˇe. Po kliknut´ı na tuto podz´aloˇzku se n´am zobraz´ı seznam brank´aˇr˚ u. Tlaˇc´ıtkem Pˇridej hodnoty se zobraz´ı formul´aˇr pro pˇrid´an´ı hodnot, pro pˇrid´an´ı je nutn´e stisknout tlaˇc´ıtko Uprav statistiky. Touto moˇznost´ı pˇrid´ame hodnoty ke st´avaj´ıc´ım. Tlaˇc´ıtkem Uprav statistiku lze upravit celkov´e hodnoty brank´aˇre. Po kliknut´ı na toto tlaˇc´ıtko se n´am nab´ıdne formul´aˇr pro zad´an´ı nov´ ych hodnot, pro nastaven´ı je nutn´e zm´aˇcknout tlaˇc´ıtko Uprav statistiky. Po kliknut´ı na posledn´ı podz´aloˇzku Tabulka se n´am zobraz´ı seznam t´ ym˚ u s moˇznosti Pˇridej v´yhru, Pˇridej prohru a Pˇridej rem´ızu. Vˇsechny zm´ınˇen´e moˇznosti pˇridaj´ı t´ ymu dan´ y atribut. Posledn´ım tlaˇc´ıtkem je Nastav bodov´an´ı, kter´e slouˇz´ı pro ruˇcn´ı nastaven´ı hodnot jako v kanadsk´em bodov´an´ı. Z´aloˇzka Z´apasy slouˇz´ı pro pˇrehled a spr´avu z´apas˚ u. Po kliknut´ı na podz´aloˇzku Seznam z´apas˚ u se n´am zobraz´ı vˇsechny napl´anovan´e z´apasy. Opˇet kaˇzd´ y z nich m´a dvˇe moˇznosti Smazat, po kliknut´ı na tuto moˇznost se dan´ y z´apas odstran´ı a druh´a moˇznost je Upravit. Po kliknut´ı na toto tlaˇc´ıtko se n´am zobraz´ı formul´aˇr s daty o z´apasu, kter´a lze mˇenit. Pro upraven´ı z´apasu je nutn´e formul´aˇr potvrdit tlaˇc´ıtkem Uprav z´apas. Dalˇs´ı podz´aloˇzka je Rozlosov´an´ı. Po volbˇe t´eto moˇznosti je spr´avci zobrazen seznam pˇrihl´aˇse61
n´ ych t´ ym˚ u a moˇznost zad´an´ı poˇzadovan´ ych kalend´aˇrn´ıch dat. Po vyplnˇen´ı ´ dat a zm´aˇcknut´ı tlaˇc´ıtka ROZLOSUJ ZAPASY se n´am zobraz´ı seznam rozlosovan´ ych z´apas˚ u. Pˇred uloˇzen´ım z´apas˚ u je moˇzn´a jejich editace v kolonce Datum. Pokud spr´avci nevyhovuje vygenerovan´e datum, lze ho zmˇenit pr´avˇe kliknut´ım na konkr´etn´ı datum a vybr´an´ım nov´eho data. Pro uloˇzen´ı z´apas˚ u je ˇ ZAPASY. ´ nutn´e z´apasy potvrdit, k tomu slouˇz´ı tlaˇc´ıtko POTVRD Posledn´ı podz´aloˇzkou je V´ysledky z´apas˚ u, po stisknut´ı se n´am zobraz´ı seznam z´apas˚ u s jedinou moˇznost´ı Uprav v´ysledek. Toto tlaˇc´ıtko n´am nab´ıdne formul´aˇr pro vyplnˇen´ı v´ ysledku z´apasu, pro nastaven´ı je nutn´e potvrdit v´ ysledek tlaˇc´ıtkem Uprav z´apas. Pro odesl´an´ı email˚ u je zde z´aloˇzka Zpr´avy, ve kter´e se nach´az´ı podz´aloˇzka Odeˇsli email. Po kliknut´ı se n´am zobraz´ı str´anka s moˇznost´ı vyhled´an´ı uˇzivatele podle pˇr´ıjmen´ı (nebo jeho ˇc´asti). Pro vyhled´an´ı uˇzivatele je nutn´e zm´aˇcknout tlaˇc´ıtko OK. V pˇr´ıpadˇe nalezen´ı uˇzivatele je zobrazen pomoc´ı seznamu s moˇznost´ı Odeˇsli email. Dalˇs´ı z moˇznost´ı je odeslat emailovou zpr´avu vˇsem ˇclen˚ um vybran´eho t´ ymu. Pro vyuˇzit´ı t´eto moˇznosti je nutn´e zm´aˇcknout tlaˇc´ıtko Odeˇsli t´ymu. N´asleduj´ı tˇri rychl´e pˇr´ıstupy pro odesl´an´ı zpr´avy uˇzivatel˚ um. Tyto tlaˇc´ıtka jsou Odeˇsli vˇsem, kter´e slouˇz´ı pro odesl´an´ı vˇsem uˇzivatel˚ um. Tlaˇc´ıtko Odeˇsli rozhodˇc´ım je pro odesl´an´ı zpr´avy vˇsem registrovan´ ym rozhodˇc´ım. Tlaˇc´ıtko Odeˇsli vedouc´ım slouˇz´ı pro odesl´an´ı zpr´avy vˇsem vedouc´ım t´ ymu. Posledn´ı na str´ance je seznam vˇsech hr´aˇc˚ u i rozhodˇc´ıch s jedinou moˇznost´ı Odeˇsli email. Po kliknut´ı na kteroukoliv volbu tlaˇc´ıtka (kromˇe tlaˇc´ıtka OK) na t´eto str´ance je spr´avce vyzv´an pro zad´an´ı pˇredmˇetu zpr´avy a obsahu zpr´avy. Pro odesl´an´ı zpr´avy je nutn´e zm´aˇcknout tlaˇc´ıtko ˇ ODESLI. Pˇredposledn´ı poloˇzkou v menu je Export. Zde se nach´az´ı podz´aloˇzky pro vygenerov´an´ı PDF souboru. Podle n´azvu podz´aloˇzky se vygeneruje pˇr´ısluˇsn´e PDF. Jedin´a podz´aloˇzka Soupiska t´ymu n´am d´av´a na v´ ybˇer, kterou soupisku t´ ymu chceme exportovat. K tomu slouˇz´ı tlaˇc´ıtko Exportovat, kter´e nalezneme u kaˇzd´eho z´aznamu. Posledn´ı z´aloˇzkou je Admin. Zde jsou tˇri podz´aloˇzky. Prvn´ı z nich je Editovat profil, kter´a po stisku nab´ıdne moˇznost zmˇeny pˇrihlaˇsovac´ıch u ´daj˚ u. Pro nastaven´ı nov´ ych u ´daj˚ u je nutn´e stisknout tlaˇc´ıtko Zmˇen ˇ u ´daje. Dalˇs´ı podz´aloˇzkou je Nastaven´ı, zde jsou vyps´any str´anky, kter´ ym lze mˇenit obsah. Kliknut´ım na vybranou str´anku se n´am zobraz´ı aktu´aln´ı obsah str´anky, kter´ y lze pomoc´ı pˇripraven´eho editoru mˇenit. Pro uloˇzen´ı nov´eho obsahu str´anky je nutn´e zm´aˇcknout tlaˇc´ıtko Uloˇz zmˇeny. N´asleduje nastaven´ı aktualit. K tomu slouˇz´ı tlaˇc´ıtko Pˇridej novou a Uprav st´avaj´ıc´ı. Po stisknut´ı prvn´ı moˇznosti jsme vyzv´ani pro zad´an´ı nadpisu aktuality a je pˇripraven editor pro zad´an´ı textu ˇcl´anku. Pro jej´ı uloˇzen´ı je nutn´e kliknout na tlaˇc´ıtko Pˇridej. Po kliknut´ı na druhou moˇznost se n´am zobraz´ı seznam vˇsech pˇridan´ ych aktualit s moˇznostmi Smazat, kter´a po stisknut´ı odstran´ı danou aktualitu a moˇznost 62
Upravit. Po kliknut´ı na toto tlaˇc´ıtko se n´am zobraz´ı formul´aˇr stejn´ y jako pro pˇrid´an´ı aktuality. Po jej´ım upraven´ı je nutn´e uloˇzit dan´ y ˇcl´anek. K tomu je nutn´e kliknout na tlaˇc´ıtko Uloˇz. Posledn´ı moˇznost´ı je tlaˇc´ıtko Nastav nov´y roˇcn´ık. Po kliknut´ı na toto tlaˇc´ıtko probˇehne reset aplikace. Vˇsechna nezbytn´a data budou odstranˇena! Posledn´ı podz´aloˇzkou je Odhl´asit se. Po kliknut´ı na tuto moˇznost je administr´ator odhl´aˇsen z aplikace.
63
Pˇ r´ıloha F – uk´ azka webov´ eho rozhran´ı
Obr´azek 7.4: Uk´azka veˇrejn´e ˇca´sti po pˇrihl´aˇsen´ı.
Obr´azek 7.5: Uk´azka administr´atorsk´e ˇca´sti po pˇrihl´aˇsen´ı.
64