Last active
April 21, 2024 11:39
-
-
Save Dead-in-side/935d2a17876ce852173a4dff01837d90 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace IJunior | |
{ | |
public class Program | |
{ | |
private static void Main(string[] args) | |
{ | |
Dispatcher dispatcher = new Dispatcher(); | |
dispatcher.WorkAsDispatcher(); | |
} | |
} | |
public enum ConsoleCommand | |
{ | |
AddTrain = 1, | |
Exit | |
} | |
public class Dispatcher | |
{ | |
private List<Train> _trains = new List<Train>(); | |
public void WorkAsDispatcher() | |
{ | |
bool isWork = true; | |
while (isWork) | |
{ | |
ShowInfo(); | |
Console.WriteLine(); | |
Console.WriteLine((int)ConsoleCommand.AddTrain + ". Добавить поезд"); | |
Console.WriteLine((int)ConsoleCommand.Exit + ". Выход"); | |
if (int.TryParse(Console.ReadLine(), out int userInput)) | |
{ | |
switch (userInput) | |
{ | |
case (int)ConsoleCommand.AddTrain: | |
AddTrain(); | |
break; | |
case (int)ConsoleCommand.Exit: | |
isWork = false; | |
break; | |
default: | |
Console.WriteLine("Некорректный ввод!"); | |
break; | |
} | |
} | |
Console.ReadLine(); | |
Console.Clear(); | |
} | |
} | |
private void AddTrain() | |
{ | |
Route route = AddRoute(); | |
if (route.StartRoute == route.EndRoute == false) | |
{ | |
int soldTickets = SellTickets(); | |
List<Carriage> carriages = AddCarriages(soldTickets); | |
Train train = new Train(route, soldTickets, carriages); | |
_trains.Add(train); | |
train.ShowInfo(); | |
} | |
else | |
{ | |
Console.WriteLine("Поезд в депо города " + route.EndRoute); | |
} | |
} | |
private void ShowInfo() | |
{ | |
Console.WriteLine("Кол-во поездов на маршрутах: " + _trains.Count); | |
foreach (Train train in _trains) | |
{ | |
Console.WriteLine(train.Route.ShowInfo() + " - " + train.SoldTickets + " билетов продано."); | |
} | |
} | |
private List<Carriage> AddCarriages(int SoldTickets) | |
{ | |
List<Carriage> carriages = new List<Carriage>(); | |
Carriage carriage = new Carriage(); | |
int carriagesNumber; | |
if (SoldTickets % carriage.MaxPlaces == 0) | |
{ | |
carriagesNumber = SoldTickets / carriage.MaxPlaces; | |
} | |
else | |
{ | |
carriagesNumber = SoldTickets / carriage.MaxPlaces + 1; | |
} | |
for (int i = 0; i < carriagesNumber; i++) | |
{ | |
carriages.Add(new Carriage()); | |
} | |
return carriages; | |
} | |
private Route AddRoute() | |
{ | |
string startRoute; | |
string finishRoute; | |
Route route; | |
Console.WriteLine("Введите пункт отправления: "); | |
startRoute = Console.ReadLine(); | |
Console.WriteLine("Введите пункт назанчения: "); | |
finishRoute = Console.ReadLine(); | |
route = new Route(startRoute, finishRoute); | |
return route; | |
} | |
private int SellTickets() | |
{ | |
Random random = new Random(); | |
int lowRandomLimit = 50; | |
int highRandomLimit = 400; | |
int soldTickets = random.Next(lowRandomLimit, highRandomLimit); | |
Console.WriteLine("На маршрут продано " + soldTickets + " билетов."); | |
return soldTickets; | |
} | |
} | |
public class Train | |
{ | |
private List<Carriage> _carriages; | |
public Train(Route route, int soldTickets, List<Carriage> carriages) | |
{ | |
Route = route; | |
SoldTickets = soldTickets; | |
_carriages = carriages; | |
} | |
public Route Route { get; private set; } | |
public int SoldTickets { get; private set; } | |
public void ShowInfo() | |
{ | |
int allPlacesNumber = _carriages.Count * _carriages.First().MaxPlaces; | |
Console.WriteLine($"Поезд: {Route.ShowInfo()}, кол-во вагонов: {_carriages.Count}, пассажиров: {SoldTickets}/{allPlacesNumber}"); | |
} | |
} | |
public class Carriage | |
{ | |
public Carriage(int maxPlaces = 40) | |
{ | |
MaxPlaces = maxPlaces; | |
} | |
public int MaxPlaces { get; private set; } | |
} | |
public class Route | |
{ | |
public Route(string startRoute, string endRoute) | |
{ | |
StartRoute = startRoute; | |
EndRoute = endRoute; | |
} | |
public string StartRoute { get; private set; } | |
public string EndRoute { get; private set; } | |
public string ShowInfo() => StartRoute + " - " + EndRoute; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment