Entradas populares

lunes, 19 de septiembre de 2011

Valida un RFC


Hola chavos que tal aqui les traigo lo que es un simple programa para validar que el usuario nos de de manera correcta su RFC. Checa que el nombre y la fecha dada coincida con el escrito en el RFC.
Espero les sirva

package Casa;
import java.awt.Component;


import javax.swing.JOptionPane;


public class Rfc {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String mensaje;
String cadena;
char rfc[] = null;
int ban = 0;

//Pediremos el nombre
cadena=JOptionPane.showInputDialog("Nombre Completo.", "Escribe tu nombre completo.");
String cadena2 = cadena.toUpperCase();//pasamos el nombre todo a mayusculas
int lim =cadena2.length();//me da el tamño de la cadena "cadena2"
char nombre[]=cadena2.toCharArray();//ponemos en arreglo el nombre

//pediremos la fecha
cadena=JOptionPane.showInputDialog("Fecha de nacimiento.","dia/mes/año.");
int lim2 = cadena.length();//me da la longitud de la cadena fec
char fecha[] =cadena.toCharArray();//ponemos en un arreglo la fecha


do{
//no saldra del ciclo hasta que se de bien el rfc

cadena=JOptionPane.showInputDialog("RFC."+"Escribe salir si deseas Salir", "Dame tu RFC.");
cadena = cadena.toUpperCase();
if(cadena.equals("SALIR") ){
break;
}

Component componentePadre = null;//declaramos el componente padre
//confirmemos el RFC
int confirmado = JOptionPane.showConfirmDialog(componentePadre,"¿Lo confirmas?");
if (JOptionPane.OK_OPTION == confirmado)
{//Si lo confirma, da un mensaje de confirmacion
mensaje = String.format("Confirmado.");
JOptionPane.showMessageDialog(null, mensaje);
if( validarRfc(cadena) )
{//valida que sea un rfc
rfc = cadena.toCharArray();//transforma la cadena a un array

if(valida1(nombre,rfc,lim))//Valida que el nombre coincida
{
if(valida2(fecha,rfc,lim2))// Valida que la fecha coincida
{
mensaje = String.format("     RFC Correcto.");
JOptionPane.showMessageDialog(null, mensaje);
ban = 1;//asi se saldra del ciclo
}
}
else{
mensaje = String.format("    RFC ERRONEO. No coincide con tus nombre y fecha");
JOptionPane.showMessageDialog(null, mensaje);
}
}
else{//si esta mal digitado lo pide de nuevo
mensaje = String.format("Error. Tu RFC fue mal digitado."+"\n\n     Damelo de nuevo.");
JOptionPane.showMessageDialog(null,mensaje);
}

}   
else
{//si no lo pide de vuelta
mensaje = String.format("     Damelo de nuevo.");
JOptionPane.showMessageDialog(null, mensaje);
}
}while(ban == 0);


}//FIN DEL MAIN






//METODO PARA VALIDAR LA FECHA
private static boolean valida2(char[] fecha, char[] rfc, int lim2) {
// TODO Auto-generated method stub
int b=4;
for(int c=4; c<10; ++c){
for(int r =0; r< lim2; ++r){
if(rfc[c ] == fecha[r])//barre la fecha en el rfc
{
++b;
}
}
}
if(b == 10)
return true;
else
return false;
}




// METODO PARA VALIDAR EL NOMBRE
private static boolean valida1(char[] nombre, char[] rfc,int lim) {
// TODO Auto-generated method stub
int b=0;
for(int c=0; c < 4;++c ){
for(int a =0; a< lim; ++a){
if(rfc[c] == nombre[a])//barre el nombre en el rfc
{
++b;
}
}
}
if(b == 4 | b == 3)
return true;
else
return false;
}




/*Método que tiene la función de validar el rfc*/
public static boolean validarRfc(String rfc){
rfc=rfc.toUpperCase().trim();//devuelve la cadena sin espacios aql final y al principio
return rfc.toUpperCase().matches("[A-Z]{4}[0-9]{6}[A-Z0-9]{3}");//comprueba que sean iguales
}//Cierra método validarRFC


}