VodVas

Untitled

Nov 24th, 2023
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.97 KB | None | 0 0
  1. using System.Diagnostics;
  2. using System.Xml.Linq;
  3.  
  4. namespace Супермаркет
  5. {
  6. internal class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. Supermarket supermarket = new Supermarket();
  11.  
  12. supermarket.Work();
  13. }
  14. }
  15.  
  16. class Supermarket
  17. {
  18. private Client _client = new Client();
  19.  
  20. private List<Product> _products = new List<Product>();
  21. private List<Product> _clientBasket = new List<Product>();
  22.  
  23. private int _purchaseAmount;
  24. private int _quantityClients;
  25.  
  26. public Supermarket()
  27. {
  28. _clientBasket = _client.ReturnClientBasket();
  29.  
  30. _products.Add(new Product(0, "Пакет", 10));
  31. _products.Add(new Product(1, "Бананы", 85));
  32. _products.Add(new Product(2, "Молоко", 65));
  33. _products.Add(new Product(3, "Пиво", 50));
  34. _products.Add(new Product(4, "Курица", 320));
  35. _products.Add(new Product(5, "Сосиски", 125));
  36. _products.Add(new Product(6, "Кола", 75));
  37. }
  38.  
  39. public void Work()
  40. {
  41. Console.WriteLine("Введите количество посетителей:");
  42.  
  43. _quantityClients = Utility.ReturnInputNumber();
  44.  
  45. for (int i = 0; i < _quantityClients; i++)
  46. {
  47. FillBasket();
  48. CanPay();
  49.  
  50. Console.ForegroundColor = ConsoleColor.DarkYellow;
  51. Console.WriteLine("\nНажмите любую клавишу для вызова следующего клиента");
  52. Console.ForegroundColor = ConsoleColor.White;
  53.  
  54. Console.ReadKey();
  55. Console.Clear();
  56.  
  57. _purchaseAmount = 0;
  58.  
  59. _client = new Client();
  60. }
  61. }
  62.  
  63. private void CanPay()
  64. {
  65. while (_client.Money < _purchaseAmount)
  66. {
  67. Console.ForegroundColor = ConsoleColor.DarkGreen;
  68. Console.Write($"\nСумма покупки: {_purchaseAmount}");
  69. Console.ForegroundColor = ConsoleColor.White;
  70.  
  71. Console.ForegroundColor = ConsoleColor.DarkYellow;
  72. Console.Write($"\nДеньги покупателя: {_client.Money}\n");
  73. Console.ForegroundColor = ConsoleColor.White;
  74.  
  75. Console.ForegroundColor = ConsoleColor.Red;
  76. Console.WriteLine("Денег не хватает, Галя! Отмена!");
  77. Console.ForegroundColor = ConsoleColor.White;
  78.  
  79. RemoveProduct();
  80. }
  81.  
  82. if (_clientBasket.Count == 0)
  83. {
  84. Console.ForegroundColor = ConsoleColor.DarkRed;
  85. Console.WriteLine("\nЖалобную книгу мне! (Клиент передумал покупать в этом магазине)");
  86. Console.ForegroundColor = ConsoleColor.White;
  87.  
  88. return;
  89. }
  90.  
  91. Console.ForegroundColor = ConsoleColor.Yellow;
  92. Console.Write($"\nСумма покупки: {_purchaseAmount}");
  93. Console.ForegroundColor = ConsoleColor.White;
  94.  
  95. Console.ForegroundColor = ConsoleColor.DarkYellow;
  96. Console.Write($"\nДеньги покупателя: {_client.Money}");
  97. Console.ForegroundColor = ConsoleColor.White;
  98.  
  99. Console.ForegroundColor = ConsoleColor.Green;
  100. Console.WriteLine("\nДенег хватает\n");
  101. Console.ForegroundColor = ConsoleColor.White;
  102.  
  103. Console.ForegroundColor = ConsoleColor.DarkCyan;
  104. Console.WriteLine("Купленные товары:\n");
  105. Console.ForegroundColor = ConsoleColor.White;
  106.  
  107. ShowProductBasket();
  108. }
  109.  
  110. private void RemoveProduct()
  111. {
  112. int minRandomNumber = 0;
  113.  
  114. int randomProduct = Utility.GenerateRandomNumber(minRandomNumber, _clientBasket.Count);
  115.  
  116. Console.Write("Удаленный товар: ");
  117.  
  118. ShowProduct(randomProduct);
  119.  
  120. _purchaseAmount -= _clientBasket[randomProduct].Price;
  121.  
  122. _clientBasket.RemoveAt(randomProduct);
  123. }
  124.  
  125. private void ShowProduct(int foundProduct)
  126. {
  127. Console.WriteLine($"ID: {_clientBasket[foundProduct].Id} Название: {_clientBasket[foundProduct].Title} Цена: {_clientBasket[foundProduct].Price} Руб.");
  128. }
  129.  
  130. private void ShowProductBasket()
  131. {
  132. for (int i = 0; i < _clientBasket.Count; i++)
  133. {
  134. Console.WriteLine($"ID: {_clientBasket[i].Id} Название: {_clientBasket[i].Title} Цена: {_clientBasket[i].Price} Руб.");
  135. }
  136. }
  137.  
  138. private void FillBasket()
  139. {
  140. int minQuantityPurchases = 2;
  141. int maxQuantityPurchases = 10;
  142. int minNumberIDProduct = 0;
  143.  
  144. int quantityPurchases = Utility.GenerateRandomNumber(minQuantityPurchases, maxQuantityPurchases);
  145.  
  146. _clientBasket = new List<Product>(quantityPurchases);
  147.  
  148. for (int i = 0; i < quantityPurchases; i++)
  149. {
  150. int randomProduct = Utility.GenerateRandomNumber(minNumberIDProduct, _products.Count);
  151.  
  152. _clientBasket.Add(_products[randomProduct]);
  153.  
  154. _purchaseAmount += _products[randomProduct].Price;
  155.  
  156. ShowProduct(i);
  157. }
  158. }
  159. }
  160. class Client
  161. {
  162. private int minCashInPocket = 100;
  163. private int maxCashInPocket = 1200;
  164.  
  165. private List<Product> _clientBasket = new List<Product>();
  166.  
  167. public Client()
  168. {
  169. Money = Utility.GenerateRandomNumber(minCashInPocket, maxCashInPocket);
  170. }
  171.  
  172. public int Money { get; private set; }
  173.  
  174. public List<Product> ReturnClientBasket()
  175. {
  176. return _clientBasket;
  177. }
  178. }
  179.  
  180. class Product
  181. {
  182. public Product(int id, string name, int price)
  183. {
  184. Id = id;
  185. Title = name;
  186. Price = price;
  187. }
  188.  
  189. public int Id { get; private set; }
  190. public string Title { get; private set; }
  191. public int Price { get; private set; }
  192. }
  193.  
  194. class Utility
  195. {
  196. private static Random _random = new Random();
  197.  
  198. public static int GenerateRandomNumber(int min, int max)
  199. {
  200. int randomNumber = _random.Next(min, max);
  201.  
  202. return randomNumber;
  203. }
  204.  
  205. public static int ReturnInputNumber()
  206. {
  207. int number;
  208.  
  209. while (int.TryParse(Console.ReadLine(), out number) == false)
  210. {
  211. Console.WriteLine("Введено не число, попробуйте еще раз: ");
  212. }
  213.  
  214. return number;
  215. }
  216. }
  217. }
Add Comment
Please, Sign In to add comment