Пример #1
0
        public void Withdrawl_Will_Use_Smaller_Bills_If_Needed()
        {
            //arrange
            ATM.ATM testDrawer = new ATM.ATM();

            //act
            for (int i = 0; i < 6; i++)
            {
                testDrawer.Withdraw(240);
            }

            //assert for a few denominations
            int expected100BillCount = 0;
            int actual100BillCount   = testDrawer.GetDenominationCount("$100");

            Assert.AreEqual(expected100BillCount, actual100BillCount, "$100 Doesnt Match");

            int expected50BillCount = 6;
            int actual50BillCount   = testDrawer.GetDenominationCount("$50");

            Assert.AreEqual(expected50BillCount, actual50BillCount, "$50 Doesnt Match");

            int expected10BillCount = 6;
            int actual10BillCount   = testDrawer.GetDenominationCount("$10");

            Assert.AreEqual(expected10BillCount, actual10BillCount, "$10 Doesnt Match");
        }
Пример #2
0
 public ATM_Mainform()
 {
     InitializeComponent();
     toScreen = richTextBox1;
     toListBox = listBox1;
     ATMObject = new ATM();
     __thread = new Thread(new ThreadStart( StartATM ) );
     __thread.IsBackground = true;
     __thread.Start();
 }
Пример #3
0
        /**
         * 
         */
        public CambioPIN(ATM atm, Sesion sesion, string nuevoPIN) {
            base.Fecha = DateTime.Now;
            base.Atm = atm;
            base.Sesion = sesion;

            base.getSecuencia();
            this.nuevoPIN = nuevoPIN;

            base.Comision = 0M;
            base.EsImprimible = false;
        }
Пример #4
0
        /**
         * 
         */
        public ConsultaSaldo(ATM atm, Sesion sesion)
        {
            base.Fecha = DateTime.Now;
            base.Atm = atm;
            base.Sesion = sesion;

            base.getSecuencia();

            base.Comision = 15M;
            base.EsImprimible = true;
        }
Пример #5
0
        /**
         * 
         */
        public Login(ATM atm, Sesion sesion)
        {
            base.Fecha = DateTime.Now;
            base.Atm = atm;
            base.Sesion = sesion;

            base.getSecuencia();
            
            // Definimos un comportamiento menos dinamico pero correcto
            base.Comision = 0M;
            base.EsImprimible = false;
        }
Пример #6
0
        public void Drawer_Will_Not_Overdraft()
        {
            //arrange
            int tooMuchMoney = 2000000;

            ATM.ATM testDrawer = new ATM.ATM();

            //act
            testDrawer.Withdraw(tooMuchMoney);

            //assert
            Assert.IsTrue(testDrawer.Total > 0);
        }
Пример #7
0
        /**
         * 
         */
        public Deposito(ATM atm, Sesion sesion, decimal monto)
        {
            base.Fecha = DateTime.Now;
            base.Atm = atm;
            base.Sesion = sesion;

            base.getSecuencia();

            this.monto = monto;

            base.Comision = 15M;
            base.EsImprimible = true;
        }
Пример #8
0
        public void Withdrawl_Updates_Drawer()
        {
            //arrange
            int withdrawlAmount = 217;
            int expected        = 1643;

            ATM.ATM testDrawer = new ATM.ATM();

            //act
            testDrawer.Withdraw(withdrawlAmount);

            //assert
            int actual = testDrawer.Total;

            Assert.AreEqual(expected, testDrawer.Total);
        }
Пример #9
0
        //Activated to enable data racing with semaphores
        private void button3_Click(object sender, EventArgs e)
        {
            testingstate = 2;
            test         = new ATM(ac, testingstate, this);
            test2        = new ATM(ac, testingstate, this);
            test.setOtherATM(test2);
            test2.setOtherATM(test);
            ThreadStart workracing1 = new ThreadStart(workThread);

            tester1 = new Thread(workracing1);
            tester1.Start();
            ThreadStart workracing2 = new ThreadStart(workThread2);

            tester2 = new Thread(workracing2);
            tester2.Start();
            string text = "---> TWO ATMS OPENED FOR TESTING";

            mainBox.AppendText(text);
            mainBox.AppendText(Environment.NewLine);
        }
Пример #10
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["LoggedIn"] == null)
            {
                System.Threading.Thread.Sleep(2000);
                HttpContext.Current.Response.Redirect("Default.aspx");
            }

            theAtm = Session["theAtm"] as ATM;
            cardNumber = Convert.ToInt32(Session["LoggedIn"]);

            try
            {
                LabelBalance.Text = theAtm.GetBalance(cardNumber).ToString();
            }
            catch (Exception ex)
            {
                LabelBalance.Text = ex.Message;

            }
        }
Пример #11
0
        private void UpdateATMInfo()
        {
            ATM  a  = ATM.GetInstance();
            Cash dc = a.CashInDispenser();
            Cash rc = a.CashInReceiver();

            d20Label.Text    = dc.Twenties.ToString();
            d10Label.Text    = dc.Tens.ToString();
            dTotalLabel.Text = dc.Total.ToString();

            r100Label.Text   = rc.Hundreds.ToString();
            r50Label.Text    = rc.Fifties.ToString();
            r5Label.Text     = rc.Fives.ToString();
            r1Label.Text     = rc.Ones.ToString();
            rTotalLabel.Text = rc.Total.ToString();

            machineChecks.Items.Clear();
            Check[] checks = ATM.GetInstance().CheckInfo();
            foreach (Check c in checks)
            {
                machineChecks.Items.Add(c);
            }
        }
Пример #12
0
        private void FillPersonInfo()
        {
            personLabel.Text  = atMachine.PersonType;
            personName.Text   = atMachine.Name;
            idLabel.Text      = atMachine.ID;
            hundredLabel.Text = atMachine.Cash.Hundreds.ToString();
            fiftyLabel.Text   = atMachine.Cash.Fifties.ToString();
            twentyLabel.Text  = atMachine.Cash.Twenties.ToString();
            tenLabrel.Text    = atMachine.Cash.Tens.ToString();
            fiveLabel.Text    = atMachine.Cash.Fives.ToString();
            oneLabel.Text     = atMachine.Cash.Ones.ToString();
            totalLabel.Text   = "$" + atMachine.Cash.Total;

            ATM.GetInstance().AddMembership(atMachine.Member);
            Check[] checks = atMachine.ChecksOnHand();
            personChecks.Items.Clear();


            foreach (Check c in checks)
            {
                personChecks.Items.Add(c);
            }
        }
Пример #13
0
        static void Main(string[] args)
        {
            //Load initial data
            ATM atm = new ATM();

            //Weclome Message
            Console.WriteLine("Welcome to the Command Line ATM");
            Console.WriteLine("////////////////////////////");
            Console.WriteLine("");
            DisplayCommands();


            //Display Current Cash Register
            atm.DisplayContents();

            //Enter Command
            string command = String.Empty;

            while (command != "Q")
            {
                Console.WriteLine("Please Enter a Command");
                string[] response = Console.ReadLine().ToUpper().Split(' ');
                command = response[0];

                switch (command)
                {
                case "R":     //Restock
                    atm.Restock();
                    Console.WriteLine("ATM Restocked");
                    atm.DisplayContents();
                    break;

                case "W":     //Withdraw
                    //convert amount string to int, break if doesnt work
                    int withdrawAmount;
                    try
                    {
                        withdrawAmount = Convert.ToInt32(response[1].Split('$')[1]);
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Invalid $ Amount, make sure you ncluded '$'");
                        break;
                    }

                    //Prevent Overdrafting
                    if (withdrawAmount > atm.Total)
                    {
                        Console.WriteLine($"Withdrawl amount is more than machine total, please enter an amount smaller than ${atm.Total}");
                        break;
                    }

                    //Attempt Withdrawl
                    var result = atm.Withdraw(withdrawAmount);
                    if (result.success)
                    {
                        Console.WriteLine($"Success: Dispensed ${result.amount}");
                        atm.DisplayContents();
                    }
                    else
                    {
                        Console.WriteLine($"Insufficient Funds to complete this request. Please request a new amount");
                    }

                    break;

                case "I":     //Display Denominations
                    for (int i = 1; i < response.Length; i++)
                    {
                        //Use parsed string to find the denomination in the drawer
                        string denominationName = response[i];
                        int    count            = atm.GetDenominationCount(denominationName);

                        //If Denomination is not found, alert user
                        if (count == -1)
                        {
                            Console.WriteLine($"Denomination {denominationName} was not found. Did you remember to Include '$'?");
                        }
                        else     // Write denomination to the console
                        {
                            Console.WriteLine($"{denominationName} - {count} Bills");
                        }
                    }
                    break;

                case "Q":     //Quit
                    Console.WriteLine("Thanks for using the ATM");
                    System.Threading.Thread.Sleep(2000);
                    break;

                case "H":     //Command list (Help)
                    DisplayCommands();
                    break;

                default:
                    Console.WriteLine("Invalid Command");
                    break;
                }
            }
        }
