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"); }
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 Relatorio(Sistema Sistema, VeiculoNaEstrada veiculoNaEstrada) { Codigo = RelatorioCore.ObtemCodigo(Sistema); VeiculoNaEstrada = veiculoNaEstrada; ViagemFinalizada = "não foi finalizada"; }