Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace CSLight
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Dispatcher dispatcher = new Dispatcher();
- dispatcher.Work();
- }
- }
- class Dispatcher
- {
- private List<Train> _trains = new List<Train>();
- private List<Direction> _directions = new List<Direction>();
- public void Work()
- {
- const string CommandCreateTrain = "1";
- const string CommandExit = "exit";
- bool isRunning = true;
- while (isRunning)
- {
- ShowTrainsInfo();
- Console.WriteLine("Введите команду:");
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case CommandCreateTrain:
- FormTrain();
- break;
- case CommandExit:
- isRunning = false;
- break;
- }
- Console.ReadKey();
- Console.Clear();
- }
- }
- private void AddTrain()
- {
- Console.WriteLine("Введите стартовую точку");
- string startPoint = Console.ReadLine();
- Console.WriteLine("Введите конечную точку");
- string endPoint = Console.ReadLine();
- _trains.Add(new Train(CreateDirection(startPoint, endPoint)));
- }
- private Direction CreateDirection(string startPoint, string endPoint)
- {
- Direction direction = new Direction(startPoint, endPoint, SellTickets());
- _directions.Add(direction);
- return direction;
- }
- private void ShowTrainsInfo()
- {
- if (_trains.Count > 0)
- {
- foreach (Train train in _trains)
- {
- Console.WriteLine($"ПОЕЗД, Кол-во вагонов {train.CarriagesCount}, Кол-во пассажиров {train.Passengers}");
- }
- }
- else
- {
- Console.WriteLine("Еще нет сформированных поездов");
- }
- }
- private int SellTickets()
- {
- Random random = new Random();
- int minValue = 40;
- int maxValue = 300;
- int passengers = random.Next(minValue, maxValue);
- return passengers;
- }
- private void AddRequiredCarriages(Train train)
- {
- int passengers = train.Path.Passengers;
- Carriage carriage;
- while (passengers > 0)
- {
- carriage = new Carriage();
- int tempPassengers;
- if (passengers >= carriage.Capacity)
- {
- tempPassengers = carriage.Capacity;
- }
- else
- {
- tempPassengers = passengers;
- }
- passengers -= tempPassengers;
- train.AddCarriage(carriage);
- AddPassengersToCarriage(carriage, tempPassengers);
- }
- }
- private void AddPassengersToCarriage(Carriage cariage, int value)
- {
- cariage.AddPassenger(value);
- }
- private void FormTrain()
- {
- AddTrain();
- AddRequiredCarriages(_trains[_trains.Count - 1]);
- }
- }
- class Train
- {
- private List<Carriage> _carriages;
- public Train(Direction direction)
- {
- _carriages = new List<Carriage>();
- Path = direction;
- }
- public Direction Path { get; private set; }
- public int CarriagesCount { get { return _carriages.Count; } }
- public int Passengers { get; set; }
- public void AddCarriage(Carriage carriage)
- {
- _carriages.Add(carriage);
- Passengers = Path.Passengers;
- }
- }
- class Carriage
- {
- public int Capacity { get; private set; } = 50;
- public int Passengers { get; private set; } = 0;
- public void AddPassenger(int value)
- {
- if (Passengers + value <= Capacity)
- {
- Passengers += value;
- }
- }
- }
- struct Direction
- {
- public Direction(string startPoint, string endPoint, int passengers)
- {
- StartPoint = startPoint;
- EndPoint = endPoint;
- Passengers = passengers;
- }
- public string StartPoint { get; private set; }
- public string EndPoint { get; private set; }
- public int Passengers { get; private set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement