Ejemplo n.º 1
0
 public void tilføj(Billet billet)
 {
     billetter.Add(billet);
 }
Ejemplo n.º 2
0
        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;
                }
            }
        }