Voltar ao portfólio

Aplicação MEI – Java + SQL

Aplicação desktop para gestão de microempreendedor (MEI) com CRUD completo e persistência em SQL.

PT EN

Resumo do projeto

Esta aplicação foi desenvolvida em Java com persistência em SQL para apoiar um microempreendedor individual (MEI) na gestão de clientes, produtos/serviços e faturas. É um projeto académico, mas com estrutura inspirada em aplicações reais.

Java MySQL/PostgreSQL MVC

Modelo de dados (simplificado)

CLIENTE(id, nome, nif, email, telefone)
SERVICO(id, descricao, preco_base)
FATURA(id, id_cliente, data_emissao, total)
ITENS_FATURA(id_fatura, id_servico, quantidade, preco_unitario)

A aplicação permite criar clientes, definir serviços, emitir faturas e calcular totais automaticamente.

Exemplo de entidade Java

public class Cliente {
    private Long id;
    private String nome;
    private String nif;
    private String email;
    private String telefone;

    // getters e setters, construtores...

    @Override
    public String toString() {
        return nome + " (" + nif + ")";
    }
}

Exemplo de DAO (ClienteDAO)

public class ClienteDAO {

    private final Connection conn;

    public ClienteDAO(Connection conn) {
        this.conn = conn;
    }

    public void inserir(Cliente c) throws SQLException {
        String sql = "INSERT INTO CLIENTE (nome, nif, email, telefone) VALUES (?,?,?,?)";
        try (PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1, c.getNome());
            ps.setString(2, c.getNif());
            ps.setString(3, c.getEmail());
            ps.setString(4, c.getTelefone());
            ps.executeUpdate();
        }
    }

    public List<Cliente> listar() throws SQLException {
        List<Cliente> lista = new ArrayList<>();
        String sql = "SELECT * FROM CLIENTE ORDER BY nome";
        try (PreparedStatement ps = conn.prepareStatement(sql);
             ResultSet rs = ps.executeQuery()) {
            while (rs.next()) {
                Cliente c = new Cliente();
                c.setId(rs.getLong("id"));
                c.setNome(rs.getString("nome"));
                c.setNif(rs.getString("nif"));
                c.setEmail(rs.getString("email"));
                c.setTelefone(rs.getString("telefone"));
                lista.add(c);
            }
        }
        return lista;
    }
}