Rodunskiy

Untitled

Aug 8th, 2023
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.12 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. class Program
  5. {
  6.     static void Main(string[] args)
  7.     {
  8.         Depo depo = new Depo();
  9.  
  10.         while (true)
  11.         {
  12.             depo.Work();
  13.         }
  14.     }
  15. }
  16.  
  17. class Depo
  18. {
  19.     private static Random random = new Random();
  20.  
  21.     private List<Train> _trains;
  22.     private int _numberTrain = 1000;
  23.  
  24.     public Depo()
  25.     {
  26.         _trains = new List<Train>();
  27.     }
  28.  
  29.     public void Work()
  30.     {
  31.         ShowInfo();
  32.  
  33.         CreateNewTrain();
  34.     }
  35.  
  36.     private int CreateNewTickets()
  37.     {
  38.         int minIndexRandom = 5;
  39.         int maxIndexRandom = 16;
  40.  
  41.         int temporarynumberTickets = random.Next(minIndexRandom, maxIndexRandom);
  42.  
  43.         return temporarynumberTickets;
  44.     }
  45.  
  46.     private Direction CreateNewDirection()
  47.     {
  48.         string pointA;
  49.         string pointB;
  50.  
  51.         Console.WriteLine("Создание нового направления.\nВведите пункт отправления и пункт отбытия.");
  52.         pointA = Console.ReadLine();
  53.         pointB = Console.ReadLine();
  54.  
  55.         while (String.IsNullOrWhiteSpace(pointA) || String.IsNullOrWhiteSpace(pointB) || pointA.ToLower() == pointB.ToLower())
  56.         {
  57.             Console.WriteLine("Ошибка. Введены не коректные данные");
  58.         }
  59.  
  60.         Console.WriteLine($"Направление {pointA}-{pointB} создано.");
  61.  
  62.         return new Direction(pointA, pointB);
  63.  
  64.     }
  65.  
  66.     private void CreateNewTrain()
  67.     {
  68.         Direction direction = CreateNewDirection();
  69.  
  70.         _trains.Add(new Train(_numberTrain, direction, CreateNewTickets()));
  71.  
  72.         _numberTrain++;
  73.     }
  74.  
  75.     private void ShowInfo()
  76.     {
  77.         foreach (var train in _trains)
  78.         {
  79.             train.ShowStatsTrain();
  80.         }
  81.     }
  82. }
  83.  
  84. class Train
  85. {
  86.     private List<Van> _vans;
  87.     private List<Van> _vansInTrain;
  88.     private Direction _direction;
  89.  
  90.     public Train(int number, Direction direction, int numberTickets)
  91.     {
  92.         Number = number;
  93.         _direction = direction;
  94.         _vans = new List<Van>() { new SmallVan(), new MediumVan(),new LargeVan() };
  95.         _vansInTrain = new List<Van>();
  96.  
  97.         QuantityVans = AddVans(numberTickets);
  98.     }
  99.  
  100.     public int Number { get; private set; }
  101.     public int QuantityVans { get; private set; }
  102.  
  103.     public int AddVans(int numberTickets)
  104.     {
  105.         Console.WriteLine($"Кол-во купленных билетов:{numberTickets}");
  106.  
  107.         string vanName;
  108.         int quantityVans = 0;
  109.  
  110.         Console.WriteLine("Какой вагон вы хотите добавить?");
  111.  
  112.         foreach (Van van in _vans)
  113.         {
  114.             van.ShowStatsVan();
  115.         }
  116.  
  117.         vanName = Console.ReadLine();
  118.  
  119.         foreach (Van van in _vans)
  120.         {
  121.             while (van.Name == vanName && numberTickets > 0)
  122.             {
  123.                 _vansInTrain.Add(van);
  124.                 numberTickets -= van.NumberSeats;
  125.                 quantityVans++;
  126.             }
  127.  
  128.             break;
  129.         }
  130.  
  131.         return quantityVans;
  132.     }
  133.  
  134.     public void ShowStatsTrain()
  135.     {
  136.         Console.WriteLine($"Направление {_direction} |Номер поезда {Number}| Кол-во вагонов {QuantityVans}");
  137.     }
  138. }
  139.  
  140. class Van
  141. {
  142.     public Van(string name, int numberSeats)
  143.     {
  144.         Name = name;
  145.         NumberSeats = numberSeats;
  146.     }
  147.  
  148.     public string Name { get; private set; }
  149.     public int NumberSeats { get; private set; }
  150.  
  151.     public void ShowStatsVan()
  152.     {
  153.         Console.WriteLine($"{Name}|Кол-во мест:{NumberSeats}");
  154.     }
  155. }
  156.  
  157. class SmallVan : Van
  158. {
  159.     public SmallVan() : base ("Small", 5) { }
  160. }
  161.  
  162. class MediumVan : Van
  163. {
  164.     public MediumVan() : base("Medium", 10) { }
  165. }
  166.  
  167. class LargeVan : Van
  168. {
  169.     public LargeVan() : base("Large", 15) { }
  170. }
  171.  
  172. class Direction
  173. {
  174.     public Direction(string pointA, string pointB)
  175.     {
  176.         PointA = pointA;
  177.         PointB = pointB;
  178.     }
  179.  
  180.     public string PointA { get; private set; }
  181.     public string PointB { get; private set; }
  182. }
Add Comment
Please, Sign In to add comment