示例#1
0
        private static void Kiszallitas(List <IKuldemeny> kiszallitandok, LancoltLista <IKuldemeny> kuldemenyek)
        {
            int waiting = 500;

            Thread.Sleep(waiting);
            Console.Write(".");
            Thread.Sleep(waiting);
            Console.Write(".");
            Thread.Sleep(waiting);
            Console.Write(".");
            Thread.Sleep(waiting);

            foreach (IKuldemeny kuldemeny in kiszallitandok)
            {
                kuldemenyek.Torles(kuldemeny);
            }

            kuldemenyek.Bejaras(k =>
            {
                k.Prioritas++;
                k.Beosztva = false;
            });

            Kiszallitandok.Clear();
        }
示例#2
0
        private static void Beosztas(LancoltLista <IKuldemeny> kuldemenyek, IOrderedEnumerable <Futar> rendezdettFutarok)
        {
            int x = 0, y = 0, btm = 0, nap = 0;

            while (kuldemenyek.Any(k => !k.Beosztva))
            {
                Ujnap(rendezdettFutarok);
                SzalbiztosKonzol.KiirasXY(x, y, $"{Today.Date.AddDays(nap + daysToAdd):M}:");
                nap++;

                foreach (Futar futar in rendezdettFutarok)
                {
                    FutarnakBeoszt(futar, kuldemenyek);
                    var worksStr = futar.Dolgozik ? "+" : "-";
                    SzalbiztosKonzol.KiirasXY(x, y += 2, $"Futar {futar.Id}. ({futar.Kapacitas}): {worksStr}");
                    y += 2;

                    foreach (IKuldemeny kuldemeny in futar.Kuldemenyek)
                    {
                        SzalbiztosKonzol.KiirasXY(x, y += 1, $"- {kuldemeny.Prioritas}, {kuldemeny.Tomeg}");
                        if (nap == 1)
                        {
                            Kiszallitandok.Add(kuldemeny);
                        }
                    }

                    x  += 20;
                    btm = y > btm ? y : btm;
                    y   = 0;
                }

                x = 0;
                y = btm + 2;
            }
        }
示例#3
0
        public static LancoltLista <IKuldemeny> ReadPackages()
        {
            LancoltLista <IKuldemeny> lista = new LancoltLista <IKuldemeny>();
            StreamReader sr = new StreamReader("InputFiles/kuldemenyek.txt");

            while (!sr.EndOfStream)
            {
                string line = sr.ReadLine();
                if (line == null)
                {
                    continue;
                }

                var parts = line.Split('-');
                //Tipus Prioritas Tomeg
                string tipus = parts[0];
                int    prio  = int.Parse(parts[1]);
                int    tomeg = int.Parse(parts[2]);

                KuldemenyBase kuldemeny;
                switch (tipus)
                {
                case nameof(NormalLevel):
                    kuldemeny = new NormalLevel(prio, tomeg);
                    break;

                case nameof(ElsobbsegiLevel):
                    kuldemeny = new ElsobbsegiLevel(prio, tomeg);
                    break;

                case nameof(NormalCsomag):
                    kuldemeny = new NormalCsomag(prio, tomeg);
                    break;

                case nameof(ElsobbsegiCsomag):
                    kuldemeny = new ElsobbsegiCsomag(prio, tomeg);
                    break;

                default:
                    throw new NincsIlyenKuldemenyException($"Nem létezik ilyen Küldemény: {tipus}");
                }

                lista.BeszurasElejere(kuldemeny);
            }

            return(lista);
        }
示例#4
0
        static void Main(string[] args)
        {
            List <Futar> futarok = FileReader.ReadCarriers();
            LancoltLista <IKuldemeny> kuldemenyek = FileReader.ReadPackages();

            var rendezdettFutarok = futarok
                                    .Where(f => f.Dolgozik)
                                    .OrderBy(f => f.Kapacitas);

            KiszallitvaEvent += Kiszallitas;

            if (!rendezdettFutarok.Any())
            {
                throw new NincsDolgozoFutarException();
            }

            do
            {
                Csomagfelvetel(kuldemenyek);

                Beosztas(kuldemenyek, rendezdettFutarok);
                Console.WriteLine("\n\n");
                Console.WriteLine("Az enter lenyomásával kiszállításra kerülnek a napi küldemények.");
                ConsoleKeyInfo inp;
                do
                {
                    inp = Console.ReadKey();
                } while (inp.Key != ConsoleKey.Enter);

                Console.WriteLine("Kiszállítás: ");
                Kiszallitas(rendezdettFutarok, kuldemenyek);
                Console.WriteLine("Kész!");

                do
                {
                    Console.WriteLine("\nEnter lenyomásával a következő nap beosztása látható.");
                    inp = Console.ReadKey();
                } while (inp.Key != ConsoleKey.Enter);

                Console.Clear();
                SzalbiztosKonzol.Clear();
            } while (kuldemenyek.Length > 0);

            Console.WriteLine();
        }
示例#5
0
        private static void FutarnakBeoszt(Futar futar, LancoltLista <IKuldemeny> kuldemenyek)
        {
            Func <IKuldemeny, bool> expr = x => !x.Beosztva &&
                                           x.Tomeg + futar.AktalisTeher < futar.Kapacitas;

            IKuldemeny kov = kuldemenyek
                             .Kovetkezo(expr);

            while (kov != null)
            {
                futar.Kuldemenyek.Add(kov);
                futar.AktalisTeher += kov.Tomeg;
                kov.Beosztva        = true;
                kov = kuldemenyek.Kovetkezo(expr);
            }

            futar.TeleVan = true;
        }
示例#6
0
        private static void Csomagfelvetel(LancoltLista <IKuldemeny> kuldemenyek)
        {
            Console.WriteLine("Szeretne csomagot felvenni a rendszerbe?");
            string igenNem;

            do
            {
                igenNem = Console.ReadLine();
            } while (igenNem != "Nem" && igenNem != "Igen");

            if (igenNem == "Nem")
            {
                Console.Clear();
                return;
            }

            Console.WriteLine($"Kérem a típusát: ({nameof(NormalLevel)} - {nameof(ElsobbsegiLevel)} - {nameof(NormalCsomag)} - {nameof(ElsobbsegiCsomag)})");
            string tipus = Console.ReadLine();

            Console.WriteLine("Mennyire sűrgös: (1-10)");
            string prioStr;
            int    prio;

            do
            {
                prioStr = Console.ReadLine();
            } while (int.TryParse(prioStr, out prio));

            Console.WriteLine("Kérem a tömegét: (grammban)");
            string tomegStr;
            int    tomeg;

            do
            {
                tomegStr = Console.ReadLine();
            } while (int.TryParse(tomegStr, out tomeg));


            KuldemenyBase kuldemeny;

            switch (tipus)
            {
            case nameof(NormalLevel):
                kuldemeny = new NormalLevel(tomeg, tomeg);
                break;

            case nameof(ElsobbsegiLevel):
                kuldemeny = new ElsobbsegiLevel(tomeg, tomeg);
                break;

            case nameof(NormalCsomag):
                kuldemeny = new NormalCsomag(tomeg, tomeg);
                break;

            case nameof(ElsobbsegiCsomag):
                kuldemeny = new ElsobbsegiCsomag(tomeg, tomeg);
                break;

            default:
                throw new NincsIlyenKuldemenyException($"Nem létezik ilyen Küldemény: {tipus}");
            }

            kuldemenyek.BeszurasElejere(kuldemeny);

            Console.Clear();
        }
示例#7
0
 private static void Kiszallitas(IEnumerable <Futar> futarok, LancoltLista <IKuldemeny> kuldemenyek)
 {
     Ujnap(futarok);
     KiszallitvaEvent(Kiszallitandok, kuldemenyek);
     daysToAdd++;
 }