Exemple #1
0
        /// <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--;
            }
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
 public ListElement(VersenyBrigad val)
 {
     this.ElementValue = val;
     if (val.FirstElement != null)
     {
         this.Key = val.FirstElement.Key;
     }
 }
Exemple #4
0
        /// <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++;
        }
Exemple #5
0
 /// <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;
     }
 }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
        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();
        }
Exemple #8
0
 private void BrigadDisbanded(VersenyBrigad v)
 {
     Console.WriteLine("Egy versenybrigád törlésre került! Neve: " + v.Name);
 }
Exemple #9
0
 /// <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);
 }