{"id":24491406,"url":"https://github.com/ianfelps/material_construcao","last_synced_at":"2026-01-30T02:05:08.261Z","repository":{"id":263627924,"uuid":"890994443","full_name":"ianfelps/material_construcao","owner":"ianfelps","description":"Sistema para gestão de Materiais de Construção feito em Java integrado com Banco de Dados. Projeto final da disciplina de POO na UCB.","archived":false,"fork":false,"pushed_at":"2024-11-30T00:13:39.000Z","size":3851,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T18:07:26.221Z","etag":null,"topics":["database","java","mysql","oop","swing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ianfelps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-19T14:44:01.000Z","updated_at":"2024-11-30T00:13:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"45edc8a8-124c-49b7-bd30-e92e87c68744","html_url":"https://github.com/ianfelps/material_construcao","commit_stats":null,"previous_names":["ianfelps/material_construcao"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ianfelps%2Fmaterial_construcao","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ianfelps%2Fmaterial_construcao/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ianfelps%2Fmaterial_construcao/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ianfelps%2Fmaterial_construcao/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ianfelps","download_url":"https://codeload.github.com/ianfelps/material_construcao/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253149380,"owners_count":21861717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","java","mysql","oop","swing"],"created_at":"2025-01-21T18:18:06.238Z","updated_at":"2026-01-30T02:05:08.230Z","avatar_url":"https://github.com/ianfelps.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sistema para gestão de Material de Construção\nO projeto é um sistema de gerenciamento voltado para a administração de um comércio de materiais de construção, que abrange funcionalidades para o controle de clientes, produtos e vendas. Ele foi desenvolvido para facilitar a gestão de informações e operações em um ambiente comercial, proporcionando uma interface amigável e eficiente para os usuários, que geralmente são administradores ou gerentes da loja.\n\n# Tecnologias Utilizadas\n- **Back-end:** Java (Linguagem do sistema);\n- **Front-end:** Swing (Interface gráfica);\n- **Banco de Dados:** MySQL;\n- **Ferramentas de Desenvolvimento:** IDE (IntelliJ), Git para controle de versão.\n\n# Diagramas\n\n### Diagrama de Classe\n  ![Diagrama de Classe](/imgs/diagrama_classe.png \"Diagrama de Classe\")  \n  [Link para o PDF](/imgs/diagrama_classe.pdf)\n\n### Diagrama de Caso de Uso\n  ![Diagrama de Caso de Uso](/imgs/diagrama_casodeuso.png \"Diagrama de Caso de Uso\")\n\n# Modelagem do Banco de Dados\n\n### Modelo Lógico\n  ![Modelo Lógico](/imgs/modelo_logico.png \"Modelo Lógico\")\n\n### Modelo Conceitual\n  ![Modelo Conceitual](/imgs/modelo_conceitual.png \"Modelo Conceitual\")\n\n# Estrutura do Banco de Dados\n\n### TB_CLIENTE\n- Armazena informações sobre os clientes.\n- Campos incluem: ID_CLIENTE (chave primária), nome do cliente (NO_CLIENTE), RG (NR_RG), CPF (NR_CPF) e tipo de cliente (TP_CLIENTE).\n- Relacionamentos:\n  - Relaciona-se com TB_TELEFONE_CLIENTE (1:N) e TB_ENDERECO_CLIENTE (1:N) para armazenar informações adicionais sobre a loja.\n  - Relaciona-se com TB_VENDA (1:N), indicando as vendas realizadas por cada cliente.\n\n### TB_ENDERECO_CLIENTE\n- Contém os endereços associados aos clientes.\n- Campos incluem: ID_ENDERECO_CLIENTE (chave primária), ID_CLIENTE (chave estrangeira), estado (SG_UF), endereço (NO_ENDERECO) e cidade (NO_CIDADE).\n\n### TB_TELEFONE_CLIENTE\n- Armazena os telefones dos clientes.\n- Campos incluem: ID_TELEFONE_CLIENTE (chave primária), ID_CLIENTE (chave estrangeira) e número de telefone (NR_TELEFONE).\n\n### TB_VENDA\n- Registra as vendas realizadas.\n- Campos incluem: ID_VENDA (chave primária), ID_CLIENTE (chave estrangeira), data/hora do pagamento (DH_PAGAMENTO), valor total da venda (VL_TOTAL_VENDA) e indicador de pagamento (IC_PAGO).\n- Relaciona-se com TB_PRODUTO_VENDA (1:N), indicando os produtos vendidos.\n\n### TB_PRODUTO_VENDA\n- Associa produtos às vendas.\n- Campos incluem: ID_PRODUTO_VENDA (chave primária), ID_VENDA (chave estrangeira), código do produto (CD_PRODUTO), quantidade retirada (QT_PRODUTO_RETIRADO) e valor total do produto (VL_TOTAL_PRODUTO).\n- Relaciona-se com TB_PRODUTO para detalhar os produtos.\n\n### TB_PRODUTO\n- Armazena informações sobre os produtos.\n- Campos incluem: código do produto (CD_PRODUTO, chave primária), ID_LOJA (chave estrangeira), nome do produto (NO_PRODUTO), quantidade em estoque (QT_PRODUTO_ESTOQUE) e valor unitário (VL_PRODUTO_UNITARIO).\n\n### TB_LOJA\n- Contém informações sobre as lojas.\n- Campos incluem: ID_LOJA (chave primária), nome da loja (NO_LOJA) e CNPJ (NR_CNPJ).\n- Relaciona-se com TB_TELEFONE_LOJA (1:N) e TB_ENDERECO_LOJA (1:N) para armazenar informações adicionais sobre a loja.\n\n### TB_TELEFONE_LOJA\n- Armazena os telefones das lojas.\n- Campos incluem: ID_TELEFONE_LOJA (chave primária), ID_LOJA (chave estrangeira) e número de telefone (NR_TELEFONE).\n\n### TB_ENDERECO_LOJA\n- Contém os endereços das lojas.\n- Campos incluem: ID_ENDERECO_LOJA (chave primária), ID_LOJA (chave estrangeira), estado (SG_UF), endereço (NO_ENDERECO) e cidade (NO_CIDADE).\n\n### TB_ADMINISTRADOR\n- Registra informações de login dos administradores do sistema.\n- Campos incluem: nome de login (NO_LOGIN) e senha (NO_SENHA).\n\n# Estrutura do Código\n\n### Pacote 'dao'\n- Contém as classes de acesso a dados (Data Access Object) que gerenciam a interação com o banco de dados para as entidades correspondentes.\n  - ClienteDAO: Gerencia operações de banco de dados relacionadas a clientes (inserir, atualizar, deletar, buscar).\n  - ProdutoDAO: Gerencia operações de banco de dados relacionadas a produtos.\n  - VendaDAO: Gerencia operações de banco de dados relacionadas a vendas.\n  - EnderecoClienteDAO: Gerencia operações de banco de dados relacionadas a endereços de clientes.\n  - ProdutoVendaDAO: Gerencia operações de banco de dados relacionadas a produtos vendidos.\n\n### Pacote 'database'\n- Contém a classe para conexão com o Banco de Dados.\n  - ConnectionFactory: Gerencia a conexão com o banco de dados MySQL.\n\n### Pacote 'model'\n- Contém as classes que representam as entidades do sistema.\n  - Cliente: Representa um cliente com atributos como ID, nome, RG, CPF e tipo.\n  - Produto: Representa um produto com atributos como ID, nome, quantidade e valor unitário.\n  - Venda: Representa uma venda com atributos como ID, ID do cliente, data de pagamento, valor total e status de pagamento.\n  - EnderecoCliente: Representa o endereço de um cliente.\n  - TelefoneCliente: Representa o telefone de um cliente.\n  - ProdutoVenda: Representa a relação entre produtos e vendas.\n  - Administrador: Representa um administrador do sistema.\n\n### Pacote 'view'\n- Contém as classes que gerenciam a interface gráfica do usuário (GUI).\n  - TelaCliente: Interface para gerenciar clientes, com botões para adicionar, atualizar e deletar clientes.\n  - ClienteDialog: Diálogo para adicionar ou editar informações de um cliente, incluindo telefones e endereços.\n  - TelaProduto: Interface para gerenciar produtos, com funcionalidades semelhantes à TelaCliente.\n  - ProdutoDialog: Diálogo para adicionar ou editar informações de um produto.\n  - TelaVenda: Interface para registrar vendas, permitindo a seleção de clientes e produtos.\n  - TelaRelatorio: Interface para visualizar e gerenciar relatórios de vendas.\n  - TelaMenu: Menu principal do sistema, permitindo navegação entre diferentes telas.\n\n# Interface Gráfica\n\n### Tela de Login\n  ![Tela de Login](/imgs/tela_login.png \"Tela de Login\")\n\n### Tela de Menu Principal\n  ![Tela de Menu Principal](/imgs/tela_menu.png \"Tela de Menu Principal\")\n\n### Tela de Gerenciamento de Clientes\n  ![Tela de Gerenciamento de Clientes](/imgs/tela_cliente.png \"Tela de Gerenciamento de Clientes\")\n\n### Tela de Gerenciamento de Produtos\n  ![Tela de Gerenciamento de Produtos](/imgs/tela_produto.png \"Tela de Gerenciamento de Produtos\")\n\n### Tela de Registrar Venda\n  ![Tela de Registrar Venda](/imgs/tela_venda.png \"Tela de Registrar Venda\")\n\n### Tela de Relatórios\n  ![Tela de Relatórios](/imgs/tela_relatorio.png \"Tela de Relatórios\")\n\n# Fluxo de Sistema\n\n### 1. Início do Sistema\n- O sistema inicia com a TelaLogin, onde o usuário (administrador) insere suas credenciais (usuário e senha). O AdministradorDAO é utilizado para validar as credenciais.\n  - Se as credenciais forem válidas, o usuário é direcionado para a TelaMenu.\n  - Se as credenciais forem inválidas, uma mensagem de erro é exibida e o usuário pode tentar novamente.\n\n### 2. Menu Principal\n- Após o login bem-sucedido, a TelaMenu é exibida. Esta tela oferece opções para:\n  - Gerenciar Clientes (navegar para TelaCliente).\n  - Gerenciar Produtos (navegar para TelaProduto).\n  - Registrar Venda (navegar para TelaVenda).\n  - Gerenciar Relatórios (navegar para TelaRelatorio).\n  - Sair do Sistema.\n\n### 3. Gerenciamento de Clientes\n- Ao selecionar \"Gerenciar Clientes\", a TelaCliente é exibida.\n- O usuário pode adicionar, atualizar ou deletar clientes.\n- A lista de clientes é carregada utilizando o ClienteDAO, que busca todos os clientes do banco de dados.\n- Para adicionar ou atualizar um cliente, um ClienteDialog é aberto, permitindo a entrada de dados do cliente, incluindo telefones e endereços.\n- As alterações são salvas no banco de dados através do ClienteDAO.\n\n### 4. Gerenciamento de Produtos\n- Ao selecionar \"Gerenciar Produtos\", a TelaProduto é exibida.\n- O usuário pode adicionar, atualizar ou deletar produtos.\n- A lista de produtos é carregada utilizando o ProdutoDAO.\n- Para adicionar ou atualizar um produto, um ProdutoDialog é aberto, permitindo a entrada de dados do produto.\n- As alterações são salvas no banco de dados através do ProdutoDAO.\n\n### 5. Registro de Vendas\n- Ao selecionar \"Registrar Venda\", a TelaVenda é exibida.\n- O usuário seleciona um cliente a partir de um JComboBox que é preenchido com os clientes do banco de dados.\n- O usuário pode adicionar produtos à venda, especificando a quantidade. A tabela de produtos é gerenciada por um DefaultTableModel.\n- O total da venda é calculado e, ao confirmar, a venda é registrada no banco de dados através do VendaDAO, e os produtos são registrados na venda através do ProdutoVendaDAO.\n- O sistema verifica se o cliente é novo e se a data de pagamento é necessária.\n\n### 6. Gerenciamento de Relatórios\n- Ao selecionar \"Gerenciar Relatórios\", a TelaRelatorio é exibida.\n- A lista de vendas é carregada utilizando o VendaDAO.\n- O usuário pode visualizar detalhes de uma venda selecionada ou deletar uma venda.\n- Ao visualizar uma venda, um painel de detalhes é exibido, mostrando informações sobre a venda, cliente, endereço e produtos vendidos.\n\n### 7. Encerramento do Sistema\n- O usuário pode optar por sair do sistema a qualquer momento através do botão \"Sair\" na TelaMenu, que fecha a aplicação.\n\n# Funcionalidades\n\n### Funcionalidades de Login\n- Login de Administrador: Permite que o administrador insira suas credenciais (usuário e senha) para acessar o sistema.\n- Validação de Credenciais: Verifica se as credenciais fornecidas são válidas.\n\n### Funcionalidades do Menu Principal\n- Navegação: Permite ao usuário navegar para diferentes seções do sistema:\n  - Gerenciar Clientes.\n  - Gerenciar Produtos.\n  - Registrar Venda.\n  - Gerenciar Relatórios.\n  - Sair do Sistema.\n\n### Funcionalidades de Gerenciamento de Clientes\n- Listar Clientes: Exibe uma tabela com todos os clientes cadastrados.\n- Adicionar Cliente: Permite ao usuário inserir novos clientes, incluindo informações como nome, RG, CPF e tipo.\n- Atualizar Cliente: Permite ao usuário editar as informações de um cliente existente.\n- Deletar Cliente: Permite ao usuário remover um cliente do sistema.\n- Gerenciar Telefones: Adicionar e remover telefones associados ao cliente.\n- Gerenciar Endereços: Adicionar e remover endereços associados ao cliente.\n\n### Funcionalidades de Gerenciamento de Produtos\n- Listar Produtos: Exibe uma tabela com todos os produtos cadastrados.\n- Adicionar Produto: Permite ao usuário inserir novos produtos, incluindo informações como nome, quantidade e valor unitário.\n- Atualizar Produto: Permite ao usuário editar as informações de um produto existente.\n- Deletar Produto: Permite ao usuário remover um produto do sistema.\n\n### Funcionalidades de Registro de Vendas\n- Selecionar Cliente: Permite ao usuário escolher um cliente para a venda.\n- Adicionar Produtos à Venda: Permite ao usuário adicionar produtos à venda, especificando a quantidade.\n- Remover Produtos da Venda: Permite ao usuário remover produtos da tabela de venda.\n- Calcular Valor Total da Venda: Calcula automaticamente o valor total da venda com base nos produtos e quantidades selecionadas.\n- Registrar Venda: Salva a venda no banco de dados, incluindo informações sobre o cliente e produtos vendidos.\n\n### Funcionalidades de Gerenciamento de Relatórios\n- Listar Vendas: Exibe uma tabela com todas as vendas registradas.\n- Visualizar Detalhes da Venda: Permite ao usuário visualizar informações detalhadas sobre uma venda específica, incluindo cliente, produtos e valores.\n- Deletar Venda: Permite ao usuário remover uma venda do sistema.\n\n### Funcionalidades Gerais\n- Validação de Dados: Verifica se os dados inseridos pelo usuário são válidos (por exemplo, se os campos obrigatórios estão preenchidos).\n- Mensagens de Confirmação: Exibe mensagens de confirmação para ações críticas, como deletar clientes ou vendas.\n- Feedback ao Usuário: Fornece mensagens de sucesso ou erro durante a execução de operações.\n\n### Funcionalidades de Interface Gráfica\n- Interface Intuitiva: Utiliza componentes Swing para criar uma interface amigável e fácil de usar.\n- Diálogos de Entrada: Utiliza diálogos para entrada de dados, como para adicionar ou editar clientes e produtos.\n\n### Sistema para gestão de Materiais de Construção feito em Java integrado com Banco de Dados. Projeto final da disciplina de POO na UCB.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fianfelps%2Fmaterial_construcao","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fianfelps%2Fmaterial_construcao","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fianfelps%2Fmaterial_construcao/lists"}