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