{"id":25882027,"url":"https://github.com/rafaelmoura23/lojadecarros-java","last_synced_at":"2026-06-10T10:31:39.755Z","repository":{"id":205836358,"uuid":"715213275","full_name":"rafaelmoura23/LojadeCarros-Java","owner":"rafaelmoura23","description":null,"archived":false,"fork":false,"pushed_at":"2023-11-27T23:36:36.000Z","size":2021,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-29T23:42:04.702Z","etag":null,"topics":["crud-application","gui-application","java-application","java-awt-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/rafaelmoura23.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":"2023-11-06T17:35:24.000Z","updated_at":"2024-05-03T18:16:37.000Z","dependencies_parsed_at":"2023-11-26T19:24:55.087Z","dependency_job_id":"3b5163c7-ebe8-47d5-b8d0-cf654d0bb28a","html_url":"https://github.com/rafaelmoura23/LojadeCarros-Java","commit_stats":null,"previous_names":["rafaelmoura23/lojadecarros-java"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rafaelmoura23/LojadeCarros-Java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaelmoura23%2FLojadeCarros-Java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaelmoura23%2FLojadeCarros-Java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaelmoura23%2FLojadeCarros-Java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaelmoura23%2FLojadeCarros-Java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rafaelmoura23","download_url":"https://codeload.github.com/rafaelmoura23/LojadeCarros-Java/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaelmoura23%2FLojadeCarros-Java/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34149132,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["crud-application","gui-application","java-application","java-awt-swing"],"created_at":"2025-03-02T15:56:55.863Z","updated_at":"2026-06-10T10:31:39.718Z","avatar_url":"https://github.com/rafaelmoura23.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e Loja de Carros em JAVA 🚗 \u003c/h1\u003e \n\n\n\u003ch2 align=\"center\"\u003e I. Manual de utilização para o Usuário: \u003ch2/\u003e\n  \n### 1. Ao iniciar o aplicativo, a tela abaixo será visualizada, para navegar para as próximas páginas, clique no botão `Go to the Car store!`\n\u003cimg src=\"img\\initial_panel.gif\" \u003e\n\n### 2. Na tela abaixo está sendo mostrada a `página de cadastro de carros`. Quando todos os campos estão preenchidos e o botão `cadastrar` é clicado, o carro aparece na tabela, sendo cadastrado também em um banco de dados. `obs: preencha os dados corretamente de acordo com as validações.`\n\u003cimg src=\"img\\carros.gif\" \u003e\n\n### 3. Na tela de `cadastro de clientes`, quando todos os campos foram preenchidos corretamente e o botão `cadastrar` é clicado, o cliente aparece na tabela também sendo cadastrado no banco de dados. `obs: preencha os dados corretamente de acordo com as validações.`\n\u003cimg src=\"img\\clientes.gif\"\u003e\n\n### 4. Na tela de `transações/vendas` podemos efetuar a `venda de um carro para determinado cliente`, também é necessário colocar uma data de acordo com as normas dd/mm/yyyy, e inserir um valor.\n\u003cimg src=\"img\\vendas.gif\"\u003e\n\n\u003ch2 align=\"center\"\u003e II. Documentação do Código: \u003ch2/\u003e\n\n\u003ch2\u003e Connection \u003c/h2\u003e\n\n  - Este código Java contém uma classe ConnectionFactory que fornece métodos para gerenciar conexões com um banco de dados PostgreSQL. \n\n  - Atributos:\n    - Define atributos estáticos para a URL do banco de dados, nome de usuário e senha para se conectar ao banco de dados PostgreSQL.\n\n  - Método getConnection():\n    - Retorna uma conexão ativa com o banco de dados usando o DriverManager e os detalhes de URL, usuário e senha fornecidos.\n    - Lança uma exceção RuntimeException se ocorrer um erro ao obter a conexão.\n  \n  - Método closeConnection(Connection connection):\n    - Fecha a conexão com o banco de dados, se estiver aberta.\n    - Trata exceções associadas ao fechamento da conexão, mas apenas imprime a rastreabilidade do erro.\n\n  - Método closeConnection(Connection connection, PreparedStatement stmt):\n    - Além de fechar a conexão, também fecha um objeto PreparedStatement associado, se existir.\n    - Trata exceções associadas ao fechamento da conexão e do PreparedStatement.\n  \n  - Método closeConnection(Connection connection, PreparedStatement stmt, ResultSet rs):\n    - Adicionalmente ao fechamento da conexão e do PreparedStatement, fecha um ResultSet, se existir.\n    - Trata exceções associadas ao fechamento da conexão, do PreparedStatement e do ResultSet.\n\n  - Resumidamente, essa classe oferece métodos estáticos para obter conexões com o banco de dados PostgreSQL, bem como para fechar conexões, declarações preparadas (PreparedStatement) e resultados (ResultSet). Essa abordagem visa a reutilização de código e o encapsulamento de lógica de gerenciamento de conexão, facilitando o desenvolvimento e manutenção de aplicações Java que interagem com bancos de dados PostgreSQL.\n\n\u003ch2\u003e Classe DAO \u003c/h2\u003e\n  - A classe DAO atua como uma camada de acesso a dados para interagir com um banco de dados relacionado aos registros de carros. Aqui está um resumo das principais funcionalidades dessa classe:\n\n  - Atributos:\n    - connection: Armazena a conexão com o banco de dados através da ConnectionFactory.\n    - carros: Lista para armazenar objetos do tipo Carros.\n\n  - Método criaTabela():\n    - Cria uma tabela no banco de dados usando SQL.\n    - Usa uma instrução CREATE TABLE para criar a tabela carros_lojacarros se ela não existir.\n \n  - Método listarTodos():\n    - Recupera todos os registros da tabela carros_lojacarros do banco de dados.\n    - Utiliza uma consulta SQL para selecionar todos os registros.\n    - Cria objetos Carros com os dados recuperados e os armazena em uma lista para posterior uso.\n  \n  - Método cadastrar(String marca, String modelo, String ano, String placa, String valor):\n    - Insere um novo registro na tabela carros_lojacarros do banco de dados.\n    - Utiliza uma instrução INSERT INTO com parâmetros para realizar a inserção.\n    - Controla exceções para evitar inserções com placas duplicadas.\n  \n  - Método atualizar(String marca, String modelo, String ano, String placa, String valor):\n    - Atualiza um registro na tabela carros_lojacarros baseado na placa.\n    - Utiliza uma instrução UPDATE com parâmetros para modificar os dados do carro.\n \n  - Método apagar(String placa):\n    - Remove um registro da tabela carros_lojacarros com base na placa fornecida.\n    - Utiliza uma instrução DELETE FROM para excluir o registro.\n  \n  - Essa classe encapsula a lógica para manipular o banco de dados relacionado aos registros de carros (Carros) por meio de operações de inserção, atualização, exclusão e recuperação de dados da tabela carros_lojacarros. Além disso, controla as conexões com o banco de dados para garantir sua abertura e fechamento adequados.\n\n\u003ch2\u003e Controller \u003c/h2\u003e\n\n  - A classe Control controla as interações entre a interface de usuário (UI) e operações relacionadas a carros armazenados em um banco de dados. \n\n  - Atributos:\n    - carros: Armazena uma lista de objetos do tipo Carros.\n    - tableModel: Representa o modelo da tabela Swing para exibir os dados.\n    - table: É a tabela Swing onde os dados dos carros são mostrados.\n\n  - Método atualizarTabela():\n    - Limpa as linhas existentes na tabela.\n    - Obtém os dados atualizados dos carros a partir do banco de dados usando um CarrosDAO.\n    - Popula a tabela Swing com os dados dos carros, adicionando cada carro como uma nova linha na tabela.\n\n  - Método cadastrar(String marca, String modelo, String ano, String placa, String valor):\n    - Chama o método de cadastro no banco de dados usando um CarrosDAO.\n    - Após o cadastro, atualiza a tabela de exibição chamando o método atualizarTabela().\n  \n  - Método atualizar(String marca, String modelo, String ano, String placa, String valor):\n    - Chama o método de atualização no banco de dados usando um CarrosDAO.\n    - Após a atualização, atualiza a tabela de exibição chamando o método atualizarTabela().\n  \n  - Método apagar(String placa):\n    - Chama o método de exclusão no banco de dados usando um CarrosDAO.\n    - Após a exclusão, atualiza a tabela de exibição chamando o método atualizarTabela().\n  \n  - Em resumo, a classe Control atua como um controlador entre a interface do usuário e as operações de manipulação de dados no banco de dados. Ela utiliza um objeto para realizar operações de cadastro, atualização e exclusão no banco de dados, ao mesmo tempo que atualiza a tabela Swing com os dados atualizados após cada operação.\n\n\u003ch2\u003e View \u003c/h2\u003e\n  - Representa a classe ClientesPainel, uma interface gráfica de usuário (GUI) para gerenciar informações de clientes.\n\n  - Componentes Visuais:\n    - Utiliza JTextField para entrada de dados referentes a CPF, nome, telefone e cidade do cliente.\n    - Usa JLabel para indicar os campos correspondentes aos valores a serem inseridos.\n    - Contém uma tabela JTable para exibir os dados dos clientes cadastrados.\n\n  - Operações de Interface:\n    - Possui botões para cadastrar, editar e apagar clientes.\n    - Validações são aplicadas nos campos de entrada para garantir formatos adequados (CPF, telefone, nome, cidade).\n    - Exibe mensagens de erro ou sucesso dependendo das operações executadas.\n    - A interação com a tabela permite a seleção de linhas para edição ou exclusão.\n\n  - Interação com o Banco de Dados:\n    - Ao iniciar, cria a tabela no banco de dados através da classe ClientesDAO.\n    - Utiliza métodos da classe ClientesControl para realizar operações como cadastrar, atualizar e apagar clientes no banco de dados.\n    - A cada operação, atualiza a tabela na interface para refletir as mudanças no banco de dados.\n\n  - Validações Específicas:\n    - Verifica se os campos estão preenchidos antes de cadastrar um novo cliente.\n    - Realiza validações específicas para formatos de CPF, telefone, nome e cidade.\n\n  - Atualização da Tabela de Clientes:\n    - Possui um método atualizarTabela() que atualiza os dados na tabela de clientes a partir do banco de dados.\n\n  - Em resumo, essa classe ClientesPainel oferece uma interface interativa para gerenciar operações relacionadas aos clientes, como cadastro, edição e exclusão, mantendo a interface sincronizada com os dados armazenados no banco de dados.\n\n\u003ch2\u003e View Vendas \u003c/h2\u003e\n\n  - Representa a classe VendasPainel, uma interface gráfica de usuário (GUI) para gerenciar registros de vendas. Aqui está um resumo das principais funcionalidades:\n\n  - Componentes Visuais:\n    - Utiliza componentes Swing como JTextField, JLabel, JComboBox, JButton para entrada de dados, exibição e interação do usuário.\n    - Inclui uma tabela JTable para mostrar os registros de vendas.\n\n  - Operações de Interface:\n    - Fornece campos para inserir informações como data da venda e valor.\n    - Permite a seleção de clientes e carros por meio de JComboBox para associá-los à venda.\n    - Inclui botões para cadastrar vendas, atualizar e excluir registros.\n\n  - Interação com o Banco de Dados:\n    - Utiliza classes DAO (VendasDAO, CarrosDAO, ClientesDAO) para interagir com o banco de dados, realizando operações como cadastro, exclusão e listagem de vendas, carros e clientes.\n    - Atualiza a tabela de vendas na interface para refletir as mudanças no banco de dados.\n\n  - Validações de Entrada:\n    - Realiza validações nos campos de data e valor para garantir formatos adequados.\n    - Fornece feedback ao usuário sobre os campos que devem ser preenchidos corretamente.\n\n  - Funcionalidades Adicionais:\n    - Inclui métodos para atualizar as JComboBox de clientes e carros, garantindo que os dados estejam sempre atualizados na interface.\n\n  - Interação com o Usuário:\n    - Permite a seleção de uma venda na tabela para visualização ou modificação dos dados.\n    - Apresenta mensagens de confirmação para garantir a exclusão correta de vendas.\n\n  - Em resumo, a classe VendasPainel fornece uma interface interativa para registrar, visualizar e gerenciar vendas, integrando-se ao banco de dados e proporcionando uma experiência de usuário para manipular informações de vendas.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafaelmoura23%2Flojadecarros-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frafaelmoura23%2Flojadecarros-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafaelmoura23%2Flojadecarros-java/lists"}