3 svar
2174 visningar
saganeedhelp 1 – Fd. Medlem
Postad: 14 jul 2021 23:38

Undermenyer samt spara user input till en lista

Har fått denna uppgift i kursen Programmering 1:

Bilhandlaren har växt och blivit en lite större bilfirma.

De behöver:

Registrera köpare
Hantera bilar
Utföra service, reparationer och garantiärenden
Hantera personal
Skapa planering, aktivitetsdiagram och programkod. 

Start och stopp
Minst 2 olika funktioner/metoder
Programkod

Meny, gärna fler nivåer
Skapa ”områden” för uppdelning av koden

 

Jag har fastnat på hur jag ska lägga in undermenyer efter att dom valt Anställda, Fordon, Kunder eller Avsluta. 
Sen förstår jag inte hur jag ska få infon de lägger in att sparas till en lista, vill ha en lista över alla fordon som fylls på om användaren lägger in en ny bil etc. 

using System;

public class InlogTest
{
    public static void Main()
    {
       string username, password;
       int ctr = 0;
       string[] menuOptions = new string[] {"Anställda\t\t", "Fordon\t\t", "Kunder\t\t", "Avsluta\t\t"};
       int menuSelect = 0;
       Console.Write("\n\n Inloggning - Pelles Bilar Stockholm:\n");
       
       Console.Write("------------------------------------------------------\n"); 
         
        do
        {
          Console.Write("Skriv in ditt Användarnamn: ");
          username = Console.ReadLine();

          Console.Write("Skriv in ditt lösenord: ");
          password = Console.ReadLine();
          
            if(username != "Pelle" || password != "1234")
            ctr++;
            else
            ctr=1;
     
        }
        while((username != "Pelle" || password != "1234") && (ctr != 3));
        
        if (ctr == 3) {
          Console.WriteLine("Du har skrivit in fel lösenord för många gånger. Försök igen senare.");
          return;
          }
        else {
          
          Console.WriteLine("Välkommen tillbaka "+ username);
          Console.ReadKey();

        } 
          
        
        
        {
        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();
          break;
          case 2:
          ThirdChoice();
          break;
          case 3:
          FourthChoice();
          break;
        }
      }
    }
  }
}
    public static void FirstChoice() {
    Console.WriteLine("Anställda");
    Console.WriteLine("Tryck Enter för att gå tillbaka till menyn!");
    Console.ReadKey();
  }
  public static void SecondChoice() {
    Console.WriteLine("Fordon");
    Console.WriteLine("Tryck Enter för att gå tillbaka till menyn!");
    Console.ReadKey();
  }
  public static void ThirdChoice() {
    Console.WriteLine("Kunder");
    Console.WriteLine("Tryck Enter för att gå tillbaka till menyn!");
    Console.ReadKey();
  }
  public static void FourthChoice() {
    Console.WriteLine("Programmet avslutas!");
    Console.WriteLine("Tryck Enter för att avsluta!");
    Console.ReadKey();
    Environment.Exit(1); {

        string[] menuOptions = new string[] {"Anställda\t\t", "Fordon\t\t", "Kunder\t\t", "Avsluta\t\t"};
      int menuSelect = 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();
          break;
          case 2:
          ThirdChoice();
          break;
          case 3:
          FourthChoice();
          break;


          }
        }
      }
    }
  }
}
beerger 962
Postad: 15 jul 2021 00:06

Skriv en metod för menuOptions till att börja med, gör koden mer lättläslig. I regel: Om du återanvänder samma kod: skriv en metod.

 

print_menu(string [] menuOptions, int menuSelect){

for(int i, i < 4, i++) {

Console.WriteLine(menuOptions[i] ++ menuSelect == i ? : "<--" : "") # om index i == menuSelect lägger den till pil

}

}

beerger 962
Postad: 15 jul 2021 00:09 Redigerad: 15 jul 2021 01:12

Varför har du i princip samma kod  efter FourthChoice som innan?? Ta gärna bort det, det blir enklare att läsa koden. Även om koden i sig inte är svår att förstå.

beerger 962
Postad: 15 jul 2021 00:13

Kan du något om klasser/objekt?

Svara
Close