Ejemplo n.º 1
0
        private void enterButton_Click(object sender, EventArgs e)
        {
            //Пользовательский запрос
            decimal.TryParse(inputTextBox.Text, out _usersRequest);
            Log.Debug("Users request: " + _usersRequest);

            //Начало работы с введённой пользователем суммой
            if (_usersRequest < _cashMachine.Balance && _usersRequest >= 0)
            {
                //Выданная сумма
                decimal withdrawnSum = 0;

                //Вывод && подсчёт выданной суммы
                DisplayPrintln('\n' + _lang.YourMoney + ":");
                foreach (var item in _cashMachine.WithdrawMoney(_usersRequest).Banknotes)
                {
                    var banknoteNomimal = item.Key.Nominal;
                    var banknotesCount  = item.Value;
                    withdrawnSum += banknoteNomimal * banknotesCount;
                    DisplayPrintln(_lang.Banknote + ":" + item.Key.Nominal + " <-> " + _lang.Number + ": " +
                                   item.Value);
                }
                DisplayPrintln(_lang.WithdrawnSum + ": " + withdrawnSum);

                //Вызов события добавления записи статистики
                _statsCounter.Add(_cashMachine.Balance, withdrawnSum);

                //Вывод текущего состояния счёта
                DisplayPrintln('\n' + _lang.Status + ':');
                DisplayPrintln(_cashMachine.Status() + '\n');
            }
            else if (_usersRequest > _cashMachine.Balance)
            {
                DisplayPrintln('\n' + _lang.NotEnoughMoney + "\n\n");
                Log.Error("Not enough money");
            }

            inputTextBox.Clear();
        }
Ejemplo n.º 2
0
        private static void Main(string[] args)
        {
            //Путь по умолчанию к файлу с кассетами
            var path             = @"D:\Visual Studio\OOP\ATM\bin\Debug\data.json";
            var cashMachine      = new CashMachine(path);
            var lang             = new LanguageConfig("en-US");
            var statsCounter     = new StatsCounter();
            var commandPerformer = new CommandPerformer(cashMachine, lang, statsCounter);


            XmlConfigurator.Configure();

            //Вывод текущего состояния счёта
            Console.WriteLine(lang.Status + ":");
            Console.WriteLine(cashMachine.Status() + '\n');

            //Начало обработки пользовательского ввода
            while (true)
            {
                Console.Write(lang.AskForMoney + ": ");

                //Пользовательский запрос
                var request = Console.ReadLine();
                Log.Debug("Users request: " + request);

                //Введённая пользователем сумма
                decimal usersMoney = 0;

                //Выполнение команды && проверка, команда ли это
                var isCommand = request != null && commandPerformer.TryPerform(request.Trim().ToLower());
                if (isCommand || decimal.TryParse(request, out usersMoney))
                {
                    //Начало работы с введённой пользователем суммой
                    if (!isCommand && usersMoney < cashMachine.Balance && usersMoney >= 0)
                    {
                        //Выданная сумма
                        decimal withdrawnSum = 0;

                        //Вывод && подсчёт выданной суммы
                        Console.WriteLine('\n' + lang.YourMoney + ":");
                        foreach (var item in cashMachine.WithdrawMoney(usersMoney).Banknotes)
                        {
                            var banknoteNomimal = item.Key.Nominal;
                            var banknotesCount  = item.Value;
                            withdrawnSum += banknoteNomimal * banknotesCount;
                            Console.WriteLine(lang.Banknote + ":" + item.Key.Nominal + " <-> " + lang.Number + ": " +
                                              item.Value);
                        }
                        Console.WriteLine(lang.WithdrawnSum + ": " + withdrawnSum);

                        //Вызов события добавления записи статистики
                        statsCounter.Add(cashMachine.Balance, withdrawnSum);

                        //Вывод текущего состояния счёта
                        Console.WriteLine('\n' + lang.Status + ':');
                        Console.WriteLine(cashMachine.Status() + '\n');
                    }
                    else if (usersMoney > cashMachine.Balance)
                    {
                        Console.Write('\n' + lang.NotEnoughMoney + "\n\n");
                        Log.Error("Not enough money");
                    }
                }
                //Обработка некорректного ввода
                else
                {
                    Console.Write('\n' + lang.IncorrectInput + "\n\n");
                    Log.Error("Incorrect input");
                }
            }
        }