Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace Homework43_
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Shop shop = new Shop();
- shop.IsWork();
- }
- }
- class Product
- {
- public Product(string title, int price)
- {
- Title = title;
- Price = price;
- }
- public string Title { get; private set; }
- public int Price { get; private set; }
- public void ShowInfo()
- {
- Console.WriteLine($"{Title}: {Price} рублей");
- }
- }
- class Person
- {
- public Person(string name, int money)
- {
- Name = name;
- Money = money;
- }
- public string Name { get; private set; }
- public int Money { get; protected set; }
- protected void WithdrawMoney(int amount)
- {
- if (Money >= amount)
- {
- Money -= amount;
- }
- else
- {
- Console.WriteLine("Недостаточно средств!");
- }
- }
- public void ShowMoney()
- {
- Console.WriteLine($"{Name} имеет {Money} рублей.");
- }
- }
- class Seller : Person
- {
- private List<Product> _products = new List<Product>();
- public Seller(string name, int money) : base(name, money)
- {
- _products.Add(new Product("Яблоко", 10));
- _products.Add(new Product("Хлеб", 20));
- _products.Add(new Product("Мороженое", 7));
- _products.Add(new Product("Колбаса", 15));
- }
- public void ShowProducts()
- {
- if (_products.Count == 0)
- {
- Console.WriteLine("У продавца нет товаров.");
- return;
- }
- Console.WriteLine("Товары в продаже:");
- foreach (Product product in _products)
- {
- product.ShowInfo();
- }
- }
- public Product SellProduct(string productName)
- {
- if (HasProduct(productName) == false)
- {
- Console.WriteLine($"Продукт {productName} не найден у продавца.");
- return null;
- }
- Product product = GetProduct(productName);
- return product;
- }
- public void FinalizeSell(Product product)
- {
- if (product != null)
- {
- _products.Remove(product);
- }
- }
- public void AddMoney(int amount)
- {
- Money += amount;
- }
- private bool HasProduct(string productName)
- {
- foreach (Product product in _products)
- {
- if (product.Title == productName)
- {
- return true;
- }
- }
- return false;
- }
- private Product GetProduct(string productName)
- {
- foreach (Product product in _products)
- {
- if (product.Title == productName)
- {
- return product;
- }
- }
- return null;
- }
- }
- class Buyer : Person
- {
- private List<Product> _purchasedProducts = new List<Product>();
- public Buyer(string name, int money) : base(name, money) { }
- public void ShowPurchasedProducts()
- {
- if (_purchasedProducts.Count == 0)
- {
- Console.WriteLine($"{Name} ничего не купил.");
- return;
- }
- Console.WriteLine($"{Name} купил следующие товары:");
- foreach (Product product in _purchasedProducts)
- {
- product.ShowInfo();
- }
- }
- public void BuyProduct(Product product)
- {
- _purchasedProducts.Add(product);
- }
- public bool CanPurchase(int price)
- {
- return Money >= price;
- }
- public void RemoveMoney(int amount)
- {
- WithdrawMoney(amount);
- }
- }
- class Shop
- {
- private Seller _seller;
- private Buyer _buyer;
- public Shop()
- {
- _seller = new Seller("Продавец", 100);
- _buyer = new Buyer("Покупатель", 50);
- }
- public void IsWork()
- {
- const string CommandShowProducts = "show";
- const string CommandBuyProduct = "buy";
- const string CommandShowPurchased = "purchased";
- const string CommandExitProgram = "exit";
- bool isWork = true;
- while (isWork)
- {
- Console.WriteLine("Вы в продуктовом магазине, выберите действие:");
- Console.WriteLine($"Чтобы купить товар введите {CommandBuyProduct}");
- Console.WriteLine($"Чтобы показать купленные товары введите {CommandShowPurchased}");
- Console.WriteLine($"Чтобы показать товары в продаже, введите {CommandShowProducts}");
- Console.WriteLine($"Чтобы выйти введите {CommandExitProgram}");
- _buyer.ShowMoney();
- _seller.ShowMoney();
- Console.Write("Ваш выбор: ");
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case CommandBuyProduct:
- HandleBuyProduct();
- break;
- case CommandShowProducts:
- _seller.ShowProducts();
- break;
- case CommandShowPurchased:
- _buyer.ShowPurchasedProducts();
- break;
- case CommandExitProgram:
- isWork = ExitProgram();
- break;
- default:
- Console.WriteLine("Неверная команда!");
- break;
- }
- Console.WriteLine("Нажмите любую клавишу для продолжения...");
- Console.ReadKey();
- Console.Clear();
- }
- }
- private bool ExitProgram()
- {
- Console.WriteLine("Вы покинули магазин!");
- return false;
- }
- private void HandleBuyProduct()
- {
- _seller.ShowProducts();
- Console.Write("Введите название товара, который хотите купить: ");
- string productName = Console.ReadLine();
- BuyProduct(productName, _buyer);
- }
- private void BuyProduct(string productName, Buyer buyer)
- {
- Product product = _seller.SellProduct(productName);
- if (product != null)
- {
- if (buyer.CanPurchase(product.Price))
- {
- buyer.RemoveMoney(product.Price);
- _seller.AddMoney(product.Price);
- buyer.BuyProduct(product);
- _seller.FinalizeSell(product);
- Console.WriteLine($"Покупатель купил продукт {product.Title}.");
- }
- else
- {
- Console.WriteLine($"У покупателя недостаточно средств для покупки {product.Title}.");
- }
- }
- else
- {
- Console.WriteLine($"Товар {productName} не найден в магазине.");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement