/* 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; } } }