C#-banken, 18TE, del 2

Andra tillfället då vi arbetat med banken i C#. Tiden gick lite för fort på slutet så vi hann aldrig testa det som vi skrev i metoden Validate() utan detta måste vi börja med vid nästa tillfälle.

Min tanke är att nästa gång göra klart allt som inte har med lagring i fil att göra, denna del skall jag sedan spela in en film om som ni gör på egen hand nästa torsdag när jag är på konferens.

Tidigare koder hittar du här.

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

// Buggar
// * Radbrytningar vid meddelande
// * Svenska tecken vid inmatning

// Kvar att göra
// * Insättning, validera
// * Uttag, funktionalitet + validera
// * Allmänt, snygga till utskrifter
// * Läs från och spara till fil.

// Det sista vi gjorde var att skapa en metod för validering. Denna är inte testad när vi sätter in pengar.

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();
                        break;

                        // Här har jag tagit bort 10-talet rader bortkommenterad kod

                    case '2':           // uttag
                        Wait();
                        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("Tack 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(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

Din e-postadress kommer inte att publiceras.

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