Itteratio – Informační systém pro MHD
• HTML 5, CSS 3, PHP, MySQL, JavaScript, jQuery, Google Maps API• 3 706 řádků kódu: 1 731 PHP+HTML, 1 470 CSS, 505 Javascript
Projekt itteratio byl vytvořen jako semestrální práce předmětu webové aplikace. Web byl napsán v dvoučlenném týmu s Janem Havlem.
Systém umožňuje uživateli vyhledání spoje MHD podle zadaných kritérií. Mou prací na projektu bylo vytvoření kódu pro vyhledávání a systém administrace dat zastávek a spojů. Mezi další funkce systému (realizované kolegou) patří našeptávač nebo využití map (Google Maps API) pro výběr zastávek pro vyhledávání a interaktivní mapy v administraci.
Pro samotné vyhledávání spojení je využit upravený dijkstrův algoritmus (předčasné ukončení) na grafovém vyjádření dat jednotlivých spojů.
Administrace
Ukázka kódu
// dijkstrův algoritmus (s predcasnym ukoncenim):
$pruchodu = 0;
while ($pocet_navstivenych < $i && $pruchodu < 1000) // dokud existují nenavstivene vrcholy
{
$min = extractMin($vrcholy, $i);
$vrcholy[$min]["navstiven"] = TRUE;
$sousedi = getNeighbors($vrcholy[$min]["id"], $hrany, $vrcholy, $i);
if (isset($sousedi))
{
foreach ($sousedi as &$value)
{
$rozdil = date_diff(date_create_from_format("H:i:s",$vrcholy[$min]["prijezd"]), date_create_from_format("H:i:s",$vrcholy[$value]["prijezd"]));
if ($min != -1)
{
$alt = date_add($vrcholy[$min]["vzd"], $rozdil);
$vzdd = $vrcholy[$value]["vzd"];
if ( ($vzdd == "inf") || ($alt < $vzdd)) // tato cesta k vrcholu je kratsi nez predchozi navrzena
{
$vrcholy[$value]["vzd"] = $alt; // nastavit novou vzdalenost a predchozi vrchol
$vrcholy[$value]["predchozi"] = $min;
if ($vrcholy[$value]["zastavka_id"] == $b) // je to cílová zastávka
{
$cilovy_index = $value;
goto konec;
}
}
}
}
unset($value);
}
$pruchodu++;
}
konec: