Repositório do Trabalho 4 da matéria de SSC0103 - Programação Orientada a Objetos.
Descrição do trabalho: https://goo.gl/rzkrQR
João Victor Guimarães - 8936843
Pedro Felipe Coloma - 8936781
Usamos a IDE Netbeans 8.0.2 e Java 8.
O trabalho está dividido em dois programs: Cliente e Servidor. O primeiro é encarregado de interargir com o cliente do supermercado, i.e. permite cadastrar/logar usuários, listar os produtos e realizar compras. O segundo é encarregado de interagir com o administrador do servidor do supermercado. i.e. permite cadastrar/atualizar produtos, gerar relatórios, listar produtos e usuáros.
O programa servidor registra todas as informações em três arquivos com extensão CSV: products.csv, users.csv e sales.csv.
O programa servidor também registra um arquivo TXT auxiliar: numberOfProducts.txt. Esse arquivo contém o número de produtos já cadastrados.
Usamos o padrão de Projeto Singleton no construtor da classe ServerAdm. Dessa forma, essa classe não pode ser instanciada mais de uma vez.
Cada vez que um usuário realiza login com sucesso, ele é inserido em uma ArrayList chamada LoggedUsers que fica no servidor. Cada vez que o usuário faz logout, ele é removido dessa lista.
Com o intuito de otimizar os acessos a disco, optamos por criar três listas do tipo ArrayList a partir dos arquivos CSV. As listas productList, salesList userList são inicializados no início do programa servidor a partir dos arquivos de registros. As alterações nos usuários e nos livros são salvas nos respectivos arquivos ao clicar na Tecla Q.
O administrador pode criar um relatório de vendas (Sales Report) em pdf. Para isso basta apertar a tecla Q no terminal do Servidor. Cada vez que uma venda é realizada, ela é automaticamente salva no ArrayList salesList, e quando o adminstrador clicar na tecla Q, no arquivo sales.csv. Quando o adminstrador manda salvar os relat´rorios (clicando a tecla Q) o arquivo SalesReport.pdf é gerado. O arquivo pdf é gerado usando o itextpdf-5.5.6.jar.
A interação entre o programa e o usuário ocorre pelo terminal e através de um menu simples onde as ações são escolhidas por letra ou númeross.
O aquivo users.csv está organizada da seguinte forma: ID do usuário, senha, nome, telefone, endereço e email. Com o intuito de facilitar a interpretação humana e diminuir o gap semânctico.
Ex: 35,senhaBemDificil, Pedro Coloma, 0800 123456, R. da entrada da Matemática, pedro.felipe.araujo@usp.br
O aquivo products.csv está organizada da seguinte forma: ID do produto, nome, quantidade, preço, Data de Vencimento e Distribuidor.. Com o intuito de facilitar a interpretação humana e diminuir o gap semânctico.
Ex: 487,Kinder ovo Joy, 230, 1,00, 07/07/2015, Kinder
O aquivo sales.csv está organizada da seguinte forma: Data, quantidade, produto e lucro.. Com o intuito de facilitar a interpretação humana e diminuir o gap semânctico.
Ex: 30;06;2015,1,Computador,2.0
##Arquivo .jar Os Arquivo .jar estã dentro das pastas dist em Trabalho4 E em Client
Trabalho4.java Contém o Middleman que é encarregado lidar com a conexão com o cliente. Chama os métodos do serverAdm para realizar login, signup, etc. ServerAdm.java: Contém os métodos para login, signup, buyProduct, restockProduct, etc. Product.java: Classe do produto. User.java: Classe do usuário.
Client.java:Classe encarregada de lidar com a comunicação do cliente com o servidor.
ClientAdm.java: Classe encarregada de lidar com a interação com o cliente pelo terminal.
- Verifique se a sua versão do Java é compativel.
- Rode o arquivo Trabalho4.jar localizado na pasta Trabalho4/dist
- Rode o arquivo Client.jar localizado na pasta client/dist