P. 1
Manual de RFC en Java Con Netbeans1

Manual de RFC en Java Con Netbeans1

|Views: 3.647|Likes:
Publicado porMabel Silva

More info:

Published by: Mabel Silva on Sep 02, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

05/23/2013

pdf

text

original

TECNOLOGICO DE ESTUDIOS SUPERIORES DE CUAUTITLAN IZCALLI

RFC
CODIGO EN NETBEANS
Ramírez Franco, Luis Andrés 09/05/2011

Introducción

Seguro que para aquellos que están acostumbrados a programar no encontraran nada nuevo, pero para aquellos que no están acostumbrados o no conocen de programación encontraran aquí una valiosa fuente de información para aumentar sus conocimientos y sobre todo si lo llevan a cabo para desarrollar a futuro sus propias aplicaciones. Para empezar les comentare que “NETBEANS” es un SW de aplicación para programación grafica en java, que quiere decir esto para los nuevos, esta aplicación básicamente agrega el código que se requiere para objetos y gráficos básicos, como por ejemplo ventanas, botones, etiquetas, calendarios entre otros objetos, que nos harán mucho más fácil la programación y sobre todo se adaptaran a todo tipo de necesidades en aplicaciones locales. La principal desventaja ante esto es que si llegamos a borrar o añadir alguna llave sin cuidado podría generarnos un sinfín de errores y si no se tiene practica para encontrar errores podría arruinar por completo nuestra aplicación haciéndola inservible es decir no podríamos ejecutarla. Bueno empecemos una vez instalada la aplicación, generaremos un nuevo proyecto y aparecerá una nueva ventana en la cual elegiremos de la lista que la aplicación será de java y será una aplicación de escritorio de java y le damos siguiente.

Después en la siguiente ventana cambiaremos el nombre de la aplicación y para nuestro caso particular se llamara RFC, notaremos que una vez cambien el nombre de la aplicación también se cambiara la carpeta donde se creara el proyecto colocando el nombre de nuestro proyecto y la clase de aplicación haciendo referencia a la clase main que es necesaria en todas las aplicaciones de java. Una vez cambiemos el nombre damos clic en el botón “terminar”.

awt. RFC1 y nombreC y una de tipo ‘char’ RFC inicializada en ‘X’. Apaterno. 3 jTextBox 6 Label (etiquetas) 3 jComboBox 1 Botón CODIGO PARA OBTENER EL RFC EN NETBEANS // dentro del botón en el evento MouseClicked incluiremos el siguiente código //Esta línea se coloca por default al crear el evento mouseClicked private void jButton1MouseClicked(java. Para este ejemplo utilizare los siguientes objetos. Ahora colocaremos los siguientes objetos para poder dar pauta a la programación y aunque tú puedes ordenar estos objetos como gustes te recomiendo que identifiques que objetos usas por nombre y número porque en el código es importante a que objetos hagamos referencia durante la ejecución. . en Linux que Windows o MAC igual funcionara.MouseEvent evt) { //Se declaran las Variables de tipo cadena ’String’ : RFC.event.Nota: Recuerda que java es un lenguaje de programación multiplataforma es decir que da igual que ejecutes tu programa.

// Se declara una variable booleana llamda sigue y se inicializa con el valor true(verdadero) boolean sigue = true. String Apaterno. String RFC1. try { // Se guarda el valor del la caja de texto1 en la variable Apaterno. String nombreC = "". // Este procedimiento captura la primera vocal del apellido paterno contenido en el jTextBox1 .setText(""). jLabel6. //La variable ‘nombreC’ guarda el contenido de la variable ‘Apaterno’ para utilizarla despues nombreC = Apaterno.getText(). //Se convierte la variable a paterno en un arreglo de tipo ‘char’ llamado ‘ap*+’ el cual se declara en el mismo momento. //En la variable ‘RFC1’ se guarda el primer valor del RFC sacado del primer valor del arreglo de ‘ap’ que debe de contener la primera letra del apellido paterno RFC1 = "" + ap[0]. char RFC2 = 'X'. //Se declara una variable ‘i’ de tipo entero y se inicializa en 1 int i=1.toCharArray().String RFC = "". //Se agrega a la variable ‘RFC’ el primer valor del RFC contenido en la variable ‘RFC1’ RFC = RFC1. //se abre un metodo ‘try’ en caso de que se genere un error al capturer el contenido del jTextField1 y que el programa no colapse. // El contenido de la etiqueta 6 se pone en blanco para eliminar cualquier tipo de basura. char ap[] = Apaterno. Apaterno = jTextField1.

//Se utiliza un ciclo ‘while’ con las condicionales (sigue == true) & (i <= ap. } //Si al terminar este metodo no se cumple con ninguna de las condiciones se apliica que si el valor de ‘i’ es igual a la longitud del arreglo ap y esta longitud es menor o igual a dos letras entonces sigue será igual a falso y RFC obtendrá un valor de ‘-‘ .length-1) & (ap. //finalmente se agrega el valor de RFC2 a la variable RFC RFC = RFC + RFC2. while ( (sigue == true) & (i <= ap.length > 2)){ sigue = false. El (-1) se debe a que la propiedad de longitud de la variable empieza con 1 pero el primer valor del arreglo ‘ap’ se inicia en 0. Es decir que si ya no hay mas letras y el apellido tiene menos de dos letras entonces RFC obtiene un guion como valor .length-1) ){ RFC2 = ap[i].length-1) que significan mientras ‘sigue’ es igual a verdadero e ‘i’ menos o igual a la longitud del arreglo de tipo chara p-1 continuara con el procedimiento. sigue = false. que ya contiene el valor de RFC1 el valor de RFC2 y cambia el estado de la variable sigue a falso RFC = RFC + RFC2. // En caso de que no se cumpla la condición se aplica el método else }else { //Dentro de este método se aplica una condicional que dice que si ‘i’ es igual a la longitud total del arreglo ap -1 (es decir si no hay mas letras en el arreglo) y si la longitud total del arrglo ap es mayor a 2(Es decir que si el apellido tiene mas de 3 letras) entonces: sigue se hara falso y RFC2 tendra el valor de X esto es en base al manual del RFC if ((i == ap. // La variable RFC2 toma el valor contenido en ap[i] // Esta condicional compara el varlor contenido en ‘RFC2’ proveniente de ‘ap*i+’ con las vocales mayúsculas no es necesario las minúsculas porque todos los valores se convierten a mayúsculas antes de usarse en el método del boton if ((RFC2 == 'A') || (RFC2 == 'E') || (RFC2 == 'I') || (RFC2 == 'O') || (RFC2 == 'U')){ //Si la condicional resulta ser verdadera entonces se agrega a la variable RFC. RFC2 = 'X'.

length <= 2)){ sigue = false.getText(). } } i++.toCharArray(). // i se incrementa de uno en uno para ir recorriendo los valores de ap } }catch(Exception e){ // en caso de que no se haya podido capturar el valor de jTextBox porque no existe entonces se registra un mensaje que dice que debe escribir el apellido para poder ejecutar el programa JOptionPane. String RFC3. try{ //Se inicia el método try para capturar algún error en caso de que se genere al obtener el valor del jTextField2 que contendrá el apellido materno //Se captura el varlo del jTextField2 en la variable Amaterno Amaterno = jTextField2. .length-1) & (ap. //Se convierte la variable Amaterno en un arreglo de ‘char’ llamado ‘am’ char[] am = Amaterno. //Se envía el primer valor del arreglo am a la variable tipo char RFC3 para tener la primera letra el apellido materno.if ((i == ap. RFC3 = "" + am[0].showMessageDialog(null. } // Una vez obetnidos los primeros valores del rfc. RFC2 = '-'. se declaran las variables Amaterno y RFC3 String Amaterno."Debes de escribir tu apellido paterno" ). // Se agrega a la variable nombreC el valor de la variable Amaterno con su respectivo espacio para separar el contenido ya existente en la variable nombreC = nombreC + " " + Amaterno.

//Se agrega el valor de RFC3 a la variable RFC para continuar con la formacion del rfc RFC = RFC + RFC3. para que con esto se tenga el nombre completo de la persona.toCharArray(). nombreC = nombreC + " " + nombre. } // Se inicia ahora otro metodo try para campturar el valor de jTextField3 y si surge un error en la captura el programa no colapse try { //Se inicializan la variable nombre de tipo cadena que contendra el valor del jTextField3 agregando un “”(espacio) para que no genere conflicto con el tipo de variable.getText() + "". //Se convierte la variable nombre en un arreglo de char con el nombre ‘name’ char[] name = nombre. String nombre = jTextField3. // se agrega el Valor de RFC3 a la variable RFC RFC = RFC + RFC3. } //En caso de que no exista el apellido materno catch(Exception e){ //RFC toma el valor de X RFC3 = "X". //Se agrega a nombreC la variable nombre. RFC = RFC + RFC4. //Se agrega el primer valor del arreglo ‘name’ a la variable RFC4 y este a su vez se añade a la variable RFC String RFC4 = "" + name[0]. //En este caso recapitulando cuando capturarmos el valor del apellido materno en caso de no haber la variable RFC obtenia un valor de ‘-‘ en este caso si la condicional es verdadera entonces: .

year. RFC5.toCharArray(). //Finalmente se agrega este valor al RFC RFC = RFC + RFCExt. // Se declara la variable año que es un arreglo que contendra los valores de la variable year char[] año = year. } //En caso de que la catura del jTextField3 falle porque no existe }catch(Exception e){ //Se envía a pantalla el mensaje de solicitud de nombre JOptionPane.if (RFC2 == '-'){ // Se declara una variable llamada RFCExt y contendrá el segundo valor de la variable ‘name’ que es la segunda letra del nombre. //La variable ‘year’ toma el contenido de la seleccion del jComboBox2 year = String. // Se agrega al RFC los dos dígitos del año . //Donde la variable RFC5 tomara el valor 3 del arrglo de año para capturar el penúltimo numero del año y lo mismo para RFC6 que tomara el ultimo valor para tener los dos dígitos del año correspondiente a la fecha de nacimiento RFC5 = "" + año[2]. String RFCExt = "" + name[1]. RFC9y10. month.getSelectedItem())."Debes de escribir tu Nombre" ). } // Se incia un Nuevo metodo try para capturar errores al seleccionar la fecha de nacimiento try{ //Se declaran las variables String day.showMessageDialog(null. RFC6. RFC7y8.valueOf( jComboBox2. RFC6 = "" + año[3].

valueOf( jComboBox3.valueOf( jComboBox3. } if ((String. } if ((String. } if ((String.valueOf( jComboBox3.getSelectedItem() )).getSelectedItem() )). } if ((String.equals("FEBRERO")){ month = "02".getSelectedItem() )).valueOf( jComboBox3.equals("MAYO")){ month = "05". } if ((String.equals("JULIO")){ month = "07".valueOf( jComboBox3.valueOf( jComboBox3.equals("JUNIO")){ month = "06".valueOf( jComboBox3.equals("ENERO")){ month = "01".equals("MARZO")){ month = "03".getSelectedItem() )).getSelectedItem() )). // Se compara con la condicional el valor de la cadena de la variable month con la cadena del nombre del mes y se le asigna a la variable month el par de números correspondientes.getSelectedItem() )).getSelectedItem() ) .equals("ABRIL")){ month = "04". } . //Se agrega a la variable month el contenido del jComboBox3 para saber el mes month = String. } if ((String.getSelectedItem() )). if ((String.RFC= RFC + RFC5 + RFC6.valueOf( jComboBox3.

} //La variable RFC7y8 toma el valor contenido en la variable month RFC7y8 = month.equals("OCTUBRE")){ month = "10".equals("SEPTIEMBRE")){ month = "09". } if ((String.setText("").getSelectedItem() )).valueOf( jComboBox3. //Se añade al RFC la variable RFC7y8 para tener el par de numeros del mes RFC = RFC + RFC7y8. } if ((String.equals("DIA") || month.getSelectedItem() )).valueOf( jComboBox3.getSelectedItem()).valueOf( jComboBox3.valueOf( jComboBox3.equals("AGOSTO")){ month = "08".equals("MES")){ jLabel6.getSelectedItem() )).valueOf( jComboBox3. . //Se captura el varlor del dia en la variable day proveniente de jComboBox1 day = String.if ((String.equals("NOVIEMBRE")){ month = "11". } if ((String. } if ((String.equals("DICIEMBRE")){ month = "12". // si la variable day es igual a dia o month igual a mes entonces el jlabel6 se deja en blanco y se pide al usuario que seleccione su fecha de naciemiento completa if (day.getSelectedItem() )).getSelectedItem() )).valueOf( jComboBox1.

Tabla1[2][1] = "01".showMessageDialog(null.setText("").JOptionPane. Tabla1[1][0] = "0"."Debes de seleccionar tu fecha de nacimiento completa" ). Tabla1[0][0] = " ". el valor de esta tabla se obtiene del manual del RFC String[][] Tabla1 = new String[39][2]. Tabla1[2][0] = "1". } // en caso de haber algun error durante el procedimiento de captura de la fecha de nacimiento entonces }catch(Exception e){ //Se deja la etiqueta 6 en blanco y se solicita que se seleccione la fecha de nacimiento correctamente jLabel6. Tabla1[0][1] = "00". //Se añade al RFC el valor de la variable RFC9y10 RFC = RFC + RFC9y10.showMessageDialog(null."Debes de seleccionar tu fecha de nacimiento completa" ). . Tabla1[1][1] = "00". } // Calculo de digitos de la homoclave //Se crea una tabla de tipo String con dimensiones de 39 renglones y 2 columnas. //En caso contrario RFC9y10 tomara el valor de day que corresponden a dia de nacimiento }else{ RFC9y10 = day. JOptionPane.

Tabla1[15][1] = "14". Tabla1[8][1] = "07". Tabla1[6][1] = "05". Tabla1[12][0] = "A". Tabla1[13][0] = "B". Tabla1[5][0] = "4". Tabla1[11][1] = "10". Tabla1[7][1] = "06". Tabla1[5][1] = "04". Tabla1[13][1] = "12". Tabla1[7][0] = "6". . Tabla1[4][0] = "3". Tabla1[3][1] = "02". Tabla1[4][1] = "03". Tabla1[10][0] = "9". Tabla1[14][0] = "C". Tabla1[14][1] = "13". Tabla1[9][1] = "08". Tabla1[6][0] = "5".Tabla1[3][0] = "2". Tabla1[9][0] = "8". Tabla1[11][0] = "&". Tabla1[12][1] = "11". Tabla1[10][1] = "09". Tabla1[15][0] = "D". Tabla1[8][0] = "7".

Tabla1[16][0] = "E". Tabla1[20][1] = "19". Tabla1[17][0] = "F". Tabla1[16][1] = "15". Tabla1[21][1] = "21". Tabla1[27][0] = "P". Tabla1[23][1] = "23". Tabla1[24][0] = "M". Tabla1[22][1] = "22". Tabla1[25][1] = "25". Tabla1[28][0] = "Q". Tabla1[19][1] = "18". Tabla1[24][1] = "24". Tabla1[26][0] = "O". Tabla1[19][0] = "H". . Tabla1[27][1] = "27". Tabla1[26][1] = "26". Tabla1[21][0] = "J". Tabla1[18][0] = "G". Tabla1[23][0] = "L". Tabla1[17][1] = "16". Tabla1[18][1] = "17". Tabla1[25][0] = "N". Tabla1[28][1] = "28". Tabla1[22][0] = "K". Tabla1[20][0] = "I".

Tabla1[38][1] = "40".Tabla1[29][0] = "R". Tabla1[37][1] = "39". Tabla2[0][0] = "0". Tabla1[32][0] = "U". Tabla1[37][0] = "Z". Tabla1[31][0] = "T". Tabla1[33][1] = "35". Tabla1[31][1] = "33". Tabla1[36][1] = "38". Tabla1[30][0] = "S". Tabla2[1][0] = "1". . Tabla1[29][1] = "29". Tabla1[36][0] = "Y". Tabla1[35][1] = "37". Tabla2[0][1] = "1". Tabla1[30][1] = "32". Tabla1[38][0] = "Ñ". Tabla1[32][1] = "34". Tabla1[34][0] = "W". el valor de esta tabla se obtiene del manual del RFC String[][] Tabla2 = new String[34][2]. //Se crea una segunda tabla de tipo String con dimensiones de 34 renglones y 2 columnas. Tabla1[34][1] = "36". Tabla1[33][0] = "V". Tabla1[35][0] = "X".

Tabla2[12][1] = "D". Tabla2[2][0] = "2". Tabla2[6][0] = "6". Tabla2[10][1] = "B". Tabla2[7][1] = "8". Tabla2[11][1] = "C". Tabla2[5][0] = "5". Tabla2[13][1] = "E". Tabla2[9][0] = "9". Tabla2[8][0] = "8". Tabla2[4][0] = "4". Tabla2[3][1] = "4". Tabla2[11][0] = "11". Tabla2[5][1] = "6". Tabla2[3][0] = "3". Tabla2[2][1] = "3". Tabla2[10][0] = "10". Tabla2[9][1] = "A". Tabla2[13][0] = "13". Tabla2[6][1] = "7". Tabla2[12][0] = "12". Tabla2[8][1] = "9". Tabla2[4][1] = "5". Tabla2[14][0] = "14".Tabla2[1][1] = "2". . Tabla2[7][0] = "7".

Tabla2[15][0] = "15". Tabla2[26][0] = "26". Tabla2[18][1] = "J". Tabla2[23][0] = "23". Tabla2[25][0] = "25". Tabla2[19][1] = "K". Tabla2[24][1] = "Q". Tabla2[24][0] = "24". Tabla2[21][1] = "M". Tabla2[15][1] = "G". Tabla2[16][0] = "16". Tabla2[21][0] = "21". Tabla2[16][1] = "H". Tabla2[18][0] = "18". Tabla2[26][1] = "S". Tabla2[22][1] = "N". Tabla2[27][0] = "27". Tabla2[23][1] = "P". Tabla2[20][1] = "L". Tabla2[20][0] = "20". Tabla2[22][0] = "22". Tabla2[17][1] = "I".Tabla2[14][1] = "F". Tabla2[19][0] = "19". Tabla2[25][1] = "R". Tabla2[17][0] = "17". .

Tabla2[28][1] = "U". Tabla3[0][1] = "00". Tabla2[30][0] = "30". Tabla3[0][0] = "0". Tabla3[1][1] = "1". Tabla2[30][1] = "W". Tabla2[31][0] = "31".Tabla2[27][1] = "T". Tabla3[4][0] = "4". . Tabla2[29][0] = "29". //Se crea una tercera tabla de tipo String con dimensiones de 39 renglones y 2 columnas. Tabla2[31][1] = "X". Tabla2[32][1] = "Y". Tabla3[3][1] = "3". el valor de esta tabla se obtiene del manual del RFC String[][] Tabla3 = new String[39][2]. Tabla2[33][0] = "33". Tabla2[29][1] = "V". Tabla3[4][1] = "4". Tabla2[32][0] = "32". Tabla2[28][0] = "28". Tabla3[2][1] = "2". Tabla3[1][0] = "1". Tabla3[3][0] = "3". Tabla2[33][1] = "Z". Tabla3[2][0] = "2".

Tabla3[7][1] = "7". Tabla3[6][0] = "6". Tabla3[6][1] = "6". Tabla3[9][1] = "9". Tabla3[12][1] = "12". Tabla3[12][0] = "C". Tabla3[14][0] = "E". Tabla3[9][0] = "9". Tabla3[15][0] = "F". . Tabla3[13][0] = "D". Tabla3[15][1] = "15". Tabla3[5][1] = "5".Tabla3[5][0] = "5". Tabla3[7][0] = "7". Tabla3[8][1] = "8". Tabla3[16][0] = "G". Tabla3[11][1] = "11". Tabla3[16][1] = "16". Tabla3[8][0] = "8". Tabla3[10][0] = "A". Tabla3[13][1] = "13". Tabla3[10][1] = "10". Tabla3[14][1] = "14". Tabla3[17][0] = "H". Tabla3[11][0] = "B". Tabla3[17][1] = "17".

Tabla3[28][0] = "R". Tabla3[27][1] = "27". Tabla3[23][0] = "N". Tabla3[20][0] = "K". Tabla3[30][0] = "T". Tabla3[25][1] = "25". Tabla3[21][0] = "L". Tabla3[25][0] = "O". Tabla3[28][1] = "28".Tabla3[18][0] = "I". Tabla3[20][1] = "20". Tabla3[26][1] = "26". Tabla3[24][1] = "24". Tabla3[29][1] = "29". Tabla3[19][0] = "J". Tabla3[29][0] = "S". Tabla3[22][1] = "22". Tabla3[23][1] = "23". . Tabla3[21][1] = "21". Tabla3[24][0] = "&". Tabla3[27][0] = "Q". Tabla3[19][1] = "19". Tabla3[18][1] = "18". Tabla3[30][1] = "30". Tabla3[22][0] = "M". Tabla3[26][0] = "P".

char[] nombreCTabla1 = nombreC. Tabla3[36][0] = "Z". Tabla3[35][0] = "Y".toCharArray(). Tabla3[37][0] = " ". // CONVIRTIENDO EL NOMBRE A NUMEROS SEGUN LA TABLA 1 DEL MANUAL DEL RFC PARA DIGITOS DE HOMONOMIA //Se crea una variable llamada conv1 de primera conversión y se inicializa en 0. Tabla3[37][1] = "37". //Se convierte la variable nombreC que ahora contiene el nombre completo de la persona en un arreglo de tipo char llamado nombreCTabla1. int f = 0. Tabla3[36][1] = "36". Tabla3[32][0] = "V".Tabla3[31][0] = "U". Tabla3[33][1] = "33". Tabla3[33][0] = "W". Tabla3[32][1] = "32". Tabla3[35][1] = "35". . Tabla3[38][1] = "38". Tabla3[34][0] = "X". Tabla3[34][1] = "34". String conv1 = "0". Tabla3[38][0] = "Ñ". //Se inicializan las variables ‘i’ y ‘f’ en 0 para fila y columna int i = 0. Tabla3[31][1] = "31".

} //En caso de que no sea igual la letra a la letra en el nombreCTabla1 en la posición indicada entonces f se incrementa en uno para compararla con la letra de otro renglón según la tabla1 f = f + 1. f = 0. //Se compara que la letra obtenida de la tabla sea igual a la letra contenida en la posición del arreglo nombreCTabla1.//Mientras i sea menor que la longitud de del arreglo nombreCTabla1 y f sea menor que 39 entonces continuara con el procedimiento. convertiremos el contenido de Tabla en una posición específica a un arreglo de char. . denotando que la posición 0 hace referencia a la comuna uno del renglón y 1 a la columna dos del renglón de cada tabla char[] letra = Tabla1[f][0].toCharArray(). conforme se repita el proceso. //ahora mientras sigue sea verdadera while(sigue == true ){ //Dado que la tabla tiene un valor de tipo String y que requerimos solo comparar una letra.length) && (f < 39) ){ //f será igual a cero y la variable sigue será igual a true. //Una vez agregado el valor correspondiente a esta letra la variable sigue se hace falsa sigue = false. boolean sigue = true. se irán agregando los valores y no se sustituirán conv1 = conv1 + Tabla1[f][1]. Esto significa que el procedimiento se hará mientras i no sea mayor al número de caracteres en el nombre y que f sea menor a la cantidad de renglones con carácter en la tabla 1entonces while( ( i < nombreCTabla1. si la letra resulta ser la misma entonces if(letra[0] == nombreCTabla1[i]){ //conv1 será igual al contenido de la tabla1 en la misma posición del renglón en que la letra es igual pero en la comuna dos para conseguir el número al que es equivalente cada letra.

} //realizando sumas en pares //Una vez tengamos la conversión completa esta se almacenara en un arreglo de tipo char llamado par.length-1){ // Se declara las variables uno y dos. //inicializamos la variable i en cero y declaramos la variable suma inicializándola en cero int suma = 0. i = 0. . char[] par = conv1. JOptionPane. (75 = 7 + 5) para formar un numero de dos digitos uno = uno + par[i+1]. donde uno es igual a la variable par en ‘i’ es decir que uno tomara el numero contenido en par en la posicion i String uno = "" + par[i].toCharArray().showMessageDialog(null. } } //Mientras nombreCTabla1 uno no sea convertido por completo la variable ‘i’ se incrementara en uno hasta terminar la conversión i = i+1."Existen caracteres no permitidos en tu nombre" ). Uno sera igual al numero añadido antes y se le concatenara el numero contenido en la siguiente posicion de par.// Si este proceso se relaiza mas de 38 veces y ninguna letra es igual a la especificada en la variable nombreCTabla1 entonces if(f > 38){ //La variable ‘sigue’ se hace falsa y se indica que existen caracteres no permitidos en el nombre provenientes de acentos o caracteres especiales sigue = false. //Ahora mientras ’i ’ sea menor que la longitude de la variable par – 1 que contiene la conversión completa del nombre se ejecutara lo siguiente while(i < par.

esto según el manual del RFC. } //obteniendo residuo //Para esto convertimos la variable dividendo en un tipo entero.parseInt(dos). //Finalmente suma sera igual a al valor de suma que originalmente es cero mas el valor de la variable uno convertido a entero por el valor de dos convertido en entero para poder realizar operaciones matematicas suma = suma + Integer. . 56178 = 178) for(i = SufijoSuma. i <= SufijoSuma. este número se dividirá entre 34. Esto lo hice con un ciclo for inicializando i en la longitud de la variable SufijoSuma – 3.//Dos sera igual al segundo digito de uno o par en la posicion (i + 1) String dos = par[i+1] + "". // Para seguir con el procedimiento hasta convertir todo el nombre en una suma numérica se incrementa i de uno en uno. Se declara una variable llamada dividend y se inicializa en un espacio vacio.length-3. } // Una vez que se tiene la suma del nombre se crea una variable de tipo char llamada SufijoSuma que tendra como valor la suma antes realizada para esto convertimos suma de tipo entero a un String char[] SufijoSuma = String. i++){ dividendo = dividendo + SufijoSuma[i]. este número está indicado en el manual del RFC. y el residuo obtenido por el operador % se almacenara en la variable residuo. después se señala que el ciclo se repetirá hasta llegar al último valor de longitud de SufijoSuma y que los valores se irán concatenando de uno en uno.toCharArray().parseInt(uno) * Integer. (Ej.valueOf(suma). String dividendo = "".length-1. Este procedimiento esta deacuerdo con el manual del RFC i++. La variable residuo se declara como entero para eliminar los decimales int residuo = Integer.parseInt(dividendo) % 34. //En la variable dividendo se añaden los últimos tres valores del arreglo de SufijoSuma para obtener un numero de tres dígitos.

//La variable ‘t’ se incrementa para indicar que el digito ya se encontró t = t + 1.parseInt(dividendo) / 34.valueOf(cociente)) ){ //El valor de digitoHomo1 sera igual al valor de la tabla 2 en la posicion (f. para obtener el cociente. int cociente = Integer. digitoHomo2 = "". } //El procedimiento anterior se realiza con el residuo para obtener el digitoHomo2 if(Tabla2[f][0]. la variable cociente deber declararse como entero para eliminar los decimales. boolean sigue = true. // Obteniendo primeros dos dígitos de la homonimia //Declaramos e inicializamos las siguientes variables String digitoHomo1 = "".equals(String. int t = 0.valueOf(residuo)) ){ digitoHomo2 = Tabla2[f][1].1) correspondiente a la conversion que ofrece la tabla 2 del manual del RFC siendo este un numero o una letra digitoHomo1 = Tabla2[f][1]. f = 0. // Utilizamos un ciclo while con la condición de que se ejecute mientras sigue sea igual a verdadero while(sigue == true ){ // Ahora si la tabla 2 contiene en la posicion (f.//obteniendo cociente //De la misma forma que lo anterior convertimos la variable dividendo en entero y luego realizamos una división normal entre 34. //La variable ‘t’ se incrementa para indicar que el digito ya se encontró .equals(String.0) el numero igual al cociente obtenido anteriormente entonces if(Tabla2[f][0].

f = 0.toCharArray(). //Se declaran las variables i y f. inicializándolas en 0 i = 0. } } //Ahora se agrega al RFC los dos dígitos nuevos de homonimia encontrados RFC = RFC + digitoHomo1 + digitoHomo2. // Se utiliza un ciclo while para convertir ahora el RFC en valores numericos para esto mientras i sea menor que 12 indicando los 12 digitos del RFC hasta el momento y que f sea menor a 39 indicando el maximo numero de caracteries para la conversion entonces while( ( i < 12) && (f < 39) ){ . // Se convierte el ‘RFC’ en un arreglo de tipo char llamado ‘rfc’ char[] rfc = RFC. } //Para realizar este proceso hasta dar con la letra en cuestión se incrementa la variable t de uno en uno f = f + 1. // Si el procedimiento se realiza mas de 33 veces o t es igual a dos entonces se detiene el ciclo while al pasar la variable sigue a false if((f > 33) || (t == 2)){ sigue = false.t = t + 1. // Calculo del digito verificador // CONVIRTIENDO EL RFC de 12 posiciones A NUMEROS SEGUN LA TABLA 3 DEL MANUAL DEL RFC PARA DIGITO VERIFICADOR //Se declara la variable conv2 de tipo arreglo entero de 12 posiciones int[] conv2 = new int[12].

//ahora mientras sigue sea verdadero while(sigue == true ){ //El valor de la tabla 3 según el manual del RFC en la posición (f. //Si letra es igual al valor de rfc en i entonces if(letra[0] == rfc[i]){ conv2 en I será igual al valor numérica de la tabla 3 en la posición (f. sigue = false.//Se inicializan las variables f y sigue f = 0. sigue = true. i = i+1. //Utilizando un ciclo for aplicamos la ecuacion propuesta en el manual del RFC .parseInt(Tabla3[f][1]).0) se convierte en un arreglo de tipo char llamdo letra para poder compararlo. } //La variable suma se inicializa en 0 y f en 13 suma = 0. } //Para convertir todas las letras del rfc en numeros segun la tabla 3 del manual del RFC ‘i’ se incrementa en 1. f = f + 1. char[] letra = Tabla3[f][0]. } //Para poder comparar cada valor del rfc con el de la tabla 3 se incrementa ‘f’ para ir avanzando por la table.toCharArray().1) correspondiente a la letra encontrada en el rfc y terminando el ciclo haciendo la variable sigue falsa conv2[i] = Integer. f = 13.

Ej. //Este digito cuenta con las siguientes reglas : Si residuo es igual a 1 entonces el digito sera = A if (residuo == 1){ verificador = "A". este numero es dado por el manual del RFC residuo = suma % 11. //Y para cualquier otro caso diferente se le resta el residuo al numero 11 }else{ verificador = String. (suma = 65 + 3*12)….valueOf(11-residuo). //f se ira decrementando según la formula propuesta. f--..length.for(i = 0. // Aplicando formato al RFC //Declaramos una variable llamada RFCcon Formato y se inicializa vacia . i++ ){ // Ej. Suma = 0 + 5*13 suma = suma + conv2[i] * f. // Declaramos una variable llamada verificador String verificador. } //Este finalmente el digito verificador se agrega al RFC completando toda la secuencia y asi obteniendo el RFC RFC = RFC + verificador. } Si el residuo es igual a cero entonces el digito verificador sera igual a cero else if(residuo == 0){ verificador = "0". i < rfc. } //ahora se obtiene el residuo de la sumatoria entre 11.

i++){ //Se agregan los digitos de RFC a RFCconFormato RFCconFormato = RFCconFormato + FormatoRFC[i].toUpperCase()). i < 13. .valueOf(RFC). //Utilizando un ciclo for colocaremos guiones en el RFC para que se separe el nombre.String RFCconFormato = "". jTextField1.awt. de la fecha de nacimiento y finalmente de los dígitos de homonomia for(i = 0. //Se convierte en un arreglo de tipo char el Nuevo valor del RFC char[] FormatoRFC = String.getText(). //Cuando llegue a las posiciones 4 y 10 if(i == 3 || i == 9){ //A RFCconFormato se le agrega un guion medio para completar el formato RFCconFormato = RFCconFormato + "-".toCharArray(). } // El mismo código anterior se incluye en los demás jTextField para obtener el mismo efecto en todos los datos agregados por el usuario.setText(jTextField1. } //Fin del método de acción de botón //Se abre en el jTextField1 el metodo perder foco es decir cuando se selecciona otro objeto entonces… private void jTextField1FocusLost(java.FocusEvent evt) { //Dentro de este método incluimos este código que convierte cualquier texto escrito en el jTextField1 en mayúsculas y si ya está en mayúsculas no realiza ninguna acción. } } Finalmente se imprime en la etiqueta 6 (jLabel6) el valor del RFCconFormato para que el usuario lo vea jLabel6.event. para no tener conflictos con el código realizado anteriormente.setText(RFCconFormato).

espero les haya sido de ayuda.FocusEvent evt) { jTextField3.setText(jTextField2.awt.getText().setText(jTextField3.event. se que a lo largo de esta programación se encontrara con errores inesperados y situaciones a las que cada uno de ustedes tendrá que investigar y superar ya que la programación no siempre se presenta igual para todos. here: } Ejemplo del programa que acabamos de elaborar: // TODO add your handling code // TODO add your handling code Conclusión Así es como terminamos nuestra actividad del día de hoy. pero sin duda alguna saldrán un gran número de errores que ustedes deberían ir identificando y resolviendo poco a poco como parte de la formación.FocusEvent evt) { jTextField2.toUpperCase()).toUpperCase()).awt. Como ayuda a su problema fuera de mi código encontré un error al enviar mensajes en pantalla al usuario de forma gráfica por lo cual si llegan a tener .event. here: } private void jTextField3FocusLost(java.private void jTextField2FocusLost(java.getText().

com.JOptionPane. esto soluciono mi problema espero les sea de ayuda. Luis Andrés. Esta línea ira al final de todas sus paqueterías de java que incluye netbeans por defecto.algún error en el código o la ejecución de estos mensajes verifiquen que tengan la siguiente librería activa es decir que forme parte de sus librerías al incio del programa import javax. Cualquier duda por favor enviar un correo a angel_death_kyo@hotmail. Elaborado por: Ramírez Franco. 07/05/11 .swing. si ya la tienen y no funciona escríbanla manualmente y eliminen la línea existente. este programa fue desarrollado con fines educativos así que puede ser mejorado y no incluye todas las reglas incluidas en el manual del RFC.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->