static void ProcessarVoos(Voo vooSelecionado) { Passageiro passageiro; ConsoleKeyInfo teclaPressionada; Console.Clear(); do { Console.WriteLine("---------------------------> EMPRESA AÉREA QUEDA LIVRE\t\t {0} <---------------------------\n", vooSelecionado.NomeVoo); Console.WriteLine("-----------> MENU DE OPÇÕES\n"); Console.WriteLine(" [F1] Lista de Passageiros"); Console.WriteLine(" [F2] Pesquisar"); Console.WriteLine(" [F3] Cadastrar Passageiros"); Console.WriteLine(" [F4] Excluir Passageiro da Lista"); Console.WriteLine(" [F5] Mostrar Fila de Espera"); Console.WriteLine(" [F6] Selecionar outro voo"); Console.WriteLine("[ESC] SAIR"); teclaPressionada = Console.ReadKey(); switch (teclaPressionada.Key) { case ConsoleKey.F1: Console.Clear(); StringBuilder textoListaVoos = vooSelecionado.ListarPassageiros(); Console.WriteLine(textoListaVoos.ToString()); textoListaVoos.Clear(); break; case ConsoleKey.F2: Console.Clear(); int cpf; Console.Write("Informe o CPF do passageiro que deseja buscar: "); if (int.TryParse(Console.ReadLine(), out cpf)) { Passageiro passageiroPesquisa = vooSelecionado.Passageiros.Cast <Passageiro>().FirstOrDefault(a => a.CPF == cpf); if (passageiroPesquisa != null) { StringBuilder dadosPassageiro = passageiroPesquisa.RetornarDadosPassageiro(); Console.WriteLine(dadosPassageiro.ToString()); dadosPassageiro.Clear(); } else { Console.WriteLine("Passageiro não localizado neste voo!"); } } else { Console.WriteLine("O CPF do passageiro está no formato incorreto, por favor preencha novamente."); break; } break; case ConsoleKey.F3: Console.Clear(); if (vooSelecionado.VerificarSeFilaEsperaPossuiEspaco()) { int inteiroAuxiliar; string textoAuxiliar = string.Empty; passageiro = new Passageiro(); passageiro.NumeroVoo = vooSelecionado.NumeroVoo; passageiro.HorarioVoo = vooSelecionado.HorarioVoo; passageiro.NumeroPoltrona = Voo.BuscarProximaPoltronaVazia(); Console.Write("Informe o CPF do passageiro: "); if (int.TryParse(Console.ReadLine(), out inteiroAuxiliar)) { if (vooSelecionado.Passageiros.Cast <Passageiro>().Any(a => a.CPF == inteiroAuxiliar)) { Console.WriteLine("Já existe um passageiro cadastrado no voo com o CPF informado, por favor informe outro CPF válido."); break; } else { passageiro.CPF = inteiroAuxiliar; } } else { Console.WriteLine("O CPF do passageiro está no formato incorreto, por favor preencha novamente."); break; } Console.Write("Informe o nome do passageiro: "); textoAuxiliar = Console.ReadLine(); if (!string.IsNullOrWhiteSpace(textoAuxiliar)) { passageiro.Nome = textoAuxiliar; } else { Console.WriteLine("O nome do passageiro é de preenchimento obrigatório."); break; } Console.Write("Informe o sobrenome do passageiro: "); textoAuxiliar = Console.ReadLine(); if (!string.IsNullOrWhiteSpace(textoAuxiliar)) { passageiro.Sobrenome = textoAuxiliar; } else { Console.WriteLine("O sobrenome do passageiro é de preenchimento obrigatório."); break; } Console.Write("Informe o endereço do passageiro: "); textoAuxiliar = Console.ReadLine(); if (!string.IsNullOrWhiteSpace(textoAuxiliar)) { passageiro.Endereco = textoAuxiliar; } else { Console.WriteLine("O endereço do passageiro é de preenchimento obrigatório."); break; } Console.Write("Informe o telefone do passageiro: "); textoAuxiliar = Console.ReadLine(); if (!string.IsNullOrWhiteSpace(textoAuxiliar)) { passageiro.Telefone = textoAuxiliar; } else { Console.WriteLine("O telefone do passageiro é de preenchimento obrigatório."); break; } Console.Write("Informe o número da passagem do passageiro: "); if (int.TryParse(Console.ReadLine(), out inteiroAuxiliar)) { if (vooSelecionado.Passageiros.Cast <Passageiro>().Any(a => a.CPF == inteiroAuxiliar)) { Console.WriteLine("Já existe um passageiro cadastrado no voo com o número de passagem informado, por favor informe outro número de passagem válido."); break; } else { passageiro.NumeroPassagem = inteiroAuxiliar; } } else { Console.WriteLine("O número da passagem do passageiro está no formato incorreto, por favor tente novamente."); break; } Console.WriteLine(vooSelecionado.AdicionarPassageiroVoo(passageiro)); } else { Console.WriteLine("\nA reserva do voo não pode ser feita, pois o voo e a lista de espera estão completos!\n"); } break; case ConsoleKey.F4: Console.Clear(); int cpfExcluir; Console.Write("Informe o CPF do passageiro que deseja cancelar o voo: "); if (int.TryParse(Console.ReadLine(), out cpfExcluir)) { Passageiro passageiroExcluir = vooSelecionado.Passageiros.Cast <Passageiro>().FirstOrDefault(a => a.CPF == cpfExcluir); StringBuilder mensagemExclusao = vooSelecionado.ExcluirPassageiro(passageiroExcluir); Console.WriteLine(mensagemExclusao.ToString()); mensagemExclusao.Clear(); } else { Console.WriteLine("O CPF do passageiro está no formato incorreto, por favor preencha novamente."); break; } break; case ConsoleKey.F5: Console.Clear(); StringBuilder textoFilaEspera = vooSelecionado.ListarFilaEspera(); Console.WriteLine(textoFilaEspera.ToString()); textoFilaEspera.Clear(); break; case ConsoleKey.F6: Console.Clear(); return; default: Console.Clear(); Console.WriteLine("\nOpção incorreta, por favor insira uma opção válida e tente novamente!"); break; } } while (teclaPressionada.Key != ConsoleKey.Escape); }
static void Main(string[] args) { //Lista de voos disponíveis ArrayList listaVoos = new ArrayList(); ConsoleKeyInfo teclaPressionada; try { do { Console.WriteLine("---------------------------> EMPRESA AÉREA KONOHA <---------------------------\n"); Console.WriteLine("-----------> MENU DE OPÇÕES DO VOO\n"); Console.WriteLine(" [F1] Lista de Voos"); Console.WriteLine(" [F2] Acessar Voo"); Console.WriteLine(" [F3] Cadastrar Voo"); Console.WriteLine("[ESC] SAIR"); //Armazena a tecla que foi pressionada teclaPressionada = Console.ReadKey(); switch (teclaPressionada.Key) { case ConsoleKey.F1: Console.Clear(); //Informações sobre a lista de voos StringBuilder textoListaVoos = Voo.ListarVoos(listaVoos); Console.WriteLine(textoListaVoos.ToString()); textoListaVoos.Clear(); break; case ConsoleKey.F2: Console.Clear(); //Se a lista de voos possui registros if (listaVoos.Count > 0) { //Mostra a lista de voos para que o usuário escolha algum registro textoListaVoos = Voo.ListarVoos(listaVoos); Console.WriteLine(textoListaVoos.ToString()); Console.Write("Selecione o número do voo que deseja acessar: "); int numeroVooSelecionado; //Se conseguirmos converter a informação que o usuário passou if (int.TryParse(Console.ReadLine(), out numeroVooSelecionado)) { Voo vooSelecionado = listaVoos.Cast <Voo>().FirstOrDefault(a => a.NumeroVoo == numeroVooSelecionado); if (vooSelecionado != null) { ProcessarVoos(vooSelecionado); } else { Console.WriteLine("\n-----> Voo não encontrado.\n"); } } else { Console.WriteLine("\n-----> Número do voo está no formato incorreto, por favor tente novamente.\n"); } textoListaVoos.Clear(); } else { Console.WriteLine("-----> Não possui voos cadastrados no sistema.\n"); } break; case ConsoleKey.F3: Console.Clear(); Voo voo = null; DateTime horarioVoo = DateTime.MinValue; bool dataConvertida = false; Console.WriteLine("Selecione o voo que deseja criar: \n"); Console.WriteLine("[F1] BH/Rio"); Console.WriteLine("[F2] BH/SP"); Console.WriteLine("[F3] BH/Recife"); Console.WriteLine("[F12] Cancelar"); teclaPressionada = Console.ReadKey(); switch (teclaPressionada.Key) { case ConsoleKey.F1: Console.Clear(); Console.Write("\nInforme a data e horário do voo (no seguinte formato dd/MM/yyyy HH:mm): "); dataConvertida = DateTime.TryParse(Console.ReadLine(), out horarioVoo); //Se conseguirmos converter a data informada pelo usuário if (dataConvertida) { if (horarioVoo >= DateTime.Now) { voo = new Voo(NomeVooEnum.BHRio); } else { Console.WriteLine("\n-----> Horário do voo não pode ser menor o igual a data atual.\n"); } } else { Console.WriteLine("\n-----> Horário do voo está no formato incorreto, por favor tente novamente.\n"); } break; case ConsoleKey.F2: Console.Clear(); Console.Write("\nInforme a data e horário do voo: \n"); dataConvertida = DateTime.TryParse(Console.ReadLine(), out horarioVoo); if (dataConvertida) { if (horarioVoo >= DateTime.Now) { voo = new Voo(NomeVooEnum.BHRio); } else { Console.WriteLine("\n-----> Horário do voo não pode ser menor o igual a data atual.\n"); } } else { Console.WriteLine("\n-----> Horário do voo está no formato incorreto, por favor tente novamente.\n"); } break; case ConsoleKey.F3: Console.Clear(); Console.Write("\nInforme a data e horário do voo: "); dataConvertida = DateTime.TryParse(Console.ReadLine(), out horarioVoo); if (dataConvertida) { if (horarioVoo >= DateTime.Now) { voo = new Voo(NomeVooEnum.BHRio); } else { Console.WriteLine("\n-----> Horário do voo não pode ser menor o igual a data atual.\n"); } } else { Console.WriteLine("\n-----> Horário do voo está no formato incorreto, por favor tente novamente.\n"); } break; case ConsoleKey.F12: Console.Clear(); break; default: Console.Clear(); Console.WriteLine("Opção inválida, tente novamente!\n"); break; } if (teclaPressionada.Key != ConsoleKey.F12) { if (dataConvertida && voo != null && horarioVoo != DateTime.MinValue) { voo.HorarioVoo = horarioVoo; listaVoos.Add(voo); Console.WriteLine("Voo {0} - Número do voo {1} criado com sucesso!\n", voo.NomeVoo, voo.NumeroVoo); } } break; default: Console.Clear(); Console.WriteLine("Opção incorreta, por favor insira uma opção válida e tente novamente!\n"); break; } } while (teclaPressionada.Key != ConsoleKey.Escape); } catch (Exception ex) { Console.WriteLine("Ocorreu um erro no sistema, por favor entre em contato com o administrador do sistema: {0}", ex.Message); } }