Помощь в дописании "эмулятора" кофейного автомата - C#
Формулировка задачи:
Помогите дописать программу в С#, мои мысли иссякли
Решение задачи: «Помощь в дописании "эмулятора" кофейного автомата»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication22 { public class CoffeeMachine { public enum State { Off, On, Fail, Accept, Check, Complete }; public class MenuItem { public string Name { get; set; } public int Price { get; set; } public int Index { get; set; } public override string ToString() { return string.Format("{0}. {1} Цена: {2}", Index, Name, Price); } } State state = State.Off; List<MenuItem> menu = new List<MenuItem>(); public event EventHandler<State> ChangeState; public CoffeeMachine(bool powerOn = false) { menu.Add(new MenuItem() { Index = 1, Name = "Кофе", Price = 15 }); menu.Add(new MenuItem() { Index = 2, Name = "Чай", Price = 20 }); menu.Add(new MenuItem() { Index = 3, Name = "Экспрессо", Price = 20 }); menu.Add(new MenuItem() { Index = 4, Name = "Капучино", Price = 25 }); menu.Add(new MenuItem() { Index = 5, Name = "Ванильный капучино", Price = 30 }); menu.Add(new MenuItem() { Index = 6, Name = "Шоколад", Price = 25 }); menu.Add(new MenuItem() { Index = 7, Name = "Латте", Price = 30 }); } public void Power(bool powerOn) { state = powerOn == true ? State.On : State.Off; Change(); } private void Change() { if (ChangeState != null) ChangeState(this, state); } public string[] PrintMenu() { if (state != State.On) return new string[1] { "Машина не готова." }; return menu.Select(x => x.ToString()).ToArray(); } public int Work(int menuNumber, int cash) { state = State.Check; Change(); var menuItem = menu.Where(x => x.Index == menuNumber).FirstOrDefault(); if (menuItem == null || cash - menuItem.Price < 0) { state = State.Fail; Change(); Console.WriteLine("Элемент отсутствует в меню или у вас недостаточно денег."); return cash; } state = State.Accept; Change(); //.... state = State.Complete; Change(); return cash - menuItem.Price; } } public class Program { static void Main(string[] args) { Random rnd = new Random(); int cash = rnd.Next(10, 40); CoffeeMachine machine = new CoffeeMachine(); machine.ChangeState += machine_ChangeState; machine.Power(true); Console.WriteLine("\t Меню \n"); Console.WriteLine(string.Join("\n", machine.PrintMenu())); Console.Write("\nУ вас {0} денег.\nВыберите элемент меню:", cash); int select = int.Parse(Console.ReadLine()); Console.WriteLine("Готово. Остаток средств: {0}", machine.Work(select, cash)); Console.ReadKey(true); } static void machine_ChangeState(object sender, CoffeeMachine.State e) { switch (e) { case CoffeeMachine.State.On: Console.WriteLine("Машина включена."); break; case CoffeeMachine.State.Fail: Console.WriteLine("Ошибка."); break; case CoffeeMachine.State.Check: Console.WriteLine("Проверка..."); break; case CoffeeMachine.State.Accept: Console.WriteLine("Проверка пройдена."); break; case CoffeeMachine.State.Complete: Console.WriteLine("Выполнено."); break; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д