SaNik74

Passenger Train Configurator

Aug 3rd, 2024
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.27 KB | None | 0 0
  1. using System.Text.RegularExpressions;
  2.  
  3. namespace PassengerTrainConfigurator
  4. {
  5.     internal class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             Dispatcher dispatcher = new Dispatcher();
  10.             Train train = new Train();
  11.             Direction direction = new Direction();
  12.  
  13.             const string CreateTrainCommand = "1";
  14.             const string ExitCommand = "2";
  15.  
  16.             bool isWorking = true;
  17.             string userInput;
  18.  
  19.             while (isWorking)
  20.             {
  21.                 Console.ForegroundColor = ConsoleColor.Cyan;
  22.                 Console.WriteLine("Конфигуратор пасажирских поездов.\n");
  23.                
  24.                 Console.ResetColor();
  25.                 Console.WriteLine($"Чтобы создать новый поезд нажмите - {CreateTrainCommand}.\n" +
  26.                     $"Для выхода из программы нажмите {ExitCommand}.\n\n" +
  27.                     $"Ввод:");
  28.  
  29.                 userInput = Console.ReadLine();
  30.  
  31.                 switch(userInput)
  32.                 {
  33.                     case "1":
  34.                         dispatcher.CreateTrain(train, direction);
  35.                         break;
  36.  
  37.                         case "2":
  38.                         isWorking = false;
  39.                         break;
  40.  
  41.                     default:
  42.                         Console.WriteLine("Неизвестная комманда.");
  43.                         break;
  44.                 }
  45.  
  46.                 Console.ForegroundColor= ConsoleColor.DarkCyan;
  47.                 Console.WriteLine("\n\nДанные по каждому поезду:");
  48.                 Console.ResetColor();
  49.  
  50.                 dispatcher.ShowTrainInfo();
  51.  
  52.                 Console.ReadKey();
  53.                 Console.Clear();
  54.             }
  55.         }
  56.     }
  57.  
  58.     class Train
  59.     {
  60.         public Dictionary<int, int> CreateTrain(int numbersOfPlace)
  61.         {
  62.             Van van = new Van();
  63.             Dictionary<int, int> train = new Dictionary<int, int>();
  64.  
  65.             int vansCount = RoundUpDividing(numbersOfPlace, van.CountSeats);
  66.  
  67.             train.Add(vansCount, numbersOfPlace);
  68.  
  69.             return train;
  70.         }
  71.  
  72.         private int RoundUpDividing(int numerator, int denominator)
  73.         {
  74.             decimal numeratorInDec = Convert.ToDecimal(numerator);
  75.             decimal denominatorInDec = Convert.ToDecimal(denominator);
  76.             decimal resultInDec = Math.Ceiling(numeratorInDec / denominatorInDec);
  77.  
  78.             int result = Convert.ToInt32(resultInDec);
  79.  
  80.             return result;
  81.         }
  82.     }
  83.  
  84.     class Direction
  85.     {
  86.         private List<string> _cities = new List<string>();
  87.  
  88.         public Direction()
  89.         {
  90.             _cities.Add("Москва");
  91.             _cities.Add("Санкт-Петербург");
  92.             _cities.Add("Тверь");
  93.             _cities.Add("Краснодар");
  94.             _cities.Add("Саратов");
  95.             _cities.Add("Нижний Новгород");
  96.             _cities.Add("Тверь");
  97.             _cities.Add("Ростов-на-Дону");
  98.             _cities.Add("Анапа");
  99.             _cities.Add("Сочи");
  100.             _cities.Add("Петрозаводск");
  101.         }
  102.  
  103.         public Dictionary<string, string> MakeDirection()
  104.         {
  105.             Random random = new Random();
  106.             Dictionary<string,string> direction = new Dictionary<string, string>();
  107.  
  108.             string departyreCity = _cities[random.Next(0, _cities.Count)];
  109.             string arrivalCity = _cities[random.Next(0, _cities.Count)];
  110.  
  111.             while (departyreCity == arrivalCity)
  112.             {
  113.                 arrivalCity = _cities[random.Next(0, _cities.Count)];
  114.             }
  115.  
  116.             direction.Add(departyreCity, arrivalCity);
  117.  
  118.             return direction;
  119.         }
  120.     }
  121.  
  122.     class Van
  123.     {
  124.         public int CountSeats { get; private set; } = 36;
  125.     }
  126.  
  127.     class Dispatcher
  128.     {
  129.         private Dictionary<Dictionary<string, string>, Dictionary<int, int>> _trainReadyDepart = new Dictionary<Dictionary<string, string>, Dictionary<int, int>>();
  130.  
  131.         public void CreateTrain(Train train, Direction direction)
  132.         {
  133.             _trainReadyDepart.Add(direction.MakeDirection(), train.CreateTrain(SellTickets()));
  134.         }
  135.  
  136.         public void ShowTrainInfo()
  137.         {
  138.             foreach (var item in _trainReadyDepart)
  139.             {
  140.                 for (int i = 0; i < item.Key.Count; i++)
  141.                 {
  142.                     Console.WriteLine($"Поезд отправляется из города {item.Key.Keys.ElementAt(i)} в город {item.Key.Values.ElementAt(i)}.\n" +
  143.                         $"Билетов продано - {item.Value.Values.ElementAt(i)}.\n" +
  144.                         $"Поезд состоит из {item.Value.Keys.ElementAt(i)} вагонов.\n\n");
  145.                 }
  146.             }
  147.  
  148.         }
  149.  
  150.         private int SellTickets()
  151.         {
  152.             Random random = new Random();
  153.  
  154.             int minNumbersOfTickets = 1;
  155.             int maxNumbersOfTickets = 1800;
  156.  
  157.             int numbersOfTickets = random.Next(minNumbersOfTickets, maxNumbersOfTickets);
  158.  
  159.             return numbersOfTickets;
  160.         }
  161.     }
  162. }
  163.  
Advertisement
Add Comment
Please, Sign In to add comment