Пример #14
0
        private void button_replenishment_Click(object sender, EventArgs e)
        {
            uint number_to_replenish = 0;                    // общее количество купюр для пополнения
            bool everything_is_ok    = true;

            for (int i = 0; i < textbox_array.Length; i++)   // идём по всем номиналам купюр
            {
                try
                {
                    uint quantity_for_value = 0;
                    if (textbox_array[i].Text != "")          // если поле пустое - оставляем ноль, иначе ловит ошибку
                    // здесь могут быть и буквы, поэтому это всё происходит под try:
                    {
                        quantity_for_value = Convert.ToUInt32(textbox_array[i].Text);
                    }
                    if (quantity_for_value < 0)               // отрицательное значение - тоже плохо
                    {
                        everything_is_ok      = false;
                        label_what_to_do.Text = "Количества не могут быть отрицательными!";
                    }
                    number_to_replenish += quantity_for_value; // количество купюр увеличиваем на значение из поля
                    // проверяем, не превысит ли количество вносимых купюр установленное максимально возможное:
                    if ((number_to_replenish + ATM.how_many_banknotes()) > ATM.get_maximum_banknotes_number())
                    {
                        everything_is_ok      = false;
                        label_what_to_do.Text = "Ограничение! Общее количество не должно превышать "
                                                + (ATM.get_maximum_banknotes_number() - ATM.how_many_banknotes());
                    }
                }
                catch
                {
                    everything_is_ok      = false;
                    label_what_to_do.Text = "Введены некорректные количества, введите корректные:";
                }
                if (!everything_is_ok)
                {
                    break;                     // если на каком-то поле некорректное значение или перебор по купюрам, обрываем проверку
                }
            }

            if (!everything_is_ok)
            {
                // красим строку сигнальным цветом, чтобы пользователь увидел, что надо исправить
                label_what_to_do.ForeColor = Color.Yellow;
            }

            else // everything_is_ok
            {
                uint summ_of_replenishment = 0;                  // считаем общую сумму, на которую пополняем
                var  value = Banknote_values.ten_rubles;
                for (int i = 0; i < textbox_array.Length; i++)   // опять идём по всем номиналам, полям для количеств
                {
                    textbox_array[i].Visible = false;            // выше было проверено, что всё ок, поэтому поля для ввода количеств больше не нужны
                    uint quantity_for_value = 0;                 // количество для пополнения определённого номинала
                    if (textbox_array[i].Text != "")             // иначе не сможем конвертировать пустоту в число
                    {
                        quantity_for_value = Convert.ToUInt32(textbox_array[i].Text);
                    }
                    ATM.replenish_banknote(Banknote.get_banknote_value_by_text(value), quantity_for_value);
                    summ_of_replenishment += (Banknote.get_banknote_value_by_text(value) * quantity_for_value);
                    value++;
                }
                // показываем результат, прячем лишнее
                label_what_to_do.Text      = "Успешно внесена сумма: " + summ_of_replenishment;
                label_what_to_do.ForeColor = Color.MediumSpringGreen;

                button_replenishment.Visible = false;
                label1.Visible = false;
                label2.Visible = false;
                label3.Visible = false;
                label4.Visible = false;
                label5.Visible = false;
                label6.Visible = false;
                label7.Visible = false;
                label8.Visible = false;
            }
        }
Пример #15
0
 static void closeCard()
 {
     ATM.closeCard();
 }
Пример #16
0
 public Main_menu_form()
 {
     InitializeComponent();
     // при запуске главного меню в первый раз, заполняем банкомат случайным количеством денег в рамках ограничений на количество купюр
     ATM.create_random_ATM_stock();
 }
Пример #17
0
 //Used for determining the paired ATM's
 public void setOtherATM(ATM other)
 {
     otherATM = other;
 }
Пример #18
0
 protected void Page_Load(object sender, EventArgs e)
 {
     atm = new ATM(1);
     Session["theATM"] = atm;
 }
Пример #19
0
        private void UpdateAccountInfo()
        {
            ATM a = ATM.GetInstance();

            accountInfo.Text = $"Account# {a.CurrentAccount.Number} ${a.CurrentAccount.Balance}";
        }
Пример #20
0
 private void logoutButton_Click(object sender, EventArgs e)
 {
     ATM.GetInstance().Logout();
     logoutButton.Visible = false;
     ChangeTab(ATM.GetInstance().CurrentScreen);
 }
Пример #21
0
 private void invButton_Click(object sender, EventArgs e)
 {
     ATM.GetInstance().SelectAccount(2);
     ChangeTab(ATM.GetInstance().CurrentScreen);
     UpdateAccountInfo();
 }
Пример #22
0
        protected void Page_Load(object sender, EventArgs e)
        {
            atm = new ATM(1);

            // Testkod då databusen jävlas med mig
            //List<string> hej = new List<string>();//----------

            //hej.Add("tja"); //----------
            //hej.Add("hej");//----------
            //hej.Add("hallå");//----------
            //hej.Add("hejdå");//----------

            //Session["PanelRecipe"] =hej; //----------

            // S**t på testkoden

            if (Session["PanelRecipe"] != null)
            {
                Create25Recipe();
                System.Threading.Thread.Sleep(500);
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Toogle", "toggleRecipe()", true);
            }

            //// Testkod då databusen jävlas med mig
            //int[] nej = new int[2]; //----------

            //nej[0] = 3; //----------
            //nej[1] = 2; //----------

            //Session["GetMoney"] = nej; //----------
            //// S**t på testkoden

            if (Session["GetMoney"] != null)
            {
                GetMyMoney();
                System.Threading.Thread.Sleep(7000);
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Toogle", "toggleMoney()", true);
            }
        }
Пример #23
0
        public static void Menu(List <Account> listOfAccounts, Account currentAccount)
        {
            int    userChoice;
            string usernameEntry;
            string passwordEntry;
            int    withdrawDepositEntry;

            Console.WriteLine("What would you like to do?: \n" +
                              "[1] Register an Account \n" +
                              "[2] Login \n");
            userChoice = int.Parse(Console.ReadLine());

            if (userChoice == 1)
            {
                Console.WriteLine("Enter your username \n");
                usernameEntry = Console.ReadLine();

                Console.WriteLine("\nEnter your password \n");
                passwordEntry = Console.ReadLine();
                ATM.Register(usernameEntry, passwordEntry, listOfAccounts);
            }
            else if (userChoice == 2)
            {
                Console.WriteLine("Enter your username \n");
                usernameEntry = Console.ReadLine();

                Console.WriteLine("\nEnter your password \n");
                passwordEntry  = Console.ReadLine();
                currentAccount = ATM.Login(usernameEntry, passwordEntry, listOfAccounts, currentAccount);
            }
            else
            {
                Console.WriteLine("Error enter a valid selection");
                Console.Clear();
            }

            if (currentAccount.Name != null && currentAccount.Password != null)
            {
                while (currentAccount.Name != null && currentAccount.Password != null)
                {
                    {
                        Console.WriteLine("What would you like to do?: \n" +
                                          "[1] Logout \n" +
                                          "[2] Show Current Balance \n" +
                                          "[3] Deposit \n" +
                                          "[4} Withdraw \n");
                        userChoice = int.Parse(Console.ReadLine());

                        if (userChoice == 1)
                        {
                            Console.Clear();
                            currentAccount = ATM.Logout(currentAccount);
                        }
                        else if (userChoice == 2)
                        {
                            ATM.CheckBalance(currentAccount);
                        }
                        else if (userChoice == 3)
                        {
                            Console.WriteLine("How much would you like to deposit? \n");
                            withdrawDepositEntry = int.Parse(Console.ReadLine());
                            currentAccount       = ATM.Deposit(withdrawDepositEntry, currentAccount);
                        }
                        else if (userChoice == 4)
                        {
                            Console.WriteLine("How much would you like to withdraw? \n");
                            withdrawDepositEntry = int.Parse(Console.ReadLine());
                            currentAccount       = ATM.Withdraw(withdrawDepositEntry, currentAccount);
                        }
                    }
                }
            }
        }
        // функция проверяет, можем ли мы выдать заданную сумму и заполняет массив купюр (достоинство-количество),
        // которыми можно выдать. Возвращает истину, если всё получилось и ложь - если нет.
        private bool check_and_withdrawal(bool by_large_values)
        {
            label_no_result.Visible = false;
            uint users_wish = 0; // в этой переменной будем хранить сумму, которую хочет получить пользователь

            // СНАЧАЛА ПРОВЕРЯЕМ, НОРМАЛЬНУЮ ЛИ СУММУ ХОЧЕТ ПОЛЬЗОВАТЕЛЬ
            try
            {
                // пытаемся получить сумму из окошка для неё, если там не число - ловим ошибку
                users_wish = Convert.ToUInt32(textBox_for_summ.Text);
            }
            catch
            {
                MessageBox.Show("Запрашиваемая сумма не корректна!");
            }
            if (users_wish == 0)
            // 0 - нормальное число, но не в данном случае
            {
                label_no_result.Text = "Введите ненулевую и недробную сумму";
                return(false);
            }
            // если пользователь хочет больше, чем есть - тоже сразу нет:
            uint ATM_balanсe = ATM.how_much_money();

            if (users_wish > ATM_balanсe)
            {
                label_no_result.Text = "В банкомате нет столько денег!\nПроверьте баланс и попробуйте ввести сумму меньше.";
                return(false);
            }
            // если пользователь хочет более мелкие деньги, чем есть, то тоже нет:
            if (users_wish % Banknote.get_banknote_value_by_text(min_available_value()) != 0)
            {
                label_no_result.Text  = "Минимальная доступная купюра: ";
                label_no_result.Text += Banknote.get_banknote_value_by_text(min_available_value());
                label_no_result.Text += "р. Скорректируйте сумму для выдачи с учётом этого.";
                return(false);
            }

            // для каждой транзакции будем заполнять массив с проверочными остатками заново:
            banknotes_stock_for_check.Clear();

            // пара сокращений:
            Banknote_values min_value = Banknote_values.ten_rubles;
            Banknote_values max_value = Banknote_values.how_many_banknotes_values;

            if (by_large_values) // нужна выдача крупными купюрами, о мелких не беспокоимся, просто копируем данные
            {
                for (var value = min_value; value < max_value; value++)
                {
                    Banknote next_banknote = new Banknote(Banknote.get_banknote_value_by_text(value), ATM.how_many_banknotes_of(value));
                    banknotes_stock_for_check.Add(next_banknote);
                }
            }
            else // нужна выдача мелкими купюрами, тут код подлиннее, чтобы сразу понять, какими купюрами можем обойтись
            {
                // изначально полагаем максимальную мелкую купюру равной 200р
                Banknote_values max_small_value      = Banknote_values.two_hundred_rubles;
                uint            summ_of_small_values = 0; // будем считать сумму, которую можем выдать мелкими купюрами

                // копируем остатки банкомата в массив для проверки выдачи суммы, считаем сумму мелких купюр:
                for (var value = min_value; value < max_value; value++)
                {
                    Banknote next_banknote = new Banknote(Banknote.get_banknote_value_by_text(value), ATM.how_many_banknotes_of(value));
                    banknotes_stock_for_check.Add(next_banknote);
                    if (value <= max_small_value)
                    {
                        summ_of_small_values += next_banknote.get_summ();
                        // если посчитали всю сумму мелкими купюрами, и её не хватает, то добавляем к мелким следующую купюру
                        if ((value == max_small_value) && (summ_of_small_values < users_wish))
                        {
                            max_small_value++;  // мы не будем проверять здесь, что значение выйдет за предел диапазона, т.к. уже проверили, что всех денег банкомата для суммы хватит
                        }
                    }
                }
                max_value = max_small_value;  // ограничиваем максимальный номинал максимальной мелкой купюрой, которой хватит для выдачи суммы мелкими купюрами
            }

            // очистим массив снимаемых купюр, будем пополнять его по мере набора желаемой суммы
            try_to_withdraw.Clear();

            // сумма, которую снимаем:
            uint total_summ_to_withdraw = 0;

            // ЖАДНЫЙ АЛГОРИТМ, подбираем купюры для выдачи начиная с самой крупной подходящей:
            while (users_wish > 0) // будем уменьшать это значение по мере подбора банкнот
            {
                // идём от наиболее больших сумм, это же проверка, так мы быстрее наберём нужную сумму
                Banknote_values max_enum_value = max_available_value_less_than(users_wish, max_value);
                var             max_available_banknote_value = Banknote.get_banknote_value_by_text(max_enum_value);

                // максимально "доступный" номинал по факту может оказаться и не доступным:
                if (banknotes_stock_for_check[Convert.ToInt32(max_enum_value)].get_banknote_quantity() == 0)
                {
                    // тогда мы не можем эту купюру использовать и набор суммы завершён
                    label_no_result.Text  = "Не удаётся набрать запрашиваемую сумму, не хватает каких-то купюр.\n";
                    label_no_result.Text += "Попробуйте ввести сумму ";
                    label_no_result.Text += Convert.ToString(total_summ_to_withdraw);
                    // очистим уже частично заполненный массив снимаемых купюр:
                    try_to_withdraw.Clear();
                    return(false);           // проверка окончена
                }
                // ИНАЧЕ продолжаем, добавляем купюру в список для снятия:
                banknotes_stock_for_check[Convert.ToInt32(max_enum_value)].substract_banknote();
                try_to_withdraw.Add(max_available_banknote_value);
                total_summ_to_withdraw += max_available_banknote_value;
                users_wish             -= max_available_banknote_value;
            }
            // дошли до сюда, значит набрали всю сумму

            // скрываем кнопки и поле для суммы, готовим текст о результате
            textBox_for_summ.Visible      = false;
            button_by_small_value.Visible = false;
            button_by_large_value.Visible = false;

            // снимаем все подобранные банкноты по очереди, и печатаем их неповторяющиеся номиналы
            var    used_banknote            = try_to_withdraw[0]; // это для печати, сохраняем номинал первой банкноты на выдачу
            var    number_of_used_banknotes = 0;                  // это тоже для печати
            string info_about_banknotes     = "\nиспользованы купюры:\n" + used_banknote;

            foreach (var value in try_to_withdraw)
            {
                ATM.withdraw_banknote(value);
                if (value != used_banknote)           // показываем количество для выданной купюры
                {
                    info_about_banknotes    += " x " + number_of_used_banknotes + '\n' + value;
                    used_banknote            = value; // начинаем рассматривать следующую
                    number_of_used_banknotes = 0;
                }
                number_of_used_banknotes++;
            }
            info_about_banknotes += " x " + number_of_used_banknotes;   // добавляем информацию о количестве последней выданной купюры

            label_for_positive_result.Text    = "ВЫДАНА СУММА " + total_summ_to_withdraw;
            label_for_positive_result.Text   += info_about_banknotes;
            label_for_positive_result.Visible = true;

            return(true);
        }
