PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY
BAKALÁŘSKÁ PRÁCE
Elektronická třídní kniha
2013
Kellner Lukáš
Místopřísežně prohlašuji, že jsem celou práci včetně příloh vypracoval samostatně.
13. prosinec 2013
Kellner Lukáš
Anotace Tématem bakalářské práce je vytvoření softwaru, který by byl schopen nahradit papírovou třídní knihu. Přičemž tato práce, kromě postupu vytváření softwaru, popisu softwaru a návodu na jeho použití, se také zmiňuje okrajově i o použitých technologiích na jeho tvorbu a dalších technologií, které s vytvořeným softwarem souvisejí.
Na tomto místě bych chtěl touto cestou poděkovat vedoucímu mé bakalářské práce Ing. Jiřímu Hronkovi za ochotu, trpělivost a cenné rady při psaní této práce. Dále bych chtěl poděkovat i mé rodině a přátelům za podporu během mého studia.
Obsah 1. Úvod 1.1. Cíle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Struktura dokumentu . . . . . . . . . . . . . . . . . . . . . . .
9 9 9
2. Analýza zadání 2.1. Stávající řešení . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Možnosti škol . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Výběr směru řešení . . . . . . . . . . . . . . . . . . . . . . . .
10 10 11 12
3. Použité technologie 3.1. Porovnání a výběr technologií 3.2. Popis vybraných technologií . 3.2.1. MySQL . . . . . . . . 3.2.2. C# . . . . . . . . . . . 3.2.3. PHP . . . . . . . . . . 3.2.4. CSS . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
13 13 13 13 14 15 15
4. Vlastní řešení 4.1. Návrh struktury systému . . 4.2. Návrh databáze . . . . . . . 4.3. Návrh školního klienta . . . 4.3.1. Funkčnost . . . . . . 4.3.2. Uživatelské rozhraní 4.4. Návrh rodičovského webu . 4.4.1. Funkčnost . . . . . . 4.4.2. Uživatelské rozhraní
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
16 16 16 17 18 18 18 18 20
. . . . . . . .
21 21 22 22 26 27 28 28 30
. . . . . . . .
5. Popis vytvořeného systému 5.1. Návod na isntalaci a zálohování databáze 5.2. Školní klient . . . . . . . . . . . . . . . . 5.2.1. Popis aplikace . . . . . . . . . . . 5.2.2. Popis řešení některých problémů . 5.2.3. Návod na isntalaci . . . . . . . . 5.3. Rodičovský web . . . . . . . . . . . . . . 5.3.1. Popis aplikace . . . . . . . . . . . 5.3.2. Popis řešení některých problémů .
5
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
5.3.3. Návod na isntalaci . . . . . . . . . . . . . . . . . . . . 31 6. Shrnutí a další vývoj systému
32
Závěr
33
Conclusions
34
Reference
35
A. Obsah přiloženého CD
36
6
Seznam obrázků 1. Grafický návrh systému. . . . . . . . . . . . . . . . 2. Konceptuální model. . . . . . . . . . . . . . . . . . 3. Grafický návrh školního klienta úvodní okno. . . . . 4. Grafický návrh rodičovského webového rozhraní. . . 5. Přihlašovací formulář do školního klienta. . . . . . . 6. Hlavní okno uživatelského rozhraní školního klienta. 7. Uživatelské rozhraní docházky. . . . . . . . . . . . . 8. Uživatelské rozhraní prospěchu. . . . . . . . . . . . 9. Přihlašovací formulář do webového rozhraní. . . . . 10. Rodičovské webové rozhraní. . . . . . . . . . . . . . 11. Docházka ve webovém rozhraní. . . . . . . . . . . . 12. Prospěch ve webovém rozhraní. . . . . . . . . . . .
7
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
16 17 19 21 22 23 24 25 28 29 30 30
Seznam tabulek 1. 2.
Tabulka absence. . . . . . . . . . . . . . . . . . . . . . . . . . 20 Tabulka prospěchu. . . . . . . . . . . . . . . . . . . . . . . . . 20
8
1.
Úvod
V dřívější době, kdy byl internet a jeho použití v „plenkáchÿ, byl výsadou větších organizací, které měly prostředky na technologie umožňující jej využívat. S postupem času se ale stal, tento v dnešní době již fenomén spojující svět do jednoho malého místa, hlavním informačním kanálem lidstva. A proto proč jej nevyužít ve školství, kde může sloužit k mnoha prospěšným účelům. Jedním z nich je například nahrazení „papírovéÿ třídní knihy knihou elektronickou, kterou spravují učitelé a do které mohou online nahlédnou rodiče a tím mít tak své ratolesti pod neustálým dohledem prakticky z jakéhokoli koutu světa.
1.1.
Cíle
Prvořadým cílem této bakalářské práce je vytvoření elektronické náhrady doposud zaběhlé klasické „papírovéÿ třídní knihy s možností online přístupu rodičů k informacím o absenci a prospěchu jejich dětí. Dalším, a ne zanedbatelným, cílem práce je seznámení se s technologiemi souvisejícími s tvorbou databázových systémů.
1.2.
Struktura dokumentu
Dokument je hned po úvodu koncipován do dvou hlavních částí, a to části teoretické a praktické. Teoretickou částí se zabývají kapitoly 2 a 3, ve kterých se přiblíží zadání práce, stav podobných systémů na trhu a technologické možnosti škol. Také bude obsahovat informace o dostupných technologiích pro tvorbu databázových systémů, jejich porovnání a výběr těch, které budou vhodné pro náš projekt(systém). Praktickou částí se zabývají kapitoly 4 a 5. V těchto kapitolách je popsán návrh řešení s vlastním řešením všech částí systému. Dále se zde nachází popis vytvořených aplikací s návody na jejich instalaci a vlastní použití.
9
2.
Analýza zadání
Je čas specifikovat přesně zadání, rozebrat ho a zamyslet se nad směrem řešení. V zadání mé bakalářské práce jsou stanoveny funkce, které by měl systém umožňovat: • registraci nového uživatele, nastavení a editaci jeho práv v aplikaci, podle toho bude omezen přístup do jednotlivých částí aplikace • evidenci studentů, editaci jejich osobních údajů • evidenci učitelů, editaci jejich osobních údajů • rozvrh vyučovacích hodin • evidenci docházky žáků • evidenci prospěchu žáků s možností zvolit váhu jednotlivých známek • zadání vysvědčení a jeho tisk • možnost sledování docházky žáků rodiči
2.1.
Stávající řešení
Programů pro elektronickou školní administrativu existuje více. Záleží na možnostech škol a ochotě ředitelů a pedagogů škol se s daným programem seznámit. O možnostech škol jsem hovořil v minulé kapitole. Zde tedy zdůrazním finanční rámec škol, jelikož většina programů, které se zabývají elektronickými třídními knihami jsou zpoplatněny. Výše poplatků většinou závisí na volbě modulů (např. evidence, třídní kniha, suplování, plán akcí školy, tématické plány atd.), formě zakoupení (nové verze programu či nějaký upgrade starší verze se slevou) či počtu žáků, které školu navštěvují. Mezi takové programy patří např. program Bakaláři [8], jehož hlavním distributorem v ČR je firma PACHNER, vzdělávací software s.r.o. . Tento program je mezi školami hojně rozšířen a myslím, že jsou s ním spokojeni. Takto soudím z diskuse na metodickém portálu škol na http://www.rvp.cz. K dalším placeným programům se řadí AMOSis, což je komplexní informační systém pro základní a střední školy, který rovněž nabízí modulární systém agend. Tedy slouží jako elektronická náhrada za třídní knihu i žákovské knížky. 10
Některé programy nabízí určité výhody, jako například měsíc užívání zdarma. Mezi tyto programy patří např. E-třídnice [6]. Takto mají pedagogové a ředitelé škol možnost si dané moduly vyzkoušet a sami si určit náročnost užívání tohoto programu a pak si i zvolit jeho další užívání. Výhodou tohoto programu je 100% online aplikace, tedy žádná instalace, uživatelé potřebují pouze počítač s internetem. Další z programů, který nabízí zdarma demo verzi programu je Škola online-KATEDRA [5]. Mezi volně šiřitelné aplikace patří například Easy Gradebook [7], což je rovněž šikovná pomůcka pro učitele. Jedná se o elektronickou třídní knihu, jež umožňuje snadné vedení různých záznamů souvisejících s výukou skupiny studentů. Jsou zde k dispozici nástroje pro tvorbu rozvrhů, seznamů studentů, vkládání známek nebo jiného typu hodnocení, statistické nástroje, nástroje pro třídění atd. Program umožňuje generování různých variant reportů a je snadno ovladatelný. Na konec bych ještě zmínil webovou aplikaci, která se také zabývá elektronickým zpracováním třídní knihy, a to aplikací ISAS. Tato internetová aplikace SAS slouží k zobrazení odpovídajících údajů (výpis Elektronické třídní knihy) z databáze SAS na Internetu [4]. Sami vidíte, že programů pro zpracování elektronických třídních knih je mnoho. Záleží na možnostech škol, hlavně finančních, který z programů si vyberou.
2.2.
Možnosti škol
Školy a také učitelé stále nejsou jednotni v názoru na využití počítačů a moderních technologií při výuce. I když je zapojení počítačů do výuky inovativním prvkem, přesto se najdou odpůrci, kteří vidí v počítačích rušivý element, který odvádí žákovu pozornost od učitelova výkladu. (lit. Počítače ve školách - pomáhají i obtěžují Přesto je zde spousta škol, které zapojují moderní komunikační technologie do výuky denně. Mnohé z nich mají všechny učebny ve školách vybaveny počítači, které slouží pedagogům jako podpůrný prvek při výuce. Otázkou však zůstává: „Musí tyto počítače sloužit pouze k výuce?ÿ Pokud škola disponuje tímto vybavením, tak proč jej nevyužít i k jiným účelům, např. ke každodenní práci s elektronickou třídní knihou, která ulehčí práci mnoha učitelům i řediteli školy. Ne však každá škola disponuje takovými možnostmi a vybavením jako jiné školy. Záleží na dotacích, které školy dostávají od MŠMT, na aktivitě ředitele škol při získávání dotací, na zapojení do různých projektů, které do škol 11
přináší nové inovativní vybavení, jehož součástí mohou být právě počítače či notebooky v učebnách. Toto vybavení je pak důležitou podmínkou pro zavedení modulu Elektronické třídní knihy do škol. Kromě již zmiňovaného vybavení jednotlivých tříd, je nutné také síťové připojení a pak se vyučující mohou připojit k dokumentaci na kterémkoli počítači ve škole. K dalším možnostem škol patří také finanční rámec každé školy. Jelikož provoz elektronických třídních knih bývá většinou zpoplatněn. Více o této problematice se dočtete v další kapitole. Kromě možností škol je však nutné, také zmínit ochotu vyučujících se do celého „projektuÿ zapojit. S tím souvísí jejich počítačová gramtonost, možnosti různých školení a možnost si daný program živě vyzkoušet. Proto je vhodné nenásilné zavádění jednotlivých aplikací modulu Elektronické třídní knihy. Začít např. evidencí, další rok připojit klasifikaci apod. Učitelé tak budou určitě lépe spolupracovat a budou mít dostatek času se s novým prostředím seznámit. I starší generace vyučujících bude mít tak možnost si danou aplikaci projít vklidu a díky troše snahy a sebevzdělávání jim tato aplikace bude užitečná a to hlavně v podobě úspory času.
2.3.
Výběr směru řešení
Po zvážení možností, kterými školy disponují spolu s technologiemi, které máme k dispozici, jsem se rozhodl vytvořit systém, který se bude skládat ze tří částí, a to datábázového serveru, klientské aplikace pro zaměstnance školy (administrátor, učitelé) a klientské webové aplikace pro rodiče.
12
3. 3.1.
Použité technologie Porovnání a výběr technologií
Nejprve jsem se rozhodoval, jaký databázový sever budu využívat. Jelikož jsem věděl, že kvalitních databázových strojů je i ve volných distribucích dostatek, neměl jsem zapotřebí uvažovat o placených technologiích. Proto jsem se orientoval na volně šiřitelné databázové stroje, jakými jsou například MySql, PostgreSql, Microsoft SQL Server Express Edition a další. Z těchto strojů jsem po úvaze zvolil MySql, se kterým mám zkušenosti a funkce, kterými MySql disponuje, jsou plně dostačující pro vytvářený systém. Další technologii, kterou jsem si musel vybrat, je programovací jazyk a s tím související vývojové prostředí pro vytvoření školního klienta. Vzhledem k tomu, že mám zkušenosti s Microsoft Visual studiem, které je příjemné vývojové prostředí a zároveň jedno z nejkvalitnějších v dnešní době, proto jsem bral v úvahu jazyky tímto prostředím podporované. Toto prostředí podporuje velké množství jazyků, mezi kterými jsem se rozhodoval tzn. VB, C++ a C#. Nejnovější a zároveň jazyk, který je přívětivý k vytváření databázových aplikací je jazyk C#, a proto jsem zvolil tento. Poslední, v čem jsem se musel rozhodnout, bylo vhodné zvolení technologie pro vytváření rodičovského webového klienta. Zde se nabízí technologie jako jsou ASP, PHP, Html, XHtml, Css, JavaScript a další. Protože potřebuji, aby webová aplikace pracovala s databází a chtěl jsem, aby stránky byly dynamické, má volba se tak zúžila. Měl jsem už nějaké zkušenosti s PHP, které požadavkům vyhovuje také, proto jsem se rozhodl ve prospěh Html s kombinací PHP a CSS.
3.2.
Popis vybraných technologií
V této podkapitole jsou popsány okrajově technologie, které jsem se rozhodl pro vytvoření systému používat. 3.2.1.
MySQL
MySQL je databázový (dále DB) systém, který vytvořila švédská firma MySQL AB, nyní vlastněná společností Sun Microsystems, dceřinou společností Oracle Corporation. Autory tohoto DB systému jsou Michael „Montyÿ Widenius a David Axmark. Tento DB systém je považován za úspěšného 13
průkopníka dvojího licencování tzn. je k dispozici jak pod bezplatnou licencí GPL, tak i pod komerční placenou licencí. MySQL je multiplatformní databáze. Komunikace s ní probíhá, jak už název napovídá, pomocí jazyka SQL. Podobně jako u ostatních SQL databází se jedná o ”dialekt” tohoto jazyka s některými rozšířeními. Pro svou snadnou implementovatelnost (systémy Linux, MS Windows, ale i další OS), výkon a především díky tomu, že se jedná o volně šiřitelný software, má vysoký podíl na v současné době používaných databázích. Velmi oblíbená a často nasazovaná je tato kombinace Linux, Apache, MySQL a PHP a to jako základní software webového serveru („technologie LAMPÿ). MySQL bylo od počátku optimalizováno především na rychlost, a to i za cenu některých zjednodušení tzn. má jednoduché způsoby zálohování, a až donedávna vůbec nepodporovalo pohledy, triggery a uložené procedury. Tyto vlastnosti jsou doplňovány teprve v posledních letech, kdy začaly nejčastějším uživatelům produktu, programátorům webových stránek, již poněkud scházet. 3.2.2.
C#
První verze tohoto jazyka byla vydaná v roce 2002 společně s .NET Frameworkem, bsahovala základní podporu objektového programování, ve které vycházela z jazyka C++ a zkušeností s jejich aktualizací v jazyce Java. Název jazyka C# je odvozen z hudební notace, kde křížek označuje zvýšení noty o půl tónu a v tomto případě by označoval notu cis, tedy C zvýšené o půl tónu. Podobně vznikl název jazyka C++ jako zlepšení jazyka C : „++ÿ totiž v syntaxi jazyka C znamená zvýšení hodnoty proměnné o 1. I když křížek v hudební nauce a křížek na počítačové klávesnici jsou dva odlišné znaky, pro zápis názvu jazyka C Sharp se používá křížku z klávesnice (#) a to proto, že se vyskytuje na standardní klávesnici a je mu nejvíce podobný. C# je jednoduchý, moderní, mnohoúčelový a objektově orientovaný programovací jazyk. Jazyk vyniká velkou programátorskou produktivitou a je vhodný pro vývoj softwarových komponent distribuovaných v různých prostředích. Poskytuje podporu pro vývoj databázových aplikací. Neexistuje zde vícenásobná dědičnost ani žádné globální proměnné a metody. C# je typově bezpečnější než C++. C# neobsahuje a ani nepotřebuje dopřednou deklaraci a není důležité pořadí deklarace metod. Jazyk C# je case sensitive. Vývojová prostředí pro tento jazkyk jsou například Microsoft Visual Studio, které je oficiální vývojové prostředí od společnosti Microsoft, Express 14
edice je k dispozici zdarma, vyšší edice jsou zpoplatněny. Dalším z prostředí je Turbo C# Explorer, což je nástroj od společnosti Borland nebo SharpDevelop, který je OpenSource nástroj fungující jen na platformě Microsoft Windows. 3.2.3.
PHP
Jazyk PHP (původně Professional Home Page, dnes PHP Hypertext Preprocessor) vznikl v roce 1994 jako skriptovací jazyk interpretovaný a prováděný na straně serveru, syntaxe je založena na jazyku C. Jeho autorem je původně Rasmus Lerdorf, postupem času se však z něj stal velký projekt profesionálně vyvíjený týmem programátorů. Jazyk PHP je dnes velmi rozšířený a je podporován většinou poskytovatelů webhostingů. Pokud jde o spíše menší nebo středně rozsáhlé webové projekty, je velmi efektivní a rychlý. Své konkurenty (ASP, JSP) předčí nejen svým výkonem, ale vítězí nad nimi hlavně svými pořizovacími náklady. Jazyk PHP je distribuován zdarma pod licencí Open source, což znamená, že máte přístup k jeho zdrojovým kódům a můžete ho používat, upravovat a dál distribuovat. PHP kód generuje dokumenty HTML, které server vygeneruje na základě php skriptu a pošle zpět klientovi. 3.2.4.
CSS
CSS (Cascading Style Sheets) jsou kaskádové styly pomocí nichž lze formátovat dynamicky vzhled stránek. Jednou z nejdůležitějších výhod je oddělení obsahu webových stránek od jejich vzhledu (prezentační části). Formátovat lze nejenom vzhled textu, ale i veškerých dalších objektů webové stránky. Lze vytvořit i rozvržení stránky. Jedinou menší nevýhodou je nejednotnost interpretace různými prohlížeči.
15
4.
Vlastní řešení
V této kapitole je popsáno vlastní řešení celého systému, které jsem rozdělil do následujících podkapitol.
4.1.
Návrh struktury systému
Systém jsem se rozhodl rozdělit na školního klienta (aplikace v C#), rodičovského webového klienta (webová aplikace v PHP) a samozřejmě databázový stroj (MySQL), bez kterého by nebyl systém kompletní a funkční. Viz obrázek 1., který vyjadřuje návrh systému.
Obrázek 1. Grafický návrh systému.
4.2.
Návrh databáze
V tomto modelu budou vystupovat následující uživatelské role zobrazené na obrázku 2.. Administrátor, který bude mít za úkol spravovat databázi a plnit číselníky databáze jako jsou uživatelé, předměty, třídy a jiné, bude vybaven veškerými právy v databázi. 16
Učitel, bude zadávat a editovat ůdaje o studentech, jejich absenci a prospěch. Na oplátku bude vyžadovat informace o absenci studentů a jejich prospěchu. Třetí a poslední rozlí bude rodič, který bude ze systému jen čerpat informace o docházce a absenci zpřístupněných studentů.
Obrázek 2. Konceptuální model. Strukturu databáze nemůžu umístit do textu, protože je obrázek příliš velký, a tak by nebyl čitelný po jeho zmenšení. Proto jsem umístil obrázek struktury pouze na přiloženém CD do adresáře doc v souboru „TKStruktDB.jpgÿ.
4.3.
Návrh školního klienta
Při návrhu školního klienta jsem chtěl hlavně splnit požadavky na funkčnost a uživatelskou přívětivost.
17
4.3.1.
Funkčnost
• evidenci docházky žáků, což je jedním z nejdůležitějších prvků celé aplikace, když vezmeme v potaz účel nahrazení papírové třídní knihy • evidenci prospěchu žáků s možností zvolit váhu jednotlivých známek je další důležitou funkcí, kterou by aplikace v každém případě měla spl´ novat • rozvrh vyučovacích hodin, aby bylo vůbec možné přiřadit absenci ke konkrétní vyučovací hodině a žákovi, z čehož vyplívají další funkce • evidenci hodnocení žáků na vysvědčení a jeho tisk • registraci nového uživatele, nastavení a editaci práv uživatele v aplikaci, podle toho bude omezen přístup do jednotlivých částí aplikace je bezpečnostní funkce, která by se něměla podceňovat • evidenci studentů, vyučujících, editaci jejich osobních údajů, jsou funkce nutné pro funkčnost aplikace. Není, ale záměrem vytvořit celý školní informační systém, proto tyto funkce pojmu co nejjednodušeji 4.3.2.
Uživatelské rozhraní
Návrh uživatelského rozhraní školního klienta jsem vypracovával povětšinou na papír do bloku a jsou to jen skyci, které se sem nehodí. Navíc by zabralo mnoho místa. Proto uvádím jenom příklad, jak jsem si navrhnul úvodní okno aplikace viz obrázek 3.. V kapitole řešení lze porovnat výsledek.
4.4.
Návrh rodičovského webu
V návrhu rodičovského webového klienta jsem hlavně kladl důraz na jednoduchost a uživatelsky snadný přístup k potřebným informacím o studentovi a také ochranu údajů studenta vůči neoprávněným uživatelům. 4.4.1.
Funkčnost
Tato webová aplikace by měla splňovat tři základní funkce. Pvní z nich je přihlášení pod uživatelkým jménem, které bude přiřazené od školy. Tato
18
Obrázek 3. Grafický návrh školního klienta úvodní okno. funkce je nezbytná z důvodu identifikace uživatele a bezpečnosti dat v systému. Bez identifikace uživatele by bylo nemožné zajistit přístup ke správným informacím tj. informacím pouze o kontrétním studentovi. Pro tuto funkci využijeme v databázi připravené tabulky c pristupy, která nám jednoznačně řekne, o kterých studentech můžeme danému uživateli poskytnout informace. Samozřejmě ověření uživatele zadaným loginem a heslem provedeme s využitím tabulky c uzivatel, ve které máme login a heslo k dispozici. Heslo bude konvertováno pomocí MD5 kodování, aby bylo možné porovnat s heslem uloženém ve stejném formátu v databázi. Druhou funkčnost, kterou musí web zajištovat, je poskytnutí informace o absenci studenta. Řešit ji budu pomocí přehledné tabulky 1., která bude obsahovat datum absence, název předmětu, jméno učitele, který absenci zadal, poznámku o důvodu absence a také informaci, jestli je absence omluvena či ne. Pro výpis těchto hodnot zkombinuji informace z databázových tabulek c uzivatel, c zak, c predmet, dochazka a rozvrh. Třetí a poslední funkcí je poskytnutí informací o prospěchu žáka, kterou 19
Datum Vyučovací hodina 2012-05-15 Matematika 2012-05-16 Český jazyk ... ...
Poznámka Nemocný pozdní příchod ...
Zadal Oml. Kellner Lukáš ANO Kellner Lukáš NE ... ...
Tabulka 1. Tabulka absence.
budu řešit opět přehledovou tabulkou 2.. Ta bude obsahovat známku a k ní přižazenou váhu, poznámku o formě zkoušení, datumu zadání a jménu učitele, který známku zadal. K tomu bude zapotřebí využít databázové tabulky c uzivatel, c zak, c predmet, prospech a rozvrh. Hodnocení 1 3 ...
Váha Poznámka Zadal Zadáno 5 písemná práce Kellner Lukáš 2012-05-13 9 pololetní písemka Kellner Lukáš 2012-05-18 ... ... ... ... Tabulka 2. Tabulka prospěchu.
4.4.2.
Uživatelské rozhraní
Grafika webových stránek by měla být nenásilná, barevná tak, aby naznačila, že vzdělávání žáků není černobílé. Rovněž jsem se snažil, aby členění webových stránek do jednotlivých sekcí bylo přehledné. A také ne každý rodič je počítačově gramotný, a proto by pohyb na těchto stránkách měl být co nejjednodušší viz obrázek 4.. Uživatelské rozhraní jsem rozdělil do třech základních částí. Záhlaví, kde se budou nacházet čtyři tlačítka, které nám zpřístupní jednotlivé funkce webu. Informační pole, které může škola využít podle jejich představ. Například pro oznámení třídních schůzek nebo plánované odstavky systému. Samozřejmě pokud nemá škola stránky svoje, kde už prostor pro tyto informace mají. Zobrazovaná data, v této části se budou zobrazovat výstupní informace podle výběru uživatele o absenci a prospěchu žáka.
20
Obrázek 4. Grafický návrh rodičovského webového rozhraní.
5.
Popis vytvořeného systému
Při vytvoření všech tří částí systému jsem se držel návrhu. V této kapitole uvedu stručný popis nejdůležitějších částí jednotlivých aplikací a postup při jejich instalaci.
5.1.
Návod na isntalaci a zálohování databáze
Pro zprovoznění databáze je potřeba mít nainstalován MySQL server. Instalace je snadná pomocí průvodce instalátoru, který jsem umístil na přiložené CD v adresáři install. Popis instalace je například na http://janitor.cenia.cz/www/public/manual/mysql_install/. Technické požadavky na instalaci jsou v dnešní době zanedbatelné. Server by se měl nacházet v serverovně příslušné školy. Na server je potřeba pomocí funkce „Restoreÿ vytvořit vzorovou databázi, jejíž „backupÿ je přiložen na CD. Vzorová databáze je umístěna na přiloženém CD v adresáři data pod názvem „ETKvzorDB.sqlÿ a dále je zde umístěná i databáze prázdná pod názvem „ETKprazdnaDB.sqlÿ. Používáním systému se bude plnit databáze daty, o které nechceme přijít, proto je potřeba databázi zálohovat pokud možno na fyzicky jiné místo 21
než je server našeho systému. MySQL podporuje automatickou zálohu dat, stačí jen tuto zálohu nastavit pomocí funkce „Scheduleÿ například v MySQL Administrátorovi. Frekvence zálohování je na uživateli systému, ale určitě je vhodné provádět zálohy minimálně jednou denně.
5.2.
Školní klient
Vytvoření školního klienta bylo z celé bakalářské práce nejnáročnější a snažil jsem se splnit všechny požadavky na funkčnost. V této podkapitole popíšu některé základní vlastnosti a uživatelké rozhraní aplikace. Rozsáhlejší popis je obsažen v uživatelském manuálu přiloženém na CD. 5.2.1.
Popis aplikace
Po spuštění aplikace se zobrazí hlavní okno, ve kterém nejsou aktivní žádné funkce kromě příhlášení a ukončení aplikace. Pro přihlášení do aplikace musíme zmáčknout tlačítko „Přihlásitÿ na úvodní obrazovce.
Obrázek 5. Přihlašovací formulář do školního klienta. Zobrazí se Vám okno pro zadání přihlašovacího jména a hesla viz obrázek 5.. Po jejich vyplnění potvrďte kliknutím myši na tlačítko „Okÿ nebo stiskněte klávesu „Enterÿ a pokud je zadané jméno a heslo korektní, program Vám dá na vědomí, že přihlášení proběhlo úspěšně a v úvodním okně
22
viz obrázek 6. se aktivují funkce, které máte oprávnění používat. V opačném případě se zobrazí hlášení o neúspěšném přihlášení.
Obrázek 6. Hlavní okno uživatelského rozhraní školního klienta. Jedna z nejdůležitějších části aplikace, která z velké části nahrazuje „papírovouÿ třídní knihu, je zadávání absence žáků v jednotlivých vyučovacích hodinách. Na obrázku níže je zobrazeno uživatelské rozhraní, ve kterém ji můžete zadávat. K této části aplikace se můžete dostat více způsoby, a to buď v menu pod záložkou „Nástrojeÿ pod položkou „Docházkaÿ viz obrázek 7., nebo rovnou v úvodním okně je umístěno velké tlačítko „Docházkaÿ. Okno je koncipováno tak, aby si uživatel mohl v levé části vybrat pohodlně den, třídu a předmět ze seznamu vyučovacích hodin. K vybrané hodině se budou všechny další provedená akce vztahovat. Pro kontrolu jsou v pravé 23
horní části po výběru předmětu vypsány informace o vybraném předmětu. K zadání nové absence slouží tlačítko „Přidatÿ, jehož stiskem se zobrazí formulář s výběrem hodnot pro zadání nové absence. Do kolonky „Poznámkaÿ se uvádí důvod absence a může mít maximálně 255 znaků. Na závěr vyučovací hodiny by měl vyučující vyplnit i náplň učiva, která se provede stiskem tlačítka „Zadat náplň učivaÿ a vyplněním příslušného textu. Úprava absence se provádí pomocí tlačítka „Editujÿ, po jehož stisknutí se zobrazí formulář pro úpravu informací o vybraném uživateli. Změny se provedou až po potvrzení tlačítkem „Okÿ. Aplikace opět poskytne informaci o korektním uložení změn, které jste provedli.
Obrázek 7. Uživatelské rozhraní docházky. Druhá z nejdůležitějších části aplikace, je zadávání prospěchu žáků v jednotlivých předmětech. Na obrázku níže je zobrazeno uživatelské rozhraní, 24
ve kterém prospěch můžete zadávat. K této části aplikace se můžete dostat více způsoby, a to buď v menu pod záložkou „Nástrojeÿ pod položkou „Prospěchÿ viz obrázek 8., nebo rovnou v úvodním okně je umístěno velké tlačítko se stejným označením.
Obrázek 8. Uživatelské rozhraní prospěchu. Okno je koncipováno tak, aby si uživatel mohl v levé části vybrat pohodlně třídu, do které hledaný žák patří. Po zvolení třídy lze hned vybrat žáka, ke kterému se budou všechny další provedené akce vztahovat. Pro kontrolu jsou v pravé horní části, po výběru žáka, vypsány informace o něm. Nad tabulkou, která poskytuje informace o veškerém hodnocení žáka, se nachází výběr předmětu, ke kterému se známky vztahují. K zadání nové známky slouží tlačítko „Zadat známkuÿ, jehož stiskem se zobrazí formulář s výběrem hodnot pro zadání nového hodnocení. Úprava hodncení se provádí pomocí 25
tlačítka „Editujÿ, po jehož stisknutí se zobrazí formulář pro úpravu informací o vybraném hodnocení. Změny se provedou až po potvrzení tlačítkem „Okÿ. Aplikace opět poskytne informaci o korektním uložení změn, které jste provedli. Pro zbytek popisu aplikace zde není prostor, ale je popsána v souboru „ETKniha.chmÿ, který obsahuje uživatelský manuál a je umístěn a přiloženém CD. 5.2.2.
Popis řešení některých problémů
Při testování aplikace jsem narazil na problém s konfiguračním souborem, který obsahuje citlivá data a je volně čitelný. Proto jsem začal studovat, jak by se dal soubor nějakým způsobem šifrovat. Zjistil jsem, že již existují implementované funkce v C#, které umí pracovat s konfiguračním souborem app.conf a následně jej i šifrovat. Funkce jsou obsaženy ve tříde Configuration. Toto je zdrojový kód funkce kterou používám pro šifrování a dešifrování sekce ConnectionString v konfiguračním souboru. // Otevreni konf. souboru a nacteni sekce ConnectionString Configuration config = ConfigurationManager. OpenExeConfiguration("Tridni_kniha.exe"); ConnectionStringsSection section = config. GetSection("connectionStrings") as ConnectionStringsSection; if (section.SectionInformation.IsProtected) { // Desifrovani sekce section.SectionInformation.UnprotectSection(); } else { // Zasifrovani sekce section.SectionInformation. ProtectSection("DataProtectionConfigurationProvider"); } config.Save(); // Ulozeni do konfiguracniho souboru. Dalším věc, kterou jsem řešil byl souběžný přístup více uživatelů. Na úrovni databázového stroje MySQL jsou implementované vlastnosti, které 26
tyto problémy řeší. Na úrovni webového klienta, by problém vznikout neměl, protože žádná operace nezapisuje do databáze. Ale problém může vzniknout na úrovni školního klienta, kde například při současné editaci jednoho žáka může nastat situace, kdy potvrdí rozdílné změny dva uživatelé ve stejný okamžik. Napadlo mě řešení, při kterém bych přidal u jednotlivých číselníků v databázi attribut, který by mohl nabývat hodnoty true nebo false v závyslosti na tom jestli by s daným záznamem někdo pracoval nebo ne. Řešení by to bylo, ale hned mě napadlo co když někdo vypne nekorektně aplikaci nastane to že daný záznam už nebude nikdy přístupný pro změny. Proto jsem usoudil, že řešení tohoto problému by bylo složitější, než jsem myslel. Z toho důvodu, jsem se zamyslel ještě jednou pořádně nad tím jestli se vyplatí tento problém řešit. Vzhledem k tomu, že prospěch žáka by měl editovat jen jeho učitel a ten je pouze jeden tak by k problémům dojít nemělo. Obdobně je to se zadáváním rozvrhu, který by měl opět zadávat jeden uživatel, který má toto na starost. Absenci edituje pouze třídní učitel, který je také jeden u konkrétního žáka. Z těchto důvodů jsem se rozhodl neřešit souběžný přístup více uživatelů, protože řešení by mohlo napáchat více škody jak užitku. 5.2.3.
Návod na isntalaci
Instalace aplikace je jednoduchá, na přiloženém CD je adresář ETK, který zkopírujete na počítač, na kterém chcete aby aplikace běžela. Následně je potřeba smazat konfigurační soubor „Tridni kniha.exe.configÿ, který je zde umístěn aby se aplikace při spuštění dotázala na nastavení připojení k databázi. Tento soubor obsahuje zašifrované informace pro připojení k databázi, který je implicitně nastavený na hodnot: Název databáze: tridni\_kniha IP serveru: 127.0.0.1 Uživatel: root Heslo: sakul Pokud tedy máte smazaný konfigurační soubor a spustítě aplikaci, můžete si nastavit hodnoty pro připojení k databázi své. Po nastavení hodnot se aplikace restartuje a objeví se vám přihlašovací okno. Jméno a heslo vyplňte podle toho jakou jste si zvolili databázi jestli prázdnou nebo vzorovou. Pro
27
prázdnou je jméno admin a heslo 123456 a pro vzorovou například jméno lkellner a heslo sakul.
5.3. 5.3.1.
Rodičovský web Popis aplikace
V aplikaci se mě podařilo dodržet veškerou funkčnost, kterou jsem navrhl. Stránky jsou podle plánu napsány v PHP s kombinací CSS a HTML. Zdrojové kódy jsou obsaženy dohromady ve 11 souborech .php, zajištujících funkčnost webu a v default.css, který zajištuje vzhled stránek. Pro vhled stránek jsem použil styl nazývaný „Old Architectureÿ http://www.free-template.eu/css1.html, který jsem přepracoval a doplnil k mé potřebě. Po přihlášení viz obrázek 9. do rodičovkého webového klienta, lze plně využívat všech jeho částí.
Obrázek 9. Přihlašovací formulář do webového rozhraní. Základní informace, zde naleznete úvodní text s popisem, k čemu tyto stránky slouží. Dále jsou zde uvedeny některé z důležitých odkazů na další webové stránky viz obrázek 10.. Docházka, pod tímto tlačítkem se nachází informace o docházce žáků, o kterých má škola právo Vám poskytovat informace. Pro zobrazení požadovaných informací je zapotřebí vybrat v poli „Žákÿ jméno žáka, o kterém informace chcete zobrazit. A následně potrvdit tlačítkem „Potvrditÿ. Po stisku tohoto tlačítka se Vám zobrazí tabulka viz obrázek 11. s absencí vybraného 28
Obrázek 10. Rodičovské webové rozhraní. žáka, která poskytuje informace o datu a vyučovací hodině, kdy žák nebyl přítomen, s poznámkou a jménem vyučujícího. Poslední sloupec tabulky vyznačuje, jestli je absence omluvená nebo není. Prospěch, po zmáčknutí tohoto tlačítka se dostanete k informacím o prospěchu žáků, o kterých má škola právo Vám poskytovat informace. Pro zobrazení požadovaných informací je zapotřebí vybrat v poli „Žákÿ jméno žáka a v poli „Předmětÿ název předmětu, o kterém informace chcete zobrazit. A následně potrvdit tlačítkem „Potvrditÿ. Po stisku tohoto tlačítka se Vám zobrazí tabulka viz obrázek 12. s prospěchem vybraného žáka v konkrétně vybraném předmětu, která poskytuje informace o jednotlivých známkách a k nim přižazeným vahám známek (váha známky je v intervalu 1-10, přičemž čím vyšší váha tím důležitější známka) s poznámkou, kde se uvádí většinou 29
Obrázek 11. Docházka ve webovém rozhraní. za jakou formu zkoušení je známka obdržená. Dále je zde uvedeno, kdo z vyučujících známku zadal a kdy.
Obrázek 12. Prospěch ve webovém rozhraní. Pomoc, pod tímto tlačítkem naleznete stručný návod na použití těchto stránek. 5.3.2.
Popis řešení některých problémů
Při běhu webové aplikace jsem přišel na to, že jsou stránky náchylné na 30
tzv. SQL Injection útoky. Což je technika vložení kódu do SQL dotazů pomocí uživatelských vstupů, která využívá bezpečnostní nedostatky v databázích. Proto jsem se snažil zjistit jaká existuje obrana proti těmto útokům a dočetl jsem se, že existují několik způsobů jak se bránit. Všechny z nich vycházejí z principu defenzivního programování, u něhož programátor musí počítat s tím, že jakýkoli uživatelský vstup může znamenat potenciální nebezpečí. Já jsem se rozhodl bránit se pomocí filtrace řídících znaků. Využívám databázi MySQL, která podporuje dva módy filtrování ANSI SQL mód a MySQL mód. První mód nahrazuje všechny znaky apostrofů ze vstupu za uvozofky a druhý mód všechny řídící znaky mění na předem dané znaky. V jazyce PHP je pro tento účel implementovaná funkce mysql_real_escape_string pracuje na základě vložení znaku zpětného lomítka před každý řídící znak. $username = "’ OR 1=1’" $username = mysql_real_escape_string($username); Tato funkce změní uživatelský vstup ’ OR 1=1’ na \’ OR 1=1\’,což způsobí syntaktickou chybu dotazu a tím znemožní vložení kódu, který je využit k útoku. Jediné co se mi na této obraně nelíbí je, že dojde až na vyhodnocování SQL dotazu, proto jsem zkusil implementovat ještě jeden způsob, který vychází ze stejného základu. Je to ověření vstupu pomocí regulárního výrazu, který omezí možnosti zadávání potenciálně nebezpečných znaků. Ověření se děje ještě před vyhodnocováním SQL dotazu, ke kterému ani nedojde pokud na vstupu vyskytnou neakceptovatelné znaky. 5.3.3.
Návod na isntalaci
Pro běh webové aplikace je zapotřebí, aby server webhostingu nebo lokální počítač, na kterém aplikaci můžete vyzkoušet, podporoval PHP a MySQL. Na přiložené CD jsem do adresáře install umístil instalaci webového serveru pro vyzkoušení na lokálním počítači. Instalace je obsažena v souboru „xampp-win32-1.7.4-VC6-installer.exeÿ. Pokud máte vše připravené, stačí už jen nakopírovat všechny soubory z adresáře WebETK do připravený webového prostoru na webovém serveru. Standartně při instalaci balíčku xampp je webový prostor v adresáři c:\xampp\htdocs\. Potom stačí v prohlížeči zadat http://127.0.0.1/. Heslo a jméno lze použít stejné, jako při přihlašování do školního klienta, pokud používáte vzorovou databázi.
31
6.
Shrnutí a další vývoj systému
Na tomto místě bych se chtěl, ještě před závěrem ohlédnout za výsledkem práce. Zadání se mi povedlo dodržet, i když v určítých místech s ústupky, ale zase na jiných místech byla snad kompenzace. Myslím, že systém by byl v praxi použitelný, i když ještě nějaké úpravy by byly třeba. Proto doufám, že budu moci ve vývoji aplikace pokračovat a založit na tom svou magisterkou práci. Určitě bych se v dalším vývoji zaměřil na různé tiskové výstupy, nějaké statistiky a další užitečné vylepšení aplikace.
32
Závěr Závěrem bych chtěl říci, že cíle mé bakalářské práce jsem podle mého názoru splnil. Vyzkoušel jsem si vytvoření databázového systému, který by byl schopen teoreticky nahradit papírovou třídní knihu. Prakticky by systém potřeboval ještě nějaký vývoj, se kterým bych chtěl pokračovat v diplomové práci. Jestli je vytvořený systém schopen reálného využití, ukáže až praxe. Při vývoji jsem zjistil, že některé věci se zdají jednoduší než jsou. Byl jsem díky této práci donucen zdokonalit své znalosti v jazyku C#, PHP, HTML, XML atd. . Poučil jsem se z chyb, kterých se budu v praxi snažit vyvarovat. Práce pro mě byla neocenitelnou zkušeností.
33
Conclusions Finally, I would like to say that in my opinion the objectives of my thesis were fulfilled. I tried to create a database system that would theoretically be able to replace the paper classbook. Practically, the system still need some development with which I would like to continue in my diploma thesis. If the created system is usable, turns to practice. During the development I find out that some things seem to be simpler than they are. Through this work I was forced to improve my knowledge in C#, PHP. I learned from the mistakes which I will try to avoid in practice. The work was an invaluable experience for me.
34
Reference [1] DuBois, Paul. MySQL profesionálně. Knihy iDNES, 2003. [2] Virius, Miroslav. C# hotová řešení. Computer press, 2006. [3] Mareš, Amedeo. 1001 tipů a triků pro C# 2010. Computer press, 2010. [4] ISAS. http://www.udlice.cz/ Elektronická publikace. [5] Škola online. http://www.skolaonline.cz Elektronická publikace. [6] E-tridnice. http://www.etridnice.cz/elektronicka-tridni-kniha/ Elektronická publikace. [7] Easy-gradebook. http://www.stahuj.centrum.cz Elektronická publikace. [8] Bakaláři. http://www.bakalari.cz Elektronická publikace.
35
A.
Obsah přiloženého CD
V samotném závěru práce je uveden stručný popis obsahu přiloženého CD/DVD, tj. závazné adresářové struktury, důležitých souborů apod. bin/ Instalátor Instalator programu a další program Program spustitelné přímo z CD/DVD. / Kompletní adresářová struktura webové aplikace Webovka (v ZIP archivu) pro zkopírování na webový server. Adresář obsahuje i všechny potřebné knihovny a další soubory pro bezproblémové spuštění programu / pro bezproblémový provoz na webovém serveru. doc/ Dokumentace práce ve formátu PDF, vytvořená dle závazného stylu KI PřF pro diplomové práce, včetně všech příloh, a všechny soubory nutné pro bezproblémové vygenerování PDF souboru dokumentace (v ZIP archivu), tj. zdrojový text dokumentace, vložené obrázky, apod. src/ Kompletní zdrojové texty programu Program / webové aplikace Webovka se všemi potřebnými (převzatými) zdrojovými texty, knihovnami a dalšími soubory pro bezproblémové vytvoření spustitelných verzí programu / adresářové struktury pro zkopírování na webový server (v ZIP archivu). data/ Ukázková a testovací data použitá v práci a pro potřeby obhajoby práce. install/ Instalátory aplikací, knihoven a jiných souborů nutných pro provoz programu / webové aplikace, které nejsou standardní součástí operačního systému. U veškerých odjinud převzatých materiálů obsažených na CD/DVD jejich zahrnutí dovolují podmínky pro jejich šíření nebo přiložený souhlas držitele copyrightu. Pro materiály, u kterých toto není splněno, je uveden jejich zdroj (webová adresa). 36