Esempio n. 1
0
        /* Am ales sa fac un meniu in clasa main folosind un switch pentru a facilita utilizarea si testarea aplicatiei.
         * Tot aici se creaza instanta parcarii.
         */
        static void Main(string[] args)
        {
            Parcare parcare = new Parcare();
            bool    running = true;
            // o expresie regulata pe care o folosesc pt a valida ca numarul de inmatriculare sa fie de forma "JD-NR-ABC"
            var validation = new Regex("^[A-Z][A-Z]-\\d\\d-[A-Z][A-Z][A-Z]$");

            while (running)
            {
                Console.Clear();
                Console.WriteLine("1. Afisare numar locuri libere");
                Console.WriteLine("2. Intra in parcare");
                Console.WriteLine("3. Iesire din parcare");
                Console.WriteLine("4. Afisare lista masini parcate");
                Console.WriteLine("0. Exit\n");

                Console.WriteLine("Introduceti optiunea:");
                string menu = Console.ReadLine();
                Console.Clear();

                switch (menu)
                {
                case "1":
                    Console.WriteLine("In acest moment in parcare sunt {0} locuri disponibile", parcare.GetNrLocuriLibere());
                    Console.WriteLine("\nApasati orice tasta pentru a va reintoarce la meniu");
                    Console.ReadKey();
                    break;

                case "2":
                    /*in acest for este construit desenul pentru locurile de parcare. Pe randul 2 si 5 in fiecare loc de parcare
                     * este ori X daca locul e ocupat ori un numar reprezentand locul de parcare.*/
                    for (int i = 0; i < 30; i++)
                    {
                        if (i % 5 == 0 && i != 0)
                        {
                            Console.Write("|\n");
                        }
                        if (i == 15)
                        {
                            Console.WriteLine("-------------------------------");
                        }
                        if (i >= 5 && i <= 9)
                        {
                            (int index, Masina masina)car = parcare.GetListaMasini().Find(m => m.Item1 == i % 5 + 1);
                            if (car.masina == null)
                            {
                                Console.Write("|  {0}  ", i % 5 + 1);
                            }
                            else
                            {
                                Console.Write("|  X  ");
                            }
                        }
                        else if (i >= 20 && i <= 24)
                        {
                            (int index, Masina masina)car = parcare.GetListaMasini().Find(m => m.Item1 == i % 5 + 6);
                            if (car.masina == null)
                            {
                                if (i % 5 + 6 == 10)
                                {
                                    Console.Write("|  {0} ", i % 5 + 6);
                                }
                                else
                                {
                                    Console.Write("|  {0}  ", i % 5 + 6);
                                }
                            }
                            else
                            {
                                Console.Write("|  X  ");
                            }
                        }
                        else
                        {
                            Console.Write("|     ");
                        }
                        if (i == 29)
                        {
                            Console.WriteLine("|\n");
                        }
                    }

                    Console.WriteLine("X - loc ocupat\n");

                    Console.WriteLine("Pe ce loc doriti sa parcati ?");
                    string locAles = Console.ReadLine();
                    int    value;

                    //verific daca locul de parcare tastat este in limite
                    while (!int.TryParse(locAles, out value) || int.Parse(locAles) < 1 || int.Parse(locAles) > 10)
                    {
                        Console.WriteLine("Loc incorect!");
                        Console.WriteLine("Introduceti un numar intre 1-10 inclusiv");
                        locAles = Console.ReadLine();
                    }

                    Console.WriteLine("Introduceti numarul de inmatriculare sub forma 'JJ-NR-ABC':");
                    string numarIntrare = Console.ReadLine();

                    //validez daca nr de inmatriculare tastat este in format corect
                    while (!validation.IsMatch(numarIntrare))
                    {
                        Console.Clear();
                        Console.WriteLine("Numar incorect!");
                        Console.WriteLine("Introduceti numarul de inmatriculare sub forma 'JJ-NR-ABC':");
                        numarIntrare = Console.ReadLine();
                    }

                    //incerc introducerea masinii in parcare, in caz contrar primesc o exceptie si afisez mesajul acesteia
                    try
                    {
                        parcare.Intrare(numarIntrare, Int32.Parse(locAles));
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                        Console.WriteLine("\nApasati orice tasta pentru a va reintoarce la meniu");
                        Console.ReadKey();
                        break;
                    }

                    Console.WriteLine("\nBun venit! Tariful pentru prima ora este de {0} LEI," +
                                      " iar pentru orice ora ulterioara este de {1} LEI/ora", parcare.GetTarifPrimaOra(), parcare.GetTarifUlterior());
                    Console.WriteLine("\nApasati orice tasta pentru a va reintoarce la meniu");
                    Console.ReadKey();
                    break;

                case "3":
                    Console.WriteLine("Introduceti numarul de inmatriculare sub forma 'JJ-NR-ABC':");
                    string numarIesire = Console.ReadLine();

                    while (!validation.IsMatch(numarIesire))
                    {
                        Console.Clear();
                        Console.WriteLine("Numar incorect!");
                        Console.WriteLine("Introduceti numarul de inmatriculare sub forma 'JJ-NR-ABC':");
                        numarIesire = Console.ReadLine();
                    }
                    try
                    {
                        parcare.Iesire(numarIesire);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }

                    Console.WriteLine("\nApasati orice tasta pentru a va reintoarce la meniu");
                    Console.ReadKey();
                    break;

                case "4":
                    if (parcare.GetListaMasini().Count == 0)
                    {
                        Console.WriteLine("Nu sunt masini parcate in acest moment");
                        Console.WriteLine("\nApasati orice tasta pentru a va reintoarce la meniu");
                        Console.ReadKey();
                        break;
                    }

                    Console.WriteLine("Masinile parcate in acest moment sunt:");
                    foreach ((int index, Masina masina)loc in parcare.GetListaMasini())
                    {
                        Console.WriteLine("{0} pe locul {1}", loc.masina.NrInmatriculare, loc.index);
                    }

                    Console.WriteLine("\nApasati orice tasta pentru a va reintoarce la meniu");
                    Console.ReadKey();
                    break;

                case "0":
                    running = false;
                    break;

                default:
                    Console.WriteLine("Comanda invalida. Apasati orice tasta pentru a reveni la meniu");
                    Console.ReadKey();
                    break;
                }
            }
        }