예제 #1
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;
            }
        }
예제 #2
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();
        }