Advertisement
VodVas

Магазин

Oct 23rd, 2023 (edited)
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.76 KB | Software | 0 0
  1. using System.Linq;
  2. using System.Numerics;
  3. using System.Reflection.Metadata;
  4.  
  5. namespace Магазин_2
  6. {
  7.     internal class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             Shop shop = new Shop();
  12.  
  13.             shop.Work();
  14.         }
  15.     }
  16.     class Person
  17.     {
  18.         protected List<Product> Products = new List<Product>();
  19.  
  20.         protected Person(int money)
  21.         {
  22.             Money = money;
  23.         }
  24.  
  25.         public int Money { get; protected set; }
  26.  
  27.         public virtual void ShowProductList()
  28.         {
  29.             foreach (Product product in Products)
  30.             {
  31.                 product.ShowProduct();
  32.             }
  33.  
  34.             Console.WriteLine();
  35.         }
  36.  
  37.         protected bool IsListEmpty()
  38.         {
  39.             if (Products.Count == 0 || Products == null)
  40.             {
  41.                 return true;
  42.             }
  43.  
  44.             return false;
  45.         }
  46.     }
  47.  
  48.     class Product
  49.     {
  50.         public Product(string name, int price, int id)
  51.         {
  52.             Name = name;
  53.             Price = price;
  54.             Id = id;
  55.         }
  56.  
  57.         public string Name { get; private set; }
  58.         public int Price { get; private set; }
  59.         public int Id { get; private set; }
  60.  
  61.         public void ShowProduct()
  62.         {
  63.             Console.WriteLine($"ID: {Id} Название: {Name} Цена: {Price}$");
  64.         }
  65.     }
  66.  
  67.     class Seller : Person
  68.     {
  69.         public Seller(int money) : base(money)
  70.         {
  71.             FillProductList();
  72.         }
  73.  
  74.         public override void ShowProductList()
  75.         {
  76.             if (IsListEmpty())
  77.             {
  78.                 Console.WriteLine("Товар в продаже отсутствует\n");
  79.             }
  80.             else
  81.             {
  82.                 base.ShowProductList();
  83.             }
  84.         }
  85.  
  86.        private void FillProductList()
  87.         {
  88.             Products.Add(new Product("AK-74", 1500, 1));
  89.             Products.Add(new Product("СВД", 2500, 2));
  90.             Products.Add(new Product("АС «Вал»", 3500, 3));
  91.         }
  92.  
  93.         public Product TryGetProduct()
  94.         {
  95.             Product foundProduct;
  96.  
  97.             if (IsListEmpty())
  98.             {
  99.                 Console.WriteLine("Товаров нет\n");
  100.  
  101.                 return null;
  102.             }
  103.             else
  104.             {
  105.                 Console.WriteLine("Введите id товара для покупки: ");
  106.  
  107.                 int id = Utility.ReturnValidateInputNumber();
  108.  
  109.                 foreach (var product in Products)
  110.                 {
  111.                     if (product.Id == id)
  112.                     {
  113.                         foundProduct = product;
  114.  
  115.                         return foundProduct;
  116.                     }
  117.                 }
  118.  
  119.                 Console.WriteLine("\nТовар не найден\n");
  120.  
  121.                 return null;
  122.             }
  123.         }
  124.  
  125.         public void SellProduct(Product product)
  126.         {
  127.             if (IsListEmpty())
  128.             {
  129.                 return;
  130.             }
  131.             else
  132.             {
  133.                 Money += product.Price;
  134.  
  135.                 Products.Remove(product);
  136.  
  137.                 Console.WriteLine($"Товар с ID {product.Id} «{product.Name}» куплен\n");
  138.             }
  139.         }
  140.     }
  141.  
  142.     class Buyer : Person
  143.     {
  144.         public Buyer(int money) : base(money) { }
  145.  
  146.         public override void ShowProductList()
  147.         {
  148.             if (IsListEmpty())
  149.             {
  150.                 Console.WriteLine("Инвентарь пуст\n");
  151.                 Console.WriteLine($"Деньги покупателя: {Money}\n");
  152.             }
  153.             else
  154.             {
  155.                 Console.WriteLine("Товар в инвентаре:");
  156.                 base.ShowProductList();
  157.                 Console.WriteLine($"Деньги покупателя: {Money}\n");
  158.             }
  159.         }
  160.  
  161.         public void BuyProduct(Product product)
  162.         {
  163.             Money -= product.Price;
  164.  
  165.             Products.Add(product);
  166.         }
  167.  
  168.         public bool CanPay(Product product)
  169.         {
  170.             return Money >= product.Price;
  171.         }
  172.     }
  173.  
  174.     class Shop
  175.     {
  176.         public void Work()
  177.         {
  178.             const string ShowProductMenu = "1";
  179.             const string BuyProductMenu = "2";
  180.             const string ShowInventoryMenu = "3";
  181.             const string ExitProgram = "4";
  182.  
  183.             int sellerMoney = 0;
  184.             int buyerMoney = 5000;
  185.  
  186.             Seller seller = new Seller(sellerMoney);
  187.             Buyer buyer = new Buyer(buyerMoney);
  188.  
  189.             bool isRun = true;
  190.  
  191.             while (isRun)
  192.             {
  193.                 Console.WriteLine($"{ShowProductMenu} - Показать товар в наличии\n{BuyProductMenu} - Купить\n{ShowInventoryMenu} - Показ инвентарь\n{ExitProgram} - Выход");
  194.  
  195.                 string userInput = Console.ReadLine();
  196.  
  197.                 switch (userInput)
  198.                 {
  199.                     case ShowProductMenu:
  200.                         seller.ShowProductList();
  201.                         break;
  202.  
  203.                     case BuyProductMenu:
  204.                         Trade(buyer, seller);
  205.                         break;
  206.  
  207.                     case ShowInventoryMenu:
  208.                         buyer.ShowProductList();
  209.                         break;
  210.  
  211.                     case ExitProgram:
  212.                         isRun = false;
  213.                         break;
  214.  
  215.                     default:
  216.                         Console.WriteLine("Неверная команда");
  217.                         break;
  218.  
  219.                 }
  220.             }
  221.         }
  222.  
  223.         private void Trade(Buyer buyer, Seller seller)
  224.         {
  225.             Product product = seller.TryGetProduct();
  226.  
  227.             if (product == null)
  228.             {
  229.                 return;
  230.             }
  231.             else if (buyer.CanPay(product))
  232.             {
  233.                 seller.SellProduct(product);
  234.                 buyer.BuyProduct(product);
  235.                 Console.WriteLine($"Деньги продавца: {seller.Money}");
  236.                 Console.WriteLine($"Деньги покупателя:  {buyer.Money}\n");
  237.             }
  238.             else
  239.             {
  240.                 Console.WriteLine("Недостаточно денег для покупки\n");
  241.             }
  242.         }
  243.     }
  244.  
  245.     class Utility
  246.     {
  247.         public static int ReturnValidateInputNumber()
  248.         {
  249.             int number;
  250.  
  251.             while (int.TryParse(Console.ReadLine(), out number) == false)
  252.             {
  253.                 Console.WriteLine("Введено не число, попробуйте еще раз: ");
  254.             }
  255.  
  256.             return number;
  257.         }
  258.     }
  259. }
  260.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement