Sistema de cadastro

4 respostas
D

Olá, estou fazendo um simples sistema de cadastro, alteracao, com botoes de proximo, anterior, ultimo e primeiro…dei conta de fazer o proximo, mas no meu banco tenho 4 registros, e ele mostra apenas o 1 e o 3 registro…gostaria q alguem me dissesse o q ta acontecendo…e se alguem puder me ajudar a fazer o anterior, primeiro e ultimo…agradeceria…vo colocar os meus codigos…

Aluno.java

class Aluno
{
   String nome;
   String idade;
}

ControleAluno.java

public class ControleAluno
{
   private ModeloJdbcAluno modelo;

   public ControleAluno()
   {
      modelo = new ModeloJdbcAluno();
   }

   public boolean incluiAluno(Aluno x)
   {
       return modelo.incluiAluno(x);
   }

   public boolean alteraAluno(Aluno x)
   {
       return modelo.alteraAluno(x);
   }

   public void proximoAluno()
   {
       modelo.proximoAluno();
   }

   public Aluno alunoCorrente()
   {
       return modelo.alunoCorrente();
   }

   public void fechar()
   {
       modelo.fechar();
   }

}

FormularioAluno.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FormularioAluno implements ActionListener
{
   private JLabel rotuloNome;
   private JLabel rotuloIdade;
   private JLabel rotuloTotal;
   private JTextField campoNome;
   private JTextField campoIdade;
   private JPanel painelCima;
   private JPanel painelBaixo;
   private JButton botaoIncluir;
   private JButton botaoSair;
   private JButton botaoAlterar;
   private JFrame janela;
   private JButton botaoPrimeiro;
   private JButton botaoAnterior;
   private JButton botaoProximo;
   private JButton botaoUltimo;
   private ModeloJdbcAluno v;
   private ControleAluno controle;


   public FormularioAluno() //método construtor
   {
      v = new ModeloJdbcAluno();
      janela = new JFrame("Formulario de Cadastro");
      rotuloNome = new JLabel("Nome: ");
      rotuloIdade = new JLabel("Idade: ");
      rotuloTotal = new JLabel("Total de registros: " + v.totalAlunos());
      campoNome = new JTextField(20);
      campoIdade = new JTextField(20);
      painelCima = new JPanel(new GridLayout(3,2));
      painelBaixo = new JPanel();
      botaoIncluir = new JButton("Incluir");
      botaoSair = new JButton("Sair");
      botaoAlterar = new JButton("Alterar");
      botaoPrimeiro = new JButton("Primeiro");
      botaoAnterior = new JButton("Anterior");
      botaoProximo = new JButton("Próximo");
      botaoUltimo = new JButton("Último");

      controle = new ControleAluno();

      //coloca dentro da janela o painel de cima e o painel de baixo
      janela.setSize(400,400);
      janela.getContentPane().add(painelCima, BorderLayout.CENTER);// getContentPane é a área visivel da janela
      janela.getContentPane().add(painelBaixo, BorderLayout.SOUTH);

      painelBaixo.add(botaoIncluir);
      painelBaixo.add(botaoAlterar);
      painelBaixo.add(botaoPrimeiro);
      painelBaixo.add(botaoAnterior);
      painelBaixo.add(botaoProximo);
      painelBaixo.add(botaoUltimo);
      painelBaixo.add(botaoSair);


      painelCima.add(rotuloNome);
      painelCima.add(campoNome);
      painelCima.add(rotuloIdade);
      painelCima.add(campoIdade);
      painelCima.add(rotuloTotal);


      botaoIncluir.addActionListener(this);//este é um método da classe ActionListener, e ela já sabe que está vinculada ao método actionPerformed, e entra no if, pra saber se é para sair ou incluir
      botaoAlterar.addActionListener(this);
      botaoSair.addActionListener(this);
      botaoProximo.addActionListener(this);
      botaoAnterior.addActionListener(this);


   }

   public void mostrarInterface()
   {
      janela.pack(); //pack() faz uma compactação para todos os elementos aparecerem na janela economizando espaço
      janela.setVisible(true);
   }

   public void mostrarAluno(Aluno x)
   {
      controle.proximoAluno();
      Aluno temp = controle.alunoCorrente();
      campoNome.setText(temp.nome);
      campoIdade.setText(temp.idade);
   }

   public void actionPerformed(ActionEvent evt)
   {
      if(evt.getSource()==botaoSair) //descobrir quem é que está sendo clicado
      {
         controle.fechar();
         System.exit(0);
      }

      if(evt.getSource()==botaoIncluir)
      {
          Aluno aluno = new Aluno();
          aluno.nome = campoNome.getText(); //joga o texto para o objeto aluno que foi criado
          aluno.idade = campoIdade.getText();
          boolean res = controle.incluiAluno(aluno);//chama o método incluiAluno da classe ControleAluno
          if (res)
          {
             JOptionPane.showMessageDialog(null, "Aluno cadastrado com sucesso!");
         }
          else
          {
             JOptionPane.showMessageDialog(null, "Falha na inserção dos dados!");
         }
      }

      if(evt.getSource()==botaoAlterar)
      {
          Aluno aluno1 = new Aluno();
          aluno1.nome = campoNome.getText(); //joga o texto para o objeto aluno que foi criado
          aluno1.idade = campoIdade.getText();
          boolean res = controle.alteraAluno(aluno1);//chama o método alteraAluno da classe ControleAluno
          if (res)
          {
             JOptionPane.showMessageDialog(null, "Aluno alterado com sucesso!");
         }
          else
          {
             JOptionPane.showMessageDialog(null, "Falha na alteracao do aluno!");
         }
        }

        if(evt.getSource()==botaoProximo)
      {
         controle.proximoAluno();
         mostrarAluno(controle.alunoCorrente());
        }

    }


   public static void main (String args [])
   {
      new FormularioAluno().mostrarInterface();
   }
}

ModeloJdbcAluno.java

import java.sql.*;
import java.util.*;

class ModeloJdbcAluno
{
   private Connection con;
   private Statement st;
   private ResultSet rs;
   private Vector v;
   private int registroCorrente = 0;

    public ModeloJdbcAluno()
    {
       try
       {
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //carrega o drive da ponte jdbc-odbc

          con = DriverManager.getConnection("jdbc:odbc:banco"); //abre a conexao com o banco de dados

          st = con.createStatement();

         carregaAlunos();

       }
       catch(ClassNotFoundException e)
       {
          System.out.println("Classe do Drive JDBC nao encontrada");
       }

       catch(SQLException e)
       {
           System.out.println("Falha na conexao com o banco de dados "+ e.getMessage());

       }

    }

    public boolean incluiAluno(Aluno x)
   {
       try
       {
         int retorno = st.executeUpdate ("INSERT INTO Alunos VALUES('"+x.nome.trim()+"',' "+x.idade.trim()+"')");

          return (retorno == 1);//se for igual a 1 retorna true
       }


       catch(SQLException e)
       {
           System.out.println("Falha na conexao com o banco de dados "+ e.getMessage());
           return (false);
       }

    }


    public boolean alteraAluno(Aluno x)
   {
       try
       {
         int retorno = st.executeUpdate ("UPDATE Alunos SET Idade ='"+x.idade.trim()+"' WHERE Nome ='"+x.nome.trim()+"' ");

          return (retorno == 1);//se for igual a 1 retorna true
       }


       catch(SQLException e)
       {
           System.out.println("Falha na atualizacao do banco de dados "+ e.getMessage());
           return (false);
       }

    }

    public void carregaAlunos()
   {
       try
       {
         v = new Vector();
         Aluno temp;
         rs = st.executeQuery ("SELECT * from Alunos");

          while(rs.next())
          {
            temp = new Aluno();
            temp.nome = rs.getString(1); // nome
            temp.idade = rs.getString(2); // idade
            v.addElement(temp);
         }
       }


       catch(SQLException e)
       {
           System.out.println("Falha ao carregar dados do banco de dados "+ e.getMessage());
       }

    }

    public int totalAlunos() {
        return v.size();
    }

    public Aluno alunoCorrente()
    {
      return (Aluno) v.elementAt(registroCorrente);
   }

    public void proximoAluno()
   {
      registroCorrente++;

      if(registroCorrente >= v.size())
      {
         registroCorrente = 0;
      }
   }

    public void fechar()
    {
       try
       {
          con.close();
       }
       catch(SQLException e)
       {
           System.out.println("Falha na conexao com o banco de dados "+ e.getMessage());
       }

   }
}

4 Respostas

B

Ola,

Ele só tá mostrando o 1 e o 3 aluno pq vc tá chamando o método de “proximoAluno” duas vezes por event do butão… no action e no método de mostrar o aluno.

B

Ola,

Esqueci, pra fazer o primerio, na classe ModeloJdbcAluno.java vc inclui um método que coloca a variavel “registroCorrente” no 0 e manda ele mostrar o aluno, considerando que vc tirou de lá a chamada para o método “proximoAluno”, pra fazer o anterior é um método na classe ModeloJdbcAluno.java que faz um “–” na variável “registroCorrente”, verificando se ela não foi pra negatido… e para o ultimo outro metodo na classe ModeloJdbcAluno.java colocando a variável “registroCorrente” em v.size() -1.

QQ coisa posta ae…

D

Olá, ve se o meu anterior ficaria certo assim:

public void anteriorAluno()
	{
		registroCorrente--;

		if(registroCorrente >= v.size())
		{
			registroCorrente = 0;
		}
	}
B

Ola,

quase la, mas a condicao ta errada, melhor assim: if(registroCorrente < 0){ registroCorrente = 0; }

Pq quando vc diminiu, o “registroCorrente” pode ficar negativo… e isto lhe causaria um erro.

Criado 20 de junho de 2006
Ultima resposta 20 de jun. de 2006
Respostas 4
Participantes 2