Advertisement
vovanhik_24

#44

Oct 28th, 2023 (edited)
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.24 KB | None | 0 0
  1.     internal class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             const string CommandCreateRoute = "1";
  6.             const string CommandSendTrain = "2";
  7.             const string CommandExit = "3";
  8.  
  9.             RailwayStation railwayStation = new RailwayStation();
  10.             TrainFormation trainFormation = new TrainFormation();
  11.  
  12.             List<string> allTrainRoutes = new List<string>();
  13.             bool isWorking = true;
  14.  
  15.             while (isWorking)
  16.             {
  17.                 Console.Clear();
  18.                 Console.WriteLine("== Список всех рейсов ==");
  19.                 railwayStation.GetInformationAboutAllRoutes(allTrainRoutes);
  20.                 Console.WriteLine();
  21.                 Console.WriteLine("===== Текущий рейс =====");
  22.                 Console.WriteLine(trainFormation.GetCurrentRouteInfo());
  23.                 Console.WriteLine("========================");
  24.                 Console.WriteLine();
  25.  
  26.                 Console.WriteLine($"{CommandCreateRoute}. Создать направление" +
  27.                     $"\n{CommandSendTrain}. Отправить поезд" +
  28.                     $"\n{CommandExit}. Выход");
  29.  
  30.                 Console.Write("Выберите действие: "); ;
  31.                 string userInput = Console.ReadLine();
  32.  
  33.                 switch (userInput)
  34.                 {
  35.                     case CommandCreateRoute:
  36.                         trainFormation.TrainRouteFormation();
  37.                         break;
  38.  
  39.                     case CommandSendTrain:
  40.                         trainFormation.SendTrain(allTrainRoutes);
  41.                         break;
  42.  
  43.                     case CommandExit:
  44.                         isWorking = false;
  45.                         break;
  46.  
  47.                     default:
  48.                         Console.WriteLine("Некорректный ввод");
  49.                         break;
  50.                 }
  51.             }
  52.         }
  53.     }
  54.  
  55.     class TrainFormation
  56.     {
  57.         private string _currentRoute;
  58.         private int _ticketsSold;
  59.         private int _trainCapacity;
  60.         private double _maxCountOfCars = 15;
  61.         private double _countOfSeatsInCarriage = 54;
  62.         private bool _istrainCreated;
  63.         private bool _isTicketsSold;
  64.  
  65.         public void TrainRouteFormation()
  66.         {
  67.             CreateCurrentRoute();
  68.             SellTickets();
  69.             CreateTrain();
  70.         }
  71.  
  72.         public string GetCurrentRouteInfo()
  73.         {
  74.             return $"Текущее направление: {_currentRoute}\nПродано билетов: {_ticketsSold}\nВместимость поезда: {_trainCapacity}\nПоезд создан: {_istrainCreated}";
  75.         }
  76.  
  77.         public void SendTrain(List<string> allCurrentTrainRoutes)
  78.         {
  79.             if (_currentRoute == null)
  80.             {
  81.                 return;
  82.             }
  83.  
  84.             allCurrentTrainRoutes.Add($"Маршрут следует до станции {_currentRoute} | Количество посажиров {_trainCapacity} | Количество вагонов {_maxCountOfCars}");
  85.  
  86.             ResetCurrentRoute();
  87.             Console.WriteLine("\nПоезд отправлен\nНажмите любую клавишу чтобы продолжить!");
  88.             Console.ReadKey();
  89.         }
  90.  
  91.         private void CreateCurrentRoute()
  92.         {
  93.             ResetCurrentRoute();
  94.  
  95.             Console.Write("Введите направление: ");
  96.             _currentRoute = Console.ReadLine();
  97.             Console.WriteLine("Новое направление создано\n");
  98.         }
  99.  
  100.         private void SellTickets()
  101.         {
  102.             Console.Write("Введите количество проданных билетов: ");
  103.  
  104.             if (int.TryParse(Console.ReadLine(), out int ticketsSold))
  105.             {
  106.                 _ticketsSold += ticketsSold;
  107.                 _isTicketsSold = true;
  108.             }
  109.             else
  110.             {
  111.                 Console.WriteLine("Некорректное количество билетов\n");
  112.                 _isTicketsSold = false;
  113.                 return;
  114.             }
  115.  
  116.             Console.WriteLine($"{ticketsSold} билетов продано\n");
  117.         }
  118.  
  119.         private void CreateTrain()
  120.         {
  121.             _trainCapacity = _ticketsSold;
  122.  
  123.             if (!_isTicketsSold)
  124.             {
  125.                 return;
  126.             }
  127.             else if (_countOfSeatsInCarriage * _maxCountOfCars < _trainCapacity)
  128.             {
  129.                 _maxCountOfCars = Math.Ceiling(_trainCapacity / _countOfSeatsInCarriage);
  130.             }
  131.  
  132.             _istrainCreated = true;
  133.         }
  134.  
  135.         private void ResetCurrentRoute()
  136.         {
  137.             _currentRoute = null;
  138.             _ticketsSold = 0;
  139.             _trainCapacity = 0;
  140.             _istrainCreated = false;
  141.             _maxCountOfCars = 15;
  142.         }
  143.     }
  144.  
  145.     class RailwayStation : TrainFormation
  146.     {
  147.         public void GetInformationAboutAllRoutes(List<string> allTrainRoutes)
  148.         {
  149.             for (int i = 0; i < allTrainRoutes.Count; i++)
  150.             {
  151.                 Console.Write(allTrainRoutes[i] + "\n");
  152.             }
  153.         }
  154.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement