Programa Verificador de CPF Válido e Gerador de CPF Válido

6 respostas
A

[b][size=18]Programa Verificador de CPF Válido e Gerador de CPF Válido…

O que pode ser Melhorado ?

Avaliem…ai…valeu… [/size][/b]

package classes;
import javax.swing.JOptionPane;


public class Verificar_CPF 
 {
    private String cpf;

    public String getCpf()
     {
       return cpf;
     }

    public void setCpf(String cpf)
     {
       this.cpf = cpf;
     }

    public void Verificando()
     {
       int dig1, dig2, erro;
       char[] cPF = getCpf().toCharArray();

       dig1 = dig2 = erro = 0;

       int a1 = Integer.parseInt(String.valueOf(cPF[0]));
       int a2 = Integer.parseInt(String.valueOf(cPF[1]));
       int a3 = Integer.parseInt(String.valueOf(cPF[2]));
       int a4 = Integer.parseInt(String.valueOf(cPF[4]));
       int a5 = Integer.parseInt(String.valueOf(cPF[5]));
       int a6 = Integer.parseInt(String.valueOf(cPF[6]));
       int a7 = Integer.parseInt(String.valueOf(cPF[8]));
       int a8 = Integer.parseInt(String.valueOf(cPF[9]));
       int a9 = Integer.parseInt(String.valueOf(cPF[10]));
       
       int soma = ((a1 * 10) + (a2 * 9) + (a3 * 8) + (a4 * 7)
                   + (a5 * 6) + (a6 * 5) + (a7 * 4) + (a8 * 3)
                   + (a9 * 2));

       int resto = (soma % 11);

       if(resto < 2)
        {
          dig1 = 0;
        } else
           {
             dig1 = 11 - resto;
           }


       soma = ((a1 * 11) + (a2 * 10) + (a3 * 9) + (a4 * 8)
               + (a5 * 7) + (a6 * 6) + (a7 * 5) + (a8 * 4)
               + (a9 * 3) + (dig1 * 2));
       
       resto = (soma % 11);

       if(resto < 2)
        {
          dig2 = 0;
        } else
           {
             dig2 = 11 - resto;
           }

       int a = Integer.parseInt(String.valueOf(cPF[12]));
       int b = Integer.parseInt(String.valueOf(cPF[13]));

       if(dig1 == a && dig2 == b)
        {
          if(cPF[0] == '1' && cPF[1] == '1' && cPF[2] == '1' &&
             cPF[4] == '1' && cPF[5] == '1' && cPF[6] == '1' &&
             cPF[8] == '1' && cPF[9] == '1' && cPF[10] == '1')
           {
             erro++;
           }
          
          if(cPF[0] == '2' && cPF[1] == '2' && cPF[2] == '2' &&
             cPF[4] == '2' && cPF[5] == '2' && cPF[6] == '2' &&
             cPF[8] == '2' && cPF[9] == '2' && cPF[10] == '2')
           {
             erro++;
           }
          if(cPF[0] == '3' && cPF[1] == '3' && cPF[2] == '3' &&
             cPF[4] == '3' && cPF[5] == '3' && cPF[6] == '3' &&
             cPF[8] == '3' && cPF[9] == '3' && cPF[10] == '3')
           {
             erro++;
           }

          if(cPF[0] == '4' && cPF[1] == '4' && cPF[2] == '4' &&
             cPF[4] == '4' && cPF[5] == '4' && cPF[6] == '4' &&
             cPF[8] == '4' && cPF[9] == '4' && cPF[10] == '4')
           {
             erro++;
           }

          if(cPF[0] == '5' && cPF[1] == '5' && cPF[2] == '5' &&
             cPF[4] == '5' && cPF[5] == '5' && cPF[6] == '5' &&
             cPF[8] == '5' && cPF[9] == '5' && cPF[10] == '5')
           {
             erro++;
           }
          
          if(cPF[0] == '6' && cPF[1] == '6' && cPF[2] == '6' &&
             cPF[4] == '6' && cPF[5] == '6' && cPF[6] == '6' &&
             cPF[8] == '6' && cPF[9] == '6' && cPF[10] == '6')
           {
             erro++;
           }
          if(cPF[0] == '7' && cPF[1] == '7' && cPF[2] == '7' &&
             cPF[4] == '7' && cPF[5] == '7' && cPF[6] == '7' &&
             cPF[8] == '7' && cPF[9] == '7' && cPF[10] == '7')
           {
             erro++;
           }
          if(cPF[0] == '8' && cPF[1] == '8' && cPF[2] == '8' &&
             cPF[4] == '8' && cPF[5] == '8' && cPF[6] == '8' &&
             cPF[8] == '8' && cPF[9] == '8' && cPF[10] == '8')
           {
             erro++;
           }
          if(cPF[0] == '9' && cPF[1] == '9' && cPF[2] == '9' &&
             cPF[4] == '9' && cPF[5] == '9' && cPF[6] == '9' &&
             cPF[8] == '9' && cPF[9] == '9' && cPF[10] == '9')
           {
             erro++;
           }

          if(cPF[0] == '0' && cPF[1] == '0' && cPF[2] == '0' &&
             cPF[4] == '0' && cPF[5] == '0' && cPF[6] == '0' &&
             cPF[8] == '0' && cPF[9] == '0' && cPF[10] == '0')
           {
             erro++;
           }

          if(erro == 0)
           {
             JOptionPane.showMessageDialog(null, "CPF Válido: " + getCpf() ,
              "Informando", JOptionPane.INFORMATION_MESSAGE);
           } else
              {
                JOptionPane.showMessageDialog(null, "CPF Inválido: " + getCpf() ,
                 "Informando", JOptionPane.ERROR_MESSAGE);
              }

        } else
           {
             JOptionPane.showMessageDialog(null, "CPF Inválido: " + getCpf() , "Informando",
                 JOptionPane.ERROR_MESSAGE);
           }

     }
 }
package classes;
import java.util.*;
import javax.swing.JOptionPane;


public class Gerar_CPF
 {

   public String Gerador()
    {
       Random r = new Random();

       int[] numero = new int[11];
       int soma1, soma2, erro;
       int part1, part2, part3, dig1;
       int part5, part6, part7, dig2;

       StringBuilder num = new StringBuilder();
       String numCompleto;


       erro = 0;

       for(int i = 1; i <= 9; i++)
        {
          erro = 1;
           do
            {
              if(erro > 1)
               {
                  JOptionPane.showMessageDialog(null, "Erro" ,  
                   "Informando", JOptionPane.INFORMATION_MESSAGE);
                  erro = 1;
               }

               numero[i] = r.nextInt(10);
               erro++;

            }while(numero[i] > 9 || numero[i] < 0);
         }


       soma1 = ((numero[1] * 10) + (numero[2] * 9) +(numero[3] * 8) +
                (numero[4] * 7) + (numero[5] * 6) + (numero[6] * 5) +
                (numero[7] * 4) + (numero[8] * 3) + (numero[9] * 2));

       part1 = (int)(soma1 / 11);
       part2 = (part1 * 11);
       part3 = (soma1 - part2);
       dig1 = (11 - part3);

       if(dig1 > 9)
         dig1 = 0;

       soma2 = ((numero[1] * 11) + (numero[2] * 10) +(numero[3] * 9) +
                (numero[4] * 8) + (numero[5] * 7) + (numero[6] * 6) +
                (numero[7] * 5) + (numero[8] * 4) + (numero[9] * 3)) + (dig1 * 2);


       part5 = (int)(soma2 / 11);
       part6 = (part5 * 11);
       part7 = (soma2 - part6);
       dig2 = (11 - part7);

       if(dig2 > 9)
         dig2 = 0;

       for(int i = 1; i <= 9; i++)
        {
          num.append(numero[i]);

          if(i - 1 == 2)
           num.append(".");

          if(i - 1 == 5)
           num.append(".");

        }

        num.append("-");
        num.append(dig1);
        num.append(dig2);

        numCompleto = num.toString();

        return numCompleto;
   }
 }

[size=18]Tá ai… os dois Algoritmos classe Verificar_CPF e a classe Gerar_CPF [/size]

6 Respostas

d34d_d3v1l

legal cara… que tal usar um

setLocationRelativeTo(null);

no construtor da GUI para a janela ficar no meio da tela? x]

d34d_d3v1l

outra coisa,

pq q tem 3 links com o msmo conteudo ? O.o’

outra coisa… existem pessoas meio céticas em executar códigos alheios…
si bem que em java é deboa decompilar e ver o source… mas de boa…
seria legal vc postar os algoritmos para analisarmos isso tbem…

até mesmo pq, ver uma janelinha qqer user faz x]

A

d34d_d3v1l:
legal cara… que tal usar um

setLocationRelativeTo(null);

no construtor da GUI para a janela ficar no meio da tela? x]

Verdade… valeu …pela dica…

ViniGodoy

Toda validação do formato do CPF pode ser verificada por uma expressão regular. Isso eliminará todos aqueles ifs.

Além disso, você deveria fazer a validação do formato de entrada, logo após fazer a leitura, antes de começar a trabalhar com os dados.

A

ViniGodoy:
Toda validação do formato do CPF pode ser verificada por uma expressão regular. Isso eliminará todos aqueles ifs.

Além disso, você deveria fazer a validação do formato de entrada, logo após fazer a leitura, antes de começar a trabalhar com os dados.

B

Se quiser pode ver como alguns frameworks de validação fazem essa validação de CPF, e tentar entender por que fizeram de tal modo, as vantagens, etc.

Digo isso por que olhar o código de outros é a melhor forma de aprendizado.

Por exemplo:

http://stella.caelum.com.br/

PS:

Coloque teus códigos num repositório de códigos aberto, não fique distribuindo via mediafire. Use o GitHub ou similares.

Criado 17 de fevereiro de 2012
Ultima resposta 18 de fev. de 2012
Respostas 6
Participantes 4