Advertisement
OldBeliver

Yardmaster_03_ver02

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