Advertisement
Stray_Wolf

OOP_TrainStation

Aug 10th, 2022
515
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6.  
  7. namespace HW_40_OOP_TrainStation
  8. {
  9.     internal class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             bool isOpen = true;
  14.             City[] cities = { new City("Москва"), new City("Ростов"), new City("Сочи"), new City("Краснодар"), new City("Новосибирск") };
  15.  
  16.             TrainStation trainStation = new TrainStation();
  17.            
  18.  
  19.             while (isOpen)
  20.             {
  21.                 trainStation.ShowTrainsInfo();
  22.  
  23.                 Console.WriteLine("1 - Создать направление поезда\n2 - Отправить поезд\n");
  24.  
  25.                 int userInput = Convert.ToInt32(Console.ReadLine());
  26.                 switch (userInput)
  27.                 {
  28.                     case 1:
  29.                         trainStation.CreateRoute(cities);
  30.                         break;
  31.                     case 2:
  32.                         Console.Write("Введите номер поезда для отпавления :");
  33.                         int number = Convert.ToInt32(Console.ReadLine());
  34.                         trainStation.SendTrain(number);
  35.                         break;
  36.                     default:
  37.                         break;
  38.                 }
  39.             }
  40.         }
  41.  
  42.         class TrainStation
  43.         {
  44.             private List<Train> _trains = new List<Train>();
  45.  
  46.             public List<Train> Trains { get { return _trains; } set { _trains = value; } }
  47.  
  48.             public void CreateRoute(City[] cities)
  49.             {
  50.                 Console.WriteLine("Создается направление");
  51.                 Thread.Sleep(2000);
  52.  
  53.                 Random random = new Random();
  54.                 Train train = new Train();
  55.                 Passanger passangers = new Passanger(random.Next(150, 400));
  56.  
  57.                 string[] route = train.CreateRoute(cities);
  58.                 train.StartPoint = route[0];
  59.                 train.DestinationPoint = route[1];
  60.                 train.Route = route[0] + " " + route[1];
  61.                 train.TrainNumber = random.Next(1,500);
  62.  
  63.                 train.AddTrainCars(passangers, train);
  64.                 _trains.Add(train);
  65.                 Console.Clear();
  66.             }
  67.  
  68.             public void SendTrain(int trainNumber)
  69.             {
  70.                 var train = Trains.Find(x => x.TrainNumber == trainNumber);
  71.                 Console.WriteLine("Поезд " + trainNumber + " отправляется по маршруту " + train.Route + " Приятной поездки !");
  72.                 _trains.RemoveAll(x => x.TrainNumber == trainNumber);
  73.                 Thread.Sleep(2000);
  74.                 Console.Clear();
  75.             }
  76.  
  77.             public void ShowTrainsInfo()
  78.             {
  79.                 if (_trains.Count == 0)
  80.                 {
  81.                     Console.WriteLine("Нет новых направлений");
  82.                 }
  83.  
  84.                 else
  85.                 {
  86.                     foreach (var train in _trains)
  87.                     {
  88.                         Console.WriteLine("Поезд: " + train.TrainNumber);
  89.                         train.ShowTrainInfo();
  90.                         Console.WriteLine();
  91.                     }
  92.                 }
  93.             }
  94.         }
  95.  
  96.         class Train
  97.         {
  98.             Random rand = new Random();
  99.             public string StartPoint;
  100.             public string DestinationPoint;
  101.             public string Route;
  102.             public int TrainNumber;
  103.             private List<TrainCar> _trainCars = new List<TrainCar>();
  104.  
  105.             public List<TrainCar> TrainCars { get { return _trainCars; } set { _trainCars = value; } }
  106.          
  107.             public void AddTrainCars(Passanger passanger, Train train)
  108.             {
  109.                 Random rand = new Random();
  110.                 int trainCarNumber = 1;
  111.                 int totalPassangerCount = passanger.Count;
  112.                 int passengersLeft = totalPassangerCount;
  113.  
  114.                 // берем общее кол-во пассажиров и создаем новые вагоны в лист вагонов поезда
  115.                 // вместимость вагона рандомная и после создания эта вместимость отнимает общее кол-во пассажиров
  116.                 // и так создаются вагоны пока пассажиров больше 0
  117.                 while (passengersLeft >= 0)
  118.                 {
  119.                     int newTrainCapacity = rand.Next(20,40);
  120.  
  121.                     train.TrainCars.Add(new TrainCar(trainCarNumber++, newTrainCapacity));
  122.                     passengersLeft -= newTrainCapacity;
  123.                 }
  124.             }
  125.  
  126.             public string[] CreateRoute(City[] cities)
  127.             {
  128.                 string[] route = new string[2];
  129.  
  130.                 string startPoint = cities[rand.Next(0, cities.Length)].Name;
  131.                 string destinationPoint = cities[rand.Next(0, cities.Length)].Name;
  132.  
  133.                 route[0] = startPoint;
  134.                 route[1] = destinationPoint;
  135.  
  136.                 return route;
  137.             }
  138.  
  139.             public void ShowTrainInfo()
  140.             {
  141.                 Console.WriteLine("Создан поезд идущий по машруту " + Route);
  142.                 Console.WriteLine("Станиция отправления - " + StartPoint + " конечная станция " + DestinationPoint);
  143.  
  144.                 ShowTrainCarsInfo();
  145.             }
  146.  
  147.  
  148.             public void ShowTrainCarsInfo()
  149.             {
  150.                 Console.WriteLine("Состав поезда состоит из " + _trainCars.Count + " вагонов");
  151.  
  152.                 //foreach (var trainCar in _trainCars)
  153.                 //{
  154.                 //    Console.WriteLine("Номер вагона - " + trainCar.Number + " Количество мест " + trainCar.Capacity);
  155.                 //}
  156.             }
  157.  
  158.             public void SendTrain()
  159.             {
  160.                 Console.WriteLine("Поезд отправляется !");
  161.                 Thread.Sleep(1000);
  162.             }
  163.         }
  164.  
  165.         class TrainCar
  166.         {
  167.             public int Number;
  168.             public int Capacity;
  169.  
  170.             public TrainCar(int number, int capacity)
  171.             {
  172.                 Number = number;
  173.                 Capacity = capacity;
  174.             }
  175.         }
  176.  
  177.         class City
  178.         {
  179.             public string Name;
  180.  
  181.             public City(string name)
  182.             {
  183.                 Name = name;
  184.             }
  185.         }
  186.  
  187.        
  188.  
  189.         class Passanger
  190.         {
  191.             Random random = new Random();
  192.             private int _count;
  193.  
  194.             public Passanger (int count)
  195.             {
  196.                 _count = count;
  197.             }
  198.  
  199.             public int Count { get { return _count; } }
  200.         }
  201.     }
  202. }
  203.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement