static void Main(string[] args) { Listas listas = new Listas(); VeiculoCore veiculocore = new VeiculoCore(); PercursoCore percursocore = new PercursoCore(); Menu.MenuPrincipal(veiculocore, listas, percursocore); }
internal static void EscolherPartida(VeiculoCore veiculoCore, CarroPercurso carroPercurso) { Console.WriteLine("TEMOS DUAS MANEIRAS DE PROSSEGUIR ESSA VIAGEM:\n[A]-AUTOMATICO\n[B]-PROCEDURAL\n\nCOMO DESEJA PROSSEGUIR?\n\n [ESC] - SAIR"); while (true) { Console.Clear(); ConsoleKeyInfo tecla = Console.ReadKey(); // armazena uma tecla switch (tecla.Key) { case ConsoleKey.Escape: Console.WriteLine("\n OOBRIGADO! PRESSIONE ENTER PARA SAIR.."); Console.ReadKey(); Environment.Exit(0); break; case ConsoleKey.A: break; } } ; }
public static void MainMenu(Sistema sistema) { string escolha; Relatorio relatorio = new Relatorio(); VeiculoNaEstrada veiculoNaEstrada; do { Console.Clear(); Console.WriteLine("\nEscolha uma das opções abaixo:\n"); Console.WriteLine("1) Cadastrar um veiculo"); Console.WriteLine("2) Cadastrar uma viagem"); Console.WriteLine("3) Vincular um veiculo a uma viagem"); Console.WriteLine("4) Selecionar um veiculo e viagem"); Console.WriteLine("5) Dirigir"); Console.WriteLine("6) Abastecer"); Console.WriteLine("7) Calibrar pneu"); Console.WriteLine("8) Mostrar informações"); Console.WriteLine("0) Sair"); Console.Write("\nOpção escolhida: "); escolha = Console.ReadLine().Trim(); Console.Clear(); switch (escolha) { case "0": MensagensComDelay.MensagemSairPrograma(); Environment.Exit(0); break; case "1": sistema.Veiculos.Add(VeiculoCore.CadastrarVeiculo(sistema, new Veiculo())); Console.Clear(); MensagensComDelay.MensagemVeiculoCadastrado(); break; case "2": sistema.Viagens.Add(ViagemCore.CadastrarViagem(sistema, new Viagem())); Console.Clear(); MensagensComDelay.MensagemViagemCadastrada(); break; case "3": if (sistema.Veiculos.Count > 0 && sistema.Viagens.Count > 0) { VeiculoCore.MostraVeiculosNaLista(sistema); Veiculo veiculo = VeiculoCore.EncontraVeiculoNaLista(sistema); while (veiculo == null) { MensagensComDelay.MensagemPlacaInvalida(); veiculo = VeiculoCore.EncontraVeiculoNaLista(sistema); } Console.Clear(); ViagemCore.MostraViagensNaLista(sistema); Viagem viagem = ViagemCore.EncontrarViagemNaLista(sistema); while (viagem == null) { MensagensComDelay.MensagemCodigoViagemInvalido(); viagem = ViagemCore.EncontrarViagemNaLista(sistema); } Console.Clear(); sistema.Veiculos.Remove(veiculo); sistema.Viagens.Remove(viagem); veiculoNaEstrada = new VeiculoNaEstrada(veiculo, viagem, VeiculoNaEstradaCore.ObtemCodigoVeiculoNaEstrada(sistema)); sistema.VeiculosNaEstrada.Add(veiculoNaEstrada); sistema.Relatorios.Add(new Relatorio(sistema, veiculoNaEstrada)); MensagensComDelay.MensagemVeiculoNaEstradaVinculado(); } else if (sistema.Veiculos.Count == 0) { MensagensComDelay.MensagemSemVeiculoNaLista(); } else if (sistema.Viagens.Count == 0) { MensagensComDelay.MensagemSemViagemNaLista(); } break; case "4": if (sistema.VeiculosNaEstrada.Count == 0) { MensagensComDelay.MensagemSemVeiculosNaEstrada(); } else { VeiculoNaEstradaCore.MostraVeiculosNaEstradaCadastrados(sistema); do { veiculoNaEstrada = VeiculoNaEstradaCore.EncontrarVeiculoNaEstradaNaLista(sistema); if (veiculoNaEstrada == null) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\nNão foi encontrado nem um veiculo na estrada com esse codigo!"); Console.ForegroundColor = ConsoleColor.White; } } while (veiculoNaEstrada == null); relatorio = RelatorioCore.EncontrarRelatorioNaListaPeloVeiculo(sistema, veiculoNaEstrada); //Essa comparação é necessária. A primeira vez que selecionar esse VeiculoNaEstrada, ele vai atribuir na lista os parametros base do StatusPneu e MudancaClimatica. if (relatorio.StatusPneu.Count == 0) { //Variaveis auxiliares para construir os objetos e inserir dentro de StatusPneu e Clima. double multiplicadorClima = 0, distanciaOcorrencia = 0, multiplicadorPneu = 0; int statusAtualPneu = 0; string tipoStatus = ""; switch (veiculoNaEstrada.Viagem.Clima) { case "nevando": multiplicadorClima = 0.3; break; case "chuvoso": multiplicadorClima = 0.19; break; case "ensolarado": multiplicadorClima = 0; break; } switch (veiculoNaEstrada.Veiculo.StatusPneu) { case "novo": multiplicadorPneu = 0; statusAtualPneu = 3; tipoStatus = "novo"; break; case "pouco desgastado": multiplicadorPneu = 0.0725; statusAtualPneu = 2; tipoStatus = "pouco desgastado"; break; case "desgastado": multiplicadorPneu = 0.0915; statusAtualPneu = 1; tipoStatus = "desgastado"; break; } relatorio.Clima.Add(new MudancaClimatica(distanciaOcorrencia, multiplicadorClima, veiculoNaEstrada.Viagem.Clima)); relatorio.StatusPneu.Add(new DesgastePneu(distanciaOcorrencia, multiplicadorPneu, 0, statusAtualPneu, tipoStatus)); } } Console.Clear(); MensagensComDelay.MensagemVeiculoNaEstradaSelecionado(); break; case "5": if (relatorio.StatusPneu.Count == 0) { MensagensComDelay.MensagemVeiculoNaEstradaNaoSelecionado(); } else if (relatorio.VeiculoNaEstrada.Veiculo.QuantidadeAlcool + relatorio.VeiculoNaEstrada.Veiculo.QuantidadeGasolina == 0) { MensagensComDelay.MensagemTanqueSemCombustivel(); } //Estou usando o ElementAt para buscar o ultimo status do pneu adicionado na lista. A comparação com 0 é para verificar se o pneu está furado. else if (relatorio.StatusPneu.ElementAt(relatorio.StatusPneu.Count - 1).StatusAtualDoPneu == 0) { VeiculoCore.CalibrarPneu(relatorio); } else { Console.WriteLine("Gostaria de deixar no piloto automatico?"); string decisao = Validacao.ValidaSeSimOuNao(); if (decisao == "S") { VeiculoCore.ObtemDistanciaASerPercorrida(relatorio, "S"); } else { VeiculoCore.ObtemDistanciaASerPercorrida(relatorio, "N"); } if (relatorio.KilometrosPercorridos == relatorio.VeiculoNaEstrada.Viagem.DistanciaTotal) { relatorio.ViagemFinalizada = "foi finalizada"; sistema.VeiculosNaEstrada.Remove(relatorio.VeiculoNaEstrada); relatorio = new Relatorio(); } } break; case "6": if (relatorio.Clima == null) { MensagensComDelay.MensagemVeiculoNaEstradaNaoSelecionado(); } else { if (relatorio.VeiculoNaEstrada.Veiculo.CapacidadeDoTanque == relatorio.VeiculoNaEstrada.Veiculo.QuantidadeAlcool + relatorio.VeiculoNaEstrada.Veiculo.QuantidadeGasolina) { MensagensComDelay.MensagemTanqueCheio(); } else { Console.Write("Gostaria de encher o tanque? (S|N) : "); string encherTanque = Validacao.ValidaSeSimOuNao(); if (relatorio.VeiculoNaEstrada.Veiculo.TipoDeTanque == "FLEX") { escolha = Validacao.ValidaSeAbasteceGasolinaOuAlcool(); } VeiculoCore.Abastecer(relatorio.VeiculoNaEstrada.Veiculo, escolha, encherTanque); relatorio.QuantidadeAbastecimento++; MensagensComDelay.MensagemCarroAbastecido(); } } break; case "7": if (relatorio.StatusPneu.Count == 0) { MensagensComDelay.MensagemVeiculoNaEstradaNaoSelecionado(); } else { VeiculoCore.CalibrarPneu(relatorio); } break; case "8": SubMenuExibir(sistema); continue; //Foi usado o continue nesse caso, pois não há necessidade de salvar alguma alteração depois de exibir os dados. default: MensagensComDelay.MensagemEscolhaInvalida(); break; } BancoDeDados.BancoDeDados.Salvar(sistema); } while (true); }
public static void SubMenuExibir(Sistema sistema) { string escolha; do { Console.Clear(); Console.WriteLine("\nEscolha uma das opções abaixo:\n"); Console.WriteLine("1) Exibir veiculos cadastrados"); Console.WriteLine("2) Exibir viagens cadastradas"); Console.WriteLine("3) Exibir os veiculos na estrada"); Console.WriteLine("4) Exibir os relatórios"); Console.WriteLine("5) Exibir um relatório específico"); Console.WriteLine("9) Voltar ao menu anterior"); Console.WriteLine("0) Sair"); Console.Write("\nOpção escolhida: "); escolha = Console.ReadLine(); Console.Clear(); switch (escolha) { case "0": MensagensComDelay.MensagemSairPrograma(); Environment.Exit(0); break; case "1": if (sistema.Veiculos.Count == 0) { MensagensComDelay.MensagemSemVeiculoNaLista(); } else { VeiculoCore.MostraVeiculosNaLista(sistema); } break; case "2": if (sistema.Viagens.Count == 0) { MensagensComDelay.MensagemSemViagemNaLista(); } else { ViagemCore.MostraViagensNaLista(sistema); } break; case "3": if (sistema.VeiculosNaEstrada.Count == 0) { MensagensComDelay.MensagemSemVeiculosNaEstrada(); } else { VeiculoNaEstradaCore.MostraVeiculosNaEstradaCadastrados(sistema); } break; case "4": if (sistema.Relatorios.Count == 0) { MensagensComDelay.MensagemSemRelatorioNaLista(); } else { RelatorioCore.MostraRelatorios(sistema); Console.WriteLine("Aperte qualquer tecla para continuar."); Console.ReadKey(); } break; case "5": if (sistema.Relatorios.Count == 0) { MensagensComDelay.MensagemSemRelatorioNaLista(); } else { RelatorioCore.MostraRelatorios(sistema); Relatorio relatorio; do { relatorio = RelatorioCore.EncontrarRelatorioNaLista(sistema); if (relatorio == null) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\nNão foi encontrado nem um relatorio com esse codigo!"); Console.ForegroundColor = ConsoleColor.White; } } while (relatorio == null); Console.Clear(); RelatorioCore.ImprimeInformacoesCompletasRelatorio(relatorio); } break; case "9": break; default: MensagensComDelay.MensagemEscolhaInvalida(); break; } } while (escolha != "9"); }
internal static void SubMenuViagem(Listas listas, PercursoCore percursoCore, VeiculoCore veiculoCore) { Console.WriteLine("====================INFORMAÇÕES VIAGEM====================\\n\n"); Console.WriteLine(" [A] - CADASTRAR VIAGEM ");// adicionar viagem na lista de viagens Console.WriteLine(" [B] - EXIBIR VIAGENS "); Console.WriteLine(" [C] - PLANEJAR VIAGEM \n"); Console.WriteLine(" [D] - VIAJAR"); Console.WriteLine(" [E] - EXIBIR RELATÓRIOS\n"); Console.WriteLine(" [ESC] - SAIR"); while (true) { ConsoleKeyInfo tecla = Console.ReadKey(); // armazena uma tecla switch (tecla.Key) { case ConsoleKey.Escape: Console.WriteLine("\n OOBRIGADO! PRESSIONE ENTER PARA SAIR.."); Console.ReadKey(); Environment.Exit(0); break; case ConsoleKey.A: // registra e adiciona uma viagem dentro da lista Console.WriteLine("VOCÊ PODE CADASTRAR MAIS DE UMA VIAGEM.\nQUANTAS VIAGENS VOCÊ QUER CADASTRAR?"); int x = Validacoes.ValidarInteiros(Console.ReadLine()); for (int i = 1; i <= x; i++) { Console.WriteLine($"DIGITE INFORMAÇÕES DA {i}º VIAGEM "); listas.Viagens.Add(percursoCore.RegistrarViagem()); } break; case ConsoleKey.B: percursoCore.MostrarViagens(listas); // EXIBIR MINHA LISTA DE VIAGENS CADASTRADAS Console.ReadKey(); break; case ConsoleKey.C: percursoCore.EscolhendoCarroEViagem(listas, veiculoCore); // escolher carro pela placa e escolher viagem CarroPercurso carroPercurso = percursoCore.EscolherCarroPercurso(listas); // inicar a viagem automatico ou manual veiculoCore.PartindoAutomatico(carroPercurso, listas, percursoCore); Console.ReadKey(); break; case ConsoleKey.D: break; case ConsoleKey.E: listas.VeiculosEViagens.ForEach(s => Console.WriteLine(s)); Console.WriteLine("\n\nESCOLHA E DIGITE UMA VIAGEM PARAEXIBIR RELATÓRIO:"); int codigo = Validacoes.ValidarInteiros(Console.ReadLine()); Relatorio relatorio = listas.Relatorios.Where(s => s.CarroPercurso.CodigoId == codigo).FirstOrDefault(); Console.Clear(); if (relatorio == null) { Console.WriteLine("NÃO EXISTE RELATÓRIOS!\nAPERTE QUALQUER TECLA PARA VOLTAR"); Console.ReadKey(); } else if (listas.Relatorios.Count(s => s.CarroPercurso.CodigoId == codigo) > 1) { Console.WriteLine(" EXISTE MAIS DE UM RELATÓRIO\nVIAGEM CANCELADA"); foreach (Relatorio s in listas.Relatorios) { if (s.CarroPercurso.CodigoId == codigo) { Console.WriteLine(s); } } } else { Console.WriteLine(relatorio); } break; default: Console.Write("\nOBRIGADO, PRESSIONE QUALQUER TECLA PARA REINICIAR"); Console.ReadKey(); Menu.MenuPrincipal(veiculoCore, listas, percursoCore); break; } } }
internal static void MenuPrincipal(VeiculoCore veiculoCore, Listas listas, PercursoCore percursoCore) { // todo dividir menu em submenus while (true) { Console.Clear(); Console.ForegroundColor = ConsoleColor.DarkBlue; Console.WriteLine("\t SEJA BEM VINDO AO NOSSO SISTEMA.\n"); // todo definir um nome para o sistema Console.ResetColor(); Console.WriteLine("====================INFORMAÇÕES CARRO====================\n\n"); Console.WriteLine("O QUE DESEJA FAZER?\n "); Console.WriteLine(" [A] - CADASTRAR CARRO "); Console.WriteLine(" [B] - ABASTECER"); Console.WriteLine(" [C] - ESCOLHER UM CARRO DOS CARROS CADASTRADOS "); Console.WriteLine(" [D] - MOSTRAR DADOS DO CARRO CADASTRADO"); Console.WriteLine(" [E] - INSERIR INFORMAÇÕES DA VIAGEM\n\n"); Console.WriteLine(" [ESC] - SAIR"); ConsoleKeyInfo tecla = Console.ReadKey(); // armazena uma tecla switch (tecla.Key) { case ConsoleKey.Escape: Console.WriteLine("\n OOBRIGADO! PRESSIONE ENTER PARA SAIR.."); Console.ReadKey(); Environment.Exit(0); break; case ConsoleKey.A: Console.WriteLine("\nQUANTOS CARROS PRETENDE CADASTRAR:\n"); int qtd = Validacoes.ValidarInteiros(Console.ReadLine()); for (int i = 1; i <= qtd; i++) { Console.WriteLine($"DIGITE DADOS DO {i}º CARRO:\n"); listas.Veiculos.Add(veiculoCore.CadastrarCarro()); } break; case ConsoleKey.B: veiculoCore.Abastecendo(listas); // ESCOHER CARRO PELA PLACA E ABASTECER Console.ReadKey(); break; case ConsoleKey.C: Veiculo veiculo = veiculoCore.EscolhendoCarroParaDirigir(listas); // ESTAREI ESCOLHENDO UM CARRO DENTRO DA MINHA LISTA PARA DIRIGIR break; case ConsoleKey.D: veiculoCore.ExibirCarrosCadastrados(listas); // EXIBIR MINHA LISTA DE CARROS CADASTRADOS Console.ReadKey(); break; case ConsoleKey.E: Console.Clear(); SubMenuViagem(listas, percursoCore, veiculoCore); break; default: Console.Write("\nVALOR INVÁLIDO, PRESSIONE QUALQUER TECLA PARA REINICIAR"); Console.ReadKey(); break; } } }