14 svar
1399 visningar
msoffer 27
Postad: 4 aug 2021 18:46 Redigerad: 4 aug 2021 18:54

Lägga in en undermeny i ett menyval

Hej!

Jag skulle vilja få in en meny under valet "Service" där man likt i "huvudmenyn" ska få upp 3 alternativ som man ska kunna välja mellan. Hur går jag till väga för det? Har testat göra samma "kodning" av meny under service blocket (metoden) men då funkar inte de övriga menyvalen. Hur bör jag göra?

using System;

namespace Testnummer1uppdrag4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Välkommen till Stenbergs Bilhandel i Göteborg");
            string användarensVal = "";
            for (int i = 0; i < 1; i++)
            {
                SkrivMeny();
                användarensVal = Console.ReadLine();
                Console.WriteLine("");
                switch (användarensVal)
                {
                    case "1":
                        MenyValAnställda();
                        break;
                    case "2":
                        MenyvalService();
                        break;
                    case "3":
                        MenyValKöpaBil();
                        break;
                    case "4":
                        MenyValSäljabil();
                        break;
                    case "5":
                        ///gör inget, stängs av 
                        break;
                    default:
                        Console.WriteLine("Du valde ett ogiltigt alternativ");
                        break;
                }
                Console.WriteLine();
            }
        }
        static void SkrivMeny()
        {
            Console.WriteLine("Välj ett alternativ");
            Console.WriteLine("1. Hantera anställda ");
            Console.WriteLine("2. Service");
            Console.WriteLine("3. Köpa bil");
            Console.WriteLine("4. Sälja bil");
            Console.WriteLine("5. Avsluta");
        }
        static void MenyValAnställda()
        {
            Console.WriteLine("Här har vi våra anställda, har du kommit fel, tryck Enter för att komma tillbaka till huvudmenyn!");
            string[] Stenbergsanställda = new string[4];
            Stenbergsanställda[0] ="Jakob Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[1] = "Hanna Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[2] = "David Olsson, Bilförsäljare, jobbat sedan 2019-05-01";
            Stenbergsanställda[3] = "Pernilla Svensson, Bilförsäljare, jobbat sedan 2020-03-01";
            Console.WriteLine($"{Stenbergsanställda[0]}");
            Console.WriteLine($"{Stenbergsanställda[1]}");
            Console.WriteLine($"{Stenbergsanställda[2]}");
            Console.WriteLine($"{Stenbergsanställda[3]}");


        }
        static void MenyvalService()
        {

    }
static void MenyValKöpaBil ()
    {
        Console.Clear();
        Console.WriteLine("Så du är intresserad av att köpa en bil, vet du redan nu vilken bil, eller vill du se alla bilar vi har inne?");
        Console.ReadLine();
        //fortsätt med mer info
    }

    static void MenyValSäljabil()
    {
        Console.Clear();
        Console.WriteLine("Här säljer man sin bil, har du kommit fel tryck enter");
    }

} }

 

Tacksam för all hjälp!

Fermatrix 7841 – Fd. Medlem
Postad: 4 aug 2021 19:27

Jag vet inte om det är det mest effektivaste men du kan nesta switch statements precis som vilka andra logiska satser.

msoffer 27
Postad: 4 aug 2021 21:19
Dracaena skrev:

Jag vet inte om det är det mest effektivaste men du kan nesta switch statements precis som vilka andra logiska satser.

Hur menar du då? Är helt ny på programmering och läser programmering 1 på distans och vet knappt vad jag gör ibland haha 

Fermatrix 7841 – Fd. Medlem
Postad: 4 aug 2021 22:05 Redigerad: 4 aug 2021 22:05

Nesting är är du har en logisk sats i en logisk sats. 

Exempelvis 

If(condition)

{

   If(condition2)

      Något

}

Så med andra ord, du kan lägga en switch statement inuti en av dina cases, så att du då har en yttre switch statement men sedan också en nestad inuti. Annars kanske man kan tvinga användaren att ange input och använda sig av if/elseif/else för att skapa de tre valen.

beerger 962
Postad: 4 aug 2021 22:40

Kan du visa hur du har försökt att göra, så kanske vi kan säga varför det blir fel.

msoffer 27
Postad: 5 aug 2021 15:32
beerger skrev:

Kan du visa hur du har försökt att göra, så kanske vi kan säga varför det blir fel.

using System;

namespace testar4uppdrag4
{
    class Program
    {
        static void Main(string[] args)
        {

            string[] menuOptions = new string[] { "Anställda\t\t", "Bilar\t\t", "Kunder\t\t", "Service\t\t", "Avsluta\t\t" };
            int menuSelect = 0;
            int undermeny = 0;

            while (true)
            {
                Console.Clear();
                Console.CursorVisible = false;

                if (menuSelect == 0)
                {
                    Console.WriteLine(menuOptions[0] + "<--");
                    Console.WriteLine(menuOptions[1]);
                    Console.WriteLine(menuOptions[2]);
                    Console.WriteLine(menuOptions[3]);
                }
                else if (menuSelect == 1)
                {
                    Console.WriteLine(menuOptions[0]);
                    Console.WriteLine(menuOptions[1] + "<--");
                    Console.WriteLine(menuOptions[2]);
                    Console.WriteLine(menuOptions[3]);
                }
                else if (menuSelect == 2)
                {
                    Console.WriteLine(menuOptions[0]);
                    Console.WriteLine(menuOptions[1]);
                    Console.WriteLine(menuOptions[2] + "<--");
                    Console.WriteLine(menuOptions[3]);
                }
                else if (menuSelect == 3)
                {
                    Console.WriteLine(menuOptions[0]);
                    Console.WriteLine(menuOptions[1]);
                    Console.WriteLine(menuOptions[2]);
                    Console.WriteLine(menuOptions[3] + "<--");
                }
                var keyPressed = Console.ReadKey();
                if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1)
                {
                    menuSelect++;
                }
                else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect <= 1)
                {
                    menuSelect--;
                }
                else if (keyPressed.Key == ConsoleKey.Enter)
                {
                    switch (menuSelect)
                    {
                        case 0:
                            FirstChoice();
                            break;

                        case 1:
                            SecondChoice();
                            Console.WriteLine("Bilar");
                            break;
                        case 2:
                            ThirdChoice();
                            Console.WriteLine("Kunder");
                            break;
                        case 3:
                            FourthChoice();
                            Console.WriteLine("Service");
                            break;
                            switch (undermeny)
                            {
                                case 1:
                                    SixthChoice();
                                    break;
                            }
                        case 4:
                            FifthChoice();
                            Console.WriteLine("Avsluta programmet");
                            ///gör inget, stängs av 
                            break;
                        default:
                            Console.WriteLine("Du valde ett ogiltigt alternativ");
                            break;

                    }
                }
            }
        }
        public static void FirstChoice() //menyval 1
        {
            Console.WriteLine("Anställda");
            Console.WriteLine("Här har vi våra anställda, har du kommit fel, tryck Enter för att komma tillbaka till huvudmenyn!");
            string[] Stenbergsanställda = new string[4];
            Stenbergsanställda[0] = "Jakob Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[1] = "Hanna Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[2] = "David Olsson, Bilförsäljare, jobbat sedan 2019-05-01";
            Stenbergsanställda[3] = "Pernilla Svensson, Bilförsäljare, jobbat sedan 2020-03-01";
            Console.WriteLine($"{Stenbergsanställda[0]}");
            Console.WriteLine($"{Stenbergsanställda[1]}");
            Console.WriteLine($"{Stenbergsanställda[2]}");
            Console.WriteLine($"{Stenbergsanställda[3]}");
            Console.Read();
        }
        public static void SecondChoice() // menyval 2 
        {
            Console.WriteLine("Bilar");
            Console.WriteLine("Välj ett alternativ");
            Console.WriteLine("1. Sälja bil");
            Console.WriteLine("2. Köpa bil");
            Console.ReadLine();
            // använd if kod för att göra en meny till val 1 (osäker på om det funkar)
        }
        public static void ThirdChoice() // menyval 3
        {

            Console.WriteLine("Kunder");
            Console.Read();
        }
        public static void FourthChoice() // menyval 4
        {
            Console.WriteLine("Service");
            Console.Read();
        }
        public static void FifthChoice() // menyval 5
        {
            Console.WriteLine("Avsluta");
            Console.Read();
        }
        public static void SixthChoice()
        {
        Console.WriteLine("Undermeny Service");
        }

    }
}

Har försökt lägga till Switch undermeny, men jag får inte till det, lägger jag den i samma private void som fourth så funkar det inte heller. 

msoffer 27
Postad: 5 aug 2021 15:32
beerger skrev:

Kan du visa hur du har försökt att göra, så kanske vi kan säga varför det blir fel.

using System;

namespace testar4uppdrag4
{
    class Program
    {
        static void Main(string[] args)
        {

            string[] menuOptions = new string[] { "Anställda\t\t", "Bilar\t\t", "Kunder\t\t", "Service\t\t", "Avsluta\t\t" };
            int menuSelect = 0;
            int undermeny = 0;

            while (true)
            {
                Console.Clear();
                Console.CursorVisible = false;

                if (menuSelect == 0)
                {
                    Console.WriteLine(menuOptions[0] + "<--");
                    Console.WriteLine(menuOptions[1]);
                    Console.WriteLine(menuOptions[2]);
                    Console.WriteLine(menuOptions[3]);
                }
                else if (menuSelect == 1)
                {
                    Console.WriteLine(menuOptions[0]);
                    Console.WriteLine(menuOptions[1] + "<--");
                    Console.WriteLine(menuOptions[2]);
                    Console.WriteLine(menuOptions[3]);
                }
                else if (menuSelect == 2)
                {
                    Console.WriteLine(menuOptions[0]);
                    Console.WriteLine(menuOptions[1]);
                    Console.WriteLine(menuOptions[2] + "<--");
                    Console.WriteLine(menuOptions[3]);
                }
                else if (menuSelect == 3)
                {
                    Console.WriteLine(menuOptions[0]);
                    Console.WriteLine(menuOptions[1]);
                    Console.WriteLine(menuOptions[2]);
                    Console.WriteLine(menuOptions[3] + "<--");
                }
                var keyPressed = Console.ReadKey();
                if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1)
                {
                    menuSelect++;
                }
                else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect <= 1)
                {
                    menuSelect--;
                }
                else if (keyPressed.Key == ConsoleKey.Enter)
                {
                    switch (menuSelect)
                    {
                        case 0:
                            FirstChoice();
                            break;

                        case 1:
                            SecondChoice();
                            Console.WriteLine("Bilar");
                            break;
                        case 2:
                            ThirdChoice();
                            Console.WriteLine("Kunder");
                            break;
                        case 3:
                            FourthChoice();
                            Console.WriteLine("Service");
                            break;
                            switch (undermeny)
                            {
                                case 1:
                                    SixthChoice();
                                    break;
                            }
                        case 4:
                            FifthChoice();
                            Console.WriteLine("Avsluta programmet");
                            ///gör inget, stängs av 
                            break;
                        default:
                            Console.WriteLine("Du valde ett ogiltigt alternativ");
                            break;

                    }
                }
            }
        }
        public static void FirstChoice() //menyval 1
        {
            Console.WriteLine("Anställda");
            Console.WriteLine("Här har vi våra anställda, har du kommit fel, tryck Enter för att komma tillbaka till huvudmenyn!");
            string[] Stenbergsanställda = new string[4];
            Stenbergsanställda[0] = "Jakob Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[1] = "Hanna Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[2] = "David Olsson, Bilförsäljare, jobbat sedan 2019-05-01";
            Stenbergsanställda[3] = "Pernilla Svensson, Bilförsäljare, jobbat sedan 2020-03-01";
            Console.WriteLine($"{Stenbergsanställda[0]}");
            Console.WriteLine($"{Stenbergsanställda[1]}");
            Console.WriteLine($"{Stenbergsanställda[2]}");
            Console.WriteLine($"{Stenbergsanställda[3]}");
            Console.Read();
        }
        public static void SecondChoice() // menyval 2 
        {
            Console.WriteLine("Bilar");
            Console.WriteLine("Välj ett alternativ");
            Console.WriteLine("1. Sälja bil");
            Console.WriteLine("2. Köpa bil");
            Console.ReadLine();
            // använd if kod för att göra en meny till val 1 (osäker på om det funkar)
        }
        public static void ThirdChoice() // menyval 3
        {

            Console.WriteLine("Kunder");
            Console.Read();
        }
        public static void FourthChoice() // menyval 4
        {
            Console.WriteLine("Service");
            Console.Read();
        }
        public static void FifthChoice() // menyval 5
        {
            Console.WriteLine("Avsluta");
            Console.Read();
        }
        public static void SixthChoice()
        {
        Console.WriteLine("Undermeny Service");
        }

    }
}

Har försökt lägga till Switch undermeny, men jag får inte till det, lägger jag den i samma private void som fourth så funkar det inte heller. 

beerger 962
Postad: 5 aug 2021 15:39

Men du sätter ju undermeny = 0 i början, och sedan har du bara case 1 i switchen. Du har inget defaultcase i switchen, och den har alltid värdet 0, så därför kommer den inte fungera.

msoffer 27
Postad: 5 aug 2021 15:45
beerger skrev:

Men du sätter ju undermeny = 0 i början, och sedan har du bara case 1 i switchen. Du har inget defaultcase i switchen, och den har alltid värdet 0, så därför kommer den inte fungera.

Förstår vad du menar men vet ej hur jag ska lösa det, försökte såhär, men det blir felkod ändå. Skulle du möjligtvis kunna skriva hur jag ska skriva för att få till undermenyn?

using System;

namespace testar4uppdrag4
{
    class Program
    {
        static void Main(string[] args)
        {

            string[] menuOptions = new string[] { "Anställda\t\t", "Bilar\t\t", "Kunder\t\t", "Service\t\t", "Avsluta\t\t" };
            int menuSelect = 0;
            int undermeny = 100;

            while (true)
            {
                Console.Clear();
                Console.CursorVisible = false;

                if (menuSelect == 0)
                {
                    Console.WriteLine(menuOptions[0] + "<--");
                    Console.WriteLine(menuOptions[1]);
                    Console.WriteLine(menuOptions[2]);
                    Console.WriteLine(menuOptions[3]);
                }
                else if (menuSelect == 1)
                {
                    Console.WriteLine(menuOptions[0]);
                    Console.WriteLine(menuOptions[1] + "<--");
                    Console.WriteLine(menuOptions[2]);
                    Console.WriteLine(menuOptions[3]);
                }
                else if (menuSelect == 2)
                {
                    Console.WriteLine(menuOptions[0]);
                    Console.WriteLine(menuOptions[1]);
                    Console.WriteLine(menuOptions[2] + "<--");
                    Console.WriteLine(menuOptions[3]);
                }
                else if (menuSelect == 3)
                {
                    Console.WriteLine(menuOptions[0]);
                    Console.WriteLine(menuOptions[1]);
                    Console.WriteLine(menuOptions[2]);
                    Console.WriteLine(menuOptions[3] + "<--");
                }
                var keyPressed = Console.ReadKey();
                if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1)
                {
                    menuSelect++;
                }
                else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect <= 1)
                {
                    menuSelect--;
                }
                else if (keyPressed.Key == ConsoleKey.Enter)
                {
                    switch (menuSelect)
                    {
                        case 0:
                            FirstChoice();
                            break;

                        case 1:
                            SecondChoice();
                            Console.WriteLine("Bilar");
                            break;
                        case 2:
                            ThirdChoice();
                            Console.WriteLine("Kunder");
                            break;
                        case 3:
                            FourthChoice();
                            Console.WriteLine("Service");
                            break;
                    }
                    { 
                        default case 100:
                           switch (undermeny)
                            
                            }
                        case 4:
                            FifthChoice();
                            Console.WriteLine("Avsluta programmet");
                            ///gör inget, stängs av 
                            break;
                        default:
                            Console.WriteLine("Du valde ett ogiltigt alternativ");
                            break;

                    }
                }
            }
        }
        public static void FirstChoice() //menyval 1
        {
            Console.WriteLine("Anställda");
            Console.WriteLine("Här har vi våra anställda, har du kommit fel, tryck Enter för att komma tillbaka till huvudmenyn!");
            string[] Stenbergsanställda = new string[4];
            Stenbergsanställda[0] = "Jakob Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[1] = "Hanna Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[2] = "David Olsson, Bilförsäljare, jobbat sedan 2019-05-01";
            Stenbergsanställda[3] = "Pernilla Svensson, Bilförsäljare, jobbat sedan 2020-03-01";
            Console.WriteLine($"{Stenbergsanställda[0]}");
            Console.WriteLine($"{Stenbergsanställda[1]}");
            Console.WriteLine($"{Stenbergsanställda[2]}");
            Console.WriteLine($"{Stenbergsanställda[3]}");
            Console.Read();
        }
        public static void SecondChoice() // menyval 2 
        {
            Console.WriteLine("Bilar");
            Console.WriteLine("Välj ett alternativ");
            Console.WriteLine("1. Sälja bil");
            Console.WriteLine("2. Köpa bil");
            Console.ReadLine();
            // använd if kod för att göra en meny till val 1 (osäker på om det funkar)
        }
        public static void ThirdChoice() // menyval 3
        {

            Console.WriteLine("Kunder");
            Console.Read();
        }
        public static void FourthChoice() // menyval 4
        {
            Console.WriteLine("Service");
            Console.WriteLine("Undermeny för Service", under);
            Console.Read();
        }
        public static void FifthChoice() // menyval 5
        {
            Console.WriteLine("Avsluta");
            Console.Read();
        }
        public static void SixthChoice()
        {
        Console.WriteLine("Undermeny Service");
        }

    }
}

beerger 962
Postad: 5 aug 2021 15:48

Ska försöka, var ett bra tag sedan jag skrev i C#.

Men förövrigt, else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect <= 1)

Är fel, måste stå else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect >= 1)

eller else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect > 0)

 

Dessutom har du bara 4 val som printas ut i consolen, men du kan bläddra ner en gång för mycket.

Så isf måste du ändra if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1)

till if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 2)

msoffer 27
Postad: 5 aug 2021 15:53
beerger skrev:

Ska försöka, var ett bra tag sedan jag skrev i C#.

Men förövrigt, else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect <= 1)

Är fel, måste stå else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect >= 1)

eller else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect > 0)

 

Dessutom har du bara 4 val som printas ut i consolen, men du kan bläddra ner en gång för mycket.

Så isf måste du ändra if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1)

till if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 2)

TACK! 
VILKEN STJÄRNA DU ÄR!!! Om jag nu ska ha flera undermenyer, så ökar jag bara på dem två koderna? :) 

beerger 962
Postad: 5 aug 2021 15:55

Antar att du vill printa ut "avsluta" också?

Ha isf: 

if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1)

beerger 962
Postad: 5 aug 2021 15:57 Redigerad: 5 aug 2021 15:59
using System;

namespace testar4uppdrag4
{
    class Program
    {
        static void Main(string[] args)
        {

            string[] menuOptions = new string[] { "Anställda\t\t", "Bilar\t\t", "Kunder\t\t", "Service\t\t", "Avsluta\t\t" };
            int menuSelect = 0;
            int undermeny = 1;

            void printMenu(int select, string [] options)
            {
                for (int i = 0; i < options.Length; i++)
                {
                    Console.WriteLine(String.Concat(options[i], i == select ? "<--" : ""));
                }
            }

            while (true)
            {
                Console.Clear();
                Console.CursorVisible = false;

                printMenu(menuSelect, menuOptions);

                var keyPressed = Console.ReadKey();
                if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1)
                {
                    menuSelect++;
                }
                else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect > 0)
                {
                    menuSelect--;
                }
                else if (keyPressed.Key == ConsoleKey.Enter)
                {
                    switch (menuSelect)
                    {
                        case 0:
                            FirstChoice();
                            break;

                        case 1:
                            SecondChoice();
                            Console.WriteLine("Bilar");
                            break;
                        case 2:
                            ThirdChoice();
                            Console.WriteLine("Kunder");
                            break;
                        case 3:
                            FourthChoice();
                            Console.WriteLine("Service");
                            break;
                            switch (undermeny)
                            {
                                case 1:
                                    SixthChoice();
                                    break;
                            }
                        case 4:
                            FifthChoice();
                            Console.WriteLine("Avsluta programmet");
                            ///gör inget, stängs av 
                            break;
                        default:
                            Console.WriteLine("Du valde ett ogiltigt alternativ");
                            break;

                    }
                }
            }
        }
        public static void FirstChoice() //menyval 1
        {
            Console.WriteLine("Anställda");
            Console.WriteLine("Här har vi våra anställda, har du kommit fel, tryck Enter för att komma tillbaka till huvudmenyn!");
            string[] Stenbergsanställda = new string[4];
            Stenbergsanställda[0] = "Jakob Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[1] = "Hanna Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[2] = "David Olsson, Bilförsäljare, jobbat sedan 2019-05-01";
            Stenbergsanställda[3] = "Pernilla Svensson, Bilförsäljare, jobbat sedan 2020-03-01";
            Console.WriteLine($"{Stenbergsanställda[0]}");
            Console.WriteLine($"{Stenbergsanställda[1]}");
            Console.WriteLine($"{Stenbergsanställda[2]}");
            Console.WriteLine($"{Stenbergsanställda[3]}");
            Console.Read();
        }
        public static void SecondChoice() // menyval 2 
        {
            Console.WriteLine("Bilar");
            Console.WriteLine("Välj ett alternativ");
            Console.WriteLine("1. Sälja bil");
            Console.WriteLine("2. Köpa bil");
            Console.ReadLine();
            // använd if kod för att göra en meny till val 1 (osäker på om det funkar)
        }
        public static void ThirdChoice() // menyval 3
        {

            Console.WriteLine("Kunder");
            Console.Read();
        }
        public static void FourthChoice() // menyval 4
        {
            Console.WriteLine("Service");
            Console.Read();
        }
        public static void FifthChoice() // menyval 5
        {
            Console.WriteLine("Avsluta");
            Console.Read();
        }
        public static void SixthChoice()
        {
            Console.WriteLine("Undermeny Service");
        }

    }
}

Rekommenderar att du gör såhär ^

Skriv en metod för att printa ut menyn istället för att skriva samma kod om och om igen.

Lade till en loop som printar ut menyn, och placerar pilen på rätt rad.


Blir betydligt mer lättläsligt.

msoffer 27
Postad: 5 aug 2021 16:27
beerger skrev:
using System;

namespace testar4uppdrag4
{
    class Program
    {
        static void Main(string[] args)
        {

            string[] menuOptions = new string[] { "Anställda\t\t", "Bilar\t\t", "Kunder\t\t", "Service\t\t", "Avsluta\t\t" };
            int menuSelect = 0;
            int undermeny = 1;

            void printMenu(int select, string [] options)
            {
                for (int i = 0; i < options.Length; i++)
                {
                    Console.WriteLine(String.Concat(options[i], i == select ? "<--" : ""));
                }
            }

            while (true)
            {
                Console.Clear();
                Console.CursorVisible = false;

                printMenu(menuSelect, menuOptions);

                var keyPressed = Console.ReadKey();
                if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1)
                {
                    menuSelect++;
                }
                else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect > 0)
                {
                    menuSelect--;
                }
                else if (keyPressed.Key == ConsoleKey.Enter)
                {
                    switch (menuSelect)
                    {
                        case 0:
                            FirstChoice();
                            break;

                        case 1:
                            SecondChoice();
                            Console.WriteLine("Bilar");
                            break;
                        case 2:
                            ThirdChoice();
                            Console.WriteLine("Kunder");
                            break;
                        case 3:
                            FourthChoice();
                            Console.WriteLine("Service");
                            break;
                            switch (undermeny)
                            {
                                case 1:
                                    SixthChoice();
                                    break;
                            }
                        case 4:
                            FifthChoice();
                            Console.WriteLine("Avsluta programmet");
                            ///gör inget, stängs av 
                            break;
                        default:
                            Console.WriteLine("Du valde ett ogiltigt alternativ");
                            break;

                    }
                }
            }
        }
        public static void FirstChoice() //menyval 1
        {
            Console.WriteLine("Anställda");
            Console.WriteLine("Här har vi våra anställda, har du kommit fel, tryck Enter för att komma tillbaka till huvudmenyn!");
            string[] Stenbergsanställda = new string[4];
            Stenbergsanställda[0] = "Jakob Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[1] = "Hanna Stenberg, Ägare, jobbat sedan 2019-03-01";
            Stenbergsanställda[2] = "David Olsson, Bilförsäljare, jobbat sedan 2019-05-01";
            Stenbergsanställda[3] = "Pernilla Svensson, Bilförsäljare, jobbat sedan 2020-03-01";
            Console.WriteLine($"{Stenbergsanställda[0]}");
            Console.WriteLine($"{Stenbergsanställda[1]}");
            Console.WriteLine($"{Stenbergsanställda[2]}");
            Console.WriteLine($"{Stenbergsanställda[3]}");
            Console.Read();
        }
        public static void SecondChoice() // menyval 2 
        {
            Console.WriteLine("Bilar");
            Console.WriteLine("Välj ett alternativ");
            Console.WriteLine("1. Sälja bil");
            Console.WriteLine("2. Köpa bil");
            Console.ReadLine();
            // använd if kod för att göra en meny till val 1 (osäker på om det funkar)
        }
        public static void ThirdChoice() // menyval 3
        {

            Console.WriteLine("Kunder");
            Console.Read();
        }
        public static void FourthChoice() // menyval 4
        {
            Console.WriteLine("Service");
            Console.Read();
        }
        public static void FifthChoice() // menyval 5
        {
            Console.WriteLine("Avsluta");
            Console.Read();
        }
        public static void SixthChoice()
        {
            Console.WriteLine("Undermeny Service");
        }

    }
}

Rekommenderar att du gör såhär ^

Skriv en metod för att printa ut menyn istället för att skriva samma kod om och om igen.

Lade till en loop som printar ut menyn, och placerar pilen på rätt rad.


Blir betydligt mer lättläsligt.

Tusen tack för tips! Men när jag använder denna kod så får jag inte till undermenyn, den kommer inte upp,  hur fixar jag det?

beerger 962
Postad: 5 aug 2021 17:42

Det är för att break; sitter ovanför switchen för undermeny.


Flytta den nedanför detta 

switch (undermeny)

{ case 1:

     SixthChoice();

     break;

}

Svara
Close