示例#1
0
 public void Salvar(AgenciaDeViagens agencia)
 {
     using (StreamWriter file = File.CreateText(Json))
     {
         string jsonData = JsonConvert.SerializeObject(agencia);
         file.WriteLine(jsonData);
     }
 }
示例#2
0
        public AgenciaDeViagens BuscarDadados()
        {
            if (!File.Exists(Json))
            {
                return(null);
            }

            JObject          o1      = JObject.Parse(File.ReadAllText(Json));
            AgenciaDeViagens agencia = JsonConvert.DeserializeObject <AgenciaDeViagens>(o1.ToString());

            return(agencia);
        }
示例#3
0
        static void Main(string[] args)
        {
            BancoJSON banco = new BancoJSON();

            agencia = banco.BuscarDadados();
            if (agencia == null)
            {
                agencia = new AgenciaDeViagens();
            }

            Menu menu = new Menu();

            menu.MenuDaAgencia(agencia, banco);
        }
示例#4
0
 void AutenticaoParaBViagemPadrao(double tanque, Relatorio re, AgenciaDeViagens agencia)
 {
     Console.WriteLine($"Faltam {_Viagem.Distancia} KM");
     if (tanque <= 0.0)
     {
         Console.WriteLine("Você está sem combustivel... deseja abastecer?\n");
         Console.Write("Digite S para Sim ou N para Não: ");
         opcao2 = Validacao.ValidarSimOuNao(Console.ReadLine().ToUpper());
         if (opcao2 == "S")
         {
             _Veiculo.AbastecerVeiculoPadrão();
             re.ParadasAbastecimento++;
         }
         else
         {
             Console.WriteLine("Como não há combustivel é impossivel continuar");
             agencia.Relatorios.Add(re);
             return;
         }
     }
     if (_Veiculo.EstadoPneu == 0)
     {
         Console.WriteLine("Seu pneu está totalmente descalibrado... deseja calibrar?\n");
         Console.Write("Digite S para Sim ou N para Não: ");
         opcao2 = Validacao.ValidarSimOuNao(Console.ReadLine().ToUpper());
         if (opcao2 == "S")
         {
             _Veiculo.Calibrar();
             re.ParadasCalibragem++;
         }
         else
         {
             Console.WriteLine("Como o pneu está em condição 0 é impossivel continuar");
             agencia.Relatorios.Add(re);
             return;
         }
     }
 } //METODO LOCAL ONDE VOU REPETIR A VALIDAÇÃO SE TEM COMBUSTIVEL E SE HÁ O ESTADO DO PNEU DIFERENTE DE ZERO (PARA CARRO PADRAO)
示例#5
0
        public void DirigirNaViagemProcedural(AgenciaDeViagens agencia) // PERCORRER A VIAGEM COM UM VEICULO DE MODO PROCEDURAL, ONDE RODA DEPENDENDO ATÉ ONDE O USUARIO DIGITOU E PARA EM UM POSTO
        {
            Relatorio relatorio = new Relatorio(this);

            _Veiculo.KmPorAlcool   = _Veiculo.KmPorAlcoolAtual;
            _Veiculo.KmPorGasolina = _Veiculo.KmPorGasolinaAtual;
            _Veiculo.EstadoPneu    = _Veiculo.EstadoPneuAtual;
            _Viagem.Clima          = _Viagem.ClimaAtual;

            double KmRodar = 0.0;
            double AutonomiaA;
            double AutonomiaG;
            double cont = 0.0;

            if (_Veiculo.TipoCombustivel == "gasolina")
            {
                AutenticaoParaBViagemPadrao(_Veiculo.LitrosGasolina, relatorio, agencia);
                if (opcao2 == "N")
                {
                    return;
                }
                do
                {
                    Console.WriteLine($"A viagem tem: {_Viagem.Distancia}");
                    Console.Write("Digite quantos KM deseja rodar com o veiculo: ");
                    KmRodar += Validacao.ValidarNumerosDouble(Console.ReadLine());
                    while (relatorio.KmPercorrido < KmRodar && _Viagem.Distancia > 0)
                    {
                        Console.Clear();
                        AutonomiaG                 = Calculo.CalcularAutonomiaPadrao(_Viagem.Clima, _Veiculo, _Veiculo.KmPorGasolinaAtual);
                        _Viagem.Distancia          = Math.Round((_Viagem.Distancia - 0.1), 2);
                        relatorio.KmPercorrido     = Math.Round((relatorio.KmPercorrido + 0.1), 2);
                        _Veiculo.LitrosGasolina    = Math.Round((_Veiculo.LitrosGasolina - (0.1 / AutonomiaG)), 2);
                        relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaG)), 2);
                        if (_Veiculo.LitrosGasolina <= 0.0)
                        {
                            _Veiculo.LitrosGasolina = 0.0;
                            AutenticaoParaBViagemPadrao(_Veiculo.LitrosGasolina, relatorio, agencia);
                            if (opcao2 == "N")
                            {
                                return;
                            }
                        }
                        cont = Math.Round((cont + 0.1), 1);
                        if (cont == 100)
                        {
                            _Veiculo.AlteracaoPneu();
                            relatorio.DesgasteDoPneuEvento(relatorio.KmPercorrido, _Veiculo.EstadoPneu);
                            _Viagem.AlteracaoClima();
                            relatorio.MudancaClimaticaDoEvento(relatorio.KmPercorrido, _Viagem.Clima);
                            if (_Veiculo.EstadoPneu == 0)
                            {
                                AutenticaoParaBViagemPadrao(_Veiculo.LitrosGasolina, relatorio, agencia);
                            }
                            if (opcao2 == "N")
                            {
                                return;
                            }
                            cont = 0;
                        }
                    }
                    PosCorrida(relatorio);
                } while (_Viagem.Distancia > 0);

                Console.WriteLine("Você completou a viagem!");
                agencia.Relatorios.Add(relatorio);
                Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                Console.ReadKey();
            }

            else if (_Veiculo.TipoCombustivel == "alcool")
            {
                AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                if (opcao2 == "N")
                {
                    return;
                }
                do
                {
                    Console.WriteLine($"A viagem tem: {_Viagem.Distancia}");
                    Console.Write("Digite quantos KM deseja rodar com o veiculo: ");
                    KmRodar += Validacao.ValidarNumerosDouble(Console.ReadLine());
                    while (relatorio.KmPercorrido < KmRodar && _Viagem.Distancia > 0)
                    {
                        AutonomiaA                 = Calculo.CalcularAutonomiaPadrao(_Viagem.Clima, _Veiculo, _Veiculo.KmPorAlcoolAtual);
                        _Viagem.Distancia          = Math.Round((_Viagem.Distancia - 0.1), 2);
                        relatorio.KmPercorrido     = Math.Round((relatorio.KmPercorrido + 0.1), 2);
                        _Veiculo.LitrosAlcool      = Math.Round((_Veiculo.LitrosAlcool - (0.1 / AutonomiaA)), 2);
                        relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaA)), 2);
                        if (_Veiculo.LitrosAlcool <= 0.0)
                        {
                            _Veiculo.LitrosAlcool = 0.0;
                            AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                            if (opcao2 == "N")
                            {
                                return;
                            }
                        }
                        cont = Math.Round((cont + 0.1), 1);
                        if (cont == 100)
                        {
                            _Veiculo.AlteracaoPneu();
                            relatorio.DesgasteDoPneuEvento(relatorio.KmPercorrido, _Veiculo.EstadoPneu);
                            _Viagem.AlteracaoClima();
                            relatorio.MudancaClimaticaDoEvento(relatorio.KmPercorrido, _Viagem.Clima);
                            if (_Veiculo.EstadoPneu == 0)
                            {
                                AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                            }
                            if (opcao2 == "N")
                            {
                                return;
                            }
                            cont = 0;
                        }
                    }

                    PosCorrida(relatorio);
                } while (_Viagem.Distancia > 0);

                Console.WriteLine("Você completou a viagem!");
                agencia.Relatorios.Add(relatorio);
                Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                Console.ReadKey();
            }

            else if (_Veiculo.Flex)
            {
                AutenticaoParaBViagemFlex(relatorio, agencia);
                if (opcao2 == "N")
                {
                    return;
                }
                do
                {
                    Console.WriteLine($"A viagem tem: {_Viagem.Distancia}");
                    Console.Write("Digite quantos KM deseja rodar com o veiculo: ");
                    KmRodar += Validacao.ValidarNumerosDouble(Console.ReadLine());
                    while (relatorio.KmPercorrido < KmRodar && _Viagem.Distancia > 0)
                    {
                        AutonomiaA             = Calculo.CalcularAutonomiaPadrao(_Viagem.Clima, _Veiculo, _Veiculo.KmPorAlcoolAtual);
                        AutonomiaG             = Calculo.CalcularAutonomiaPadrao(_Viagem.Clima, _Veiculo, _Veiculo.KmPorAlcoolAtual);
                        _Viagem.Distancia      = Math.Round((_Viagem.Distancia - 0.1), 2);
                        relatorio.KmPercorrido = Math.Round((relatorio.KmPercorrido + 0.1), 2);
                        if (_Veiculo.LitrosAlcool > 0.0)
                        {
                            _Veiculo.LitrosAlcool      = Math.Round((_Veiculo.LitrosAlcool - (0.1 / AutonomiaA)), 2);
                            relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaA)), 2);
                        }
                        if (_Veiculo.LitrosAlcool <= 0.0)
                        {
                            _Veiculo.LitrosAlcool      = 0.0;
                            _Veiculo.LitrosGasolina    = Math.Round((_Veiculo.LitrosGasolina - (0.1 / AutonomiaG)), 2);
                            relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaG)), 2);
                            if (opcao2 == "N")
                            {
                                return;
                            }
                        }
                        if (_Veiculo.LitrosAlcool <= 0.0 && _Veiculo.LitrosGasolina <= 0.0)
                        {
                            _Veiculo.LitrosGasolina = 0.0;
                            _Veiculo.LitrosAlcool   = 0.0;
                            AutenticaoParaBViagemFlex(relatorio, agencia);
                            if (opcao2 == "N")
                            {
                                return;
                            }
                        }
                        cont = Math.Round((cont + 0.1), 1);
                        if (cont == 100)
                        {
                            _Veiculo.AlteracaoPneu();
                            relatorio.DesgasteDoPneuEvento(relatorio.KmPercorrido, _Veiculo.EstadoPneu);
                            _Viagem.AlteracaoClima();
                            relatorio.MudancaClimaticaDoEvento(relatorio.KmPercorrido, _Viagem.Clima);
                            if (_Veiculo.EstadoPneu == 0)
                            {
                                AutenticaoParaBViagemFlex(relatorio, agencia);
                            }
                            if (opcao2 == "N")
                            {
                                return;
                            }
                            cont = 0;
                        }
                    }
                    PosCorrida(relatorio);
                } while (_Viagem.Distancia > 0);

                Console.WriteLine("Você completou a viagem!");
                agencia.Relatorios.Add(relatorio);
                Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                Console.ReadKey();
            }
        }
示例#6
0
        } //METODO LOCAL ONDE VOU REPETIR A VALIDAÇÃO SE TEM COMBUSTIVEL E SE HÁ O ESTADO DO PNEU DIFERENTE DE ZERO (PARA CARRO PADRAO)

        public void DirigirNaViagemAutomatico(AgenciaDeViagens agencia) // PERCORRER A VIAGEM COM VEICULO DE MODO AUTOMATICO, ONDE VAI ATÉ ONDE O COMBUSTIVEL ACABAR
        {
            Relatorio relatorio = new Relatorio(this);

            // VARIAVEIS AUXILIARES PARA NÃO ALTERAR AS VARIAVEIS DO CARRO
            _Veiculo.KmPorAlcool   = _Veiculo.KmPorAlcoolAtual;
            _Veiculo.KmPorGasolina = _Veiculo.KmPorGasolinaAtual;
            _Veiculo.EstadoPneu    = _Veiculo.EstadoPneuAtual;
            _Viagem.Clima          = _Viagem.ClimaAtual;

            double AutonomiaA;
            double AutonomiaG;
            double cont = 0.0;

            Console.Clear();
            //CADA TIPO DE COMBUSTIVEL TEM SEU MODO DE DIRIGIR POR CONTA DO GASTOS DIFERENTES EM SEU TANQUE
            if (_Veiculo.TipoCombustivel == "gasolina")
            {
                AutenticaoParaBViagemPadrao(_Veiculo.LitrosGasolina, relatorio, agencia);
                if (opcao2 == "N")
                {
                    return;
                }
                do
                {
                    AutonomiaG                 = Calculo.CalcularAutonomiaPadrao(_Viagem.Clima, _Veiculo, _Veiculo.KmPorGasolinaAtual);
                    _Viagem.Distancia          = Math.Round((_Viagem.Distancia - 0.1), 2);
                    relatorio.KmPercorrido     = Math.Round((relatorio.KmPercorrido + 0.1), 2);
                    _Veiculo.LitrosGasolina    = Math.Round((_Veiculo.LitrosGasolina - (0.1 / AutonomiaG)), 2);
                    relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaG)), 2);
                    if (_Veiculo.LitrosGasolina <= 0.0)
                    {
                        _Veiculo.LitrosGasolina = 0.0;
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosGasolina, relatorio, agencia); // CASO PARE E NÃO COMPLETOU
                        if (opcao2 == "N")
                        {
                            return;
                        }
                    }
                    cont = Math.Round((cont + 0.1), 1);
                    if (cont == 100)
                    {
                        _Veiculo.AlteracaoPneu();
                        relatorio.DesgasteDoPneuEvento(relatorio.KmPercorrido, _Veiculo.EstadoPneu);
                        _Viagem.AlteracaoClima();
                        relatorio.MudancaClimaticaDoEvento(relatorio.KmPercorrido, _Viagem.Clima);
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosGasolina, relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                        cont = 0;
                    }
                } while (_Viagem.Distancia > 0);
                Console.WriteLine("Você completou a viagem!");
                Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                Console.ReadKey();

                agencia.Relatorios.Add(relatorio);
            }

            else if (_Veiculo.TipoCombustivel == "alcool")
            {
                AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                if (opcao2 == "N")
                {
                    return;
                }
                do
                {
                    AutonomiaA                 = Calculo.CalcularAutonomiaPadrao(_Viagem.Clima, _Veiculo, _Veiculo.KmPorAlcoolAtual);
                    _Viagem.Distancia          = Math.Round((_Viagem.Distancia - 0.1), 2);
                    relatorio.KmPercorrido     = Math.Round((relatorio.KmPercorrido + 0.1), 2);
                    _Veiculo.LitrosAlcool      = Math.Round((_Veiculo.KmPorAlcool - (0.1 / AutonomiaA)), 2);
                    relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaA)), 2);
                    if (_Veiculo.LitrosAlcool <= 0.0)
                    {
                        _Veiculo.LitrosAlcool = 0.0;
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                    }
                    cont = Math.Round((cont + 0.1), 1);
                    if (cont == 100)
                    {
                        _Veiculo.AlteracaoPneu();
                        relatorio.DesgasteDoPneuEvento(relatorio.KmPercorrido, _Veiculo.EstadoPneu);
                        _Viagem.AlteracaoClima();
                        relatorio.MudancaClimaticaDoEvento(relatorio.KmPercorrido, _Viagem.Clima);
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                        cont = 0;
                    }
                } while (_Viagem.Distancia > 0);

                agencia.Relatorios.Add(relatorio);
                Console.WriteLine("Você completou a viagem!");
                Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                Console.ReadKey();
            }

            else if (_Veiculo.Flex)
            {
                AutenticaoParaBViagemFlex(relatorio, agencia);
                if (opcao2 == "N")
                {
                    return;
                }
                do
                {
                    AutonomiaA             = Calculo.CalcularAutonomiaFlexA(_Viagem.Clima, _Veiculo);
                    AutonomiaG             = Calculo.CalcularAutonomiaFlexG(_Viagem.Clima, _Veiculo);
                    _Viagem.Distancia      = Math.Round((_Viagem.Distancia - 0.1), 2);
                    relatorio.KmPercorrido = Math.Round((relatorio.KmPercorrido + 0.1), 2);
                    if (_Veiculo.LitrosAlcool > 0.0)
                    {
                        _Veiculo.LitrosAlcool = Math.Round((_Veiculo.LitrosAlcool - (0.1 / AutonomiaA)), 2);
                    }
                    relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaA)), 2);
                    if (_Veiculo.LitrosAlcool <= 0.0)
                    {
                        _Veiculo.LitrosAlcool      = 0.0;
                        _Veiculo.LitrosGasolina    = Math.Round((_Veiculo.LitrosGasolina - (0.1 / AutonomiaG)), 2);
                        relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaG)), 2);
                        AutenticaoParaBViagemFlex(relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                    }
                    if (_Veiculo.LitrosAlcool <= 0.0 && _Veiculo.LitrosGasolina <= 0.0)
                    {
                        _Veiculo.LitrosGasolina = 0.0;
                        _Veiculo.LitrosAlcool   = 0.0;
                        AutenticaoParaBViagemFlex(relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                    }
                    cont = Math.Round((cont + 0.1), 1);
                    if (cont == 100)
                    {
                        _Veiculo.AlteracaoPneu();
                        relatorio.DesgasteDoPneuEvento(relatorio.KmPercorrido, _Veiculo.EstadoPneu);
                        _Viagem.AlteracaoClima();
                        relatorio.MudancaClimaticaDoEvento(relatorio.KmPercorrido, _Viagem.Clima);
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                        cont = 0;
                    }
                } while (_Viagem.Distancia > 0);

                agencia.Relatorios.Add(relatorio);
                Console.WriteLine("Você completou a viagem!");
                Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                Console.ReadKey();
            }
        }
示例#7
0
        public void MenuDaAgencia(AgenciaDeViagens agencia, BancoJSON banco)
        {
            do
            {
                Console.Clear();
                Console.WriteLine("===============Menu da Agencia de Viagens===============\n\n");
                Console.WriteLine("Digite 1 - Para Cadastrar um Carro");
                Console.WriteLine("Digite 2 - Para Exibir a Lista de Carros Disponiveis");
                Console.WriteLine("Digite 3 - Para Cadastar uma Viagem ");
                Console.WriteLine("Digite 4 - Para Exibir a Lista de Viagens Disponiveis");
                Console.WriteLine("Digite 5 - Para Atribuir um Carro a uma Viagem");
                Console.WriteLine("Digite 6 - Para Percorrer uma viagem");
                Console.WriteLine("Digite 7 - Para Exibir os Relatorios\n\n");

                Console.WriteLine("Digite qual opção deseja");

                opcao = Console.ReadLine();

                switch (opcao)
                {
                case "1":
                {
                    agencia.CadastrarCarro();
                    banco.Salvar(agencia);
                    break;
                }

                case "2":
                {
                    Console.Clear();
                    if (agencia.Veiculos.Count == 0)
                    {
                        Console.WriteLine("Não há carros");
                        Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("===================Lista de Veiculos===================\n\n");
                        agencia.Veiculos.ForEach(c =>
                            {
                                Console.WriteLine($"{c}\n\n");
                            });
                        Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                        Console.ReadKey();
                    }
                    break;
                }

                case "3":
                {
                    agencia.CadastrarViagem();
                    banco.Salvar(agencia);
                    break;
                }

                case "4":
                {
                    Console.Clear();
                    if (agencia.Veiculos.Count == 0)
                    {
                        Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("===================Lista de Viagens===================\n\n");
                        agencia.Viagens.ForEach(v =>
                            {
                                Console.WriteLine($"{v}\n\n");
                            });
                        Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                        Console.ReadKey();
                    }
                    break;
                }

                case "5":
                {
                    agencia.AtribuirCarroAViagem();
                    banco.Salvar(agencia);
                    break;
                }

                case "6":
                {
                    agencia.PercorrerViagem();
                    banco.Salvar(agencia);
                    break;
                }

                case "7":
                {
                    agencia.ExibirRelatorios();
                    banco.Salvar(agencia);
                    break;
                }

                default:
                    Console.WriteLine("Opção inválida");
                    Console.ReadKey();
                    break;
                }
            } while (true);
        }