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 Task43._10
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- string requestCustomerMoney =
- "Вы решили пойти закупиться в магазин, сколько денег вы берёте? Введите количество денег: ";
- Seller seller = new Seller();
- int inputMoney = GetInt(requestCustomerMoney);
- Customer customer = new Customer(inputMoney);
- Shop shop = new Shop(seller);
- shop.Work(customer);
- }
- 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 Shop
- {
- private Seller _seller;
- private bool _isExit = false;
- public Shop(Seller seller)
- {
- _seller = seller;
- }
- public void Work(Customer customer)
- {
- string menu = "" +
- "Вы подошли к продавцу. \n" +
- "Вам доступны следующие команды: \n" +
- "Предложение - показать то, что предлагает продавец \n" +
- "Покупки ----- показать то, что вы купили \n" +
- "Купить ------ купить товар по его названию \n" +
- "Уйти -------- уйти домой ";
- string requestCommand =
- "Введите команду: ";
- string requestInputKey =
- "Ведите любой символ для продолжение или просто нажмите Enter. ";
- string noSearchCommand =
- "Вы ввели команду которой нет, проверьте правильность написания и соответсвтвия. Попробуйте снова. ";
- string goHome =
- "Побывав в магазине вы пошли домой. \n" +
- "Продавец на последок вам крикнул: <<До свидания!>>.";
- string inputCommand;
- while (_isExit == false)
- {
- customer.ShowMoney(customer);
- Console.WriteLine(menu);
- Console.Write(requestCommand);
- inputCommand = Console.ReadLine();
- switch (inputCommand)
- {
- case "Предложение":
- _seller.ShowShowcase();
- break;
- case "Покупки":
- customer.ShowBasket();
- break;
- case "Купить":
- _seller.SellProduct(customer);
- break;
- case "Уйти":
- _isExit = true;
- break;
- default:
- Console.WriteLine(noSearchCommand);
- break;
- }
- Console.WriteLine();
- Console.WriteLine(requestInputKey);
- Console.ReadKey();
- Console.Clear();
- }
- Console.WriteLine(goHome);
- }
- }
- class Human
- {
- protected List<Inventory> _products = new List<Inventory>();
- public int Money { get; protected set; }
- public Human(int money)
- {
- Money = money;
- }
- public void ShowProducts()
- {
- if (_products.Count > 0)
- {
- Console.WriteLine("Список: ");
- foreach (Inventory item in _products)
- {
- item.ShowInfo();
- }
- }
- else
- {
- Console.WriteLine("Пусто");
- }
- }
- }
- class Seller : Human
- {
- public Seller(int money = 0) : base(money)
- {
- _products.Add(new Inventory(new Product("Кола", 30), 120));
- _products.Add(new Inventory(new Product("Пельмени", 150), 10));
- _products.Add(new Inventory(new Product("Хлеб", 15), 50));
- _products.Add(new Inventory(new Product("Мороженное", 90), 80));
- _products.Add(new Inventory(new Product("Жвачка", 35), 100));
- _products.Add(new Inventory(new Product("Молоко", 70), 90));
- }
- public void ShowShowcase()
- {
- Console.WriteLine("У меня доступны следующие товары: ");
- foreach (var item in _products)
- {
- Console.WriteLine(
- $"=========================================\n" +
- $"Название продукта - {item.Product.Name}\n" +
- $"В наличии имеется - {item.Count}\n" +
- $"Цена за 1 шт. ----- {item.Product.Price}\n" +
- $"===========================================");
- }
- Console.WriteLine();
- }
- public void SellProduct(Customer customer)
- {
- Inventory findProduct;
- string inputNameProduct;
- int needCountProduct;
- int totalPrice;
- bool checkCountProduct;
- bool checkEnoughMoney;
- Console.Write("Введите название товара, который хотите купить: ");
- inputNameProduct = Console.ReadLine();
- needCountProduct = GetInt("Введи кол-во товара вы хотите приобрести: ");
- if (TryGetFindProduct(inputNameProduct, out findProduct))
- {
- Console.WriteLine("Товар нашёлся. ");
- checkCountProduct = CheckingExistenceSuchVolumeProduction(needCountProduct, findProduct, out totalPrice);
- checkEnoughMoney = EnoughMoney(customer, totalPrice);
- if (checkCountProduct == true && checkEnoughMoney == true)
- {
- customer.Buy(findProduct, needCountProduct);
- findProduct.DecreaseAmount(needCountProduct);
- }
- else
- {
- if (checkCountProduct == false)
- {
- Console.WriteLine("Отмена покупки. Такого кол-во товара нет на складе. ");
- }
- else if (checkEnoughMoney == false)
- {
- Console.WriteLine("Отмена покупки. Недостаточно средств. ");
- }
- }
- }
- else
- {
- Console.WriteLine("Такого товара нет. ");
- }
- }
- private bool TryGetFindProduct(string nameProduct, out Inventory findProduct)
- {
- findProduct = null;
- foreach (var item in _products)
- {
- if (item.Product.Name == nameProduct)
- {
- findProduct = item;
- return true;
- }
- }
- return false;
- }
- private bool CheckingExistenceSuchVolumeProduction(int needCountProduct, Inventory findProduct, out int totalPrice)
- {
- if (findProduct.Count >= needCountProduct)
- {
- totalPrice = findProduct.Product.Price * needCountProduct;
- return true;
- }
- else
- {
- Console.WriteLine("На складе нет такого количества данного товара. ");
- totalPrice = 0;
- return false;
- }
- }
- private bool EnoughMoney(Customer customer, int totalPrice)
- {
- if (totalPrice <= customer.Money)
- return true;
- else
- return false;
- }
- private 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 : Human
- {
- public Customer(int money) : base(money) { }
- public void ShowBasket()
- {
- if (_products.Count > 0)
- {
- Console.WriteLine("Товары в карзине: ");
- foreach (var item in _products)
- {
- Console.WriteLine(
- $"=========================================\n" +
- $"Название продукта - {item.Product.Name}\n" +
- $"В наличии имеется - {item.Count}\n" +
- $"Цена за 1 шт. ----- {item.Product.Price}\n" +
- $"===========================================");
- }
- }
- else
- {
- Console.WriteLine("Корзина пуста. ");
- }
- }
- public void Buy(Inventory item, int count)
- {
- Money -= item.Product.Price * count;
- _products.Add(item);
- item.IncreaseAmount(count);
- Console.WriteLine("Осталось денег: " + Money);
- }
- public void ShowMoney(Customer customer)
- {
- Console.WriteLine("У вас сейчас: " + Money);
- }
- }
- public class Product
- {
- public string Name { get; private set; }
- public int Price { get; private set; }
- public Product(string name, int price)
- {
- Name = name;
- Price = price;
- }
- }
- class Cell
- {
- public Product Product { get; private set; }
- public int Count { get; private set; }
- public Inventory(Product product, int count)
- {
- Product = product;
- Count = count;
- }
- public void DecreaseAmount(int count)
- {
- Count -= count;
- }
- public void IncreaseAmount(int count)
- {
- Count += count;
- }
- public void ShowInfo()
- {
- Console.WriteLine(
- $"=========================================\n" +
- $"Название продукта - {Product.Name}\n" +
- $"Количество -------- {Count}\n" +
- $"Цена за 1 шт. ----- {Product.Price}\n" +
- $"===========================================");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement