Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Aplikacja powinna umożliwiać:
- // ● Dodać seans filmowy (tytuł, data, godzina, liczba miejsc),
- // ● Wyświetlić dostępne miejsca,
- // ● Zarezerwować miejsce,
- // ● Zapisać wszystkie dane (np. w pliku tekstowym lub pliku JSON).
- // Technicznie powinna zawierać:
- // ● Klasy odzwierciedlające logikę biznesową (np. Seans, Miejsce, Rezerwacja, itd.).
- // ● Podstawy projektowania obiektowego (właściwości klas, proste metody).
- // ● Czytanie i zapisywanie danych do pliku.
- public static class Program
- {
- private static ShowCatalog showCatalog = new();
- public static void Main(string[] args)
- {
- SeedShows(); // only for tests
- while (true)
- {
- Console.WriteLine("=== Cinema Reservation System ===");
- Console.WriteLine("1. Display all shows");
- Console.WriteLine("2. Add a new show");
- Console.WriteLine("3. Reserve seat");
- Console.WriteLine("4. Exit");
- Console.Write("Choose an option: ");
- string? choice = Console.ReadLine();
- System.Console.WriteLine();
- if (string.IsNullOrWhiteSpace(choice)) { continue; }
- switch (choice)
- {
- case "1":
- DisplayAllShows();
- System.Console.WriteLine();
- break;
- case "2":
- AddShow();
- System.Console.WriteLine();
- break;
- case "3":
- ReserveSeat();
- break;
- case "4":
- System.Console.WriteLine("Zamykam aplikację...");
- return;
- default:
- System.Console.WriteLine("Nieznana operacja. Spróbuj ponownie");
- System.Console.WriteLine();
- break;
- }
- }
- }
- private static void SeedShows()
- {
- var movie1 = new Show("TopGun", new DateOnly(2025, 11, 10), new TimeOnly(18, 45));
- var movie2 = new Show("Rocky", new DateOnly(2025, 11, 10), new TimeOnly(16, 30));
- showCatalog.AddShow(movie1);
- showCatalog.AddShow(movie2);
- }
- private static void DisplayAllShows()
- {
- int counter = 0;
- foreach (var show in showCatalog.Shows)
- {
- counter++;
- System.Console.WriteLine($"{counter}. {show.Title} - {show.ShowDate.ToShortDateString()} " +
- $"{show.ShowHour.ToShortTimeString()}");
- }
- }
- private static void AddShow()
- {
- System.Console.Write("Dodaj tytuł: ");
- string? title = Console.ReadLine();
- System.Console.Write("Podaj datę seansu (yyyy-MM-dd): ");
- string? dateInput = Console.ReadLine();
- System.Console.Write("Podaj godzinę seansu (hh:mm): ");
- string? hourInput = Console.ReadLine();
- if (string.IsNullOrWhiteSpace(title))
- {
- System.Console.WriteLine("Nieprawidlowa nazwa filmu");
- return;
- }
- if (!DateOnly.TryParse(dateInput, out DateOnly date))
- {
- System.Console.WriteLine("Nieprawidłowy format daty");
- return;
- }
- if (!TimeOnly.TryParse(hourInput, out TimeOnly time))
- {
- System.Console.WriteLine("Nieprawidłowy format godziny");
- return;
- }
- System.Console.WriteLine("Liczba siedzeń na seansie: ");
- if (!int.TryParse(Console.ReadLine(), out int seats))
- {
- seats = 0;
- }
- if (seats > 0)
- {
- showCatalog.AddShow(
- new Show(title, date, time, seats)
- );
- }
- else
- {
- showCatalog.AddShow(
- new Show(title, date, time)
- );
- }
- }
- private static void ReserveSeat()
- {
- DisplayAllShows();
- System.Console.Write("Podaj numer filmu: ");
- if (!int.TryParse(Console.ReadLine(), out int index))
- {
- System.Console.WriteLine("Nieprawidlowy format numeru filmu");
- return;
- }
- if (index < 0 || index > showCatalog.Shows.Count)
- {
- System.Console.WriteLine("Index poza zakresem: ");
- return;
- }
- var selectedShow = showCatalog.Shows[index];
- var freeSeats = selectedShow.Seats.Where(s => !s.IsReserved).ToList();
- if (freeSeats.Count == 0)
- {
- System.Console.WriteLine("Nie ma już wolnych miejsc");
- return;
- }
- else
- {
- foreach (var seat in freeSeats)
- {
- System.Console.Write($"{seat.SeatNumber}, ");
- }
- System.Console.WriteLine();
- }
- if (!int.TryParse(Console.ReadLine(), out int choiceSeat))
- {
- System.Console.WriteLine("Nieprawidłowy numer siedzenia");
- return;
- }
- var seatToReseve = freeSeats.Where(s => s.SeatNumber == choiceSeat).FirstOrDefault();
- if (seatToReseve == null)
- {
- System.Console.WriteLine("Siedzenie jest już zajęte lub nie ma takiego siedzenia");
- }
- else
- {
- seatToReseve.Reseve();
- System.Console.WriteLine("Zarezerwowano siedzenie");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment