C#-banken, 17TE, del 3

Här nedan hittar du koden som hör till genomgången för banken del 3. För att förklara koden finns ett youtube klipp jag rekommenderar er att titta på under dagens lektion.

Nu har banken efterfrågad funktionalitet, trots en eventuellt olöst bugg kring svenska tecken vid inmatning.
Nästa steg är att koppla banken till filer och det kommer upp en tutorial inför morgondagens lektion på detta om det är svårt att lösa själv.

using System;
using System.Collections.Generic; // Funktionalitet för att jobba med listor

/*
 * Buggar:
 * Inmatning stör menyn - LÖST
 * Svenska tecken i inmatning fungerar ej
 * Kan ta ut mer pengar än vad som finns på kontot - LÖST
 */

/*
 * Att göra:
 * Metod för att visa saldo - KLAR
 * Bygga om val 3 till att visa transaktioner - KLAR
 * Skriva ut saldot i menyn - KLAR
 * Fixa buggar - KLAR
 */



namespace banken17TE
{
    class MainClass
    {
        // transaktioner är en global variabel
        static List<int> transaktioner = new List<int>();


        /// <summary>
        /// Skriva ut ett väntmeddelande och väntar på tangenttryck
        /// </summary>
        public static void Vänta(string s = "")
        {
            Console.WriteLine("{0}\nTryck på valfri tangent för att fortsätta."
                , s);
            Console.ReadKey();
        }

        /// <summary>
        /// Kontrollerar att inmatat tal är av typen int
        /// </summary>
        /// <param name="s">Meddelande om typ av inmatning</param>
        public static int Validera(string s)
        {
            bool inOk = false;
            int inmatning = 0;
            do
            {
                Console.Write(s);
                try
                {
                    inmatning = Convert.ToInt32(Console.ReadLine());
                    inOk = true;
                }
                catch (Exception)
                {
                    Vänta("Du måste ange ett heltal.");
                }

            } while (!inOk);
            return inmatning;
        }

        /// <summary>
        /// Beräknar saldot baserat på transaktionshistoriken
        /// </summary>
        /// <returns>saldo</returns>
        public static int Saldo()
        {
            int saldo = 0;
            foreach (int transaktion in transaktioner)
            {
                saldo += transaktion;
            }
            return saldo;
        }


        public static void Main(string[] args)
        {
            Console.OutputEncoding = System.Text.Encoding.UTF8;
            Console.Clear();

            
            transaktioner.Add(1000);

            char val;
            string välkommen =
                "######################" +
                "\nVälkommen till banken" +
                "\n######################";
            string meny =
                "1. Insättning" +
                "\n2. Uttag" +
                "\n3. Transaktioner" +
                "\n0. Avsluta" +
                "\nAnge ditt val: ";

            do
            {
                Console.Clear();
                Console.Write("{0}\nSaldo: {1}kr\n{2}", välkommen, Saldo(), meny);
                val = Console.ReadKey().KeyChar;
                Console.Clear();

                switch(val)
                {
                    case '1':
                        int insättning;
                        insättning = Validera("Hur mycket vill du sätta in? ");
                        if (insättning > 0)
                        {
                            transaktioner.Add(insättning);
                        }
                        else
                        {
                            Vänta("Insättningen får ej vara negativ.");
                        } 
                        break;
                    case '2':
                        int uttag = Validera("Hur mycket vill du ta ut? ");
                        if (uttag > 0 && uttag <= Saldo())
                        {
                            transaktioner.Add(-uttag);
                        }
                        else
                        {
                            Vänta("Ej tillåtet uttag.");
                        }
                        break;
                    case '3':
                        Console.WriteLine("Nr | Transaktion");
                        Console.WriteLine("---|------------");

                        int k = 0;
                        foreach (int t in transaktioner)
                        {
                            Console.WriteLine("{0, 3}|{1, 11}", k, t);
                            k++;
                        }
                        
                        Vänta();

                        break;
                    case '0':
                        Vänta("Du har valt att avsluta programmet");
                        break;
                    default:
                        Vänta("Felaktig inmatning, försök igen.");
                        break;
                }

            } while (val != '0');
        }
    }
}

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.