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:
  
Nahoru • Up