Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Net.Sockets;
- namespace PassengerTrainConfigurator
- {
- class Program
- {
- static void Main(string[] args)
- {
- BoxOffice boxOffice = new BoxOffice();
- RailwayStation railwayStation = new RailwayStation();
- int maximumNumberOfDirections = 10;
- while (boxOffice.GetDirectionCount() < maximumNumberOfDirections)
- {
- Console.Clear();
- boxOffice.Display();
- railwayStation.Display();
- boxOffice.CreateRoute();
- boxOffice.CreateNewClients();
- boxOffice.SellTicket();
- railwayStation.CreateTrain(boxOffice);
- Console.ReadKey();
- }
- }
- }
- class RailwayStation
- {
- private List<Direction> _directions;
- private BusinessWagon _businessWagon = new BusinessWagon();
- private EconomyWagon _economyWagon = new EconomyWagon();
- private List<Train> _trains = new List<Train>();
- public void CreateTrain(BoxOffice boxOffice)
- {
- _directions = boxOffice.GetDirection();
- int lastDirection = _directions.Count - 1;
- Direction chosenDirection = _directions[lastDirection];
- if(_directions.Count == 0)
- {
- Console.WriteLine("Ошибка");
- }
- else
- {
- Train train = new Train(chosenDirection, CalculateVagon(boxOffice.CountBusiness, _businessWagon.seats), CalculateVagon(boxOffice.CountEconomy, _economyWagon.seats));
- _trains.Add(train);
- }
- Console.WriteLine($"Состав готов. Состоит из {CalculateVagon(boxOffice.CountBusiness, _businessWagon.seats)} бизнес и " +
- $"{CalculateVagon(boxOffice.CountEconomy, _economyWagon.seats)} эконом вагонов.");
- boxOffice.RestoreCountTicket();
- }
- private int CalculateVagon(int countTickets, int totalNumberOfSeatsInWagon)
- {
- return (int)Math.Ceiling((double)countTickets / totalNumberOfSeatsInWagon);
- }
- public void Display()
- {
- int yAxisIndentation = 0;
- for (int i = 0; i < _trains.Count; i++)
- {
- Train train = _trains[i];
- Console.SetCursorPosition(yAxisIndentation, i + 1);
- train.ShowInfo();
- }
- }
- }
- class BoxOffice
- {
- private int _money = 0;
- private List<Client> _clients = new List<Client>();
- private List<Ticket> _tickets = new List<Ticket>();
- private List<Direction> _directions = new List<Direction>();
- public int CountBusiness { get; private set; }
- public int CountEconomy { get; private set; }
- public void CreateRoute()
- {
- string from = "Екатеринрург";
- Console.WriteLine("Куда поедет поезд: ");
- string lastCity = Console.ReadLine();
- _directions.Add(new Direction(from, lastCity));
- }
- public int GetDirectionCount()
- {
- return _directions.Count;
- }
- public List<Direction> GetDirection()
- {
- List<Direction> directionNew = new List<Direction>(_directions);
- return directionNew;
- }
- public void CreateNewClients()
- {
- _clients.Clear();
- Random random = new Random();
- int count = random.Next(5, 501);
- for (int i = 0; i < count; i++)
- {
- _clients.Add(new Client());
- }
- }
- public void SellTicket()
- {
- int priceEconom = 300;
- int priceBusunis = 400;
- for (int i = 0; i < _clients.Count; i++)
- {
- Client client = _clients[i];
- if (client.Money > priceBusunis)
- {
- Ticket ticket = new Ticket( priceBusunis);
- _tickets.Add(ticket);
- SellTicket(priceBusunis);
- client.Buy(priceBusunis);
- CountBusiness++;
- }
- else
- {
- Ticket ticket = new Ticket(priceEconom);
- _tickets.Add(ticket);
- SellTicket(priceEconom);
- client.Buy(priceEconom);
- CountEconomy++;
- }
- }
- Console.WriteLine($"Продано {CountBusiness} бизнес и {CountEconomy} эконом билетов.");
- }
- public void RestoreCountTicket()
- {
- CountEconomy = 0;
- CountBusiness = 0;
- }
- public void SellTicket(int price)
- {
- _money += price;
- }
- public void Display()
- {
- Console.WriteLine($"Деньги в кассе вокзала: {_money}");
- if(_directions.Count==0)
- {
- Console.WriteLine($"Направление: Не создано.");
- }
- }
- }
- class Direction
- {
- public Direction(string from, string lastCity)
- {
- From = from;
- LastCity = lastCity;
- }
- public string From { get; private set; }
- public string LastCity { get; private set; }
- }
- class Ticket
- {
- private string _econom = "Эконом";
- private string _businus = "Бизнес";
- private int _price;
- private string _type;
- public Ticket(int price)
- {
- _price = price;
- int priceBusunis = 400;
- if (price >= priceBusunis)
- {
- _type = _businus;
- }
- else
- {
- _type = _econom;
- }
- }
- }
- class Client
- {
- private int _minimumAmountOfMoney = 300;
- private int _maximumAmountOfMoney = 600;
- private static int _idCounter = 1;
- private Random _random = new Random();
- public Client()
- {
- Money = _random.Next(_minimumAmountOfMoney, _maximumAmountOfMoney);
- UniqueNumber = _idCounter++;
- }
- public int Money { get; private set; }
- public int UniqueNumber { get; private set; }
- public void Buy(int price)
- {
- Money -= price;
- }
- }
- class Train
- {
- private static int _idCounter = 1;
- private Direction _direction;
- private List<Wagon> _wagons = new List<Wagon>();
- public Train(Direction direction, int businessWagons, int economyWagons)
- {
- UniqueNumber = _idCounter++;
- _direction = direction;
- for (int i = 0; i < businessWagons; i++)
- {
- _wagons.Add(new BusinessWagon());
- }
- for (int i = 0; i < economyWagons; i++)
- {
- _wagons.Add(new EconomyWagon());
- }
- }
- public int UniqueNumber { get; private set; }
- public int WagonCount()
- {
- return _wagons.Count;
- }
- public void ShowInfo()
- {
- Console.WriteLine($"{ShowDirection()} Номер поезда {UniqueNumber}, количество вагонов {WagonCount()}, поезд в пути.");
- }
- public string ShowDirection()
- {
- return $"Направление: {_direction.From} - {_direction.LastCity}";
- }
- }
- class Wagon
- {
- protected int Seats;
- public int seats
- {
- get { return Seats; }
- set { Seats = value; }
- }
- }
- class BusinessWagon : Wagon
- {
- public BusinessWagon()
- {
- Seats = 30;
- }
- }
- class EconomyWagon : Wagon
- {
- public EconomyWagon()
- {
- Seats = 54;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement