public void tilføj(Billet billet) { billetter.Add(billet); }
public static void Main(string[] args) { /* * Billet objekt der beskriver en billet ud fra 4 ting: * Type - voksen/barn * Tid - hvor længe en billet er gyldig * Pris - hvad en billet koster * Id - et id der beskriver billetten og gør det nemmere at købe den */ BilletInfo bi = new BilletInfo(); bi.tilføj(new Billet("Voksen", 12, 100, 1)); bi.tilføj(new Billet("Voksen", 24, 0, 2)); bi.tilføj(new Billet("Voksen", 72, 0, 3)); bi.tilføj(new Billet("Barn", 12, 50, 4)); bi.tilføj(new Billet("Barn", 24, 0, 5)); bi.tilføj(new Billet("Barn", 72, 0, 6)); Console.WriteLine("Som instalatør skal du angive prisen for alle billetter"); ArrayList ids = bi.ids(); foreach (int id in ids) { Billet billet = bi.find(id); Console.Write("Ny pris for billet med id nummer: {0}: ", id); string pris_input = Console.ReadLine(); int pris_input_number = Convert.ToInt32(pris_input); billet.setPris(pris_input_number); } int balance = 0; int[] array_af_hvorMange = new int[10]; int sum_af_hvorMange = 0; int sum_af_penge; ArrayList solgte = new ArrayList(); /* * Programmet bygger mest på 7 keywords. Disse 7 keywords er aktiveret ved et loop der konstant * tjekker om man indtaster et af dem. Hver af de 7 keywords har en case i et switch-case system. * Hver keyword er aktiveret hvis man indtaster det og hver keyword kan noget forskelligt. */ while (true) { Console.WriteLine("\nIndstast et keyword ('h' for hjælp)"); Console.Write("- "); /* * Sætter inputtet til små bogstaver så uanset om man starter keywordet med store eller små bogstaver * går den ind i den rigtige case. */ string input = Console.ReadLine().ToLower(); Console.Clear(); switch (input) { /* * Det første keyword er "installatør" som lister alle tilgængelige billetter (1) og udskriver * det totalt mængde billetter solgt (2) samt den samlede indtjening (3). */ case "inst": /* * Det første man møder i "installatør" casen er man skal indtaste et kodeord. Det er * så simpelt som det kan være, der er to strings og de skal være lig hinanden. Den ene * string er hardcoded til "SukkertoppenGym2019" og den anden er lig user input. Man * har i alt 3 forsøg til at gætte kodeordet. */ // FIXME ændre q til "SukkertoppenGym2019" string kodeord = "q"; string kodeord_forsøg; Console.WriteLine("\nHvad er kodeordet? Du har 3 forsøg"); for (int i = 1; i < 4; i++) { Console.Write("- "); kodeord_forsøg = Console.ReadLine(); // Kodeord rigtigt. if (kodeord == kodeord_forsøg) { Console.WriteLine("Adgang bevilget\n"); // 1) Aktuelle billetter. bi.slags(); // 2) Antal billetter solgt. for (int j = 0; j < array_af_hvorMange.Length; j++) { sum_af_hvorMange = sum_af_hvorMange + array_af_hvorMange[i]; } Console.WriteLine("Der er blevet solgt et total af {0} billetter.", solgte.Count); sum_af_penge = 0; // 3) Sum af penge tjent. foreach (int id in solgte) { Billet b = bi.find(id); sum_af_penge = sum_af_penge + b.getPris(); } Console.WriteLine("Der er tjent et total af {0} kroner.", sum_af_penge); break; // Kodeord forkert. } else { Console.WriteLine("Forkert, du har {0} forsøg tilbage", (3 - i)); } } break; /* * I "balance" casen kan en bruger se han/huns mængde af indsatte penge og * evt. indsætte flere penge. */ case "bal": bool balance_bool = true; Console.WriteLine("\nDin balance er på {0} DKK, vil du indsætte penge? (y/n)", balance); int balance_mængde; // Sørger for man kun kan sige ja eller nej. while (balance_bool) { Console.Write("- "); string balance_svar = Console.ReadLine(); if (balance_svar == "y") { Console.WriteLine("Hvormeget?"); Console.Write("- "); // Lægger mængden man indtaster ind som balancen. string balance_mængde_string = Console.ReadLine(); balance_mængde = Convert.ToInt32(balance_mængde_string); balance = balance + balance_mængde; balance_bool = false; } else if (balance_svar == "n") { balance_bool = false; } else { Console.WriteLine("Ulovligt argument '{0}' (y/n)", balance_svar); } } Console.Clear(); break; /* * I "billet" casen kan man se hvilke billetter der er til rådighed samt købe dem man gerne * vil have. Det er sådan bygget op at man skal skrive ID nummeret først, så et komma og * derefter hvor mange man vil have. Hvis man ønsker flere sætter man blot et mellemrum * efter og starter forfra. Man kan købe ligeså mange typer og antal man vil dog kun hvis * ens balance er stor nok. * Ex. 1,2 2,2 3,2 */ case "bil": bi.slags(); Console.WriteLine("Hvilke billetter ønsker du? |Id,antal| (Eks. 1,2 2,2)"); Console.Write("- "); string s_input = Console.ReadLine(); // Splitter inputtet ved hver mellemrum så vi ved hvornår man vil have en ny type billet. string[] split1 = s_input.Split(' '); // Deler hver id og antal op så vi kan finde prisen for hver enkelt. int pris = 0; foreach (string s in split1) { string[] split2 = s.Split(','); // Id vil være den første del af vores id,antal derfor er det index 0. int id = Convert.ToInt32(split2[0]); // Antal vil være den anden del af vores id,antal derfor er det index 1. int antal = Convert.ToInt32(split2[1]); // Lægger id'et over i solgte så det er nemmere at printe dem senere. for (int i = 0; i < antal; i++) { solgte.Add(id); } Billet b = bi.find(id); /* * Nu kan vi så finde sum prisen for det hele brugeren ønkser ved at gange antal med * prisen for hver billet. */ pris = pris + antal * b.getPris(); } // Printer total prisen og spørger om vil betale. Console.WriteLine("\nAt betale: {0} DKK. Din balance er på {1} DKK", pris, balance); // While loop der venter på et ja/nej svar på om man vil betale eller ikke. bool accepter_pris = false; while (!accepter_pris) { Console.WriteLine("Betal? (y/n)"); Console.Write("- "); string betal = Console.ReadLine(); // Ja til at betale. Trækker prisen fra brugerens balance. if (betal == "y") { if ((pris - balance) <= 0) { Console.WriteLine("Godkendt"); balance = balance - pris; accepter_pris = true; // Hvis man ikke har nok penge: } else { Console.WriteLine("Du har ikke råd. Gå til 'balance' for at indsætte penge."); } // Nej til at betale. } else if (betal == "n") { Console.WriteLine("Afbrudt"); accepter_pris = true; } else { // Hvis brugeren taster forkert. Hvis det her ikke er der crasher programmet. Console.WriteLine("Ulovligt argument '{0}' (y/n)", betal); } } Console.Clear(); break; /* * I "Hjælp" casen printes alle keywords og en lille linje om hvad de hver især gør. */ case "h": Console.WriteLine("\ntb = Se tilgængelige billetter"); Console.WriteLine("bal = Check balance/put penge ind"); Console.WriteLine("bil = Billet køb"); Console.WriteLine("mbil = Mine billetter"); Console.WriteLine("inst = Installatør rettigheder"); Console.WriteLine("nb = Ny bruger (brug når du er færdig)"); break; /* * I "Mine billetter" casen printer de billetter brugeren har købt. Det gør den ved at kigge på * hver id der i solgte og udskriver dem. */ case "mbil": Console.WriteLine("\nMine billetter: \n"); foreach (int id in solgte) { Billet b = bi.find(id); b.udskriv(); } break; /* * I "Ny bruger" casen nulsættes alle variabler så det ser ud som om det er en ny bruger/kunde * der køber billetter. Det betyder balancen bliver 0 og der er ingen billtter i solgte. */ case "nb": balance = 0; array_af_hvorMange = new int[10]; sum_af_hvorMange = 0; sum_af_penge = 0; solgte = new ArrayList(); break; /* * I "Tilgængelige billetter" printes der en tabel med alle de billetter man kan købe. Dette * gøres med hjælp af slags() i 'billetinfo' klassen. */ case "tb": bi.slags(); break; /* * Hvis strengen "input" ikke er lig med nogen af casene går man ALTID ind i 'default' uanset * hvad. Her printer den hvad man skal skrive for at få hjælp eller for at se hvad det rigtige * keyword er. */ default: Console.WriteLine("\nTryk 'h' for hjælp"); break; } } }