10
Projeto de Processamento de Informação (UFABC) 2015.1 Delta Águas Raul Fernandes Ribeiro 11018314 Rodrigo de Carvalho Santos 11000714

Projeto de Processamento de Informacao

Embed Size (px)

Citation preview

Page 1: Projeto de Processamento de Informacao

Projeto de Processamento de Informação (UFABC)

2015.1

Delta Águas

Raul Fernandes Ribeiro 11018314

Rodrigo de Carvalho Santos 11000714

Page 2: Projeto de Processamento de Informacao

1- Descrição:

O programa tem como fim realizar o cadastro de clientes. Por ser desenvolvido

no intuito de cadastro de clientes, o programa pretende automatizar o processo de

cadastro e busca do cliente, retornando ao atendente as informações como endereço

completo caso o cliente já esteja cadastrado.

Além do problema principal que buscava o cadastro de clientes, foi

acrescentado ao programa o desenvolvimento de pedidos, no qual o cliente informa

ao atendente o que deseja e o programa gera o pedido com valor total resultante, e as

informações sobre endereço e nome do cliente, facilitando a cópia e a passagem de

informações a quem vai entregar o pedido.

2- Como foi “Pensado”?

Planejamento

Após a idealização do projeto, discutiu-se quais informações (dados) seriam úteis

para que pudéssemos viabilizar o cadastro de cliente. Conclui-se que com o telefone,

endereço, o complemento- quando necessário- e o nome do cliente, nesta respectiva

ordem, seriam os dados necessários capazes de individualizarem qualquer cliente.

Bastava pensar em uma maneira de guardar os dados destes clientes em uma

estrutura de dados conveniente para a situação, e um modo de acessar esses dados e

dispô-los de uma forma interessante, visando o aperfeiçoamento do atendimento ao

cliente.

Primeiramente pensou-se o tipo de estrutura de dados que poderia ser utilizado

para armazenar os clientes cadastrados; o formato arquivo.txt foi aquele que se

revelou mais adequado as demandas que tínhamos por ser um formato viável para a

quantidade de dados que o problema demandava (a loja em questão possui um

número de clientes limitado, não necessitando criar um banco de dados extenso), e

sobretudo, de simples manipulação.

Para a disposição dos dados anteriormente destacados, decidiu-se pelo uso do

JFrame, ferramenta que atendeu as expectativas quanto à disposição dos dados em

uma tela de execução e que se mostrou muito versátil no decorrer do

Page 3: Projeto de Processamento de Informacao

desenvolvimento por oferecer muitas opções de soluções para os problemas que

enfrentamos.

Construção do Algoritmo

1- Cadastrando e verificando o Cliente.

Neste seguinte passo foi pensado no modo de armazenamento das informações

dos campos de texto utilizados no JFrame e na leitura dessas informações,

posteriormente, no arquivo. Basicamente, foram utilizadas importações do Java para

gravar e ler essas informações, como FileReader, FileWriter, InputStreamReader,

PrintWriter, BufferedReader, InputStreamReader e entre outras.

No cadastro de cliente simplesmente organizamos o código para que gravasse em

um arquivo Endereço.txt, respectivamente, as informações do telefone, endereço,

complemento e nome do cliente inseridas nos campos de texto do JFrame, em uma

linha , sempre separando cada informação nova por um delimitador “_”, e sempre

separando cada cliente em uma linha diferente.

Para confrontar a existência ou não de um cadastro no arquivo Endereco.txt que

armazenaria as informações do cliente lançou-se um vetor (“string split”) para

comparar se a informação de busca de cadastro (no caso do nosso programa, o

telefone do cliente) era compatível com a informação de busca gravada em alguma

linha do arquivo e retornar as informações cadastradas no JFrame, que se

encontravam distribuídas no restante da linha, entre os marcadores delimitados.

2- Realizando o pedido e calculando o valor total comprado.

Para a realização do pedido, dado que a quantidade de produtos não era tão

extensa, optou-se pelo uso de caixas de seleção, opção do JFrame, simplificando muito

a interação com o usuário uma vez que construímos a lógica valendo-se de

condicionais, de tal modo que bastava selecionar os produtos que o cliente deseja e as

suas quantidades, que o pedido seria armazenado em um arquivo Pedido.txt

permitindo nos passos seguintes uma relativa facilidade no cálculo do total bem como

no acesso a quais produtos foram requisitados.

Para o cálculo do total, utilizou-se semelhante estratégia a aquela usada para a

confirmação da existência de um cadastro; buscar os pedidos feitos e compará-los com

Page 4: Projeto de Processamento de Informacao

os respectivos produtos da tabela de preço, igualmente armazenada em um arquivo

Tabela de Preco.txt, - a opção neste ponto preterindo uma matriz justificou-se pelo

arquivo Tabela de Preco.txt ter um acesso mais simples, de tal maneira que os

proprietários poderiam mudar os preços por conta própria- para assim acessar as

quantidades requisitadas dos produtos e multiplicá-las com os seus respectivos preços

unitários, retornando ao final, o total do pedido.

3- Mensagem de conclusão do pedido.

Com o intuito de finalizar o atendimento, discutiu-se uma forma de resumir as

informações geradas pelo pedido e atendimento como um todo de um modo que

assim que concluído a compra, o usuário tivesse acesso ao nome do cliente, o seu

endereço, quais produtos ele comprou, e o total da operação.

Selecionamos o JOptionPane como ferramenta, justamente pelas opções de

mensagens encontradas, e assim, varremos todas as informações geradas até o

instante antes da conclusão do pedido organizando –as em strings que quando

concatenadas, fornecem, em uma razoável edição, o nome do cliente, seu endereço.

Fluxograma Geral:

4- Problemas Enfrentados e como foram resolvidos

A manipulação das muitas importações necessárias na manipulação de um

arquivo.txt (BufferedReader, PrintWriter, InputStreamReader, FileWriter, etc.) foi

um grande problema no início, pois todo o projeto estava encadeado no cadastro

de clientes, e não seria possível realizar tal tarefa sem o uso de muitas das

importações mencionadas, bem como.

Todavia, com o estudo destas funções do Java, a pesquisa em sites e fóruns

focados em programação, vídeos e vídeo-aulas e o auxílio providencial do

professor, nós fomos gradualmente entendendo cada vez mais o que cada

importação faz, porque elas devem ser usadas em conjunto, e com êxito no final do

projeto estávamos já manipulando os códigos que as utilizam com sucesso.

Page 5: Projeto de Processamento de Informacao

No início do projeto, muitas vezes, ao depararmos com um problema a ser

resolvido no cadastro, começávamos a construir a solução como um único código,

e tal estratégia se mostrou muitas vezes ineficiente, pois chegávamos em um

resultado que, quando não entendíamos o porque não funcionava , continha

inúmeros erros que praticamente inutilizava o trabalho feito.

Enfrentamos essa situação começando a tratar cada novo problema parte por

parte, uma solução simples de cada vez, e dessa maneira, realizamos cerca de 10 a

15 projetos que se intitulavam rascunho ou teste, cuja única finalidade foi a de

estudar como resolver um problema simples, e a partir daí, estendê-lo para as

condições do problema que tínhamos que resolver.

Tomando essa maneira de encarar os problemas, a construção do projeto

tornou-se muito mais organizada, o planejamento muito mais fácil e a própria

concepção das soluções e códigos mais interessantes, um grande aprendizado.

Outro problema encontrado ao final do programa foi a forma como o Java faz a

leitura da acentuação como por exemplo o til(~), o qual dificultava a leitura do

pedido executado para a consulta na tabela de preços. Estes problemas foram

resolvidos com o auxílio do depurador e com a retirada dos acentos dos produtos

para não causar erro na leitura.

Em uma análise geral, a necessidade de explorar muito mais funções disponibilizadas

pelo Java, a compreensão e o discernimento de qual função seria mais apropriada para

a situação apresentada, a adaptação dos tópicos discutidos em aula no auxílio do

projeto, além dos problemas com a lógica do código, foram dificuldades enfrentadas

que novamente, sem o estudo da linguagem, a pesquisa, não seriam resolvidos.

Page 6: Projeto de Processamento de Informacao

*Informações Adicionais:

1. Clientes (aproximadamente): 500 clientes;

2. Lista de produtos:

Garrafão 20L Ret. (Bioleve);

Garrafão 20L Ret. (Olímpica);

Garrafão 20L Ret. (Estância);

Garrafão 10L Ret. (Bioleve);

Garrafão 10L Ret. (Bioleve);

Garrafão 10L Ret. (Bioleve);

Galão 6,25 L Des. (Bonafont);

Galão 6,25L Des. (Bioleve);

Galão 1,5 L (Bonafont);

Galão 1,5L (Bioleve);

Obs.: Ret. e Des. são Retornáveis e Descartáveis respectivamente.

*Layout:

Page 7: Projeto de Processamento de Informacao