Advertisement
SPavelA

OOPTask7TrainDispatcher

Oct 25th, 2024 (edited)
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.96 KB | Gaming | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace OOPTask7TrainDispatcher
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             TrainDispatcher trainDispatcher = new TrainDispatcher();
  11.  
  12.             trainDispatcher.Work();
  13.         }
  14.     }
  15.  
  16.     public class TrainDispatcher
  17.     {
  18.         private List<Train> _trains = new List<Train>();
  19.  
  20.         public void Work()
  21.         {
  22.             const string CommandAdd = "add";
  23.             const string CommandExit = "exit";
  24.  
  25.             bool isWorking = true;
  26.             string userInput = "";
  27.  
  28.             while (isWorking)
  29.             {
  30.                 ShowAllTrains();
  31.                 Console.WriteLine($"\n{CommandAdd} - зарегистрировать новый поезд");
  32.                 Console.WriteLine($"{CommandExit} - выход");
  33.                 Console.Write("Введите команду: ");
  34.  
  35.                 userInput = Console.ReadLine();
  36.  
  37.                 switch (userInput)
  38.                 {
  39.                     case CommandAdd:
  40.                         AddTrain();
  41.                         break;
  42.  
  43.                     case CommandExit:
  44.                         isWorking = false;
  45.                         break;
  46.  
  47.                     default:
  48.                         Console.WriteLine("Неизвестная команда");
  49.                         break;
  50.                 }
  51.  
  52.                 Console.WriteLine("\nДля продолжения нажмите любую кнопку");
  53.                 Console.ReadKey();
  54.                 Console.Clear();
  55.             }
  56.         }
  57.  
  58.         private void AddTrain()
  59.         {
  60.             Console.WriteLine("Введите пункт отбытия: ");
  61.             string startPoint = Console.ReadLine();
  62.             Console.WriteLine("Введите пункт назначения: ");
  63.             string endPoint = Console.ReadLine();
  64.             _trains.Add(new Train(startPoint, endPoint));
  65.             Console.WriteLine("Поезд успешно зарегистрирован");
  66.         }
  67.  
  68.         private void ShowAllTrains()
  69.         {
  70.             if (_trains.Count > 0)
  71.             {
  72.                 Console.WriteLine($"Зарегистрировано {_trains.Count} поездов:");
  73.                 int number = 1;
  74.  
  75.                 foreach (Train train in _trains)
  76.                 {
  77.                     Console.Write($"{number++} - ");
  78.                     train.ShowInfo();
  79.                 }
  80.             }
  81.             else
  82.             {
  83.                 Console.WriteLine("Пока что нет зарегистрированных поездов");
  84.             }
  85.         }
  86.     }
  87.  
  88.     public class Train
  89.     {
  90.         private List<Wagon> _wagons = new List<Wagon>();
  91.         private string _startPoint;
  92.         private string _endPoint;
  93.         private int _countPasangers;
  94.  
  95.         public Train(string startPoint, string endPoint)
  96.         {
  97.             _startPoint = startPoint;
  98.             _endPoint = endPoint;
  99.             Fill();
  100.         }
  101.  
  102.         private void Fill()
  103.         {
  104.             const int MinimumWagonPlaces = 10;
  105.             const int MaximumWagonPlaces = 60;
  106.             const int MinimumTrainPassangers = 100;
  107.             const int MaximumTrainPassangers = 1000;
  108.  
  109.             Random random = new Random();
  110.  
  111.             _countPasangers = random.Next(MinimumTrainPassangers, MaximumTrainPassangers);
  112.             Console.WriteLine($"На поезд купили билеты {_countPasangers} пассажиров");
  113.             Console.WriteLine("Их разместили по вагонам:");
  114.  
  115.             int countPassangers = _countPasangers;
  116.             int wagonNumber = 1;
  117.  
  118.             while (countPassangers > 0)
  119.             {
  120.                 int wagonPlaces = random.Next(MinimumWagonPlaces, MaximumWagonPlaces);
  121.  
  122.                 Console.Write($"{wagonNumber++} - ");
  123.                
  124.                 if (countPassangers >= wagonPlaces)
  125.                 {
  126.                     _wagons.Add(new Wagon(wagonPlaces, wagonPlaces));
  127.                 }
  128.                 else
  129.                 {
  130.                     _wagons.Add(new Wagon(wagonPlaces, countPassangers));
  131.                 }
  132.  
  133.                 countPassangers -= wagonPlaces;
  134.             }
  135.         }
  136.  
  137.         public void ShowInfo()
  138.         {
  139.             Console.WriteLine($"Поезд следует \"{_startPoint}\" - \"{_endPoint}\", в нем едут {_countPasangers} пассажиров в {_wagons.Count} вагонах");
  140.         }
  141.     }
  142.  
  143.     public class Wagon
  144.     {
  145.         private int _places;
  146.         private int _passangers;
  147.        
  148.         public Wagon(int places, int passangers)
  149.         {
  150.             _places = places;
  151.             _passangers = passangers;
  152.             ShowInfo();
  153.         }
  154.  
  155.         private void ShowInfo()
  156.         {
  157.             Console.WriteLine($"В вагоне из {_places} мест занято {_passangers}");
  158.         }
  159.     }
  160. }
  161.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement