C#-banken, 18TE, del 3

Tredje gången vi programmerar banken så har vi nu fått till den funktionalitet som vi eftersträvade. Vi har inte kopplat banken till någon fil men det kommer en film där jag göra detta utifrån denna koden.

En sak som man skulle/kunde/borde göra är att lägga in funktionalitet i metoden Validate() så att det inte är möjligt att mata in ett negativt tal och att även ta hand om detta i metoden.

Tidigare koder hittar du här för del1 och del2.

using System;
using System.Collections.Generic;       // Klass för listor

namespace Bank_TE18
{
    class MainClass
    {
        // globala variabler
        public static List<int> transaktioner = new List<int>();

        public static void Main(string[] args)
        {
            // variabler
            char menyVal;
            transaktioner.Add(1000);

            // Ser till att vi kan skriva ut svenska tecken
            Console.OutputEncoding = System.Text.Encoding.UTF8;

            // Programloop
            do {
                String meny =
                    "#######################" +
                    "\nVälkommen till banken" +
                    "\nSaldo: {0}kr" +
                    "\n#######################" +
                    "\n1. Insättning" +
                    "\n2. Uttag" +
                    "\n3. Visa transaktioner" +
                    "\n0. Avsluta" +
                    "\nAnge ditt val: ";

                // Rensa konsollen
                Console.Clear();

                // Skriv ut menyn
                Console.Write(meny, Saldo());

                // Läs in ett tecken
                menyVal = Console.ReadKey().KeyChar;

                switch (menyVal)
                {
                    case '1':           // insättning

                        int deposit = Validate("Ange hur mycket pengar du vill sätta in: ");
                        if (deposit > 0)
                        {
                            transaktioner.Add(deposit);
                            // Wait(String.Format("Du satte in {0}kr", deposit));
                            Wait($"Du satte in {deposit}kr");
                        }
                        else
                        {
                            Wait("Insättningen kan ej vara negativ!");
                        }
                        break;

                    case '2':           // uttag
                        int withdraw = Validate("Ange hur mycket pengar du vill ta ut: ");
                        if (withdraw < 0)
                        {
                            Wait("Uttaget får inte vara negativt.");
                        }
                        else if (withdraw > Saldo())
                        {
                            Wait("Uttaget får inte vara större än ditt saldo.");
                        }
                        else
                        {
                            transaktioner.Add(-withdraw);
                            Wait($"Du tog ut {withdraw}kr.");
                        }
                        break;

                    case '3':           // skriv ut saldo
                        Console.WriteLine("\n\nHär listas alla transaktioner");
                        int i = 1;
                        foreach(int t in transaktioner)
                        {
                            Console.WriteLine("{0}. {1}kr", i++, t);
                        }
                        Wait();
                        break;

                    case '0':           // avsluta
                        Console.WriteLine("Du har valt att avsluta programmet.");
                        break;

                    default:            // alla andra inmatningar
                        Wait("Felaktig inmatning, försök igen.");
                        break;
                }
            } while (menyVal != '0');

            // Avslutande meddelande
            Console.WriteLine("\n\nTack för ditt besök, välkommen åter!");
        }

        /// <summary>
        /// Metoden validerar en inmatning
        /// </summary>
        /// <param name="s">Meddelande som skrivs ut till användaren</param>
        /// <returns>Ett validerat värde</returns>
        public static int Validate(string s="")
        {
            // Variabler
            int amount = 0;
            bool isOk = false;

            // Skapa en loop som körs så länge validering ej är ok.
            do
            {
                // Skriv ut meddelande till användaren.
                Console.WriteLine("\n"+s);

                // prova att hämta in ett heltal, mha try catch
                try
                {
                    amount = Convert.ToInt32(Console.ReadLine());
                    isOk = true;

                } catch (Exception e) {
                    Wait("Felaktig inmatning.");
                }
            } while (!isOk);

            return amount;
        }

        /// <summary>
        /// Summerar saldot ifrån listans transaktioner.
        /// </summary>
        /// <returns>Saldot</returns>
        public static int Saldo()
        {
            int saldo = 0;

            foreach(int t in transaktioner)
            {
                saldo += t;
            }
            return saldo;
        }

        /// <summary>
        /// Meddelar användaren ngt och väntar på inmaning
        /// </summary>
        /// <param name="s">Meddelande som skrivs ut</param>
        public static void Wait(string s="")
        {
            Console.WriteLine(s);
            Console.WriteLine("Tryck på valfri tangent för att komma vidare.");
            Console.ReadKey();
        }
    }
}

Lämna ett svar

Your email address will not be published.

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.