Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace supermarket
- {
- class Program
- {
- static void Main(string[] args)
- {
- Supermarket supermarket = new Supermarket();
- supermarket.Work();
- }
- }
- class Supermarket
- {
- private Queue<Client> _clients;
- public Supermarket()
- {
- _clients = new Queue<Client>();
- }
- public void Work()
- {
- bool isRun = true;
- SetQueue();
- while (isRun)
- {
- Console.Write("[1] - Задать очередь\n[2] - Обслужить клиента\n[3] - Выход\n" +
- "Ввод: ");
- switch (Console.ReadLine())
- {
- case "1":
- SetQueue();
- break;
- case "2":
- ServeCustomers();
- break;
- case "3":
- isRun = false;
- break;
- default:
- Console.WriteLine("Ошибка!");
- break;
- }
- }
- }
- private void SetQueue()
- {
- Console.Write("Задайте число клиентов или оставьте по умолчанию.\nВвод: ");
- if (int.TryParse(Console.ReadLine(), out int number) == false)
- {
- Console.WriteLine("Ошибка, устанавливаем по умолчанию...");
- number = 2;
- }
- for (int i = 0; i < number; i++)
- {
- Client newClient = new Client();
- _clients.Enqueue(newClient);
- }
- Console.Clear();
- }
- private void ServeCustomers()
- {
- if (_clients.Count == 0)
- {
- Console.WriteLine("Задайте число клиентов!");
- return;
- }
- Console.WriteLine("\nОбслуживаем клиента...");
- while(_clients.Count > 0)
- {
- Console.WriteLine("Деньги клиента: " + _clients.Peek().CurrentMoney);
- _clients.Peek().TryToPay();
- Console.ReadKey(true);
- _clients.Dequeue();
- }
- }
- }
- class Client
- {
- private List<int> _goods;
- private static Random rand = new Random();
- public int CurrentMoney { get; private set; }
- public Client()
- {
- CurrentMoney = rand.Next(600, 5000);
- _goods = new List<int>();
- for (int i = 0; i < rand.Next(1, 10); i++)
- {
- _goods.Add(rand.Next(100, 1000));
- }
- }
- public void TryToPay()
- {
- while(_goods.Count > 0)
- {
- Console.WriteLine("Сумма итоговой покупки: " + GetSum());
- if (CurrentMoney > GetSum())
- {
- Console.WriteLine("Коризна оплачена.\n");
- return;
- }
- else
- {
- Console.WriteLine("Не хватает денег заплатить за товар! Освобождаем корзину...");
- DeleteGoods();
- }
- }
- if(_goods.Count == 0)
- {
- Console.WriteLine("Покупка НЕ оплачена, клиенту приходится уйти из очереди!\n");
- }
- }
- public int GetSum()
- {
- return _goods.Sum();
- }
- private void DeleteGoods()
- {
- int number = rand.Next(0, _goods.Count);
- Console.WriteLine("Убираем товар со стоимостью " + _goods[number] + "\n");
- _goods.RemoveAt(number);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement