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 Task43
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Shop shop = new Shop();
- string requestCustomerMoney =
- "Вы решили пойти закупиться в магазин, сколько денег вы берёте? Введите количество денег: ";
- string menu = "" +
- "Вы подошли к продавцу. \n" +
- "Вам доступны следующие команды: \n" +
- "Предложение - показать то, что предлагает продавец \n" +
- "Покупки ----- показать то, что вы купили \n" +
- "Купить ------ купить товар по его названию \n" +
- "Уйти -------- уйти домой ";
- string requestCommand =
- "Введите команду: ";
- string requestInputKey =
- "Ведите любой символ для продолжение или просто нажмите Enter. ";
- string noSearchCommand =
- "Вы ввели команду которой нет, проверьте правильность написания и соответсвтвия. Попробуйте снова. ";
- string goHome =
- "Побывав в магазине вы пошли домой. \n" +
- "Продавец на последок вам крикнул: <<До свидания!>>.";
- string inputCommand;
- int inputMoney;
- bool isExit = false;
- inputMoney = GetInt(requestCustomerMoney);
- Customer customer = new Customer(inputMoney);
- while (isExit == false)
- {
- Console.WriteLine(menu);
- Console.Write(requestCommand);
- inputCommand = Console.ReadLine();
- switch (inputCommand)
- {
- case "Предложение":
- shop.ShowProduct();
- break;
- case "Покупки":
- customer.ShowBusket();
- break;
- case "Купить":
- shop.Sell(customer);
- break;
- case "Уйти":
- isExit = true;
- break;
- default:
- Console.WriteLine(noSearchCommand);
- break;
- }
- Console.WriteLine();
- customer.ShowMoney();
- Console.WriteLine(requestInputKey);
- Console.ReadKey();
- Console.Clear();
- }
- Console.WriteLine(goHome);
- }
- private static int GetInt(string requestInput)
- {
- string errorConversion = "Ошибка,вы вели не цифры! Попробуйте снова.";
- string userInput;
- bool resultConverted = false;
- int number = 0;
- while (resultConverted == false)
- {
- Console.Write(requestInput);
- userInput = Console.ReadLine();
- resultConverted = int.TryParse(userInput, out int numberConvert);
- if (resultConverted != true)
- Console.WriteLine(errorConversion);
- else
- number = numberConvert;
- }
- return number;
- }
- }
- class Customer
- {
- private Dictionary<string, Cell> _basket = new Dictionary<string, Cell>();
- public int Money { get; private set; }
- public Customer(int money)
- {
- Money = money;
- }
- public void Buy(Item item, int count)
- {
- string succesBuy =
- "Покупка совершена. ";
- Money -= item.Price * count;
- AddToBasket(item, count);
- Console.WriteLine(succesBuy);
- }
- public void AddToBasket(Item item, int count)
- {
- if (_basket.ContainsKey(item.Title) == false || _basket.Count == 0)
- {
- _basket.Add(item.Title, new Cell(item, count));
- }
- else
- {
- foreach (var cell in _basket)
- {
- if (_basket.ContainsKey(item.Title) == true)
- cell.Value.IncreaseAmount(count);
- }
- }
- }
- public bool TryToBuy(Item item, int count)
- {
- string noMoney =
- "У вас нет денег. =(";
- string notEnoughMoney =
- "Недостаточно средств. ";
- if (Money == 0)
- {
- Console.WriteLine(noMoney);
- return false;
- }
- else if (item.Price * count > Money)
- {
- Console.WriteLine(notEnoughMoney);
- return false;
- }
- else
- {
- return true;
- }
- }
- public void ShowBusket()
- {
- string itemBuy =
- "Вы приобрели: ";
- int totalPrice;
- Console.WriteLine(itemBuy);
- foreach (var cell in _basket)
- {
- totalPrice = cell.Value.Item.Price * cell.Value.Count;
- Console.WriteLine($"{cell.Key} вы купили {cell.Value.Count} шт. по цене {cell.Value.Item.Price}. В общей суме вы потратили на этот тип предмета {totalPrice} кол-во денег.");
- }
- }
- public void ShowMoney()
- {
- Console.WriteLine($"Осталось денег: {Money}");
- }
- }
- class Shop
- {
- private List<Cell> _product = new List<Cell>();
- public Shop()
- {
- _product.Add(new Cell(new Item("Кола", 30), 120));
- _product.Add(new Cell(new Item("Пельмени", 150), 10));
- _product.Add(new Cell(new Item("Хлеб", 15), 50));
- _product.Add(new Cell(new Item("Мороженное", 90), 80));
- _product.Add(new Cell(new Item("Жвачка", 35), 100));
- _product.Add(new Cell(new Item("Молоко", 70), 90));
- }
- public void ShowProduct()
- {
- foreach (var cell in _product)
- {
- Console.WriteLine(
- $"=========================================\n" +
- $"Название продукта - {cell.Item.Title}\n" +
- $"В наличии имеется - {cell.Count}\n" +
- $"Цена за 1 шт. ----- {cell.Item.Price}\n" +
- $"===========================================");
- }
- Console.WriteLine();
- }
- public void Sell(Customer customer)
- {
- string requestTitleProduct =
- "Введите товар который хотите купить: ";
- string requestCountProduct =
- "Введите количество товара: ";
- string notEnoughGoods =
- "В магазине не достаточно товара. ";
- string buyFailed =
- "Покупка отклонена. ";
- string title;
- int count;
- Console.Write(requestTitleProduct);
- title = Console.ReadLine();
- if (FindItem(title, out Cell cell))
- {
- count = GetInt(requestCountProduct);
- if (count > cell.Count)
- {
- Console.WriteLine(notEnoughGoods);
- }
- else
- {
- if (customer.TryToBuy(cell.Item, count))
- {
- customer.Buy(cell.Item, count);
- cell.DecreaseAmount(count);
- }
- else
- {
- Console.WriteLine(buyFailed);
- }
- }
- }
- }
- private static int GetInt(string requestInput)
- {
- string errorConversion = "Ошибка,вы вели не цифры! Попробуйте снова.";
- string userInput;
- bool resultConverted = false;
- int number = 0;
- while (resultConverted == false)
- {
- Console.Write(requestInput);
- userInput = Console.ReadLine();
- resultConverted = int.TryParse(userInput, out int numberConvert);
- if (resultConverted != true)
- Console.WriteLine(errorConversion);
- else
- number = numberConvert;
- }
- return number;
- }
- private bool FindItem(string title, out Cell findItem)
- {
- string errorFindItem =
- "Таково товара не нашли, повторите поиск и проверьте правильность написания и соотвествия.";
- findItem = null;
- foreach (var cell in _product)
- {
- if (cell.Item.Title.ToLower() == title.ToLower())
- {
- findItem = cell;
- return true;
- }
- }
- Console.WriteLine(errorFindItem);
- return false;
- }
- }
- class Item
- {
- public string Title { get; private set; }
- public int Price { get; private set; }
- public Item(string title, int price)
- {
- Title = title;
- Price = price;
- }
- }
- class Cell
- {
- public Item Item { get; private set; }
- public int Count { get; private set; }
- public Cell(Item item, int count)
- {
- Item = item;
- Count = count;
- }
- public void DecreaseAmount(int count)
- {
- Count -= count;
- }
- public void IncreaseAmount(int count)
- {
- Count += count;
- }
- }
- }
Add Comment
Please, Sign In to add comment