Exemple #1
0
        static void Main(string[] args)
        {
            Listas       listas       = new Listas();
            VeiculoCore  veiculocore  = new VeiculoCore();
            PercursoCore percursocore = new PercursoCore();

            Menu.MenuPrincipal(veiculocore, listas, percursocore);
        }
Exemple #2
0
        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;
                }
            }
            ;
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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");
        }
Exemple #5
0
        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;
                }
            }
        }
Exemple #6
0
        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;
                }
            }
        }