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();
- while(boxOffice.GetDirectionCount() < 10)
- {
- Console.Clear();
- boxOffice.Display();
- railwayStation.Display();
- boxOffice.CreateRoute();
- boxOffice.CreateNewClients();
- boxOffice.SellTicket();
- railwayStation.CreateTrain(boxOffice);
- Console.ReadKey();
- }
- }
- }
- class RailwayStation
- {
- private List<Direction> _directions;
- BusinessWagon _businessWagon = new BusinessWagon();
- EconomyWagon _economyWagon = new EconomyWagon();
- private List<Train> _train = new List<Train>();
- public void CreateTrain(BoxOffice boxOffice)
- {
- _directions = boxOffice.GetDirection();
- if(_directions.Count == 0)
- {
- Console.WriteLine("Ошибка");
- }
- else
- {
- int lastDirection = _directions.Count - 1;
- Direction chosenDirection = _directions[lastDirection];
- Train train = new Train(chosenDirection, CalculateVagon(boxOffice.CountBusiness, _businessWagon.Seats), CalculateVagon(boxOffice.CountEconomy, _economyWagon.Seats));
- _train.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 = 40;
- for (int i = 0; i < _train.Count; i++)
- {
- Train train = _train[i];
- Console.SetCursorPosition(yAxisIndentation, i + 1);
- train.ShowInfo();
- }
- }
- }
- class BoxOffice
- {
- private int _money = 0;
- private List<Client> _clients = new List<Client>();
- private List<Ticket> _ticket = new List<Ticket>();
- private List<Direction> _direction = 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();
- _direction.Add(new Direction(from, lastCity));
- }
- public int GetDirectionCount()
- {
- return _direction.Count;
- }
- public List<Direction> GetDirection()
- {
- List<Direction> _directionNew = new List<Direction>(_direction);
- 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;
- Direction currentDirection = _direction[_direction.Count - 1];
- for (int i = 0; i < _clients.Count; i++)
- {
- Client client = _clients[i];
- if (client.Money > priceBusunis)
- {
- Ticket ticket = new Ticket(currentDirection, priceBusunis, client);
- _ticket.Add(ticket);
- SellTicket(priceBusunis);
- client.Buy(priceBusunis);
- CountBusiness++;
- }
- else
- {
- Ticket ticket = new Ticket(currentDirection, priceEconom, client);
- _ticket.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(_direction.Count==0)
- {
- Console.WriteLine($"Направление: Не создано.");
- }
- else
- {
- for (int i = 0; i < _direction.Count; i++)
- {
- Direction direction = _direction[i];
- direction.ShowInfo();
- }
- }
- }
- }
- class Direction
- {
- public Direction(string from, string lastCity)
- {
- From = from;
- LastCity = lastCity;
- }
- public string From { get; private set; }
- public string LastCity { get; private set; }
- public void ShowInfo()
- {
- Console.WriteLine($"Направление:{From}-{LastCity}");
- }
- }
- class Ticket
- {
- private static int _idCounter = 1;
- private Direction _direction;
- private Client _client;
- private string _econom = "Эконом";
- private string _businus = "Бизнес";
- public Ticket(Direction direction, int price, Client client)
- {
- _direction = direction;
- _client = client;
- Price = price;
- UniqueNumber = _idCounter++;
- if (price >= 400)
- {
- Type = _businus;
- }
- else
- {
- Type = _econom;
- }
- }
- public int Price { get; private set; }
- public string Type { get; private set; }
- public int UniqueNumber { get; private set; }
- }
- class Client
- {
- private int _minimumAmountOfMoney = 300;
- private int _maximumAmountOfMoney = 600;
- private static int _idCounter = 1;
- 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($"Номер поезда {UniqueNumber}, количество вагонов {WagonCount()}, поезд в пути.");
- }
- }
- 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