//Koodasivat Sari ja Olli public static string SmashTheKeyboard(List <Liikennepaikka> lista, string typo) { // Etsitään liikennepaikkojen listasta syötteen ensimmäisen ja viimeisen kirjaimen perusteella // mahdolliset oikeat vaihtoehdot ja tarjotaan niitä käyttäjälle yksi kerrallaan. List <string> samanlaiset = new List <string>(); foreach (var item in lista) { string nimi = item.stationName; if (nimi.Substring(0, 2) == typo.Substring(0, 2)) { if (nimi.Substring(0, 3) == typo.Substring(0, 3)) { samanlaiset.Add(nimi); } if (nimi.Substring(nimi.Length - 1, 1) == typo.Substring(typo.Length - 1, 1)) { samanlaiset.Add(nimi); } } else { continue; } } SortedDictionary <string, string> Sortti = Asema.YhtenevätKirjaimet(typo, samanlaiset); var oikea = VaihtoehtoKäsittelijä(Sortti); return(oikea); }
//Koodasivat Olli ja Sari public static void KerroSeuraavatJunat() { //Haetaan käyttäjän syötteen perusteella annetulle reitille seuraavat junat ja tulostetaan //niiden lähtö- ja saapumistiedot. string lähtöasema; string kohdeasema; Asema.Konduktööri(out lähtöasema, out kohdeasema); //Console.WriteLine("Valittu matka: "+lähtöasema+ " - "+kohdeasema); List <Juna> junat; string lähtöformat = "dd.MM klo HH.mm"; string saapumisformat = "klo HH.mm"; RataDigiTraffic.APIUtil rata = new RataDigiTraffic.APIUtil(); try { junat = rata.JunatVälillä(lähtöasema, kohdeasema); int counter = 1; foreach (var item in junat) { StringBuilder tulostus = new StringBuilder(counter + ". Juna " + item.trainType + " " + item.trainNumber + " lähtee asemalta " + lähtöasema + " "); List <RataDigiTraffic.Model.Aikataulurivi> aikataulut = item.timeTableRows; foreach (var rivi in aikataulut) { if (rivi.stationShortCode == lähtöasema && rivi.type.Contains("DEPARTURE")) { tulostus.Append(rivi.scheduledTime.ToLocalTime().ToString(lähtöformat) + " ja saapuu asemalle " + kohdeasema + " "); break; } } foreach (var rivi in aikataulut) { if (rivi.stationShortCode == kohdeasema && rivi.type.Contains("ARRIVAL")) { tulostus.Append(rivi.scheduledTime.ToLocalTime().ToString(saapumisformat)); break; } } Console.WriteLine(tulostus); counter++; if (counter == 6) { break; } } } // Jos käyttäjä syöttää lähtö- ja kohdeasemat, joiden välillä ei ole suoraa raideyhteyttä, // annetaan siitä ilmoitus. catch (Newtonsoft.Json.JsonSerializationException) { Console.WriteLine("Antamallesi yhteysvälille ei löydy suoraa junayhteyttä!"); return; } }
// Koodasivat Olli ja Sari public static void Konduktööri(out string lähtöAsema, out string kohdeAsema) { //Selvittää asiakkaan syötteen perusteella halutun reitin lähtö- ja kohdeasemat annalähtöasema: Console.WriteLine("Anna lähtöasema:"); string syöte = Console.ReadLine(); string lähtö = Asema.Trimmeri(syöte); RataDigiTraffic.APIUtil rata = new RataDigiTraffic.APIUtil(); lähtöAsema = Asema.EtsiAsema(lista: rata.Liikennepaikat(), nimi: lähtö); if (lähtöAsema == null) { //Jos syötteen perusteella ei suoraan löydy asemaa, etsitään syötettä lähinnä vastaavat //asemat ja kysytään niitä käyttäjältä string uusiLähtö = SmashTheKeyboard(rata.Liikennepaikat(), lähtö); lähtöAsema = EtsiAsema(rata.Liikennepaikat(), uusiLähtö); lähtö = uusiLähtö; if (lähtöAsema == null) { Console.WriteLine("Asemaa ei löydy!"); goto annalähtöasema; } } annakohdeasema: Console.WriteLine("Anna asema, jonne haluat matkustaa asemalta " + lähtö + ": "); syöte = Console.ReadLine(); string kohde = Asema.Trimmeri(syöte); kohdeAsema = Asema.EtsiAsema(lista: rata.Liikennepaikat(), nimi: kohde); if (kohdeAsema == null) { string uusiKohde = SmashTheKeyboard(rata.Liikennepaikat(), kohde); kohdeAsema = Asema.EtsiAsema(rata.Liikennepaikat(), uusiKohde); kohde = uusiKohde; if (kohdeAsema == null) { Console.WriteLine("Asemaa ei löydy!"); goto annakohdeasema; } } Console.WriteLine($"Valittu matka: {lähtö}({lähtöAsema}) - { kohde}({kohdeAsema})"); }