• Nebyly nalezeny žádné výsledky

Malý systém počítačové podpory prorozvrh obhajob a zkoušek

N/A
N/A
Protected

Academic year: 2022

Podíl "Malý systém počítačové podpory prorozvrh obhajob a zkoušek"

Copied!
1
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

M

ASARYKOVA UNIVERZITA

F

AKULTAINFORMATIKY

Malý systém počítačové podpory pro rozvrh obhajob a zkoušek

B

AKALÁŘSKÁPRÁCE

Radek Petr

(2)

Brno, 2007

(3)

Prohlášení

Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně.

Všechny zdroje prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.

(4)

Poděkování

Rád bych poděkoval vedoucímu své práce RNDr. Aleši Zlámalovi za cenné rady, které mi pomohly při psaní této bakalářské práce. Dále panu doc. RNDr. Lubomíru Popelínskému, Ph.D. za uvedení do problematiky rozvrhování obhajob.

Oběma také děkuji za čas věnovaný konzultacím.

(5)

Shrnutí

Obsahem této bakalářské práce je analýza, návrh a implementace systému podporujícího rozvrhování obhajob závěrečných prací a zkoušek, dále přehled technologií, které byly k implementaci použity a popis jednotlivých součástí samotného systému.

Klíčová slova

Rozvrhování obhajob, rozvrh obhajob, obhajoby závěrečných prací, Java, iText.

(6)

Obsah

1 ÚVOD...2

1.1 P

ŘEDMĚTBAKALÁŘSKÉPRÁCE

...2

1.2 P

ROSTŘEDKYUŽITÉKIMPLEMENTACI

...2

2 POUŽITÉ TECHNOLOGIE...3

2.1 J

AVA

...3

2.2

I

T

EXT

...4

3 ANALÝZA A NÁVRH SYSTÉMU...5

3.1 A

KTUÁLNĚPOUŽÍVANÝPOSTUPPŘIVYTVÁŘENÍROZVRHŮ

...5

3.2 S

PRÁVADYNAMICKÉHOSEZNAMUUČITELŮ

...6

3.3 S

PRÁVADNŮOBHAJOB

...6

3.3.1 Přehled druhů obhajob...6

3.3.2 Základní operace se dny obhajob...7

3.4 P

ŘEDCHÁZENÍKOLIZÍVROZVRHU

...7

4 IMPLEMENTACE SYSTÉMU...9

4.1 U

ŽIVATELSKÉROZHRANÍ

...9

4.1.1 Rozvržení komponent grafického uživatelského rozhraní...9

4.2 M

ANIPULACESPROJEKTY

...10

4.2.1 Založení nového projektu...10

4.2.2 Uložení projektu...11

4.2.3 Otevření již existujícího projektu...12

4.3 S

PRÁVASEZNAMUUČITELŮAJEJICHČASOVÝCHMOŽNOSTÍ

...12

4.3.1 Možnosti seznamu učitelů...13

4.3.2 Správa časových možností učitele...13

4.3.3 Použitá implementace...13

4.4 S

PRÁVADNŮOBHAJOB

...13

4.4.1 Vytvoření komise...13

4.4.2 Přiřazování obhajob ke komisím...14

4.4.3 Úprava složení komise a jejích dalších údajů...17

4.4.4 Rozpuštění komise...17

4.4.5 Použitá implementace...17

4.5 E

XPORTROZVRHUDODOKUMENTU

PDF...17

5 ZÁVĚR...19

LITERATURA...20

Příloha A...21

(7)

1 Úvod

1.1 Předmět bakalářské práce

Cílem této bakalářské práce je vyvinout systém pro podporu rozvrhování obhajob závěrečných prací a zkoušek. Systém je určen primárně pro potřeby Fakulty informatiky Masarykovy univerzity, ale přesto je navržen dostatečně obecně na to, aby mohl být používán i na jiných fakultách.

Osoba, pověřená rozvrhováním obhajob závěrečných prací a zkoušek (dále jen „rozvrhovatel“), bude mít s pomocí tohoto systému možnost spravovat seznam učitelů, určených pro dané obhajoby, a seznam jejich dnů, kdy jsou plně k dispozici pro obhajoby (dále jen „volné dny“).

Dále bude moci vytvářet komise pro jednotlivé dny obhajob, právě s ohledem na volné dny učitelů, a těmto komisím posléze přiřazovat samotné studenty s jejich obhajobami. Klíčovou vlastností tohoto systému je možnost předcházet kolizím několika druhů. Jedná se především o detekce situací, kdy se v rozvrhu vyskytne osoba na dvou místech ve stejný čas.

Na závěr má rozvrhovatel možnost exportovat jím vytvořený rozvrh do souboru ve formátu PDF (Portable Document Format), který již slouží jako finální, distribuovatelná verze rozvrhu.

1.2 Prostředky užité k implementaci

Už samo zadání předepisuje užití programovacího jazyku Java (srov. sub. 2.1). Pravděpodobně nejzásadnějším důvodem, proč padl výběr právě na tento je jazyk, je fakt, že je velmi snadno přenositelný. Pro vývoj byla použita v této chvíli poslední verze jazyku, a to Java Standard Edition 6. Pro spuštění systému bude tedy zapotřebí mít nainstalováno běhové prostředí Java Runtime Environment (zkráceně JRE) verze 6 a výše.

Systém jsem vyvíjel v prostředí NetBeans IDE (verze 5.0). Pro tuto možnost jsem se rozhodl, protože se jedná o velice propracované vývojové prostředí, které je navíc možné užívat bezplatně jak pro nekomerční, tak i pro komerční účely.

Pro export rozvrhů do formátu PDF jsem použil knihovnu iText (srov. sub. 2.2).

(8)

2 Použité technologie

V této kapitole uvedu základní charakteristiky jazyku Java včetně těch, které byly klíčové pro implementaci systému. Dále zběžně popíšu knihovnu iText a její základní vlastnosti.

2.1 Java

Java je moderní, objektově orientovaný programovací jazyk, který je vyvíjen firmou Sun Microsystems zhruba od poloviny 90. let. Nejdůležitější vlastností tohoto jazyku je, že byl od počátku vyvíjen jako přenositelný. Aplikace napsaná v Javě bude tedy vyžadovat jen jedinou sadu zdrojového kódu, bez ohledu na řadů různých počítačových platforem, na kterých pracuje.

Toto je umožněno tím, že program v Javě se provádí na normovaném virtuálním počítači, který se nazývá virtuální stroj Javy, neboli JVM (Java Virtual Machine), a je ve vašem počítači emulován programem.

Možnost serializace a deserializace objektů je další skvělou vlastností Javy. Serializací se rozumí konverze primitivních datových typů, ale i složitých datových objektů do datového proudu tak, aby v jiném čase nebo na jiném místě tato data mohla být zrekonstruována do původní podoby. V systému byla serializace použita pro uložení projektu do souboru.

Deserializace naopak pro načtení projektu z uloženého souboru.

Další velkou výhodou tohoto jazyku je, že nabízí třídy kolekcí, kterých jsem ve své práci hojně využil. Třídy kolekcí poskytují různé možnosti pro ukládání a práci s objekty jakéhokoli druhu v paměti. Vzhledem ke svým funkcím a možnostem jsou kolekce ideální datovou strukturou pro práci s takovým množstvím a typem informací, s jakým tento systém pracuje.

Mezi další významné vlastnosti Javy patří minimálně:

 robustnost – nedovoluje některé programátorské konstrukce, které mohou být častou příčinou chyb

 vylepšená správa paměti – používá tzv. Garbage collector, který automaticky uvolňuje nepoužívané části paměti

 podpora vícevláknových aplikací

Jako jedinou nevýhodu Javy bych považoval pomalejší start programů, které jsou v ní napsány, a to právě z důvodu přenositelnosti, protože konkrétní prostředí musí program nejprve přeložit a až poté ho může spustit.

(9)

2.2 iText

Pro export rozvrhu do formátu PDF jsem se rozhodl nejen proto, že se jedná o jeden z nejrozšířenějších souborových formátů určených pro přenos dokumentů, ale také proto, že byl v tomto formátu rozvrh distribuován v minulých letech a jistě není důvod, proč cokoliv měnit.

iText je knihovna, sloužící ke generování a manipulaci se soubory ve formátu PDF, RTF a HTML v prostředí jazyku Java. iText je šířena jako Open source a je volně ke stažení na svých webových stránkách. Tuto knihovnu lze použít jak pro tvorbu jednoduchých dokumentů, tak pro tvorbu komplexně strukturovaných dokumentů. Její API je velmi intuitivní, a tak není třeba příliš tápat. Při exportu rozvrhu jsem využil v podstatě jedinou komplexnější strukturu v podobě tabulek a ani při práci s nimi jsem nenarazil na větší potíž.

(10)

3 Analýza a návrh systému

V této kapitole bude uveden aktuální postup při vytváření rozvrhů obhajob na Fakultě informatiky Masarykovy univerzity. Veškeré informace, které uvedu, pochází z této fakulty.

Dále zanalyzuji a navrhnu výsledný systém.

3.1 Aktuálně používaný postup při vytváření rozvrhů

Podle všech informací, které se mi podařilo na Fakultě informatiky zjistit ohledně této problematiky, se doposud žádný systém, implementovaný pro tyto účely, nepoužíval.

Prvním krokem, který předchází samotnému vytváření rozvrhu, je zjištění časových možností učitelů, kteří by se potenciálně mohli účastnit obhajob. Tyto informace zasílají učitelé rozvrhovateli již v průběhu semestru. Je třeba poznamenat, že v současné době je počet takovýchto učitelů na Fakultě informatiky přibližně sedmdesát. Několik dní před začátkem obhajob, kdy už jsou známy jak volné termíny učitelů, tak i seznam studentů chystajících se obhajovat, se může rozvrhovatel pustit do vytváření rozvrhu obhajob.

Na základě časových možností učitelů rozvrhovatel vytváří komise pro jednotlivé dny obhajob.

Při sestavování komisí musí být také zohledněna četnost účastí jednotlivých učitelů v komisích.

Není žádoucí, aby jeden učitel zasedal ve větším počtu komisí.

Poslední a pravděpodobně nejnáročnější fází rozvrhování je přiřazování studentů, kteří se chystají obhajovat, ke konkrétním komisím. Často je zde využívána možnost, kdy u komise obhajují své práce studenti, jejichž vedoucí nebo oponent v dané komisi zasedá. Lze tak velmi dobře šetřit jejich časem. V této fázi musí rozvrhovatel zohlednit už několik faktů týkajících se učitelů, kteří se účastní obhajob jako vedoucí prací, nebo oponenti. Především se jedná opět o jejich časové možnosti. Než přiřadí studenta ke komisi, musí ověřit, zda:

 jeho vedoucí i oponent má vůbec daný den vyhrazen pro obhajoby

 jeho vedoucí nebo oponent nezasedá ve stejnou dobu v jiné komisi

 jeho vedoucí nebo oponent se neúčastní ve stejnou dobu obhajoby u jiné komise

Počet studentů, obhajujících u jedné komise, se obvykle pohybuje mezi čtyřmi až dvanácti podle typu obhajob. Když navíc uvážím, že ve stejný den mohou zasedat až čtyři komise, nejedná se skutečně o žádný lehký úkol. Podle posledních informací z podzimního semestru 2006 trvalo rozvrhovateli sestavení rozvrhu pro zhruba 130 studentů čistých 24 hodin intenzivní práce. V jarních semestrech bývá počet obhajujících studentů minimálně dvojnásobný.

(11)

3.2 Správa dynamického seznamu učitelů

Systém by měl nabízet rozhraní, ve kterém by rozvrhovatel spravoval seznam učitelů, kteří by se mohli účastnit obhajob. Ke každému učiteli by dále měl být připojen seznam jeho časových možností, taktéž plně spravovatelný.

Seznam učitelů by měl nabízet následující funkce:

 načítání seznamu z textového souboru

 přidávání učitelů do seznamu

 upravování jmen učitelů v kterékoliv fázi rozvrhování

 mazání učitelů ze seznamu

Seznam časových možností učitele by měl nabízet následující funkce:

 přidávání resp. odebírání volných dnů učiteli

 zobrazovat přehled obsazených dní

Přívlastek dynamický jsem uvedl záměrně. Seznam musí být schopen automaticky reagovat na některé změny, provedené ve správě dnů obhajob (srov. sub. 3.3).

3.3 Správa dnů obhajob

Správa dnů obhajob bude nejpodstatnější a nejkomplexnější součástí systému, co se týče jejích funkcí. Její základní úlohou bude kompletní asistence při vytváření rozvrhu. Bude také propojena se seznamem učitelů, se kterým se bude vzájemně ovlivňovat, a to na základě svého aktuálního stavu.

3.3.1 Přehled druhů obhajob

Na následujících řádcích zmíním, jaké druhy obhajob existují a v čem se bude lišit jejich rozvrh.

1) Obhajoby bakalářských prací. Obhajoba jedné práce trvá 20 minut.

2) Obhajoby diplomových prací. Obhajoba jedné práce trvá 30 minut.

3) Obhajoby diplomových prací vč. státní zkoušky. Obhajoba jedné práce vč. státní zkoušky trvá 60 minut. Komise je většinou určena pro jeden studijní program a zároveň jen pro některé specializace studentů.

Systém musí umět rozlišovat všechny tyto druhy včetně jejich uvedených vlastností a tyto vlastnosti promítnout do výsledného rozvrhu.

Fakta, která jsou zde uvedena, jsou aktuálně platná na Fakultě informatiky Masarykovy Univerzity. Systém by však v tomto směru měl být otevřený a připravený i pro případné změny těchto údajů, které do budoucna jistě nejsou vyloučeny.

(12)

3.3.2 Základní operace se dny obhajob

Správa dnů obhajob by měla nabízet tyto základní funkce:

 vytvářet resp. rozpouštět komise pro jednotlivé dny obhajob

 měnit složení již existující komise

 nastavovat místnost zasedání komise, příp. studijní program a specializace, pro které zasedá

 načítat studenty s jejich obhajobami z textového souboru

 přiřazovat studenty k vytvořeným komisím

Rozvrhovatel bude moci vytvářet neomezený počet komisí pro jeden den. Jediným omezujícím faktorem může být nedostatek učitelů, kteří by pro daný den byli k dispozici pro obhajoby (dále jen „volní učitelé“). Pokud bude některý učitel vybrán do komise, musí se tento fakt projevit i v seznamu učitelů a to tak, že se tento den zařadí mezi učitelovy obsazené dny. Časové možnosti učitelů se mohou měnit i v průběhu přípravy rozvrhu, a proto musí být kdykoliv možné upravovat složení komisí.

Možnost načítání studentů s jejich vedoucími a oponenty ze souboru je zde na místě. Pokud rozvrhovatel disponuje takovýmto seznamem, předloží jej systému a ten už si s načtením poradí sám. Bez této možnosti by se do systému musela data zadávat jednotlivě, což by při počtu tří set studentů jistě nebylo nic příjemného.

Přiřazování studentů ke komisím by mělo být co nejpřehlednější, protože se jedná o klíčovou část sestavování rozvrhu. Přednostně by měli být systémem nabízeni studenti, jejichž vedoucí, nebo oponent je členem komise. Dále by měl mít rozvrhovatel přístup do kompletního seznamu nepřiřazených studentů, který musí být především přehledný, ale také snadno tříditelný dle požadovaných kritérií.

Pokud se rozvrhovatel rozhodne některou komisi rozpustit, musí být pro tento den uvolněni její členové a také studenti, kteří k ní byli přiřazeni.

3.4 Předcházení kolizí v rozvrhu

Jak již bylo dříve zmíněno, při sestavování rozvrhu může docházet k několika druhům kolizí.

Systém by si však měl umět se všemi těmito hrozbami poradit. Rozhodující ale je, jak tato opatření implementovat, aby byl rozumně vyvážen kompromis mezi uživatelovou tvořivostí a rizikem poškození integrity dat. Rozhodl jsem se situaci vyřešit následovně. Systém nesmí dovolit, aby:

 za člena komise byl zvolen někdo, kdo jím z časových důvodů být nemůže

 složení komise bylo neúplné

 učitelovy časové možnosti v seznamu učitelů byly spravovány chybně

(13)

Systém smí dovolit, ale musí patřičně upozornit na situaci, kdy je ke komisi přiřazen student, jehož vedoucí nebo oponent se ve stejnou dobu účastní jiných obhajob ať už jako člen komise, vedoucí, nebo oponent jiné práce. Tuto kolizi lze řešit několika způsoby:

 změnou času studentovy obhajoby

 změnou složení komise

 přesunutím studenta k jiné komisi

(14)

4 Implementace systému

4.1 Uživatelské rozhraní

Na uživatelské rozhraní systému byly kladeny tyto požadavky:

 ovládání musí být jednoduché, intuitivní a mělo by odpovídat obvyklým konvencím

 veškeré uživatelské vstupy a manipulace s daty musí být kontrolovány a případně akceptovány jen ty, které neporuší integritu dat systému

 maximální zjednodušení komplexních operací

Jedná se zároveň o klíčové vlastnosti systému, protože kvalita jejich zpracování je hlavním faktorem, určujícím použitelnost systému v praxi.

4.1.1 Rozvržení komponent grafického uživatelského rozhraní

Grafické uživatelské rozhraní (GUI) je tvořeno klasickým systémem oken a dialogů. Jako minimální doporučené rozlišení pro běh systému považuji 1024x768 bodů. Okna jsou sice naprogramována, aby se sama přizpůsobila místnímu nastavení obrazovky, ale vzhledem ke komplexnosti některých oken bych nižší rozlišení vyloučil.

Obrázek 4.1: Hlavní okno aplikace.

Základní okno, které se objeví po startu aplikace je pojmenováno po souboru, ve kterém je otevřený projekt uložen, a sestává z hlavní nabídky, dále pak tabulky, nabízející přehled vytvořených komisí a sady 5 tlačítek reprezentujících základní služby systému. Tento způsob

(15)

Tabulka nabízí tyto informace o komisích:

 Datum – den, ve který komise zasedá

 # komise – jednoznačné ID komise, které odlišuje danou komisi od ostatních

 Složení komise – zobrazuje příjmení členů komise, a to v pořadí předseda, druhý člen, třetí člen

 Druh obhajob – druh obhajob, pro který komise zasedá

 Učebna – učebna, ve které komise zasedá

 Počet obhajob – počet studentů, přiřazených k dané komisi

Zvažoval jsem možnost, zda v této tabulce vypisovat kompletní rozvrh, tzn. včetně studentů přiřazených k jednotlivým komisím, ale nakonec jsem se rozhodl pro zobrazení pouze jejich počtu z důvodu přehlednosti.

Jednotlivé dny jsou v tabulce seřazeny podle jejich data konání.

Těsně nad tabulkou se také vyskytuje informace o tom, kolik dosud nepřiřazených obhajob (dále jen „volné obhajoby“) je ještě k dispozici.

4.2 Manipulace s projekty

S projekty je možné zacházet klasickým způsobem. Uživatel smí zakládat nové, ukládat a otevírat existující projekty. Je třeba poznamenat, že v jednu chvíli dokáže systém pracovat pouze s jedním projektem. Možnost správy více projektů najednou jsem zvažoval, ale přínos této funkce vzhledem k obtížnosti její implementace se jevil jako minimální.

4.2.1 Založení nového projektu

Než uživatel otevře nový projekt, musí znát tyto informace:

1) druh obhajob, pro které chce rozvrh vytvářet

2) seznam učitelů pro dané obhajoby, uložený v textovém souboru jako plain text s kódováním CP-1250

3) termíny konání zvolených obhajob 4) délku trvání jedné obhajoby

Pokyn k založení nového projektu lze učinit přes hlavní nabídku Soubor, položka Nový. To samé pak lze dosáhnout i klávesovou zkratkou Ctrl + N.

(16)

V případě, že už je nějaký projekt otevřen a byla v něm od jeho posledního uložení provedena změna, dotáže se systém na uložení tohoto projektu před založením nového. Další fází už je zadávání vstupů, týkajících se nového projektu.

Nejdříve systém uživatele vyzve, aby zvolil druh obhajob, jejichž rozvrh si přeje sestavovat.

Podporovány jsou všechny druhy obhajob, které byly popsány v sub. 3.3.1. Do výběru byla přidána i kombinace bakalářských a diplomových obhajob, protože se mohou jejich termíny krýt. Správa dvou seznamů učitelů s jejich časovými možnostmi by v tomto případě nebyla příliš efektivní.

Dalším povinným vstupem je určení textového souboru, obsahujícího seznam učitelů, kde jsou jednotliví učitelé odděleni novým řádkem. Tato fáze je povinná, protože systém předpokládá, že rozvrhovatel tímto seznamem disponuje. Zároveň ale systém pomůže rozvrhovateli tím, že přidělí každému učiteli všechny termíny obhajob mezi volné dny. To usnadní práci rozvrhovateli proto, že spíš učitelé sdělují, kdy čas nemají, než kdy čas mají. Systém si seznam načítá do vlastních datových struktur, a proto je už na tomto souboru dále nezávislý.

Dále vás systém požádá o zadání těchto termínů. Nejdříve je třeba vybrat rok konání obhajob.

Systém tuto informaci potřebuje, aby mohl přistupovat do správného kalendáře. Na výběr je pouze rok aktuální a příští. Nepředpokládá se, že by byl rozvrh vytvářen více než na dva roky dopředu. Jako termíny jsou přijímány jak intervaly v rámci jednoho měsíce (např. 1-5.1), tak i jednotlivé dny (např. 3.1). Kombinovat je lze oddělováním pomocí čárky. Systém kontroluje smysluplnost těchto vstupů, co se týká formátu, ale i kalendáře. Než systém pustí uživatele do závěrečné fáze přípravy, nechá ho zadané termíny potvrdit. Pokud si přeje vytvářet kombinovaný rozvrh bakalářských i diplomových prací, a zadané termíny se kryjí, systém si vyžádá i potvrzení této skutečnosti.

Poslední fází vytvoření projektu je nastavení délky jedné obhajoby v minutách. Čísla jsou ve vstupním dialogu již přednastavena na hodnoty aktuálně používané na Fakultě informatiky, tedy 20 minut pro bakalářskou, 30 minut pro diplomovou a 60 minut pro obhajobu včetně státní zkoušky. Hodnoty lze samozřejmě dle svých potřeb přepsat. Opět je zde kontrolována smysluplnost dat. Systém akceptuje pouze čísla větší než nula.

4.2.2 Uložení projektu

Projekt je možné ve kterékoliv jeho etapě uložit. Slouží k tomu položky Uložit a Uložit jako hlavní nabídky Soubor. Liší se v tom, že Uložit jako vás vždy vyzve k výběru souboru, do kterého projekt uložit, zatímco Uložit jen při prvním ukládání projektu. Volba Uložit může být navíc zjednodušeně volána pomocí klávesové zkratky Ctrl + S.

Při zadávání cesty projektu je možné procházet adresářovou strukturou disku reprezentovanou graficky. Jako výchozí adresář je zobrazen domovský adresář uživatele. Jako příponu souboru projektu jsem zvolil .sch (z anglického „schedule“, tedy rozvrh). Pokud uživatel příponu při zadávání názvu souboru neuvede, je k názvu připojena automaticky. Dojde-li k pokynu uložení souboru s názvem, který již existuje, je uživatel dotázán na to, zda tento soubor přepsat. Na závěr je uživatel informován o úspěšném nebo neúspěšném uložení, které může být způsobeno například ochranou souboru proti zapisování.

(17)

Při ukládání projektů je využito serializace objektů, kterou Java standardně nabízí (srov. sub.

2.1). V tomto případě je to výhodné z toho důvodu, že lze celý projekt uložit do jediného souboru. V opačném případě by bylo s největší pravděpodobností zapotřebí ukládat seznam učitelů, seznam hotových dnů obhajob a seznam nepřiřazených obhajob do zvláštních souborů.

4.2.3 Otevření již existujícího projektu

Při otevírání souboru projektu je naopak využito deserializace objektů.

Otevřít existující projekt lze opět dvěma způsoby. První cesta vede přes hlavní nabídku Soubor, položka Otevřít, ta druhá přes klávesovou zkratku Ctrl + O.

Znovu je soubor vybírán přes dialogové okno s vyobrazenou adresářovou strukturou disku. V té jsou vyfiltrovány pouze soubory s příponou sch, aby byl seznam přehlednější. Pokud je zadána cesta k souboru, který neexistuje, nebo není určen ke čtení nebo nemá správný formát, je na to uživatel upozorněn.

4.3 Správa seznamu učitelů a jejich časových možností

Tato služba je přístupná přes tlačítko Seznam učitelů.

Obrázek 4.2: Okno správy seznamu učitelů.

Dialogové okno, které se následně objeví, se dělí na 3 části. Seznam učitelů se nachází v levé části okna a je seřazený abecedně dle jejich příjmení. Je dobré poznamenat, že veškeré změny provedené v tomto okně nelze nijak potvrzovat ani stornovat, jsou totiž akceptovány ihned po jejich provedení. Tlačítko Ok slouží pouze ke skrytí okna. Pro tento krok jsem se rozhodl

(18)

z jednoho prostého důvodu. Použiji příklad z praxe. Rozvrhovatel by mohl po hodině upravování seznamu na základě emailů, došlých od učitelů, okno zavřít a přijít tak o celou hodinu práce.

4.3.1 Možnosti seznamu učitelů

Pod seznamem se nachází 3 tlačítka, jejichž použitím lze tento seznam modifikovat. Tlačítko Nový přidá do seznamu nového učitele. Systém nedovolí přidat učitele se jménem, které se už v seznamu nachází. Navíc je velmi nepravděpodobné, aby se na jedné fakultě vyskytovali dva učitelé se stejným jménem, příjmením i tituly. Nově přidanému učiteli nejsou přiřazeny žádné volné dny. Pomocí tlačítka Uprav lze upravit jméno učitele. Úprava se projeví globálně, tzn., že nejen v tomto seznamu, ale i u všech dní, ve kterých daný učitel zasedá v komisi. Učitele lze ze seznamu odstranit tlačítkem Smaž. Podmínkou zde je, že nesmí být členem žádné komise, jinak systém odebrání nedovolí, byla by tím poškozena integrita dat. Situaci je možné vyřešit tak, že uživatel daného učitele v jednotlivých komisích nahradí a až poté odstraní ze seznamu.

4.3.2 Správa časových možností učitele

V pravém dolním rohu je vyobrazen seznam volných dní vybraného učitele. Tlačítko Přidej umožní přidávat učiteli volné dny. Na výběr dostane uživatel pouze dny, které jsou termíny obhajob, ale zároveň nejsou v seznamu volných ani obsazených dní učitele. Odebírat volné dny lze pomocí tlačítka Smaž.

V pravém horním rohu okna se nachází přehled obsazených dní učitele. S tímto seznamem nelze přímo žádným způsobem manipulovat, protože jak už bylo řečeno, slouží pouze jako přehled četnosti výskytu učitele v komisích.

4.3.3 Použitá implementace

Pro správu seznamu učitelů jsem použil setříditelnou kolekci TreeSet třídy Set. Pro toto řazení je použit algoritmus, který dokáže z textového řetězce vyextrahovat příjmení a následně jej dle české abecedy umístit do seznamu. Tento algoritmus předpokládá, že příjmení je posledním slovem v řetězci, který za jménem neobsahuje titul. V opačném případě za příjmení považuje slovo umístěné před čárkou, oddělující jméno a titul za jménem.

Učitel je v kolekci TreeSet uložen jako objekt třídy Teacher, která kromě atributu jména učitele uchovává i seznam jeho volných dní, uložených taktéž v kolekci TreeSet, kde jsou dny seřazeny chronologicky. Jednotlivá data jsou reprezentována textovými řetězci třídy String, tzn., že pro správu dat nebyla použita žádná komplexnější struktura. Kolekce typu Set jsem pro tyto účely zvolil proto, že každý prvek v nich může být pouze jednou a tudíž zabraňují vložení duplikátů, což je v těchto případech žádoucí.

4.4 Správa dnů obhajob

4.4.1 Vytvoření komise

Komise může být vytvořena použitím tlačítka Vytvořit komisi. Nejprve je ale třeba zadat den, ve který má komise zasedat. Pro jednotlivé dny lze vytvářet libovolné množství komisí. Pokud ale pro daný den nezbývá dostatek volných učitelů na zvolení kompletní komise, je o tom uživatel informován. Následují příklady toho, jak mohou vypadat formuláře pro sestavení komise.

(19)

Obrázek 4.3: Tři různé varianty vstupních dialogů pro vytvoření komise

Hlavním bodem sestavování komise je zvolení předsedy a druhého a třetího člena komise. Pro každou pozici je zhotovena nabídka možných alternativ. Výběr obsahuje pouze učitele, kteří mají tento den zařazený v seznamu učitelů mezi volnými. Volba předsedy je navíc zúžena na docenty a profesory, protože jen ti mohou být předsedy komisí. Vedle každého jména je také uvedena číselná hodnota, jež informuje o tom, v kolika komisích už učitel zasedá. Pro vytvoření komise je zapotřebí určit všechny tři členy. Systém neakceptuje možnost, kdy výběr obsahuje dva nebo tři shodné učitele, nebo také situaci, kdy není některý z členů vybrán vůbec.

Pokud se jedná o den určený pro obhajoby bakalářských i diplomových prací, musí uživatel zvolit jednu z těchto možností.

Dalším vstupem je volba učebny konání obhajob. Tento údaj je však nepovinný a může být kdykoliv později změněn. Jedná-li se o den zahrnující i státní zkoušky, jsou dalšími nepovinnými vstupy studijní program a specializace studentů. Pokud komise zasedá pro více než jednu specializaci, je nutné na vstupu jednotlivé specializace oddělit středníkem.

Jakmile je komise úspěšně vytvořena, je přidána do rozvrhu a jejím členům je v seznamu učitelů tento den zařazen mezi obsazené. Přidání komise do rozvrhu se v GUI projeví v tabulce komisí v hlavním okně.

4.4.2 Přiřazování obhajob ke komisím

Pro tento účel slouží tlačítko Přidat/odebrat obhajoby na hlavním ovládacím panelu. Pokud je tlačítko stisknuto poprvé od založení projektu, bude chtít systém po uživateli, aby určil cestu k textovému souboru, ve kterém jsou uloženi příslušní studenti s jejich obhajobami. Dokud nebude mít systém načteny všechny potřebné soubory, nebude uživateli umožněno pokračovat.

Soubory musí obsahovat řádky v některém z těchto tří formátů:

1) JménoStudenta<\t>JménoVedoucího<\t>JménoOponenta<\n>

(20)

2) JménoStudenta<\t>JménoVedoucího<\t>JménoOponenta<\t>Poznámka1<\n>

3) JménoStudenta<\t>JménoVedoucího<\t>JménoOponenta<\t>Poznámka1<\t>Poznámka2<\n>,

kde <\t> zastupuje znak tabulátoru a <\n> znak nového řádku. Při použití třetího formátu systém poslední dva sloupce (tedy Poznámka1 a Poznámka2) sloučí do jednoho a informace oddělí mezerou.

Protože klasické tabulkové editory nabízí možnost exportu tabulek do obyčejného textového souboru s tím, že jednotlivé sloupce oddělí tabulátory, neměl by nastat žádný větší problém při obstarávání takto formátovaného souboru. Obsahuje-li soubor řádek, který neodpovídá žádnému z uvedených formátů, uživatel na to bude upozorněn a soubor bude celý zamítnut. V opačném případě se objeví následující dialogové okno.

Obrázek 4.4: Okno určené pro přiřazování obhajob ke konkrétní komisi.

Podobně jako tomu je u služby spravující seznam učitelů, tak i zde jsou veškeré změny uk- ládány ihned. Samozřejmě jen v rámci tohoto dne obhajob. K uložení změn celého projektu musí uživatel použít funkci Uložit, resp. Uložit jako.

V názvu okna se vyskytuje den konání obhajob, číslo komise a typ obhajob. Okno se skládá ze čtyř základních částí. V horní části se nachází jména jednotlivých členů komise, kde pod každým jménem jsou na výběr všechny volné obhajoby, v nichž učitel figuruje buď jako

(21)

vedoucí nebo oponent. Je však jen na rozvrhovateli, zda bude chtít nabízené obhajoby k tomuto dni přiřadit nebo ne.

Další částí okna je panel Varování, tomu se ale budu věnovat později. Nejdůležitější částí okna je tabulka obhajob, která se nachází ve středu okna, a její hlavní funkcí je přehledně zobrazovat obhajoby přiřazené k této komisi. Obhajoby řadí chronologicky podle času jejich konání, který je generován automaticky na základě doby trvání jedné obhajoby, kterou uživatel zadal při vytváření projektu. Nejprve ale systém vyzve uživatele, aby zvolil čas začátku obhajob. Čas je kontrolován na smysluplnost jeho rozsahu a formátu. Dokud není zadán korektní vstup, nepodaří se uživateli přidat do seznamu žádnou obhajobu.

Pod tlačítkem Seznam všech obhajob se skrývá seznam všech nepřiřazených obhajob reprezentovaný tabulkou. Seznam se vztahuje pouze k typu obhajob, pro které komise zasedá.

Uživatel může touto tabulkou listovat, řadit jednotlivé sloupce abecedně podle jména studenta, vedoucího nebo oponenta, a přidávat samotné studenty ke zvolené komisi. Funkce seřazení tabulky podle sloupců je zde na místě, protože jedině tak může rozvrhovatel vybrat všechny závěrečné práce učitele, které vede, nebo kterým oponuje.

Panel Varování, o kterém jsem se již zmínil, informuje uživatele o kolizích, které se v rozvrhu vyskytují. Jedná se o druhy kolizí, týkající se vedoucích a oponentů vybraných studentů.

Konkrétně systém hlásí kolize, kdy vedoucí nebo oponent některého ze studentů:

 nemá tento den volný pro obhajoby

 zasedá ve stejný den u jiné komise

 se účastní ve stejnou dobu obhajoby u jiné komise jako vedoucí nebo oponent

Třetí zmíněnou kolizi je možné řešit tlačítky Nahoru nebo Dolů, která dovolují studentovu obhajobu přesunovat na jiný čas v rámci stejné komise. S řešením ostatních kolizí si už musí rozvrhovatel poradit sám, není totiž možné s těmito kolizemi dělat na úrovni implementace nic jiného, než o nich informovat.

Panel tlačítek, jež se nachází na spodní straně okna, obsahuje kromě tlačítek, která už byla zmíněna také tlačítko pro vložení pauzy do denního rozvrhu, odebrání obhajoby, automatického přenastavení času, nebo sadu tlačítek pro úpravy hodnot obhajob.

Tlačítko Vložit přestávku vloží do rozvrhu přestávku na místo, které je v tabulce označené, a automaticky posune časy obhajob, které za ní následují. Jako délka přestávky je akceptováno číslo větší než nula. Přestávku není možné vložit na začátek dne.

Pokud je třeba zrušit přestávky nebo znovu vygenerovat čas obhajob od začátku dne, poslouží k tomu tlačítko Reset časů.

Odebrání obhajoby ze seznamu lze uskutečnit tlačítkem Odstranit obhajobu, které tuto obhajobu vrátí do seznamu volných obhajob a navíc přenastaví čas zbylých obhajob, pokud se někde za odebíranou obhajobou vyskytovala přestávka. Tento krok je nutné proveden kvůli nechtěnému posunu přestávky.

(22)

4.4.3 Úprava složení komise a jejích dalších údajů

Jistě se rozvrhovatel může někdy ocitnout v situaci, kdy bude muset na poslední chvíli změnit složení komise, kvůli náhlé změně časových možností některého z jejích členů. Zároveň ale nebude chtít již připravený rozvrh měnit, a tak s největší pravděpodobností sáhne po funkci systému, která je volána tlačítkem Upravit komisi. Kromě této služby může uživatel ve stejném okně měnit i učebnu, ve které má komise zasedat, nebo studijní program a specializace, jedná-li se o den kombinovaný se státní zkouškou.

4.4.4 Rozpuštění komise

Jakoukoliv komisi včetně všech jí přiřazených obhajob lze v kterýkoliv moment rozpustit.

K tomuto účelu slouží služba Rozpustit komisi, která se stejně jako ostatní základní funkce systému nachází na panelu funkční sady tlačítek v hlavním okně aplikace. Poté, co uživatel potvrdí toto přání, dojde k rozpuštění komise, které s sebou nese tři nezbytné změny. Zaprvé bude tato komise úplně odstraněna z rozvrhu, tedy i z tabulky komisí. Zadruhé bude všem jejím členům původní den obhajob navrácen mezi jejich volné dny. Zatřetí budou všichni jí přiřazení studenti uvolněni a jejich obhajoby navráceny zpět mezi volné obhajoby.

4.4.5 Použitá implementace

HashMap je kolekce, která je v systému použita pro správu seznamu obhajob. Obecně se kolekce typu Map vyznačují tím, že jsou v nich data indexována klíči libovolných typů. V této implementaci jsou jako klíče použity čísla komisí, a na pozici hodnot klíčů jsou uchovávány objekty typu Vector, obsahující konkrétní obhajoby. Objekt typu Vector je kolekcí, která své prvky indexuje čísly a je jakýmsi polem proměnné velikosti. Tato kombinace kolekcí nabízí velmi snadný přístup k jakékoliv obhajobě. Nejprve je pomocí čísla komise v kolekci TreeMap indexován příslušný Vector, obsahující všechny obhajoby, přiřazené k této komisi. Dále je žádaná obhajoba indexována podle jejího pořadí v rámci dne. Nepřiřazení studenti jsou uloženi pod klíči 0 a -1 pro bakalářské, resp. diplomové obhajoby.

Jednotlivé dny obhajob jsou umístěny v objektu třídy TreeSet, která je v tomto případě řazená podle data konání obhajob.

4.5 Export rozvrhu do dokumentu PDF

Pokud již projekt obsahuje alespoň jednu vytvořenou komisi, je dovoleno uživateli provést export rozvrhu do dokumentu PDF. Nejrychlejším způsobem tak může učinit pomocí klávesové zkratky Ctrl + E, nebo také v hlavní nabídce Soubor, položka Exportovat do PDF. Na

následujícím screenshotu lze vidět, jaký výstup v podobě PDF dokumentu systém produkuje.

(23)

Obrázek 4.5: Příklad toho, jak může vypadat rozvrh po jeho exportu do PDF.

Jak je již z prvního řádku dokumentu zřejmé, jedná se o rozvrh jednoho dne obhajob kombinovaného se státními zkouškami. Hned pod touto informací se nachází zmínka o

studijním programu. Následuje složení komise a specializace studentů. Dále také nesmí chybět informace o datu a učebně, kde se obhajoby konají. Rozvrh obhajob bez státní zkoušky se bude v exportovaném dokumentu lišit pouze absencí studijního programu a specializací.

Poslední částí dokumentu je tabulka obhajujících studentů s jejich vedoucími a oponenty.

V posledním sloupci se v tomto případě nachází specializace studentů. Volný řádek v této tabulce představuje přestávku.

(Uvedený obrázek slouží jen jako příklad a není součástí skutečného rozvrhu obhajob fakulty.)

(24)

5 Závěr

V této bakalářské práci byl navržen a implementován systém podporující rozvrhování obhajob závěrečných prací a zkoušek. V průběhu jeho vývoje vznikaly neustále další náměty na jeho vylepšení a rozšíření, z nichž ty nejpřínosnější byly implementovány.

Hlavním přínosem práce je zjednodušená správa všech důležitých dat, která jsou nezbytná pro vytváření takovýchto rozvrhů. Systém dovoluje tato data spravovat za použití jednoduchých i komplexních operací, přístupných skrze dostatečně intuitivní a komfortní uživatelské rozhraní.

Systém je připraven k okamžitému použití na Fakultě informatiky Masarykovy univerzity.

Protože je navržen poměrně obecně, nebylo by příliš náročné ho upravit tak, aby mohl být nasazen i na jiných pracovištích.

(25)

Literatura

[1] HORTON, Ivor. Java 5. Praha: Neocortex, spol. s r. o., 2005 [2] Sun Microsystems. Java SE 6 API Documentation [online].

URL: <http:// java.sun.com/javase/6/docs >

[3] LOWAGIE, Bruno – SOARES, Paulo. iText API Documentation [online].

URL: <http://www.lowagie.com/iText/docs.html>

[4] Linuxsoft.cz. Seriál Programování v jazyku Java [online].

URL: <http://www.linuxsoft.cz/article_list.php?id_kategory=192>

(26)

Příloha A

Obsahem přiloženého CD jsou následující tři adresáře:

Text

 obsahuje text této práce ve formátech doc a pdf Zdroj

 obsahuje všechny vytvořené zdrojové kódy System

 obsahuje spustitelnou verzi systému ve formátu JAR (Java Archive)

 pro spuštění je třeba mít nainstalováno běhové prostředí Java Runtime Environment (JRE) verze alespoň 6

 adresář obsahuje podadresář lib, ve kterém je uložena knihovna iText

 samotná aplikace je pojmenována System.jar

 aplikaci lze spustit z terminálu příkazem: java –jre System.jar

 v operačních systémech Windows lze aplikaci spustit dvojklikem

Odkazy

Související dokumenty

Spisová služba je informační systém sloužící ke sledovaní celého oběhu dokumentů, jak v papírové podobě, tak v podobě elektronické. Slouží k evidování

Posunutí (translace) T(s) je shodné zobrazení v rovině, které je jednoznačně určené daným vektorem (vektorem posunutí) a zobrazovacím předpisem: každému bodu X v

[r]

Na naší nové ulici se mu stala taková nepříjemná nehoda, kterou musel ohlásit, ale nikomu se nic

chrámu P. 1549 slil krásný zvon veliký do chrámu P. legendou; roku 1550 slil zvon do kostela sv. Klimenta, na Tůních v Nov. a větší zvon do kláštera sv. Klimenta na Poříčí

Soustředíme se zvláště na vliv přípravy, která probíhá přímo ve školách, pro něž se budoucí učitelé připravují, a dále na teoretickou přípravu, která dříve

Příkladem můžou být například oficiální prvky pro komunikaci s databází Firebase nebo prvek, který umožní přímo z HTML deklarativně pracovat s technologií AJAX.. K

konem předepsaném, tak že dítko jako posthumus, tedy manželské zapsáno býti má, musí farář žádati úmrtní list manželův, anebo optati se, kde zemřel, aby si u