Napište program pro zobrazení mapy cest mezi městy a vyhledávání optimální trasy podle zadaných kritérií.
Mapa je uložena ve formátu XML, jehož strukturu pochopíte z přiloženého ukázkového souboru.
Postupně implementujte následující funkce:
Načtení dat ze souboru zvoleného uživatelem.
Program graficky zobrazí mapu obsahující jednotlivá města.
Program zobrazí cesty mezi jednotlivými městy. Zobrazení cest může uživatel zapínat/vypínat. Program může graficky rozlišit rychlost dosažitelnou na jednotlivých cestách.
Program pro každé město umožní pohodlně zjistit cesty do okolních měst, jejich délku a dobu jízdy.
Program umožní uživateli vybrat města, kde má začínat a končit cesta.
Program navrhne a vypíše optimální trasu podle uživatelem zvoleného kritéria (nejkratší, nejrychlejší, nejlevnější). Cena cesty mezi sousedními městy se určuje na základě průměrné rychlosti a spotřeby paliva pro danou rychlost.
Program zobrazí na mapě nalezenou trasu.
Program umožní uložení nalezené optimální trasy do uživatelem zvoleného souboru ve formátu XML.
Formáty vstupních i výstupních souborů XML jsou samopopisné, prostudujte si ukázkové soubory.
Příklad 1. Ukázka datového souboru s mapou
<?xml version="1.0" encoding="windows-1250"?> <mapa> <mesta> <mesto> <nazev>Aš</nazev> <polohaX>8</polohaX> <polohaY>-20</polohaY> </mesto> <mesto> <nazev>Brno</nazev> <polohaX>270</polohaX> <polohaY>80</polohaY> </mesto> ... </mesta> <cesty> <cesta> <z>Aš</z> <do>Cheb</do> <vzdalenost>24</vzdalenost> <prumernaRychlost>70</prumernaRychlost> </cesta> <cesta> <z>Brno</z> <do>Břeclav</do> <vzdalenost>61</vzdalenost> <prumernaRychlost>130</prumernaRychlost> </cesta> ... </cesty> <spotreby> <spotreba> <rychlost>60</rychlost> <litru>5</litru> </spotreba> <spotreba> <rychlost>70</rychlost> <litru>5.5</litru> </spotreba> ... </spotreby> </mapa>
Příklad 2. Ukázka formátu pro uložení nalezené cesty
<?xml version="1.0" encoding="windows-1250"?> <cesta> <z>Plzeň</z> <do>Brno</do> <pres>Praha</pres> <!-- Element <pres> se může opakovat a obsahuje postupně všechna města, přes která se jede. --> <vzdalenost>282</vzdalenost> <dobaJizdy>2:10</dobaJizdy> <spotreba>28.2</spotreba> </cesta>
Na řešení úlohy máte 4 hodiny čistého času. Za každou úlohu můžete dostat maximálně 10 bodů, z nichž 6 bodů je vyhrazeno na ohodnocení funkčnosti programu a jeho shody se zadáním, 3 body na efektivitu a jeden bod na dokumentaci a přehlednost zdrojového kódu.