Cassimus

film

Nov 15th, 2025
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.42 KB | None | 0 0
  1. // Aplikacja powinna umożliwiać:
  2. // ● Dodać seans filmowy (tytuł, data, godzina, liczba miejsc),
  3. // ● Wyświetlić dostępne miejsca,
  4. // ● Zarezerwować miejsce,
  5. // ● Zapisać wszystkie dane (np. w pliku tekstowym lub pliku JSON).
  6. // Technicznie powinna zawierać:
  7. // ● Klasy odzwierciedlające logikę biznesową (np. Seans, Miejsce, Rezerwacja, itd.).
  8. // ● Podstawy projektowania obiektowego (właściwości klas, proste metody).
  9. // ● Czytanie i zapisywanie danych do pliku.
  10.  
  11. public static class Program
  12. {
  13. private static ShowCatalog showCatalog = new();
  14.  
  15. public static void Main(string[] args)
  16. {
  17. SeedShows(); // only for tests
  18.  
  19. while (true)
  20. {
  21. Console.WriteLine("=== Cinema Reservation System ===");
  22. Console.WriteLine("1. Display all shows");
  23. Console.WriteLine("2. Add a new show");
  24. Console.WriteLine("3. Reserve seat");
  25. Console.WriteLine("4. Exit");
  26. Console.Write("Choose an option: ");
  27.  
  28. string? choice = Console.ReadLine();
  29. System.Console.WriteLine();
  30.  
  31. if (string.IsNullOrWhiteSpace(choice)) { continue; }
  32.  
  33. switch (choice)
  34. {
  35. case "1":
  36. DisplayAllShows();
  37. System.Console.WriteLine();
  38. break;
  39. case "2":
  40. AddShow();
  41. System.Console.WriteLine();
  42. break;
  43. case "3":
  44. ReserveSeat();
  45. break;
  46. case "4":
  47. System.Console.WriteLine("Zamykam aplikację...");
  48. return;
  49. default:
  50. System.Console.WriteLine("Nieznana operacja. Spróbuj ponownie");
  51. System.Console.WriteLine();
  52. break;
  53. }
  54.  
  55. }
  56. }
  57.  
  58. private static void SeedShows()
  59. {
  60. var movie1 = new Show("TopGun", new DateOnly(2025, 11, 10), new TimeOnly(18, 45));
  61. var movie2 = new Show("Rocky", new DateOnly(2025, 11, 10), new TimeOnly(16, 30));
  62.  
  63. showCatalog.AddShow(movie1);
  64. showCatalog.AddShow(movie2);
  65. }
  66.  
  67. private static void DisplayAllShows()
  68. {
  69. int counter = 0;
  70. foreach (var show in showCatalog.Shows)
  71. {
  72. counter++;
  73. System.Console.WriteLine($"{counter}. {show.Title} - {show.ShowDate.ToShortDateString()} " +
  74. $"{show.ShowHour.ToShortTimeString()}");
  75. }
  76. }
  77.  
  78. private static void AddShow()
  79. {
  80. System.Console.Write("Dodaj tytuł: ");
  81. string? title = Console.ReadLine();
  82.  
  83. System.Console.Write("Podaj datę seansu (yyyy-MM-dd): ");
  84. string? dateInput = Console.ReadLine();
  85.  
  86. System.Console.Write("Podaj godzinę seansu (hh:mm): ");
  87. string? hourInput = Console.ReadLine();
  88.  
  89. if (string.IsNullOrWhiteSpace(title))
  90. {
  91. System.Console.WriteLine("Nieprawidlowa nazwa filmu");
  92. return;
  93. }
  94.  
  95. if (!DateOnly.TryParse(dateInput, out DateOnly date))
  96. {
  97. System.Console.WriteLine("Nieprawidłowy format daty");
  98. return;
  99. }
  100.  
  101. if (!TimeOnly.TryParse(hourInput, out TimeOnly time))
  102. {
  103. System.Console.WriteLine("Nieprawidłowy format godziny");
  104. return;
  105. }
  106.  
  107. System.Console.WriteLine("Liczba siedzeń na seansie: ");
  108. if (!int.TryParse(Console.ReadLine(), out int seats))
  109. {
  110. seats = 0;
  111. }
  112.  
  113. if (seats > 0)
  114. {
  115. showCatalog.AddShow(
  116. new Show(title, date, time, seats)
  117. );
  118. }
  119. else
  120. {
  121. showCatalog.AddShow(
  122. new Show(title, date, time)
  123. );
  124. }
  125. }
  126.  
  127. private static void ReserveSeat()
  128. {
  129. DisplayAllShows();
  130.  
  131. System.Console.Write("Podaj numer filmu: ");
  132. if (!int.TryParse(Console.ReadLine(), out int index))
  133. {
  134. System.Console.WriteLine("Nieprawidlowy format numeru filmu");
  135. return;
  136. }
  137.  
  138. if (index < 0 || index > showCatalog.Shows.Count)
  139. {
  140. System.Console.WriteLine("Index poza zakresem: ");
  141. return;
  142. }
  143.  
  144. var selectedShow = showCatalog.Shows[index];
  145.  
  146. var freeSeats = selectedShow.Seats.Where(s => !s.IsReserved).ToList();
  147.  
  148. if (freeSeats.Count == 0)
  149. {
  150. System.Console.WriteLine("Nie ma już wolnych miejsc");
  151. return;
  152. }
  153. else
  154. {
  155. foreach (var seat in freeSeats)
  156. {
  157. System.Console.Write($"{seat.SeatNumber}, ");
  158. }
  159. System.Console.WriteLine();
  160. }
  161.  
  162. if (!int.TryParse(Console.ReadLine(), out int choiceSeat))
  163. {
  164. System.Console.WriteLine("Nieprawidłowy numer siedzenia");
  165. return;
  166. }
  167.  
  168. var seatToReseve = freeSeats.Where(s => s.SeatNumber == choiceSeat).FirstOrDefault();
  169.  
  170. if (seatToReseve == null)
  171. {
  172. System.Console.WriteLine("Siedzenie jest już zajęte lub nie ma takiego siedzenia");
  173. }
  174. else
  175. {
  176. seatToReseve.Reseve();
  177. System.Console.WriteLine("Zarezerwowano siedzenie");
  178. }
  179. }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment