Advertisement
NikaBang

ПОЕЗД

Aug 6th, 2022 (edited)
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.04 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. internal class Program
  5. {
  6.     //У вас есть программа, которая помогает пользователю составить план поезда.
  7.     //Есть 4 основных шага в создании плана:
  8.     //-Создать направление - создает направление для поезда(к примеру Бийск - Барнаул)
  9.     //-Продать билеты - вы получаете рандомное кол-во пассажиров, которые купили билеты на это направление
  10.     //-Сформировать поезд - вы создаете поезд и добавляете ему столько вагонов(вагоны могут быть разные по вместительности),
  11.     //сколько хватит для перевозки всех пассажиров.
  12.     //-Отправить поезд - вы отправляете поезд, после чего можете снова создать направление.
  13.     //В верхней части программы должна выводиться полная информация о текущем рейсе или его отсутствии
  14.     static void Main(string[] args)
  15.     {
  16.         Station station = new Station();
  17.         string userInput;
  18.         bool inProgram = true;
  19.  
  20.         while (inProgram)
  21.         {
  22.             station.ShowInfo();
  23.  
  24.             Console.Write("\n\n1 - Создать направление.\n2 - Продать билеты.\n" +
  25.                 "3 - Сформировать поезд.\n4 - Отправить поезд.\n5 - Выход.\nВыбери необходимый пункт: ");
  26.  
  27.             userInput = Console.ReadLine();
  28.             Console.WriteLine();
  29.  
  30.             switch (userInput)
  31.             {
  32.                 case "1":
  33.                     station.CreateDirection();
  34.                     break;
  35.                 case "2":
  36.                     station.SellTickets();
  37.                     break;
  38.                 case "3":
  39.                     station.FormTrain();
  40.                     break;
  41.                 case "4":
  42.                     station.SendTrain();
  43.                     break;
  44.                 case "5":
  45.                     inProgram = false;
  46.                     break;
  47.                 default:
  48.                     Console.WriteLine("Не верный ввод.");
  49.                     break;
  50.             }
  51.  
  52.             Console.Clear();
  53.         }
  54.     }
  55.  
  56.     class Station
  57.     {
  58.         private Train _train;
  59.         private int _countPassengers;
  60.         private bool _isFree;
  61.         public string DepartureStation { get; private set; }
  62.         public string ArrivalStation { get; private set; }
  63.  
  64.         public Station()
  65.         {
  66.             _train = null;
  67.             _isFree = true;
  68.             _countPassengers = 0;
  69.         }
  70.  
  71.         public void CreateDirection()
  72.         {
  73.             if (_isFree == false)
  74.             {
  75.                 Console.WriteLine("Терминал ЗАНЯТ! отправьте поезд.");
  76.             }
  77.             else
  78.             {
  79.                 Console.Write("Введите станцию отправления: ");
  80.                 DepartureStation = Console.ReadLine();
  81.                 Console.Write("Введите станцию прибытия: ");
  82.                 ArrivalStation = Console.ReadLine();
  83.  
  84.                 _isFree = false;
  85.             }
  86.  
  87.             Console.ReadKey();
  88.         }
  89.  
  90.         public void SellTickets()
  91.         {
  92.             if (_isFree == true)
  93.             {
  94.                 Console.WriteLine("Что бы продать билеты, нужно создать направление.");
  95.             }
  96.             else if (_countPassengers > 0)
  97.             {
  98.                 Console.WriteLine("Билеты проданы, сформируйте поезд");
  99.             }
  100.             else
  101.             {
  102.                 int minPlace = 0;
  103.                 int maxPlace = 300;
  104.                 Random random = new Random();
  105.  
  106.                 _countPassengers = random.Next(minPlace, maxPlace);
  107.             }
  108.  
  109.             Console.ReadKey();
  110.         }
  111.  
  112.         public void FormTrain()
  113.         {
  114.             if (_countPassengers == 0)
  115.             {
  116.                 Console.WriteLine("Сперва продайте хоть 1 билет.");
  117.             }
  118.             else if (_train != null)
  119.             {
  120.                 Console.WriteLine("Поезд уже сформирован.");
  121.             }
  122.             else
  123.             {
  124.                 int maxPlace = 0;
  125.                 int countWagon;
  126.  
  127.                 while (maxPlace == 0)
  128.                 {
  129.                     Console.Write("Укажите количество мест в одном вагоне: ");
  130.                     maxPlace = ReadInt(Console.ReadLine());
  131.  
  132.                     if (maxPlace == 0)
  133.                     {
  134.                         Console.WriteLine("Вагоны с {0} мест, экономически не выгодны!", maxPlace);
  135.                     }
  136.                 }
  137.  
  138.                 countWagon = _countPassengers / maxPlace;
  139.  
  140.                 if (_countPassengers % maxPlace != 0)
  141.                 {
  142.                     countWagon++;
  143.                 }
  144.  
  145.                 _train = new Train(countWagon, maxPlace);
  146.             }
  147.  
  148.             Console.ReadKey();
  149.         }
  150.  
  151.         public void SendTrain()
  152.         {
  153.             if (_train == null)
  154.             {
  155.                 Console.WriteLine("Нет поезда для отправления.");
  156.             }
  157.             else
  158.             {
  159.                 Console.WriteLine("\n\nПоезд отправился в путь, теперь терминал свободен!\nМожно создать новое направление или уйти.");
  160.  
  161.                 _countPassengers = 0;
  162.                 _isFree = true;
  163.                 _train = null;
  164.             }
  165.  
  166.             Console.ReadKey();
  167.         }
  168.  
  169.         public void ShowInfo()
  170.         {
  171.             Console.WriteLine("ИНФОРМАЦИОННОЕ ТАБЛО\n");
  172.  
  173.             if (_isFree == true)
  174.             {
  175.                 Console.WriteLine("В данный момент рейсов нет.");
  176.             }
  177.             else
  178.             {
  179.                 Console.WriteLine("Создан рейс {0} - {1}", DepartureStation, ArrivalStation);
  180.  
  181.                 if (_countPassengers > 0)
  182.                 {
  183.                     Console.WriteLine("Куплено {0} билетов.", _countPassengers);
  184.                 }
  185.  
  186.                 if (_train != null)
  187.                 {
  188.                     Console.Write("Поезд из ");
  189.                     _train.ShowInfo();
  190.                     Console.WriteLine(" вагонов готов к отправлению!");
  191.                 }
  192.             }
  193.         }
  194.  
  195.         private int ReadInt(string convert)
  196.         {
  197.             bool success = int.TryParse(convert, out int number);
  198.  
  199.             while (success == false)
  200.             {
  201.                 Console.Write("Ошибка конвертации, повторите ввод: ");
  202.                 success = int.TryParse(Console.ReadLine(), out number);
  203.             }
  204.             return number;
  205.         }
  206.     }
  207.  
  208.     class Wagon
  209.     {
  210.         public int MaxPlace { get; private set; }
  211.  
  212.         public Wagon(int maxPlace)
  213.         {
  214.             MaxPlace = maxPlace;
  215.         }
  216.     }
  217.  
  218.     class Train
  219.     {
  220.         private List<Wagon> _structure = new List<Wagon>();
  221.  
  222.         public Train(int countWagon, int maxPlace)
  223.         {
  224.             Fill(countWagon, maxPlace);
  225.         }
  226.  
  227.         public void ShowInfo()
  228.         {
  229.             Console.Write(_structure.Count);
  230.         }
  231.  
  232.         private void Fill(int countWagon, int maxPlace)
  233.         {
  234.             while (countWagon > 0)
  235.             {
  236.                 _structure.Add(new Wagon(maxPlace));
  237.                 countWagon--;
  238.             }
  239.         }
  240.     }
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement