Advertisement
OldBeliver

Yardmaster_02

May 14th, 2021
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.79 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_02
  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.         private Train train;
  22.         private int[] _soldedTickets;
  23.         List<Wagon> wagonTypes;
  24.  
  25.         public Yardmaster()
  26.         {
  27.             GetStations();
  28.         }
  29.  
  30.         public void Work()
  31.         {
  32.             bool isOpen = true;
  33.             string header = "Центр формирования поездов Белорусской железной дороги\n";
  34.             string trainDirection;
  35.            
  36.             while (isOpen)
  37.             {
  38.                 Console.WriteLine($"{header}");
  39.                 Console.WriteLine($"Текущий рейс не сформирован");
  40.                
  41.                 Console.Write($"\nНажмите любую для автоматического формирования направления или exit для выхода: ");
  42.                 string userInput = Console.ReadLine();
  43.                 if(userInput == "exit")
  44.                 {
  45.                     isOpen = false;
  46.                     break;
  47.                 }
  48.                 Console.Clear();
  49.                 trainDirection = CreateTrainDirection();
  50.                 Console.WriteLine($"{header}");
  51.                 Console.WriteLine($"Сформировано направление: {trainDirection}");
  52.                 train = new Train(trainDirection);
  53.  
  54.                 Console.WriteLine($"\nВ данном направлении продано: ");
  55.                 SellTickets();
  56.                 ShowSoldedTickets();
  57.  
  58.                 Console.Write($"\nНажмите любую для расчета необходимого количества вагонов: ");
  59.                 Console.ReadKey();
  60.                 train.CalculateWagons(_soldedTickets);
  61.  
  62.                 Console.WriteLine($"\n\nНеобходимое количество вагонов добавлено к поезду");
  63.                 train.ShowRightNumberOfWagons();
  64.  
  65.                 Console.WriteLine($"\nНажмите для отправки поезда по маршруту {trainDirection}");
  66.                 Console.ReadKey();
  67.  
  68.                 train = null;
  69.                 Console.WriteLine($"поезд отправлен");
  70.  
  71.                 Console.ReadKey();
  72.                 Console.Clear();
  73.             }
  74.         }
  75.  
  76.         private void GetStations()
  77.         {
  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.             _stations.Add(new Station("на Берлин"));
  90.         }
  91.  
  92.         private string CreateTrainDirection()
  93.         {
  94.             string departurePoint = "";
  95.             string arrivePoint = "";
  96.             bool isSame = true;
  97.  
  98.             Random rand = new Random();
  99.  
  100.             while (isSame)
  101.             {
  102.                 departurePoint = _stations[rand.Next(0, _stations.Count)].Name;
  103.                 arrivePoint = _stations[rand.Next(0, _stations.Count)].Name;
  104.  
  105.                 if (departurePoint != arrivePoint)
  106.                 {
  107.                     isSame = false;
  108.                 }
  109.             }
  110.  
  111.             return departurePoint + " - " + arrivePoint;
  112.         }
  113.  
  114.         private void SellTickets()
  115.         {
  116.             wagonTypes = train.GetWagonTypes();
  117.             Random rand = new Random();
  118.             _soldedTickets = new int[wagonTypes.Count];
  119.             int maxTickets = 271;
  120.  
  121.             for (int i = 0; i < _soldedTickets.Length; i++)
  122.             {
  123.                 _soldedTickets[i] = rand.Next(0, maxTickets);
  124.             }
  125.         }
  126.  
  127.         private void ShowSoldedTickets()
  128.         {
  129.             for (int i = 0; i < _soldedTickets.Length; i++)
  130.             {
  131.                 Console.WriteLine($"{wagonTypes[i].WagonType}х билетов:\t{_soldedTickets[i]}");
  132.             }
  133.         }
  134.     }
  135.  
  136.     class Train
  137.     {
  138.         private string _direction;
  139.         private List<Wagon> _wagonsTypes = new List<Wagon>();
  140.         private int[] _numberOfWagons;
  141.         public Train(string direction)
  142.         {
  143.             _direction = direction;
  144.  
  145.             _wagonsTypes.Add(new Wagon("спальны", 18));
  146.             _wagonsTypes.Add(new Wagon("купейны", 36));
  147.             _wagonsTypes.Add(new Wagon("плацкартны", 54));
  148.         }
  149.  
  150.         public List<Wagon> GetWagonTypes()
  151.         {
  152.             return _wagonsTypes;
  153.         }
  154.  
  155.         public void CalculateWagons(int[] soldedTickets)
  156.         {
  157.             _numberOfWagons = new int[_wagonsTypes.Count];
  158.  
  159.             for (int i = 0; i < _wagonsTypes.Count; i++)
  160.             {
  161.                 _numberOfWagons[i] = soldedTickets[i] / _wagonsTypes[i].Seats + 1;
  162.  
  163.                 if(soldedTickets[i] % _wagonsTypes[i].Seats == 0)
  164.                 {
  165.                     _numberOfWagons[i]--;
  166.                 }
  167.             }
  168.         }
  169.  
  170.         public void ShowRightNumberOfWagons()
  171.         {
  172.             for (int i = 0; i < _numberOfWagons.Length; i++)
  173.             {
  174.                 Console.WriteLine($"{_wagonsTypes[i].WagonType}х вагонов: {_numberOfWagons[i]}");
  175.             }
  176.         }
  177.     }
  178.  
  179.     class Wagon
  180.     {   public string WagonType { get; private set; }
  181.         public int Seats { get; private set; }
  182.         private int _soldedTickets;
  183.  
  184.         public Wagon(string wagonType, int seats)
  185.         {
  186.             WagonType = wagonType;
  187.             Seats = seats;
  188.         }
  189.  
  190.         public Wagon(string wagonType, int seats, int soldedTickets)
  191.         {
  192.             WagonType = wagonType;
  193.             Seats = seats;
  194.             _soldedTickets = soldedTickets;
  195.         }
  196.     }
  197.  
  198.     class Station
  199.     {
  200.         public string Name { get; private set; }
  201.  
  202.         public Station(string name)
  203.         {
  204.             Name = name;
  205.         }
  206.  
  207.         public void ShowStation()
  208.         {
  209.             Console.WriteLine($"на кой мне хрен Ваш город золотой?");
  210.         }
  211.     }
  212. }
  213.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement