OldBeliver

Yardmaster_01

May 7th, 2021 (edited)
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.80 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace TrainDispatcher_01
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Yardmaster yardmaster = new Yardmaster();
  14.             yardmaster.Work();
  15.         }
  16.     }
  17.  
  18.     class Yardmaster
  19.     {
  20.         private List<Station> _stations = new List<Station>();
  21.  
  22.         Train train;
  23.  
  24.         public void Work()
  25.         {
  26.             while (true)
  27.             {
  28.                 Console.WriteLine($"Автоматический помощник формирования поездов железной дороги Белоруссии\n");
  29.                 if (train == null)
  30.                 {
  31.                     Console.WriteLine($"Текущий рейс отсутствует");
  32.  
  33.                     Console.Write($"Для формирования направления нажмите любую клавишу ...");
  34.                     Console.ReadKey();
  35.                    
  36.                     GetStation();
  37.  
  38.                     train = new Train(CreateTrainDirection());
  39.  
  40.                     Console.WriteLine($"\n\nСформировано направление {train.Direction}\nОткрыта продажа билетов.\n");
  41.                     Console.WriteLine($"Нажмите любую для продолжения");
  42.                     Console.ReadKey();
  43.                     Console.Clear();
  44.                 }
  45.                 else
  46.                 {
  47.                     Console.WriteLine($"Информация о текущем рейсе:\n");
  48.                     Console.WriteLine($"поезд {train.Direction}");
  49.  
  50.                     int[] soldedTickets = train.SellTickets();
  51.                     Console.WriteLine($"\nНа текущий рейс продано билетов:");
  52.  
  53.                     train.ShowSoldedTickets();
  54.  
  55.                     Console.Write($"\nНажмите любую для расчета необходимого количества вагонов: ");
  56.                     Console.ReadKey();
  57.  
  58.                     train.CalculateWagons();
  59.  
  60.                     Console.WriteLine($"\n\nНеобходимое количество вагонов добавлено к поезду");
  61.                     train.ShowRightNumberOfWagons();
  62.  
  63.  
  64.                     Console.WriteLine($"\nНажмите для отправки поезда по маршруту {train.Direction}");
  65.                     Console.ReadKey();
  66.  
  67.                     train = null;
  68.                     Console.WriteLine($"поезд отправлен");
  69.                     Console.ReadKey();
  70.                     Console.Clear();
  71.                 }
  72.             }
  73.         }
  74.  
  75.         private void GetStation()
  76.         {
  77.             _stations.Add(new Station("Барановичи"));
  78.             _stations.Add(new Station("Бобруйск"));
  79.             _stations.Add(new Station("Брест"));
  80.             _stations.Add(new Station("Витебск"));
  81.             _stations.Add(new Station("Гомель"));
  82.             _stations.Add(new Station("Гродно"));
  83.             _stations.Add(new Station("Минск"));
  84.             _stations.Add(new Station("Могилев"));
  85.             _stations.Add(new Station("Мозырь"));
  86.             _stations.Add(new Station("Пинск"));
  87.             _stations.Add(new Station("Полоцк"));
  88.             _stations.Add(new Station("на Берлин"));
  89.         }
  90.  
  91.         private string CreateTrainDirection()
  92.         {
  93.             string departurePoint = "";
  94.             string arrivePoint = "";
  95.             bool isSame = true;
  96.  
  97.             Random rand = new Random();
  98.  
  99.             while (isSame)
  100.             {
  101.                 departurePoint = _stations[rand.Next(0, _stations.Count)].Name;
  102.                 arrivePoint = _stations[rand.Next(0, _stations.Count)].Name;
  103.  
  104.                 if (departurePoint != arrivePoint)
  105.                 {
  106.                     isSame = false;
  107.                 }
  108.             }
  109.  
  110.             return departurePoint + " - " + arrivePoint;
  111.         }
  112.     }
  113.  
  114.     class Train
  115.     {
  116.         public string Direction { get; private set; }
  117.         private List<Wagon> _wagons = new List<Wagon>();
  118.         private int[] _soldedTickets;
  119.         private int[] _rightNumberOfWagons;
  120.  
  121.         public Train(string direction)
  122.         {
  123.             Direction = direction;
  124.            
  125.             _wagons.Add(new Wagon("спальны", 18));
  126.             _wagons.Add(new Wagon("купейны", 36));
  127.             _wagons.Add(new Wagon("плацкартны", 54));
  128.         }
  129.  
  130.         public void ShowTrain()
  131.         {
  132.             for (int i = 0; i < _wagons.Count; i++)
  133.             {
  134.                 _wagons[i].ShowWagon();
  135.             }
  136.         }
  137.  
  138.         public int[] SellTickets()
  139.         {
  140.             Random rand = new Random();
  141.             _soldedTickets = new int[_wagons.Count];
  142.  
  143.             for (int i = 0; i < _soldedTickets.Length; i++)
  144.             {
  145.                 _soldedTickets[i] = rand.Next(0, 271);
  146.             }
  147.  
  148.             return _soldedTickets;
  149.         }
  150.  
  151.         public void ShowSoldedTickets()
  152.         {
  153.             for (int i = 0; i < _soldedTickets.Length; i++)
  154.             {
  155.                 Console.WriteLine($"{_wagons[i].WagonType}х:\t {_soldedTickets[i]}");
  156.             }
  157.         }
  158.  
  159.         public void CalculateWagons()
  160.         {
  161.             _rightNumberOfWagons = new int[_wagons.Count];
  162.  
  163.             for (int i = 0; i < _wagons.Count; i++)
  164.             {
  165.                 _rightNumberOfWagons[i] = _soldedTickets[i] / _wagons[i].Seats + 1;
  166.  
  167.                 if (_soldedTickets[i] % _wagons[i].Seats == 0)
  168.                 {
  169.                     _rightNumberOfWagons[i] = _soldedTickets[i] / _wagons[i].Seats;
  170.                 }
  171.             }
  172.         }
  173.  
  174.         public void ShowRightNumberOfWagons()
  175.         {
  176.             for (int i = 0; i < _rightNumberOfWagons.Length; i++)
  177.             {
  178.                 Console.WriteLine($"{_wagons[i].WagonType}x вагонов: {_rightNumberOfWagons[i]}");
  179.             }
  180.         }
  181.     }
  182.  
  183.     class Wagon
  184.     {
  185.         public string WagonType { get; private set; }
  186.         public int Seats { get; private set; }
  187.  
  188.         public Wagon(string wagonType, int seats)
  189.         {
  190.             WagonType = wagonType;
  191.             Seats = seats;
  192.         }
  193.  
  194.         public void ShowWagon()
  195.         {
  196.             Console.WriteLine($"{WagonType}х вагонов по {Seats} мест");
  197.         }
  198.     }
  199.  
  200.     class Station
  201.     {
  202.         public string Name { get; private set; }
  203.  
  204.         public Station(string name)
  205.         {
  206.             Name = name;
  207.         }
  208.  
  209.         public void ShowStation()
  210.         {
  211.             Console.WriteLine($"{Name}");
  212.         }
  213.     }
  214. }
Add Comment
Please, Sign In to add comment