Advertisement
SPavelA

OOPTask6Shop

Oct 25th, 2024 (edited)
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.76 KB | Gaming | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace OOPTask6Shop
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Shop shop = new Shop();
  11.             shop.Work();
  12.         }
  13.     }
  14.  
  15.     public class Shop
  16.     {
  17.         private Seller _seller;
  18.         private Client _client;
  19.  
  20.         public Shop()
  21.         {
  22.             _seller = new Seller(0);
  23.             _client = new Client(500);
  24.         }
  25.  
  26.         public void Work()
  27.         {
  28.             const char CommandExit = 'q' ;
  29.            
  30.             bool isWorking = true;
  31.  
  32.             while (isWorking)
  33.             {
  34.                 _client.ShowInfo();
  35.                 Console.WriteLine();
  36.                 _seller.ShowInfo();
  37.                 Console.WriteLine();
  38.  
  39.                 if (_seller.IsEmpty)
  40.                 {
  41.                     Console.WriteLine("У продавца больше нет товаров");
  42.                 }
  43.                 else
  44.                 {
  45.                     Product productToBuy = _seller.GetProductToBuy();
  46.                    
  47.                     if (_client.EnoughMoney(productToBuy))
  48.                     {
  49.                         _seller.SellProduct(productToBuy);
  50.                         _client.BuyProduct(productToBuy);
  51.                         Console.WriteLine("Поздравляем с покупкой");
  52.                     }
  53.                     else
  54.                     {
  55.                         Console.WriteLine("У клиента недостаточно денег");
  56.                     }
  57.                 }
  58.  
  59.                 Console.WriteLine($"Нажмите любую клавишу или \"{CommandExit}\" для выхода");
  60.  
  61.                 if (Console.ReadKey().KeyChar == CommandExit)
  62.                     isWorking = false;
  63.  
  64.                 Console.Clear();
  65.             }
  66.         }
  67.     }
  68.  
  69.     public class Product
  70.     {
  71.         private string _title;
  72.  
  73.         public Product(string title, int cost)
  74.         {
  75.             _title = title;
  76.             Cost = cost;
  77.         }
  78.  
  79.         public int Cost { get; private set; }
  80.  
  81.         public void ShowInfo()
  82.         {
  83.             Console.WriteLine($"товар \"{_title}\" стоимостью {Cost}");
  84.         }
  85.     }
  86.  
  87.     public class Person
  88.     {
  89.         private protected List<Product> Products = new List<Product>();
  90.         private protected int Money;
  91.         private protected string Title;
  92.  
  93.         public Person(int money)
  94.         {
  95.             Money = money;
  96.         }
  97.  
  98.         virtual public void ShowInfo()
  99.         {
  100.             Console.WriteLine($"Я {Title} и у меня {Products.Count} товаров.");
  101.             ShowAllProducts();
  102.         }
  103.  
  104.         private protected void ShowAllProducts()
  105.         {
  106.             int number = 1;
  107.  
  108.             foreach (Product product in Products)
  109.             {
  110.                 Console.Write($"{number++} - ");
  111.                 product.ShowInfo();
  112.             }
  113.         }
  114.     }
  115.  
  116.     public class Seller : Person
  117.     {
  118.         public Seller(int money): base (money)
  119.         {
  120.             Title = "продавец";
  121.             FillProducts();
  122.         }
  123.  
  124.         public bool IsEmpty => Products.Count == 0;
  125.  
  126.         public void SellProduct(Product product)
  127.         {
  128.             Products.Remove(product);
  129.             Money += product.Cost;
  130.         }
  131.  
  132.         public Product GetProductToBuy()
  133.         {
  134.             int indexProduct = 0;
  135.             bool correctIndexValue = false;
  136.  
  137.             Console.Write("Введите номер товара для покупки: ");
  138.  
  139.             while (correctIndexValue == false)
  140.             {
  141.                 indexProduct = ReadInt() - 1;
  142.  
  143.                 if (indexProduct >= 0 && indexProduct < Products.Count)
  144.                 {
  145.                     correctIndexValue = true;
  146.                 }
  147.                 else
  148.                 {
  149.                     Console.Write("Некорректный номер товара, попробуйте еще: ");
  150.                 }
  151.             }
  152.  
  153.             return Products[indexProduct];
  154.         }
  155.  
  156.         private int ReadInt()
  157.         {
  158.             int inputNumber;
  159.  
  160.             while (int.TryParse(Console.ReadLine(), out inputNumber) == false)
  161.             {
  162.                 Console.Write("Это не число, попробуйте еще раз: ");
  163.             }
  164.  
  165.             return inputNumber;
  166.         }
  167.  
  168.         private void FillProducts()
  169.         {
  170.             Random random = new Random();
  171.             Products.Add(new Product("будильник", random.Next(5, 100)));
  172.             Products.Add(new Product("телефон", random.Next(5, 100)));
  173.             Products.Add(new Product("лопатка", random.Next(5, 100)));
  174.             Products.Add(new Product("совочек", random.Next(5, 100)));
  175.             Products.Add(new Product("машинка", random.Next(5, 100)));
  176.             Products.Add(new Product("кукла", random.Next(5, 100)));
  177.             Products.Add(new Product("слюнявчик", random.Next(5, 100)));
  178.             Products.Add(new Product("презерватив", random.Next(5, 100)));
  179.         }
  180.     }
  181.  
  182.     public class Client : Person
  183.     {
  184.         public Client(int money) : base(money)
  185.         {
  186.             Title = "покупатель";
  187.         }
  188.  
  189.         public bool EnoughMoney(Product product)
  190.         {
  191.             return Money >= product.Cost;
  192.         }
  193.  
  194.         public override void ShowInfo()
  195.         {
  196.             base.ShowInfo();
  197.             Console.WriteLine($"У меня в кошельке {Money} рублей");
  198.         }
  199.  
  200.         public void BuyProduct(Product product)
  201.         {
  202.             Products.Add(product);
  203.             Money -= product.Cost;
  204.         }
  205.     }
  206. }
  207.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement