Advertisement
JohnJuly

Homework43

May 6th, 2025 (edited)
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.12 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Homework43_
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Shop shop = new Shop();
  11.             shop.IsWork();
  12.         }
  13.     }
  14.  
  15.     class Product
  16.     {
  17.         public Product(string title, int price)
  18.         {
  19.             Title = title;
  20.             Price = price;
  21.         }
  22.  
  23.         public string Title { get; private set; }
  24.         public int Price { get; private set; }
  25.  
  26.         public void ShowInfo()
  27.         {
  28.             Console.WriteLine($"{Title}: {Price} рублей");
  29.         }
  30.     }
  31.  
  32.     class Person
  33.     {
  34.         public Person(string name, int money)
  35.         {
  36.             Name = name;
  37.             Money = money;
  38.         }
  39.  
  40.         public string Name { get; private set; }
  41.         public int Money { get; protected set; }
  42.  
  43.         protected void WithdrawMoney(int amount)
  44.         {
  45.             if (Money >= amount)
  46.             {
  47.                 Money -= amount;
  48.             }
  49.             else
  50.             {
  51.                 Console.WriteLine("Недостаточно средств!");
  52.             }
  53.         }
  54.  
  55.         public void ShowMoney()
  56.         {
  57.             Console.WriteLine($"{Name} имеет {Money} рублей.");
  58.         }
  59.     }
  60.  
  61.     class Seller : Person
  62.     {
  63.         private List<Product> _products = new List<Product>();
  64.  
  65.         public Seller(string name, int money) : base(name, money)
  66.         {
  67.             _products.Add(new Product("Яблоко", 10));
  68.             _products.Add(new Product("Хлеб", 20));
  69.             _products.Add(new Product("Мороженое", 7));
  70.             _products.Add(new Product("Колбаса", 15));
  71.         }
  72.  
  73.         public void ShowProducts()
  74.         {
  75.             if (_products.Count == 0)
  76.             {
  77.                 Console.WriteLine("У продавца нет товаров.");
  78.                 return;
  79.             }
  80.  
  81.             Console.WriteLine("Товары в продаже:");
  82.  
  83.             foreach (Product product in _products)
  84.             {
  85.                 product.ShowInfo();
  86.             }
  87.         }
  88.  
  89.         public Product SellProduct(string productName)
  90.         {
  91.             if (HasProduct(productName) == false)
  92.             {
  93.                 Console.WriteLine($"Продукт {productName} не найден у продавца.");
  94.                 return null;
  95.             }
  96.  
  97.             Product product = GetProduct(productName);
  98.  
  99.             return product;
  100.         }
  101.  
  102.         public void FinalizeSell(Product product)
  103.         {
  104.             if (product != null)
  105.             {
  106.                 _products.Remove(product);
  107.             }
  108.         }
  109.  
  110.         public void AddMoney(int amount)
  111.         {
  112.             Money += amount;
  113.         }
  114.  
  115.         private bool HasProduct(string productName)
  116.         {
  117.             foreach (Product product in _products)
  118.             {
  119.                 if (product.Title == productName)
  120.                 {
  121.                     return true;
  122.                 }
  123.             }
  124.  
  125.             return false;
  126.         }
  127.  
  128.         private Product GetProduct(string productName)
  129.         {
  130.             foreach (Product product in _products)
  131.             {
  132.                 if (product.Title == productName)
  133.                 {
  134.                     return product;
  135.                 }
  136.             }
  137.  
  138.             return null;
  139.         }
  140.     }
  141.  
  142.     class Buyer : Person
  143.     {
  144.         private List<Product> _purchasedProducts = new List<Product>();
  145.  
  146.         public Buyer(string name, int money) : base(name, money) { }
  147.  
  148.         public void ShowPurchasedProducts()
  149.         {
  150.             if (_purchasedProducts.Count == 0)
  151.             {
  152.                 Console.WriteLine($"{Name} ничего не купил.");
  153.                 return;
  154.             }
  155.  
  156.             Console.WriteLine($"{Name} купил следующие товары:");
  157.  
  158.             foreach (Product product in _purchasedProducts)
  159.             {
  160.                 product.ShowInfo();
  161.             }
  162.         }
  163.  
  164.         public void BuyProduct(Product product)
  165.         {
  166.             _purchasedProducts.Add(product);
  167.         }
  168.  
  169.         public bool CanPurchase(int price)
  170.         {
  171.             return Money >= price;
  172.         }
  173.  
  174.         public void RemoveMoney(int amount)
  175.         {
  176.             WithdrawMoney(amount);
  177.         }
  178.     }
  179.  
  180.     class Shop
  181.     {
  182.         private Seller _seller;
  183.         private Buyer _buyer;
  184.  
  185.         public Shop()
  186.         {
  187.             _seller = new Seller("Продавец", 100);
  188.             _buyer = new Buyer("Покупатель", 50);
  189.         }
  190.  
  191.         public void IsWork()
  192.         {
  193.             const string CommandShowProducts = "show";
  194.             const string CommandBuyProduct = "buy";
  195.             const string CommandShowPurchased = "purchased";
  196.             const string CommandExitProgram = "exit";
  197.  
  198.             bool isWork = true;
  199.  
  200.             while (isWork)
  201.             {
  202.                 Console.WriteLine("Вы в продуктовом магазине, выберите действие:");
  203.                 Console.WriteLine($"Чтобы купить товар введите {CommandBuyProduct}");
  204.                 Console.WriteLine($"Чтобы показать купленные товары введите {CommandShowPurchased}");
  205.                 Console.WriteLine($"Чтобы показать товары в продаже, введите {CommandShowProducts}");
  206.                 Console.WriteLine($"Чтобы выйти введите {CommandExitProgram}");
  207.  
  208.                 _buyer.ShowMoney();
  209.                 _seller.ShowMoney();
  210.  
  211.                 Console.Write("Ваш выбор: ");
  212.                 string userInput = Console.ReadLine();
  213.  
  214.                 switch (userInput)
  215.                 {
  216.                     case CommandBuyProduct:
  217.                         HandleBuyProduct();
  218.                         break;
  219.  
  220.                     case CommandShowProducts:
  221.                         _seller.ShowProducts();
  222.                         break;
  223.  
  224.                     case CommandShowPurchased:
  225.                         _buyer.ShowPurchasedProducts();
  226.                         break;
  227.  
  228.                     case CommandExitProgram:
  229.                         isWork = ExitProgram();
  230.                         break;
  231.  
  232.                     default:
  233.                         Console.WriteLine("Неверная команда!");
  234.                         break;
  235.                 }
  236.  
  237.                 Console.WriteLine("Нажмите любую клавишу для продолжения...");
  238.                 Console.ReadKey();
  239.                 Console.Clear();
  240.             }
  241.         }
  242.  
  243.         private bool ExitProgram()
  244.         {
  245.             Console.WriteLine("Вы покинули магазин!");
  246.             return false;
  247.         }
  248.  
  249.         private void HandleBuyProduct()
  250.         {
  251.             _seller.ShowProducts();
  252.  
  253.             Console.Write("Введите название товара, который хотите купить: ");
  254.             string productName = Console.ReadLine();
  255.  
  256.             BuyProduct(productName, _buyer);
  257.         }
  258.  
  259.         private void BuyProduct(string productName, Buyer buyer)
  260.         {
  261.             Product product = _seller.SellProduct(productName);
  262.  
  263.             if (product != null)
  264.             {
  265.                 if (buyer.CanPurchase(product.Price))
  266.                 {
  267.                     buyer.RemoveMoney(product.Price);
  268.                     _seller.AddMoney(product.Price);
  269.  
  270.                     buyer.BuyProduct(product);
  271.  
  272.                     _seller.FinalizeSell(product);
  273.  
  274.                     Console.WriteLine($"Покупатель купил продукт {product.Title}.");
  275.                 }
  276.                 else
  277.                 {
  278.                     Console.WriteLine($"У покупателя недостаточно средств для покупки {product.Title}.");
  279.                 }
  280.             }
  281.             else
  282.             {
  283.                 Console.WriteLine($"Товар {productName} не найден в магазине.");
  284.             }
  285.         }
  286.     }
  287. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement