Advertisement
TeT91

ДЗ: Конфигуратор пассажирских поездов

Jun 2nd, 2024 (edited)
940
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.90 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace CSLight
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Dispatcher dispatcher = new Dispatcher();
  11.  
  12.             dispatcher.Work();
  13.         }
  14.     }
  15.  
  16.     class Dispatcher
  17.     {
  18.         private List<Train> _trains = new List<Train>();
  19.         private List<Direction> _directions = new List<Direction>();
  20.  
  21.         public void Work()
  22.         {
  23.             const string CommandCreateTrain = "1";
  24.             const string CommandExit = "exit";
  25.  
  26.             bool isRunning = true;
  27.  
  28.             while (isRunning)
  29.             {
  30.                 ShowTrainsInfo();
  31.  
  32.                 Console.WriteLine("Введите команду:");
  33.  
  34.                 string userInput = Console.ReadLine();
  35.  
  36.                 switch (userInput)
  37.                 {
  38.                     case CommandCreateTrain:
  39.                         FormTrain();
  40.                         break;
  41.  
  42.                     case CommandExit:
  43.                         isRunning = false;
  44.                         break;
  45.                 }
  46.  
  47.                 Console.ReadKey();
  48.                 Console.Clear();
  49.             }
  50.         }
  51.  
  52.         private void AddTrain()
  53.         {
  54.             Console.WriteLine("Введите стартовую точку");
  55.             string startPoint = Console.ReadLine();
  56.  
  57.             Console.WriteLine("Введите конечную точку");
  58.             string endPoint = Console.ReadLine();
  59.  
  60.             _trains.Add(new Train(CreateDirection(startPoint, endPoint)));
  61.         }
  62.  
  63.         private Direction CreateDirection(string startPoint, string endPoint)
  64.         {
  65.             Direction direction = new Direction(startPoint, endPoint, SellTickets());
  66.  
  67.             _directions.Add(direction);
  68.  
  69.             return direction;
  70.         }
  71.  
  72.         private void ShowTrainsInfo()
  73.         {
  74.             if (_trains.Count > 0)
  75.             {
  76.                 foreach (Train train in _trains)
  77.                 {
  78.                     Console.WriteLine($"ПОЕЗД, Кол-во вагонов {train.CarriagesCount}, Кол-во пассажиров {train.Passengers}");
  79.                 }
  80.             }
  81.             else
  82.             {
  83.                 Console.WriteLine("Еще нет сформированных поездов");
  84.             }
  85.         }
  86.  
  87.         private int SellTickets()
  88.         {
  89.             Random random = new Random();
  90.             int minValue = 40;
  91.             int maxValue = 300;
  92.  
  93.             int passengers = random.Next(minValue, maxValue);
  94.  
  95.             return passengers;
  96.         }
  97.  
  98.         private void AddRequiredCarriages(Train train)
  99.         {
  100.             int passengers = train.Path.Passengers;
  101.             Carriage carriage;
  102.  
  103.             while (passengers > 0)
  104.             {
  105.                 carriage = new Carriage();
  106.                 int tempPassengers;
  107.  
  108.                 if (passengers >= carriage.Capacity)
  109.                 {
  110.                     tempPassengers = carriage.Capacity;
  111.                 }
  112.                 else
  113.                 {
  114.                     tempPassengers = passengers;
  115.                 }
  116.  
  117.                 passengers -= tempPassengers;
  118.  
  119.                 train.AddCarriage(carriage);
  120.                 AddPassengersToCarriage(carriage, tempPassengers);
  121.             }
  122.         }
  123.  
  124.         private void AddPassengersToCarriage(Carriage cariage, int value)
  125.         {
  126.             cariage.AddPassenger(value);
  127.         }
  128.  
  129.         private void FormTrain()
  130.         {
  131.             AddTrain();
  132.             AddRequiredCarriages(_trains[_trains.Count - 1]);
  133.         }
  134.     }
  135.  
  136.     class Train
  137.     {
  138.         private List<Carriage> _carriages;
  139.  
  140.         public Train(Direction direction)
  141.         {
  142.             _carriages = new List<Carriage>();
  143.             Path = direction;
  144.         }
  145.  
  146.         public Direction Path { get; private set; }
  147.  
  148.         public int CarriagesCount { get { return _carriages.Count; } }
  149.  
  150.         public int Passengers { get; set; }
  151.  
  152.         public void AddCarriage(Carriage carriage)
  153.         {
  154.             _carriages.Add(carriage);
  155.             Passengers = Path.Passengers;
  156.         }
  157.     }
  158.  
  159.     class Carriage
  160.     {
  161.         public int Capacity { get; private set; } = 50;
  162.         public int Passengers { get; private set; } = 0;
  163.  
  164.         public void AddPassenger(int value)
  165.         {
  166.             if (Passengers + value <= Capacity)
  167.             {
  168.                 Passengers += value;
  169.             }
  170.         }
  171.     }
  172.  
  173.     struct Direction
  174.     {
  175.         public Direction(string startPoint, string endPoint, int passengers)
  176.         {
  177.             StartPoint = startPoint;
  178.             EndPoint = endPoint;
  179.             Passengers = passengers;
  180.         }
  181.  
  182.         public string StartPoint { get; private set; }
  183.         public string EndPoint { get; private set; }
  184.         public int Passengers { get; private set; }
  185.     }
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement