/// <summary> /// Törli a specifikus versenybrigádot. /// </summary> /// <param name="element"></param> public void VersenyBrigadDelete(VersenyBrigad element) { VersenyzoKezelo.ListElement currentElement = _FirstElement; // Vesszük az első elemet VersenyzoKezelo.ListElement lastElement = null; // Addig megyünk amíg a jelenlegi elemünk nem null, és az érték nem egyezik a megadottal. while (currentElement != null && !currentElement.ElementValue.Equals(element)) { lastElement = currentElement; // Az "utolsó" elemünk lesz a jelenlegi elem. Ez akar lenni a keresett elem előtti elem. currentElement = currentElement.NextElement; // Vesszük a következő elemet } if (currentElement != null) { if (lastElement != null) // Ha van utolsó értékünk { lastElement.NextElement = currentElement.NextElement; } else { _FirstElement = currentElement.NextElement; // Ez null lesz ha a listánk abszolút üres lesz. } BrigadDisbanded(element); _VersenyBrigadCount--; } }
/// <summary> /// Csak is a delegate miatt lett létrehozva a feladat szerint. /// </summary> /// <param name="id"></param> /// <returns></returns> internal Versenyzo AlertRemoval(string id) { VersenyzoKezelo.ListElement currentElement = _FirstElement; // Vesszük az első elemet // Addig megyünk amíg a jelenlegi elemünk nem null, és az érték nem egyezik a megadottal. while (currentElement != null) { VersenyBrigad brigad = currentElement.ElementValue; VersenyBrigad.ListElement element = brigad.FirstElement; while (element != null) { Versenyzo v2 = element.ElementValue; if (v2.VersenyzoAzonosito == id) { return(v2); } if (element.LastElement) { break; } element = element.NextElement; } currentElement = currentElement.NextElement; // Vesszük a következő elemet } return(null); }
public ListElement(VersenyBrigad val) { this.ElementValue = val; if (val.FirstElement != null) { this.Key = val.FirstElement.Key; } }
/// <summary> /// Hozzáadja a versenybrigádot a listához. NEM rendezett módon. /// </summary> /// <param name="element"></param> public void VersenyBrigadAdd(VersenyBrigad element) { // Létrehozunk egy új lista elementet VersenyzoKezelo.ListElement uj = new VersenyzoKezelo.ListElement(element); uj.NextElement = _FirstElement; _FirstElement = uj; _VersenyBrigadCount++; }
/// <summary> /// Törli a versenyzőt a specifikus brigádból. /// </summary> /// <param name="b"></param> /// <param name="v"></param> public void VersenyzoTorolFromBrigad(VersenyBrigad b, Versenyzo v) { b.Remove(v); // Ha véletlenül az első elem kerülne törlésre frissítsük az kulcs értéket a legkisebbre. // Így megtartjuk, hogy a brigádok mindíg a legkisebb azonosítószámmal vannak feltüntetve. if (b.FirstElement != null) { this._FirstElement.Key = b.FirstElement.Key; } }
/// <summary> /// Ezt a methodot úgy írtam meg, hogy az összes brigádot végig nézi egy adott versenyzőért, és ha megtalálja törli. /// Nem feltétlenül szükséges a használata, csak előre megcsináltam ha esetleg kellene. /// </summary> /// <param name="v"></param> public bool VersenyzoTorol(string id) { VersenyzoKezelo.ListElement currentElement = _FirstElement; // Vesszük az első elemet // Addig megyünk amíg a jelenlegi elemünk nem null, és az érték nem egyezik a megadottal. while (currentElement != null) { VersenyBrigad brigad = currentElement.ElementValue; VersenyBrigad.ListElement element = brigad.FirstElement; while (element != null) { Versenyzo v2 = element.ElementValue; if (v2.VersenyzoAzonosito == id) { brigad.Remove(v2); if (brigad.FirstElement == null) { VersenyBrigadDelete(brigad); } else { // Ha véletlenül az első elem kerülne törlésre frissítsük az kulcs értéket a legkisebbre. // Így megtartjuk, hogy a brigádok mindíg a legkisebb azonosítószámmal vannak feltüntetve. if (brigad.FirstElement != null) { this._FirstElement.Key = brigad.FirstElement.Key; } } return(true); } if (element.LastElement) { break; } element = element.NextElement; } currentElement = currentElement.NextElement; // Vesszük a következő elemet } return(false); }
public static void Main(string[] args) { Randomizer = new Random(); if (!File.Exists("Brigadok.ini")) { throw new FileNotFoundException("Brigádok Ini file hiányzik!"); } if (!File.Exists("Versenyek.ini")) { throw new FileNotFoundException("Versenyek Ini file hiányzik!"); } // Kezelő Statikus Inicializálója VersenyzoKezelo.InitializeKezelo(); VersenyzoKezelo handler = VersenyzoKezelo.Instance; // Versenyek beolvasása IniParser versenyek = new IniParser("Versenyek.ini"); List <Verseny> AvailableRacesNORML = new List <Verseny>(); RegularChainedList <Verseny> AvailableRaces = new RegularChainedList <Verseny>(); try { foreach (var x in versenyek.EnumSection("Versenyek")) { AvailableRaces.Add(new Verseny(x)); AvailableRacesNORML.Add(new Verseny(x)); } } catch (Exception ex) { throw new FileLoadException("Hiba a versenyek file olvasásakor! " + ex); } // Versenyzők és brigádjaik/adataik beolvasása. IniParser ini = new IniParser("Brigadok.ini"); try { //Versenyzo vteszt = null; //VersenyBrigad bteszt = null; foreach (var x in ini.Sections) // Végig megyünk az összes section-n [Section1] { VersenyBrigad brigad = new VersenyBrigad(x); // Létrehozzuk a brigádot, de még nem adjuk hozzá a listához. foreach (var y in ini.EnumSection(x)) { var data = ini.GetSetting(x, y).Split('~'); if (data[1].ToLower() != "f" && data[1].ToLower() != "n") { throw new InvalidRacerDatas("Hibás versenyző nem!"); } Versenyzo v = new Versenyzo(y, data[1], data[0]); // Létrehozzuk a versenyzőt az adatokkal, majd hozzáadjuk a brigádhoz rendezett beilesztéssel handler.VersenyzoHozzaAdd(brigad, v); foreach (var z in data[2].Split(',')) { foreach (var verseny in AvailableRacesNORML) { if (verseny.Megnevezes == z) { v.Versenyek.Add(verseny); } } } //vteszt = brigad.FirstElement.ElementValue; //bteszt = brigad; //Console.WriteLine("V: " + v.UniqueID); } handler.VersenyBrigadAdd(brigad); // A brigádot hozzáadjuk a listához. //Console.WriteLine(x + " : " + brigad.FirstElement.Key); } //handler.Print(); //Console.WriteLine("print megvót"); //handler.VersenyzoTorolFromBrigad(bteszt, vteszt); } catch (Exception ex) { throw new FileLoadException("Hiba a brigádok file olvasásakor! " + ex); } //handler.Print(); //handler.VersenyBrigadSort(); //handler.Print(); Help(); bool Run = true; while (Run) { try { string s = Console.ReadLine(); int i; bool b = int.TryParse(s, out i); while (!b) { Console.WriteLine("Hibás Opció! Listázom a lehetőségeket."); Help(); s = Console.ReadLine(); b = int.TryParse(s, out i); } switch (i) { case 1: handler.VersenyBrigadSort(); Console.WriteLine("Brigádok rendezve!"); break; case 2: Console.WriteLine("Listázás."); var brigadelement = handler.FirstElement; while (brigadelement != null) { Console.WriteLine("Brigád: " + brigadelement.ElementValue.Name + " -- első kulcsa: " + brigadelement.Key); var versenyzoelement = brigadelement.ElementValue.FirstElement; while (versenyzoelement != null) { var versenyzo = versenyzoelement.ElementValue; Console.WriteLine(versenyzo.Nev + " " + versenyzo.VersenyzoAzonosito + " " + versenyzo.Lakhely); if (versenyzoelement.LastElement) { break; } versenyzoelement = versenyzoelement.NextElement; } Console.WriteLine(); brigadelement = brigadelement.NextElement; } break; case 3: Console.WriteLine("Megpróbálkozunk a versenyző versenyszámainak optimalizálásával."); Console.WriteLine(); foreach (var x in AvailableRacesNORML) { Console.Write(x.Megnevezes + "\t"); } Console.WriteLine(); try { handler.VersenyBrigadBeosztasKiir(AvailableRaces); } catch (BTSException ex) { Console.WriteLine("Hiba: " + ex.Message); } Console.WriteLine(); break; case 4: Console.WriteLine("Írjál be egy azonosítót."); string id = Console.ReadLine(); Versenyzo v = handler.AlertRemoval(id); if (v != null) { if (NParticipates != null) { NParticipates(v); } handler.VersenyzoTorol(v); Console.WriteLine("Törlés megtörtént!"); } else { Console.WriteLine("Nem található!"); } break; case 5: Console.WriteLine("Írjál be egy brigád nevet."); string name = Console.ReadLine(); bool b3 = handler.VersenyBrigadDelete(name); if (b3) { Console.WriteLine("Törlés megtörtént!"); } else { Console.WriteLine("Nem található!"); } break; case 6: Run = false; break; } Console.WriteLine("Folytatáshoz nyomj meg egy billenytű gombot."); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine("Hibás bevitel, vagy valami kritikus hiba történt! " + ex); } } //Console.ReadKey(); }
private void BrigadDisbanded(VersenyBrigad v) { Console.WriteLine("Egy versenybrigád törlésre került! Neve: " + v.Name); }
/// <summary> /// Hozzáadja a versenyzőt a specifikus brigádhoz. /// </summary> /// <param name="b"></param> /// <param name="v"></param> public void VersenyzoHozzaAdd(VersenyBrigad b, Versenyzo v) { b.AddInSortedWay(v); }