Autor Tema: Creación de CURP en Java Clave Unica de Registro de Población CURP México  (Leído 30660 veces)

MegumiLawliet

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Estoy trabajndo con un codigo que al ejecutarse genere el CURP compuesto correcatamente.

http://www.condusef.gob.mx/index.php/clave­unica­de­registro­de­poblacion

Aún me hace falta:

1.- Sexo:​Concatenar la letra “M” cuando el usuario ingrese “Mujer” o “Femenino”; “H” para “Hombre” o “Masculino”. TIP: recuerda usar la función toLowerCase()​de String para
poder comparar la cadena en letras minúsculas.

2. Entidad Federativa​: Para esta ocasión, únicamente ingresa la clave del estado que
corresponde de acuerdo a la tabla de equivalencias descrita en las diapositivas.
Ej:
Estado: Guanajuato
Clave: GT

3. Consonantes internas​: Concatenar la 1er consonante interna del apellido paterno, 1er
consonante interna del apellido materno, 1a consonante interna del nombre. TIP: Utiliza
la función esVocal().

4. Homoclave​: Concatena el caracter alfabético que desees.

5. Dígito Verificador​: Investiga cómo generar un número aleatorio entre 0 ­ 9 y
concatenalo al final.



Mi codigo:


Código: [Seleccionar]
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package curp;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.Scanner;


/**
 *
 * @author sjm
 */
public class Curp {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       
        /*Declaracion de variables*/
        String nombre;
        String aPaterno;
        String aMaterno;
        Date fechaNac;
        String lugarNacimiento;
        String sexo;
        String curp = new String();
       
        /*Ingreso de datos del usuario*/
        System.out.println("Escribe el nombre:");
        Scanner sc = new Scanner(System.in);
        nombre = sc.nextLine();
       
        System.out.println("Escribe el apellido paterno:");
        aPaterno = sc.nextLine();

        System.out.println("Escribe el apellido materno:");
        aMaterno = sc.nextLine();
       
        System.out.println("Escribe fecha de nacimiento (Formato yyyy/mm/dd):");
        try {
            fechaNac = new SimpleDateFormat("yyyy/MM/dd").parse(sc.nextLine()); //Convierte la fecha de tipo String a tipo Date con el formato indicado
            LocalDate fechaTemporal = fechaNac.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); //Convierte fecha Date a LocalDate para poder obtener dia, mes, año por separado
            int anio = fechaTemporal.getYear(); //Obtiene el año como numero entero
            int mes = fechaTemporal.getMonthValue(); //Obtiene el mes como numero entero
            int dia = fechaTemporal.getDayOfMonth(); //Obtiene el dia como numero entero
           
            System.out.println("Escribe lugar de nacimiento:");
            lugarNacimiento = sc.nextLine();

            System.out.println("Escribe el sexo:");
            sexo = sc.nextLine();

            /* Comienza genereacion de CURP*/
            curp += aPaterno.charAt(0);

            for(int i=1; i <= aPaterno.length()-1; i++){ //Recorre cada caracter del apellido paterno
                /*System.out.println("El caracter " + aPaterno.charAt(i) + " es vocal?" + esVocal(aPaterno.toLowerCase().charAt(i)));*/
                if(esVocal(aPaterno.charAt(i))){ //Si el caracter es vocal
                    curp+=aPaterno.charAt(i);    //Concatena el valor a curp
                    break;                       //Sale del ciclo
                }
            }

            curp += aMaterno.charAt(0);
            curp += nombre.charAt(0);
            curp += String.valueOf(anio).substring(2);// La función substring regresa los caracteres del string a partir de la posición indicada como paŕametro
            curp += mes <10? "0"+String.valueOf(mes):String.valueOf(mes); //Operador ternario: variable = condición ? valor1 : valor2;
                                                                         //El simbolo "?" funciona como if y ":" (dospuntos) funciona como else
                                                                         //Si el valor de mes es menor a 9, agrega un cero a la izquierda, si no, solo usa el valor del mes
            curp += String.valueOf(dia);
 
           
            System.out.println("CURP = " + curp);
       
            } catch (ParseException ex) { //Cuando ocurre una excepcion ParseException,
            System.out.println("Ocurio un error al convertir la fecha: " + ex.getMessage());
        }
       
    }
   
    public static boolean esVocal(char c){
        if(c=='a' || c=='e' || c=='i' || c=='o' || c =='u'){
            return true;
        }else{
            return false;
        }
    }
   
   
   
}
« Última modificación: 10 de Marzo 2016, 19:21 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola MegumiLawliet

Para pegar código en los foros revisa el hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 y sigue lo que ahí se explica es la mejor forma para darle formato adecuado al código

El enlace que has puesto parece que no funciona, al menos a mí no me carga ninguna página

Si estás formándote en java te recomiendo el curso java desde cero: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

He encontrado este código para generar el curp no sé si te puede servir

Código: [Seleccionar]
package curp;

import org.apache.commons.lang.StringUtils;

import javax.swing.*;
import java.util.Arrays;
import java.util.Random;

public class CurpGenerator
{
// ------------------------------ FIELDS ------------------------------

    public static final String[] MESES =
        {"Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dec"};

    public static final String[] MESES_VALOR = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"};

    public static String[] ENTIDAD_FEDERATIVA = {"AGUASCALIENTES",
                                                 "BAJA CALIFORNIA NTE.",
                                                 "BAJA CALIFORNIA SUR",
                                                 "CAMPECHE",
                                                 "COAHUILA",
                                                 "COLIMA",
                                                 "CHIAPAS",
                                                 "CHIHUAHUA",
                                                 "DISTRITO FEDERAL",
                                                 "DURANGO",
                                                 "GUANAJUATO",
                                                 "GUERRERO",
                                                 "HIDALGO",
                                                 "JALISCO",
                                                 "MEXICO",
                                                 "MICHOACAN",
                                                 "MORELOS",
                                                 "NAYARIT",
                                                 "NUEVO LEON",
                                                 "OAXACA",
                                                 "PUEBLA",
                                                 "QUERETARO",
                                                 "QUINTANA ROO",
                                                 "SAN LUIS POTOSI",
                                                 "SINALOA",
                                                 "SONORA",
                                                 "TABASCO",
                                                 "TAMAULIPAS",
                                                 "TLAXCALA",
                                                 "VERACRUZ",
                                                 "YUCATAN",
                                                 "ZACATECAS",
                                                 "SERV. EXTERIOR MEXICANO",
                                                 "NACIDO EN EL EXTRANJERO"};

    public static String[] ENTIDAD_FEDERATIVA_VALOR = {"AS",
                                                       "BC",
                                                       "BS",
                                                       "CC",
                                                       "CL",
                                                       "CM",
                                                       "CS",
                                                       "CH",
                                                       "DF",
                                                       "DG",
                                                       "GT",
                                                       "GR",
                                                       "HG",
                                                       "JC",
                                                       "MC",
                                                       "MN",
                                                       "MS",
                                                       "NT",
                                                       "NL",
                                                       "OC",
                                                       "PL",
                                                       "QT",
                                                       "QR",
                                                       "SP",
                                                       "SL",
                                                       "SR",
                                                       "TC",
                                                       "TS",
                                                       "TL",
                                                       "VZ",
                                                       "YN",
                                                       "ZS",
                                                       "SM",
                                                       "NE"};


    private static char[] VOCALS = {'A', 'E', 'I', 'O', 'U'};

    private static Random random = new Random();

// -------------------------- STATIC METHODS --------------------------

    public static String generar( String primerApellido, String segundoApellido, String nombres, String sexo,
                                  String fechaDeNacimiento, String entidadDeNacimiento )
        throws Exception
    {
        // limpiar los datos
        primerApellido = trim( primerApellido );
        segundoApellido = trim( segundoApellido );
        nombres = trim( nombres );
        sexo = trim( sexo );
        entidadDeNacimiento = trim( entidadDeNacimiento );

        // validar que los datos estan correctors
        String error =
            validarDatos( primerApellido, segundoApellido, nombres, sexo, fechaDeNacimiento, entidadDeNacimiento );
        if ( error != null )
        {
            throw new Exception( error );
        }

        // generar Curp
        StringBuilder curp = new StringBuilder();
        curp.append( primerApellido.charAt( 0 ) );
        curp.append( primeraVocal( primerApellido.substring( 1 ) ) );
        curp.append( segundoApellido.charAt( 0 ) );
        curp.append( nombres.charAt( 0 ) );
        curp.append( fechaDeNacimiento.substring( 8, 10 ) );
        curp.append( fechaDeNacimiento.substring( 0, 2 ) );
        curp.append( fechaDeNacimiento.substring( 3, 5 ) );
        curp.append( sexo );
        curp.append( entidadDeNacimiento );
        curp.append( primeraLetra( primerApellido.substring( 1 ) ) );
        curp.append( primeraLetra( segundoApellido.substring( 1 ) ) );
        curp.append( primeraLetra( nombres.substring( 1 ) ) );
        curp.append( 0 );
        curp.append( random.nextInt( 10 ) );
        return curp.toString();
    }

    public static String trim( String s )
    {
        return StringUtils.trimToEmpty( s ).toUpperCase();
    }

    private static char primeraLetra( String s )
    {
        int i = StringUtils.indexOfAnyBut( s, VOCALS );
        if ( i >= 0 )
        {
            return s.charAt( i );
        }
        return 'X';
    }

    private static char primeraVocal( String s )
    {
        int i = StringUtils.indexOfAny( s, VOCALS );
        if ( i >= 0 )
        {
            return s.charAt( i );
        }
        return 'X';
    }

    private static String validarDatos( String primerApellido, String segundoApellido, String nombres, String sexo,
                                        String fechaDeNacimiento, String entidadDeNacimiento )
    {
        if ( "".equals( primerApellido ) )
        {
            return "Primer apellido es obligatorio";
        }
        if ( !StringUtils.isAlpha( primerApellido ) )
        {
            return "Primer apellido no valido, caracteres validos: A-Z (incluso Ñ)";
        }

        if ( "".equals( segundoApellido ) )
        {
            return "Segundo apellido es obligatorio";
        }
        if ( !StringUtils.isAlpha( segundoApellido ) )
        {
            return "Segundo apellido no valido, caracteres validos: A-Z (incluso Ñ)";
        }

        if ( "".equals( nombres ) )
        {
            return "Nombre(s) es obligatorio";
        }
        if ( !StringUtils.isAlphaSpace( nombres ) )
        {
            return "Nombre(s) no valido, caracteres validos: A-Z (incluso Ñ)";
        }

        if ( !"H".equals( sexo ) && !"M".equals( sexo ) )
        {
            return "Sexo no valido";
        }

        if ( "".equals( fechaDeNacimiento ) )
        {
            return "Fecha de nacimiento no valido";
        }

        if ( "".equals( entidadDeNacimiento ) )
        {
            return "Entidad de nacimiento es obligatorio";
        }
        if ( !Arrays.asList( ENTIDAD_FEDERATIVA_VALOR ).contains( entidadDeNacimiento ) )
        {
            return "Entidad de nacimiento necesita ser la abreciacion";
        }

        return null;
    }
}

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".