Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace Ijunior
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- ComputerClub computerClub = new ComputerClub(8);
- computerClub.Work();
- }
- }
- class ComputerClub
- {
- private int _money;
- private List<Computer> _computers = new List<Computer>();
- private Queue<Client> _clients = new Queue<Client>();
- public ComputerClub(int computerCount)
- {
- Random random = new Random();
- for (int i = 0; i < computerCount; i++)
- {
- _computers.Add(new Computer(random.Next(5, 15)));
- }
- CreateNewClients(25, random);
- }
- public void CreateNewClients(int count, Random random)
- {
- for (int i = 0; i < count; i++)
- {
- _clients.Enqueue(new Client(random.Next(200, 300), random));
- }
- }
- public void Work()
- {
- while (_clients.Count > 0)
- {
- Client newClient = _clients.Dequeue();
- Console.WriteLine($"Баланс клуба {_money}");
- Console.WriteLine($"Клиент хочет купить {newClient.DesiredMinutes} минут");
- ShowAllComputersState();
- Console.Write("\nЗабронировать компьютер номер: ");
- string userInput = Console.ReadLine();
- if (int.TryParse(userInput, out int computerNumber))
- {
- computerNumber -= 1;
- if (computerNumber >= 0 && computerNumber < _computers.Count)
- {
- if (_computers[computerNumber].IsTaken)
- {
- Console.WriteLine("Компьютер занят");
- }
- else
- {
- if (newClient.CheckSolvency(_computers[computerNumber]))
- {
- Console.WriteLine("Клиент сел за компьютер " + (computerNumber + 1));
- _money += newClient.Pay();
- _computers[computerNumber].BecomeTaken(newClient);
- }
- else
- {
- Console.WriteLine("Клиент не смог оплатить");
- }
- }
- }
- else
- {
- Console.WriteLine("Такого номера нет");
- }
- }
- else
- {
- Console.WriteLine("Неверный ввод");
- }
- Console.Write("Нажмите любую клавишу для продолжения работы");
- Console.ReadKey();
- Console.Clear();
- SpendOneMinute();
- }
- }
- private void ShowAllComputersState()
- {
- Console.WriteLine("Список компьюетров: ");
- for (int i = 0; i < _computers.Count; i++)
- {
- Console.Write(i + 1 + " - ");
- _computers[i].ShowState();
- }
- }
- private void SpendOneMinute()
- {
- foreach (var computer in _computers)
- {
- computer.SpendOneMinute();
- }
- }
- }
- class Computer
- {
- private Client _client;
- private int _minitesRemaining;
- public Computer(int pricePerMinute)
- {
- PricePerMinute = pricePerMinute;
- }
- public int PricePerMinute { get; private set; }
- public bool IsTaken
- {
- get
- {
- return _minitesRemaining > 0;
- }
- }
- public void BecomeTaken(Client client)
- {
- _client = client;
- _minitesRemaining = _client.DesiredMinutes;
- }
- public void BecomeEmpty()
- {
- _client = null;
- }
- public void SpendOneMinute()
- {
- _minitesRemaining--;
- }
- public void ShowState()
- {
- if (IsTaken)
- Console.WriteLine($"Компьютер занят, осталось минут: {_minitesRemaining} ");
- else
- Console.WriteLine($"Компьютер свободен, цена за минуту: {PricePerMinute}");
- }
- }
- class Client
- {
- private int _money;
- private int _moneyToPay;
- public int DesiredMinutes { get; private set; }
- public Client(int money, Random random)
- {
- _money = money;
- DesiredMinutes = random.Next(10, 30);
- }
- public bool CheckSolvency(Computer computer)
- {
- _moneyToPay = DesiredMinutes * computer.PricePerMinute;
- if (_money >= _moneyToPay)
- {
- return true;
- }
- else
- {
- _moneyToPay = 0;
- return false;
- }
- }
- public int Pay()
- {
- _money -= _moneyToPay;
- return _moneyToPay;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment