static void Main(string[] args) { // генерируем сдачу в автомате границы - случайные числа coin_1 = (uint)generator.Next(0, 10); coin_2 = (uint)generator.Next(0, 10); coin_5 = (uint)generator.Next(0, 10); coin_10 = (uint)generator.Next(0, 10); int user_balance = (int)CASH; // остаток на счету у покупателя machine_balance += coin_1 * RUBLE + coin_2 * TWO + coin_5 * FIVE + coin_10 * TEN; string command; // команда для управления меню cakes = new Cake(CAKE_N, CAKE_P, cake_q, CAKE_ID); biscuits = new Biscuit(BISCUIT_N, BUSCUIT_P, busciut_q, BISCUIT_ID); wafers = new Wafer(WAFER_N, WAFER_P, wafer_q, WAFER_ID); //собрали все продукты в список menu = new List<Product>(); menu.Add(cakes); menu.Add(biscuits); menu.Add(wafers); // допущение: если в автомате менее 20 рублей, то он не сможет выдать сдачу, // в таком случае он не принимает заказы от покупателей if (machine_balance > 20) { do { // предоставляем меню GetMenu(cakes, biscuits, wafers, user_balance); uint money = GetMoney("Введите сумму: ", user_balance); machine_balance += money; int id; // код продукта // если покупатель ввёл сумму, не прывашающую в его кошельке if (money <= user_balance) { user_balance -= (int)money; Console.WriteLine("\nВы внесли: {0} рублей", money); Console.WriteLine("Ваш остаток: {0} рублей", user_balance); // пока деньги не кончились while (money > 0) { // выбор продукта id = GetProductId(); Product choosen_product = menu.Find(item => item.Id == id); // если товар в наличии if (choosen_product.Quantity > 0) OrderProcessing(choosen_product, ref money, ref user_balance); // если товара в наличии нет else { Console.WriteLine("Выбранного товара нет в наличии..."); command = GetCommand("Нажмите + для выбора другого товара\n\t- для возврата денег: "); if (command == "+") continue; else { ReturnDelivery(money); user_balance += (int)money; Console.WriteLine("Доступно в кошельке: {0}", user_balance); money = 0; } } } } // если покупатель попытался ввёл больше, чем у него есть (в реальной жизни так не получится) else { Console.WriteLine("Недостаточно средств в кошельке..."); money = (uint)user_balance; user_balance = 0; command = GetCommand("Вернуть сдачу? (+ / -): "); if (command == "+") { ReturnDelivery(money); user_balance += (int)money; Console.WriteLine("Доступно в кошельке: {0}", user_balance); money = 0; } else money = GetMoney("Введите деньги: ", user_balance); } Console.WriteLine("\nДля выхода из программы нажмите ESCAPE...\n"); } while (Console.ReadKey().Key != ConsoleKey.Escape); } else Console.WriteLine("К сожалению, в автомате нет сдачи..."); }
/// <summary> /// Метод выводит на экран меню автомата /// </summary> /// <param name="cakes"></param> кексы /// <param name="biscuits"></param> печенья /// <param name="wafers"></param> вафли /// <param name="user_balance"></param> кол-во денег у пользователя в кошельке public static void GetMenu(Cake cakes, Biscuit biscuits, Wafer wafers, int user_balance) { Console.WriteLine("\n=============================="); Console.WriteLine("Название | Цена | Кол-во | Код"); Console.WriteLine("=============================="); Console.WriteLine(cakes.ToString()); Console.WriteLine(biscuits.ToString()); Console.WriteLine(wafers.ToString()); Console.WriteLine("\r\nАвтомат принимает монеты по 1, 2, 5, 10 рублей\n"); Console.WriteLine("ДОСТУПНО В КОШЕЛЬКЕ: {0}\n", user_balance); }