Giter Site home page Giter Site logo

desafiomercadosantiago's Introduction

DesafioMercadoSantiago

O QUE Criar um software em que o usuário possa fazer compras no Mercado Santiago. O usuário poderá escolher os produtos: pão, pastel, Coca-Cola, Erva-Mate, Traquinas, Queijo, Pizza, Café, Tomate e Água. Cada produto tem seu respectivo valor. Após informar o produto desejado e a quantidade, o usuário poderá finalizar seu pedido. Para realizar o pagamento, o usuário deverá informar seu nome, o número do cartão de crédito, a validade e o código de segurança.

COMO O usuário inicia o sistema no Menu Principal. Nele, aparece uma lista de produtos com seu número correspondente e seus respectivos preços. Também há a opção de Finalizar o pedido e de sair. O usuário informa o número que corresponde o produto e aparece o pedido para informar a quantidade. Esse processo se repete até que o usuário finalize o pedido. Quando finaliza, aparece um texto informando os itens que foram pedidos, o valor unitário de cada item, a quantidade e o total daquele item. Embaixo há o valor total a ser pago. Então aparece as opções de realizar o pagamento ou voltar. Se o usuário seleciona finalizar pagamento, o sistema pede o nome do usuário, o número do cartão, o código de segurança, o mês e o ano da validade. Se todos os dados estiverem corretos, o pagamento é finalizado e o usuário retorna ao menu principal para poder continuar comprando ou sair.

FONTES UTILIZADAS Para solucionar dificuldades do projeto, como conseguir comparar o tamanho de um inteiro e transformá-lo para uma String, aprender a utilizar o Scanner para receber informações do teclado, descobrir o problema de colocar o nextLine após receber um número inteiro, o que poderia utilizar para armazenar o número do cartão de crédito, já que tem 16 dígitos, foram utilizados os sites DevMedia, GUJ e Stack Overflow.

PASSO A PASSO O software criado possui uma classe-mãe chamada produto. Cada item de produtos da lista herda as características da classe-mãe, os atributos nome e preço, além dos métodos getters. Cada classe de produtos tem seu construtor com o nome do produto e o preço. Foi criada uma classe chamada Compra, onde há os atributos Produto e quantidade. Foi criado o construtor, que passa por parâmetros o Produto e a quantidade. Há os getters e setters. Na classe Principal é onde está o main do projeto. Nela, foram criadas variáveis que foram inicializadas. As opções foram inicializadas com valores negativos. Foi criado um array de Compras com o valor fixo de 300 posições. O Scanner foi importado. Foi criado um DO/WHILE para que o usuário tivesse a repetição do menu principal até que escolhesse sair. Foi gerado constantes com os números de opção do menu do teclado para ficar mais legível. Todas as opções dos itens tem a mesma lógica. SE o usuário escolher elas, a quantidade, que foi inicializada fora do DO, é pedido que o usuário informe através do teclado. A quantidade recebe aquele valor. É criado um novo objeto para cada tipo de produto selecionado pelo cliente. É criado um novo objeto do tipo Compra que passa o item e a quantidade por parâmetro. Por fim, é chamado o método adicionarNaListaDeCompras que passa o objeto compra do tipo Compra e o array de compras. Dentro desse método, ele percorre o tamanho do array e se encontrar uma posição null, adiciona a compra e sai. Após as opções de pedido, há a opção finalizar. Nela, há um double chamado totalCompras que é inicializado em zero. Há o FOR que percorre o arrayCompras e para cada compra da lista, extraí essa informação para uma variável facilitando a leitura. Se a posição do array não for null, foi criado o double totalItem que é o preço multiplicado pela quantidade de compras. O atributo totalCompras recebe o totalCompras mais o totalItem para armazenar os pedidos. É impresso o nome do item, o valor unitário do item, quantidade total do item e valor total do item. Como está percorrendo o array, vai mostrar tudo que o usuário comprou. Ao fim, vai mostra o total de compras através da variável totalCompras. Depois dessa impressão na tela, há mais um DO/WHILE dentro desse IF que tem o método exibirMenuFinalizar. Nele aparece as opções de realizar o pagamento e voltar. O usuário digita o valor correspondente a opção. Se ele desejar finalizar o pagamento, a variável cartaoValido recebe false por padrão até que o usuário informe dados válidos do cartão. Na classe ValidadorCartao, há os métodos validarNumero que recebe um long numeroCartao. Há uma variável String chamada numeroString que recebe String.valueOf com o numeroCartao de parâmetro. Assim, há como saber a quantidade de dígitos que o usuário informou. Se o tamanho dessa string for 16, esse método retorna true. Senão, imprime uma mensagem e retorna falso. Há também o método validarDataVencimento que recebe um int de mês e um de ano. Esse método verifica se o mês é menor que 1 ou maior que 12. Se for, retorna falso. Há também a verificação de que o ano é menor que 2018. Se for, também retorna falso. Caso não entre em nenhum desses if, retorna verdadeiro. Outro método é o validarNome, que só verifica se não é null nem se está vazio. Caso esteja imprime uma mensagem e retorna falso. Caso não esteja retorna true. Há o validarCVV que recebe o código de segurança e tem a mesma idéia da verificação dos números do cartão. Se for igual a 3, retorna true, se não imprime mensagem e retorna falso. Por fim, há o método validarDadosCartao que recebe todas as variáveis dessa classe por parâmetro. Ele verifica se todos os métodos da classe são true e se for, retorna o cartaoValido. Na classe Principal, essa variável é usada em um while. Enquanto ela não for verdadeira, o usuário informa os dados do cartão. As informações são lidas pelo teclado. Se o cartão for válido, aparece uma mensagem, o array de compras é inicializado (para que o usuário possa usar o sistema de novo e não ter compra no carrinho) e a opção de finalizar recebe 2, para poder sair desse DO/WHILE. Após o pagamento, o usuário é direcionado ao menu principal novamente, onde ele poderá fazer novas compras ou sair. Caso escolha sair, receberá uma mensagem de agradecimento.

desafiomercadosantiago's People

Contributors

vanessaschenkel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.