Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- internal class Program
- {
- //Написать программу администрирования супермаркетом.
- //В супермаркете есть очередь клиентов.
- //У каждого клиента в корзине есть товары, также у клиентов есть деньги.
- //Клиент, когда подходит на кассу, получает итоговую сумму покупки и старается её оплатить.
- //Если оплатить клиент не может, то он рандомный товар из корзины выкидывает до тех пор, пока его денег не хватит для оплаты.
- //Клиентов можно делать ограниченное число на старте программы.
- static void Main(string[] args)
- {
- new Store().ServeBuyer();
- Console.ReadKey();
- }
- class Product
- {
- public string Name { get; private set; }
- public int Price { get; private set; }
- public Product(string name, int price)
- {
- Name = name;
- Price = price;
- }
- public void ShowInfo()
- {
- Console.WriteLine(Name + " цена: " + Price);
- }
- }
- class Buyer
- {
- private List<Product> _products;
- public int Money { get; private set; }
- public Buyer(Product[] products, int money)
- {
- _products = new List<Product>(products);
- Money = money;
- }
- public void ShowInfo()
- {
- foreach (Product product in _products)
- {
- product.ShowInfo();
- }
- Console.WriteLine("Денег: " + Money + "\n");
- }
- public void PayMoney(int price)
- {
- Money -= price;
- }
- public void RemoveProduct()
- {
- Random random = new Random();
- int indexProduct = random.Next(0, _products.Count);
- if (_products.Count > 0)
- {
- _products.RemoveAt(indexProduct);
- }
- }
- public int GetPriceProduct()
- {
- int totalPrice = 0;
- foreach (var product in _products)
- {
- totalPrice += product.Price;
- }
- return totalPrice;
- }
- }
- class Store
- {
- private Queue<Buyer> _buyers;
- public Store()
- {
- _buyers = new Queue<Buyer>();
- FillQueue();
- }
- public void ServeBuyer()
- {
- while (_buyers.Count > 0)
- {
- bool hasBuyerPaid = false;
- Buyer buyer = _buyers.Dequeue();
- while (hasBuyerPaid == false)
- {
- buyer.ShowInfo();
- int totalPrice = buyer.GetPriceProduct();
- Console.WriteLine("Итоговая сумма: " + totalPrice);
- if (totalPrice <= buyer.Money)
- {
- buyer.PayMoney(totalPrice);
- Console.WriteLine("Покупатель расчитался.");
- hasBuyerPaid = true;
- }
- else
- {
- Console.WriteLine("Не хватает денег. Уберите продукт!");
- Console.ReadKey();
- buyer.RemoveProduct();
- Console.Clear();
- }
- }
- Console.ReadKey();
- Console.Clear();
- }
- Console.WriteLine("Покупателей больше нет!");
- }
- private void FillQueue()
- {
- int minRandom = 200;
- int maxRandom = 1501;
- Random random = new Random();
- Buyer buyerOne = new Buyer(new Product[]
- {
- new Product("Хлеб", 50), new Product("Молоко", 70), new Product("Яйца", 85),
- new Product("Фарш", 200), new Product("Консервы", 150)
- }, random.Next(minRandom, maxRandom));
- Buyer buyerTwo = new Buyer(new Product[]
- {
- new Product("Сигареты", 120), new Product("Водка", 300), new Product("Селедка", 100),
- new Product("Пиво", 100), new Product("Пиво", 100), new Product("Пиво", 100)
- }, random.Next(minRandom, maxRandom));
- Buyer buyerThree = new Buyer(new Product[]
- {
- new Product("Торт", 800), new Product("Сок", 150), new Product("Шоколад", 100),
- new Product("Конфеты", 200), new Product("Яблоки", 200), new Product("Апельсины", 250)
- }, random.Next(minRandom, maxRandom));
- _buyers.Enqueue(buyerOne);
- _buyers.Enqueue(buyerTwo);
- _buyers.Enqueue(buyerThree);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement