diff --git a/carpeta_temporal/script_base_datos/lania_cc.sql b/carpeta_temporal/script_base_datos/lania_cc.sql
index a0d24a0..bc0dee3 100644
--- a/carpeta_temporal/script_base_datos/lania_cc.sql
+++ b/carpeta_temporal/script_base_datos/lania_cc.sql
@@ -173,4 +173,11 @@ INSERT INTO examen (id_examen, nombre_examen) VALUES
 (15, 'Otros');
 
 -- Depues de importar la bd de inegi
-insert into paises(nombre) values('Otro');
\ No newline at end of file
+insert into paises(nombre) values('Otro');
+
+-- Insercion de un candidato de prueba:
+INSERT INTO candidato (nombres, primer_apellido, segundo_apellido, correo, telefono, id_examen, id_tipo_id, id_rango_edad, id_genero) VALUES
+('Juan', 'Pérez', 'Gómez', 'correo@gmail.com', '1234567890', 1, 1, 2, 1);
+
+INSERT INTO info_candidatos (id_candidato, id_pais, id_estado, id_municipio, id_colonia, id_nivel, id_giro, nombre_empresa_institucion, motivo_examen, calificacion_servicio, consentimiento_pub) VALUES
+(1, 1, 1, 1001, 10011, 5, 1, 'Empresa de Prueba', 'Motivo de prueba', 5, 1);
\ No newline at end of file
diff --git a/controllers/CandidatoController.php b/controllers/CandidatoController.php
new file mode 100644
index 0000000..8e004a7
--- /dev/null
+++ b/controllers/CandidatoController.php
@@ -0,0 +1,72 @@
+<?php
+
+require_once __DIR__ . '/../models/Candidato.php';
+
+class CandidatoController {
+    private static $candidatoModel = null;
+
+    public static function inicializar() {
+        if (self::$candidatoModel === null) {
+            self::$candidatoModel = new Candidato();
+        }
+    }
+
+    public static function regitrarCandidato() {
+
+        $nombres = $_POST['nombres'];
+        $primer_apellido = $_POST['primer_apellido'];
+        $segundo_apellido = $_POST['segundo_apellido'];
+        $correo = $_POST['correo'];
+        $telefono = $_POST['telefono'];
+        $id_examen = $_POST['id_examen'];
+        $id_tipo_id = $_POST['id_tipo_id'];
+        $id_rango_edad = $_POST['id_rango_edad'];
+        $id_genero = $_POST['id_genero'];
+        
+        self::$candidatoModel->registrarCandidato(
+            $nombres,
+            $primer_apellido,
+            $segundo_apellido,
+            $correo,
+            $telefono,
+            $id_examen,
+            $id_tipo_id,
+            $id_rango_edad,
+            $id_genero
+        );
+    }
+
+
+    public static function registrarInfoCandidato() {
+        $id_candidato = $_POST['id_candidato'];
+        $id_pais = $_POST['id_pais'];
+        $id_estado = $_POST['id_estado'];
+        $id_municipio = $_POST['id_municipio'];
+        $id_colonia = $_POST['id_colonia'];
+        $id_nivel = $_POST['id_nivel'];
+        $id_giro = $_POST['id_giro'];
+        $nombre_empresa_institucion = $_POST['nombre_empresa_institucion'];
+        $motivo_examen = $_POST['motivo_examen'];
+        $calificacion_servicio = $_POST['calificacion_servicio'];
+        $consentimiento_pub = $_POST['consentimiento_pub'];
+    
+        self::$candidatoModel->registrarInfoCandidatos(
+            $id_candidato,
+            $id_pais,
+            $id_estado,
+            $id_municipio,
+            $id_colonia,
+            $id_nivel,
+            $id_giro,
+            $nombre_empresa_institucion,
+            $motivo_examen,
+            $calificacion_servicio,
+            $consentimiento_pub
+        );
+    }
+}
+
+// Instanciar el modelo al cargar el controlador
+CandidatoController::inicializar();
+
+?>
\ No newline at end of file
diff --git a/controllers/registrarCandidato.php b/controllers/registrarCandidato.php
new file mode 100644
index 0000000..245fe4d
--- /dev/null
+++ b/controllers/registrarCandidato.php
@@ -0,0 +1,13 @@
+<?php
+require_once __DIR__ . '/CandidatoController.php';
+
+// Manejar la solicitud POST para registrar un candidato
+if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+    // Llamar al controlador de candidatos para registrar un nuevo candidato
+    CandidadatoController::registrarCandidato();
+
+    // Redirigir a la página de inicio después de registrar el candidato
+    header('Location: inicio.html');
+}
+
+?>
\ No newline at end of file
diff --git a/controllers/registrarInfoCandidato.php b/controllers/registrarInfoCandidato.php
new file mode 100644
index 0000000..08cb9c3
--- /dev/null
+++ b/controllers/registrarInfoCandidato.php
@@ -0,0 +1,14 @@
+<?php
+
+require_once __DIR__ . '/CandidatoController.php';
+
+// Manejar la solicitud POST para registrar información de un candidato
+if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+    // Llamar al controlador de candidatos para registrar un nuevo candidato
+    CandidadatoController::registrarInfoCandidato();
+
+    // Redirigir a la página de inicio después de registrar el candidato
+    header('Location: inicio.html');
+}
+
+?>
\ No newline at end of file
diff --git a/models/Candidato.php b/models/Candidato.php
index 6292641..b468d5f 100644
--- a/models/Candidato.php
+++ b/models/Candidato.php
@@ -24,7 +24,7 @@ class Candidato {
      * @param int $calificacion_servicio Calificación del servicio.
      * @param int $consentimiento_pub Consentimiento para la publicación de datos.
      */
-    public function insertarInfoCandidatos(
+    public function registrarInfoCandidatos(
         $id_candidato,
         $id_pais,
         $id_estado,
@@ -65,7 +65,74 @@ class Candidato {
         $stmt->close();
     }
 
+    public function registrarCandidato(
+        $nombres,
+        $primer_apellido,
+        $segundo_apellido,
+        $correo,
+        $telefono,
+        $id_examen,
+        $id_tipo_id,
+        $id_rango_edad,
+        $id_genero
+    ) {
+        $sql = "INSERT INTO candidato (nombres, primer_apellido, segundo_apellido, correo, telefono, id_examen, id_tipo_id, id_rango_edad, id_genero) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
+        $stmt = $this->conn->prepare($sql);
+        if ($stmt === false) {
+            throw new Exception("Error en la preparación de la consulta: " . $this->conn->error);
+        }
+        $stmt->bind_param(
+            "sssssiiii",
+            $nombres,
+            $primer_apellido,
+            $segundo_apellido,
+            $correo,
+            $telefono,
+            $id_examen,
+            $id_tipo_id,
+            $id_rango_edad,
+            $id_genero
+        );
+        if (!$stmt->execute()) {
+            throw new Exception("Error al insertar candidato: " . $stmt->error);
+        }
+        //$insertId = $stmt->insert_id;
+        $stmt->close();
+        //return $insertId;
+    }
+
+    public function obtenerCandidatoPorId($id_candidato) {
+        $sql = "SELECT * FROM candidato WHERE id_candidato = ?";
+        $stmt = $this->conn->prepare($sql);
+        if ($stmt === false) {
+            throw new Exception("Error en la preparación de la consulta: " . $this->conn->error);
+        }
+        $stmt->bind_param("i", $id_candidato);
+        if (!$stmt->execute()) {
+            throw new Exception("Error al ejecutar la consulta: " . $stmt->error);
+        }
+        $result = $stmt->get_result();
+        $candidato = $result->fetch_assoc();
+        $stmt->close();
+        return $candidato;
+    }
+
+    public function obtenerInfoCandidatoPorId($id_candidato) {
+        $sql = "SELECT * FROM info_candidatos WHERE id_candidato = ?";
+        $stmt = $this->conn->prepare($sql);
+        if ($stmt === false) {
+            throw new Exception("Error en la preparación de la consulta: " . $this->conn->error);
+        }
+        $stmt->bind_param("i", $id_candidato);
+        if (!$stmt->execute()) {
+            throw new Exception("Error al ejecutar la consulta: " . $stmt->error);
+        }
+        $result = $stmt->get_result();
+        $info = $result->fetch_assoc();
+        $stmt->close();
+        return $info;
+    }
+
 }
 
-
 ?>
\ No newline at end of file
diff --git a/models/Catalogos.php b/models/Catalogos.php
index cb29367..c33f2ff 100644
--- a/models/Catalogos.php
+++ b/models/Catalogos.php
@@ -93,6 +93,34 @@ class Catalogos{
         return $paises;
     }
 
+    public function obtenerInfoCodigoPostal($codigoPostal) {
+        $sql = "
+            SELECT 
+                e.nombre    AS id_estado,
+                m.nombre    AS id_municipio,
+                c.nombre    AS id_colonia
+            FROM colonias c
+            JOIN municipios m ON c.municipio = m.id
+            JOIN estados   e ON m.estado   = e.id
+            WHERE c.codigo_postal = ?
+        ";
+        $stmt = $this->conn->prepare($sql);
+        if ($stmt === false) {
+            throw new Exception("Error en la preparación de la consulta: " . $this->conn->error);
+        }
+        $stmt->bind_param("i", $codigoPostal);
+        if (!$stmt->execute()) {
+            throw new Exception("Error al ejecutar la consulta CP: " . $stmt->error);
+        }
+        $result = $stmt->get_result();
+        $info = [];
+        while ($row = $result->fetch_assoc()) {
+            $info[] = $row;
+        }
+        $stmt->close();
+        return $info;
+    }
+
 }
 
 ?>
\ No newline at end of file
diff --git a/test.php b/test.php
new file mode 100644
index 0000000..2514088
--- /dev/null
+++ b/test.php
@@ -0,0 +1,14 @@
+<?php
+
+//require_once __DIR__ . "/controllers/usuarioController.php";
+
+// UsuarioController::registrarUsuario("root", "root");
+
+
+require_once __DIR__ . '/models/Catalogos.php';
+$catalogoModel = new Catalogos();
+$array = $catalogoModel->obtenerGeneros();
+
+// Pintar arraycompleto en bruto de la variable $arrayInfoCodigoPostal
+print_r($array);
+?>
\ No newline at end of file
diff --git a/testRegistroUsuario.php b/testRegistroUsuario.php
deleted file mode 100644
index b10fde9..0000000
--- a/testRegistroUsuario.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-require_once __DIR__ . "/controllers/usuarioController.php";
-
-// UsuarioController::registrarUsuario("root", "root");
-
-?>
\ No newline at end of file