Order Queue in C #

0

I already have this code:

Queue<string> Fila = new Queue<string>(); //Declaração da Fila

string opcao = "1"; //Define opção como 1

while (opcao == "1") //Enquanto ele quiser inserir pedidos
{
    Console.WriteLine("Cliente:"); //escreve na tela a opção que está pedindo
    string cliente = Console.ReadLine(); //insere o que foi digitado pelo usuario na variavel correspondente

    Console.WriteLine("Produto:");
    string Produto = Console.ReadLine();

    Console.WriteLine("Quantidade:");
    int Quantidade = int.Parse(Console.ReadLine());

    string Pedido = cliente + Produto + Quantidade; //pedido um é igual a tudo o que o usuário digitou


   int ItensFila = Fila.Count;
   if (ItensFila == -1)
   {
       Fila.Enqueue("Pedido");
   }
   else
   {
       Fila.Enqueue("Pedido" + ItensFila + 1);
   }
     //Adiciona o item à lista
    Console.WriteLine("Deseja inserir outro pedido? 1-SIM | 2-NÃO"); //escreve na tela as opçoes
    opcao = Console.ReadLine();
}
//Ordena a lista


//Imprime número de itens da lista
Console.WriteLine("Fila Atual" + Environment.NewLine);
Console.WriteLine(Fila.Count + " pedidos");

        //exibe os pedidos
string casos = Console.ReadLine();
switch (casos)
{
    //caso1
    case "Pedido1":
        Console.WriteLine(Fila.Peek());
        break;
    //caso2
    case "Pedido2":
        Console.WriteLine(Fila.ElementAt(2));
        break;
}



while (true) { };

How can I:

  • Store values in variable Pedido 1 ;
  • Create a new variable;
  • Collect the values entered by the user again but now store in a variable pedido 2 ;
  • If the user continues, store in Pedido 3 , on.
  • asked by anonymous 02.07.2015 / 17:18

    2 answers

    3

    It is inappropriate to use the pro que you want. Instead, would use a dictionary or a KeyedCollection .

    First you have to define a data structure correctly for the request. In its code, it practically does not exist. Create a new class in your project with the following:

    public class Pedido 
    {
        public String Cliente { get; set; }
        public String Produto { get; set; }
        public int Quantidade { get; set; }
    }
    

    Replace the queue with an order dictionary:

    var dicionario = new Dictionary<String, Pedido>();
    

    Create an order object and set the variables as you were already doing:

    var pedido = new Pedido();
    
    Console.WriteLine("Cliente:"); //escreve na tela a opção que está pedindo
    pedido.Cliente = Console.ReadLine(); //insere o que foi digitado pelo usuario na variavel correspondente
    
    Console.WriteLine("Produto:");
    pedido.Produto = Console.ReadLine();
    
    Console.WriteLine("Quantidade:");
    pedido.Quantidade = int.Parse(Console.ReadLine());
    

    Enter the order in the dictionary. Define an index (a name for the order). I will invent an index pattern, for example: "Request0", "Request1", "Request2" ...

    dicionario.Add("Pedido" + dicionario.Length.ToString(), pedido);
    

    Access is now simple. Examples:

    //Imprime número de itens da lista
    Console.WriteLine(dicionario.Count + " pedidos");
    
    foreach (var chaveValor in dicionario) 
    {
        Console.WriteLine("Pedido: " + chaveValor.Key);
        Console.WriteLine("Cliente: " + chaveValor.Value.Cliente);
        Console.WriteLine("Produto: " + chaveValor.Value.Produto);
        Console.WriteLine("Quantidade: " + chaveValor.Key.Quantidade.ToString());
    }
    

    To directly access a request:

    var umPedidoQualquer = dicionario["Pedido0"];
    
        
    02.07.2015 / 18:02
    3

    Hello! Since you said that you do not necessarily have to queue, I did it with a list, see if it suits you.

            List<string> Fila = new List<string>(); //Declaração da Fila
    
            string opcao = "1"; //Define opção como 1
    
            while (opcao == "1") //Enquanto ele quiser inserir pedidos
            {
                Console.WriteLine("Cliente:"); //escreve na tela a opção que está pedindo
                string cliente = Console.ReadLine() + " "; //insere o que foi digitado pelo usuario na variavel correspondente
    
                Console.WriteLine("Produto:");
                string Produto = Console.ReadLine() + " ";
    
                Console.WriteLine("Quantidade:");
                int Quantidade = int.Parse(Console.ReadLine());
    
                string Pedido = cliente + Produto + Quantidade; //pedido um é igual a tudo o que o usuário digitou
    
    
    
                //Adiciona o item à lista
                Fila.Add(Pedido);
                Console.WriteLine("Deseja inserir outro pedido? 1-SIM | 2-NÃO"); //escreve na tela as opçoes
                opcao = Console.ReadLine();
            }
            //Ordena a lista
    
            Console.WriteLine(Fila.Count + " pedidos");
    
    
            //exibe os pedidos
            int a = 1;
            foreach (string pedido in Fila)
            {
    
                Console.WriteLine("Pedido nº: "+ a +" "+ pedido);
                a++;
            }
    
    
            while (true) { };
    
        }
    }
    

    }

        
    02.07.2015 / 21:20