Пример #25
0
        static void Main(string[] args)
        {
            string input   = "input";
            char   command = 'a';
            ATM    atm     = new ATM();

            Console.WriteLine("Welcome to the ATM.");
            Console.WriteLine("Options:");
            Console.WriteLine("1. Withdraw - Press W plus amount in the form 'W $x'");
            Console.WriteLine("2. Display Balance: Press I followed by the bills that you wish to check in the format I $x $y $z");
            Console.WriteLine("3. Restock the machine: Press R");
            Console.WriteLine("4. Quit: Press Q");

            do
            {
                input = Console.ReadLine();

                try
                {
                    command = input[0];
                }
                catch (IndexOutOfRangeException)
                {
                    Console.WriteLine("Error: Invalid command");
                    continue;
                }

                if (command.Equals('W') || command.Equals('I') || command.Equals('R') || command.Equals('Q'))
                {
                    switch (command)
                    {
                    case 'W':
                        string temp = input.Substring(input.IndexOf("$") + 1);
                        int    amt  = 0;
                        try
                        {
                            amt = int.Parse(temp);
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Error: Invalid command");
                            break;
                        }
                        bool success = atm.Withdraw(amt);
                        if (success)
                        {
                            Console.WriteLine("Success: Dispensed " + "$" + amt);
                            Console.WriteLine();
                            break;
                        }
                        else
                        {
                            Console.WriteLine("Error: Insufficient Funds");
                            Console.WriteLine();
                        }
                        break;

                    case 'I':
                        int           i = 0;
                        List <string> sDenominations = new List <string>();
                        StringBuilder d = new StringBuilder();
                        string        s = "";
                        for (i = 0; i < input.Length; i++)
                        {
                            if (char.IsNumber(input[i]))
                            {
                                d.Append(input[i]);
                            }
                            if (input[i] == ' ')
                            {
                                s = d.ToString();
                                sDenominations.Add(s);
                                d = new StringBuilder();
                            }
                        }
                        s = d.ToString();
                        sDenominations.Add(s);
                        List <int> bills = new List <int>();
                        for (i = 1; i < sDenominations.Count(); i++)
                        {
                            try
                            {
                                bills.Add(int.Parse(sDenominations[i]));
                            }
                            catch (FormatException)
                            {
                                Console.WriteLine("Error: Invalid command");
                            }
                        }
                        atm.Denominations(bills);
                        break;

                    case 'R':
                        atm.Restock();
                        Console.WriteLine("Restocked Machine");
                        break;
                    }
                }

                else
                {
                    Console.WriteLine("Error: Invalid command");
                    Console.WriteLine();
                }
            }while (command != 'Q');
            Console.WriteLine("Thank you for using the ATM. Press any key to exit.");
            Console.ReadKey();
        }
Пример #26
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["LoggedIn"] == null)
            {
                System.Threading.Thread.Sleep(2000);
                HttpContext.Current.Response.Redirect("Default.aspx");

            }

            cardNumber = Convert.ToInt32(Session["LoggedIn"]);

            theAtm = Session["theAtm"] as ATM;

            //if (!theAtm.IsthereHundreds())
            //{
            //    getMoneyMessage.Text = "Det finns inga hundralappar i denna bankomat";

            //}
            //if (!theAtm.IsthereFiveHundreds())
            //{
            //    getMoneyMessage.Text = "Det finns inga femhundralappar i denna bankomat";

            //}

            //if (!theAtm.IsthereFiveHundreds() && !theAtm.IsthereFiveHundreds())
            //{
            //    getMoneyMessage.Text = "Det finns inga sedlar i denna bankomat";

            //}
        }