diff --git a/.checkstyle b/.checkstyle
new file mode 100644
index 0000000000000000000000000000000000000000..5783bc0d77a132dce01d27916abf9a192dd4ee08
--- /dev/null
+++ b/.checkstyle
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <fileset name="all" enabled="true" check-config-name="Google Checks" local="false">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..51a8bbad89682d379e0aadb7bd54d22de601a62f
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.project b/.project
new file mode 100644
index 0000000000000000000000000000000000000000..f55b3830f59e7de959f4fe57002e63909155383c
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>swingDemo</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..3a21537071bf4118b9e1ee864cb4bc258aa48211
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/bin/excepciones/UsuarioNoExisteException.class b/bin/excepciones/UsuarioNoExisteException.class
new file mode 100644
index 0000000000000000000000000000000000000000..b21d317568f7adf393fdb93e0bf3de19f6d1f7e2
Binary files /dev/null and b/bin/excepciones/UsuarioNoExisteException.class differ
diff --git a/bin/excepciones/UsuarioRepetidoException.class b/bin/excepciones/UsuarioRepetidoException.class
new file mode 100644
index 0000000000000000000000000000000000000000..09e8ff121cf8c1867af82e29cdd9689f2766b109
Binary files /dev/null and b/bin/excepciones/UsuarioRepetidoException.class differ
diff --git a/bin/logica/ControladorUsuario.class b/bin/logica/ControladorUsuario.class
new file mode 100644
index 0000000000000000000000000000000000000000..9d931845fe46779b820c3fc4f5b6fe3cb37843f2
Binary files /dev/null and b/bin/logica/ControladorUsuario.class differ
diff --git a/bin/logica/DataUsuario.class b/bin/logica/DataUsuario.class
new file mode 100644
index 0000000000000000000000000000000000000000..1edee88d04843638a66c4f4c1158453fcdd70fd6
Binary files /dev/null and b/bin/logica/DataUsuario.class differ
diff --git a/bin/logica/Fabrica.class b/bin/logica/Fabrica.class
new file mode 100644
index 0000000000000000000000000000000000000000..f03ef7c2660ad481b52af7a1353b5bc9da44fa10
Binary files /dev/null and b/bin/logica/Fabrica.class differ
diff --git a/bin/logica/IControladorUsuario.class b/bin/logica/IControladorUsuario.class
new file mode 100644
index 0000000000000000000000000000000000000000..94beba85207a459a09d9ca7376ed209fe992a705
Binary files /dev/null and b/bin/logica/IControladorUsuario.class differ
diff --git a/bin/logica/ManejadorUsuario.class b/bin/logica/ManejadorUsuario.class
new file mode 100644
index 0000000000000000000000000000000000000000..8b04b215f1604fdb03fcb253d3f726041db99aad
Binary files /dev/null and b/bin/logica/ManejadorUsuario.class differ
diff --git a/bin/logica/Usuario.class b/bin/logica/Usuario.class
new file mode 100644
index 0000000000000000000000000000000000000000..e7dfde5820d507fdb11dc58b40f65bed84358462
Binary files /dev/null and b/bin/logica/Usuario.class differ
diff --git a/bin/presentacion/ConsultarUsuario$1.class b/bin/presentacion/ConsultarUsuario$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..a8bf4c65affe58021b24949afc0893178fdd1509
Binary files /dev/null and b/bin/presentacion/ConsultarUsuario$1.class differ
diff --git a/bin/presentacion/ConsultarUsuario$2.class b/bin/presentacion/ConsultarUsuario$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..11ba1413a56c58f8a735c0cfda33398c048d5e01
Binary files /dev/null and b/bin/presentacion/ConsultarUsuario$2.class differ
diff --git a/bin/presentacion/ConsultarUsuario.class b/bin/presentacion/ConsultarUsuario.class
new file mode 100644
index 0000000000000000000000000000000000000000..0dcd6b8d04c9f30c4384a23815468d002a832cef
Binary files /dev/null and b/bin/presentacion/ConsultarUsuario.class differ
diff --git a/bin/presentacion/CrearUsuario$1.class b/bin/presentacion/CrearUsuario$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..15d031c3bf34e1d7e9d3336fa672cfd5f4e92881
Binary files /dev/null and b/bin/presentacion/CrearUsuario$1.class differ
diff --git a/bin/presentacion/CrearUsuario$2.class b/bin/presentacion/CrearUsuario$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..931245bffcb7eb94804fe84f880e1e157e51b32c
Binary files /dev/null and b/bin/presentacion/CrearUsuario$2.class differ
diff --git a/bin/presentacion/CrearUsuario.class b/bin/presentacion/CrearUsuario.class
new file mode 100644
index 0000000000000000000000000000000000000000..9c3f527dcf813ebbc99e707c74aa7d9caff31ce3
Binary files /dev/null and b/bin/presentacion/CrearUsuario.class differ
diff --git a/bin/presentacion/ListaUsuarios$1.class b/bin/presentacion/ListaUsuarios$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..15292aecc6b54a6016a2ce6e90a25a45d9de91df
Binary files /dev/null and b/bin/presentacion/ListaUsuarios$1.class differ
diff --git a/bin/presentacion/ListaUsuarios.class b/bin/presentacion/ListaUsuarios.class
new file mode 100644
index 0000000000000000000000000000000000000000..a3e10ea38806cccd708171621adcfb2d1a0caa50
Binary files /dev/null and b/bin/presentacion/ListaUsuarios.class differ
diff --git a/bin/presentacion/Principal$1.class b/bin/presentacion/Principal$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..edd5656548b2b44e6d9455c31bbcc48e386ce665
Binary files /dev/null and b/bin/presentacion/Principal$1.class differ
diff --git a/bin/presentacion/Principal$2.class b/bin/presentacion/Principal$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..bdf396d5e05f2d3e0c285d181b78b3a03c6d8abb
Binary files /dev/null and b/bin/presentacion/Principal$2.class differ
diff --git a/bin/presentacion/Principal$3.class b/bin/presentacion/Principal$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..80299e95a153815e6bd6338517503d5f5d752624
Binary files /dev/null and b/bin/presentacion/Principal$3.class differ
diff --git a/bin/presentacion/Principal$4.class b/bin/presentacion/Principal$4.class
new file mode 100644
index 0000000000000000000000000000000000000000..7935acec4f9db52486f8d058e6a086d4c1b7126c
Binary files /dev/null and b/bin/presentacion/Principal$4.class differ
diff --git a/bin/presentacion/Principal$5.class b/bin/presentacion/Principal$5.class
new file mode 100644
index 0000000000000000000000000000000000000000..5685dd74bb68433099dba78d0cace2ef60cf0d10
Binary files /dev/null and b/bin/presentacion/Principal$5.class differ
diff --git a/bin/presentacion/Principal.class b/bin/presentacion/Principal.class
new file mode 100644
index 0000000000000000000000000000000000000000..f6bdbd855c43b181848381294b28b31179e21e5e
Binary files /dev/null and b/bin/presentacion/Principal.class differ
diff --git a/src/excepciones/UsuarioNoExisteException.java b/src/excepciones/UsuarioNoExisteException.java
new file mode 100644
index 0000000000000000000000000000000000000000..f972d3e0a61e60a97c26dce98c473fe7ab8b221f
--- /dev/null
+++ b/src/excepciones/UsuarioNoExisteException.java
@@ -0,0 +1,15 @@
+package excepciones;
+
+/**
+ * Excepción utilizada para indicar la inexistencia de un usuario en el sistema.
+ * 
+ * @author TProg2017
+ *
+ */
+@SuppressWarnings("serial")
+public class UsuarioNoExisteException extends Exception {
+
+    public UsuarioNoExisteException(String string) {
+        super(string);
+    }
+}
diff --git a/src/excepciones/UsuarioRepetidoException.java b/src/excepciones/UsuarioRepetidoException.java
new file mode 100644
index 0000000000000000000000000000000000000000..5eee866a0aef565aaeb6bbbb717beb60b888ec46
--- /dev/null
+++ b/src/excepciones/UsuarioRepetidoException.java
@@ -0,0 +1,16 @@
+package excepciones;
+
+/**
+ * Excepción utilizada para indicar la existencia de un usuario repetido en el sistema.
+ * 
+ * @author TProg2017
+ *
+ */
+@SuppressWarnings("serial")
+public class UsuarioRepetidoException extends Exception {
+
+    public UsuarioRepetidoException(String string) {
+        super(string);
+    }
+
+}
diff --git a/src/logica/ControladorUsuario.java b/src/logica/ControladorUsuario.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e9b280ff17e053cd1d5b0dcd21519c3300746c5
--- /dev/null
+++ b/src/logica/ControladorUsuario.java
@@ -0,0 +1,56 @@
+package logica;
+
+import excepciones.UsuarioNoExisteException;
+import excepciones.UsuarioRepetidoException;
+
+/**
+ * Controlador de usuarios.
+ * @author TProg2017
+ *
+ */
+public class ControladorUsuario implements IControladorUsuario {
+
+    public ControladorUsuario() {
+    }
+
+    public void registrarUsuario(String n, String ap, String ci) throws UsuarioRepetidoException {
+        ManejadorUsuario mu = ManejadorUsuario.getinstance();
+        Usuario u = mu.obtenerUsuario(ci);
+        if (u != null)
+            throw new UsuarioRepetidoException("El usuario " + ci + " ya esta registrado");
+
+        u = new Usuario(n, ap, ci);
+        mu.addUsuario(u);
+    }
+
+    public DataUsuario verInfoUsuario(String ci) throws UsuarioNoExisteException {
+        ManejadorUsuario mu = ManejadorUsuario.getinstance();
+        Usuario u = mu.obtenerUsuario(ci);
+        if (u != null)
+            return new DataUsuario(u.getNombre(), u.getApellido(), u.getCedulaIdentidad());
+        else
+            throw new UsuarioNoExisteException("El usuario " + ci + " no existe");
+
+    }
+
+    public DataUsuario[] getUsuarios() throws UsuarioNoExisteException {
+        ManejadorUsuario mu = ManejadorUsuario.getinstance();
+        Usuario[] usrs = mu.getUsuarios();
+
+        if (usrs != null) {
+            DataUsuario[] du = new DataUsuario[usrs.length];
+            Usuario usuario;
+
+            // Para separar lógica de presentación, no se deben devolver los Usuario,
+            // sino los DataUsuario
+            for (int i = 0; i < usrs.length; i++) {
+                usuario = usrs[i];
+                du[i] = new DataUsuario(usuario.getNombre(), usuario.getApellido(), usuario.getCedulaIdentidad());
+            }
+
+            return du;
+        } else
+            throw new UsuarioNoExisteException("No existen usuarios registrados");
+
+    }
+}
diff --git a/src/logica/DataUsuario.java b/src/logica/DataUsuario.java
new file mode 100644
index 0000000000000000000000000000000000000000..00c17a4972434397c1280f63440b0bfbe65b0d5a
--- /dev/null
+++ b/src/logica/DataUsuario.java
@@ -0,0 +1,57 @@
+package logica;
+
+/**
+ * Datatype para transportar la información de un usuario entre capa lógica y de presentación.
+ * En Java los datatypes se definen con setters y getters, y se denominan JavaBean.
+ * @author TProg2017
+ *
+ */
+public class DataUsuario {
+
+    private String nombre;
+    private String apellido;
+    private String cedulaIdentidad;
+
+    public DataUsuario() {
+        this.setNombre(new String());
+        this.setApellido(new String());
+        this.setCedulaIdentidad(new String());
+    }
+
+    public DataUsuario(String nombre, String apellido, String cedulaIdentidad) {
+        this.setNombre(nombre);
+        this.setApellido(apellido);
+        this.setCedulaIdentidad(cedulaIdentidad);
+    }
+
+    public String getNombre() {
+        return nombre;
+    }
+
+    public String getApellido() {
+        return apellido;
+    }
+
+    public String getCedulaIdentidad() {
+        return cedulaIdentidad;
+    }
+
+    /* Sirve para mostrar textualmente la información del usuario, por ejemplo en un ComboBox
+     */
+    public String toString() {
+        return getCedulaIdentidad() + " (" + getNombre() + " " + getApellido() + ")";
+    }
+
+    private void setNombre(String nombre) {
+        this.nombre = nombre;
+    }
+
+    private void setApellido(String apellido) {
+        this.apellido = apellido;
+    }
+
+    private void setCedulaIdentidad(String cedulaIdentidad) {
+        this.cedulaIdentidad = cedulaIdentidad;
+    }
+
+}
diff --git a/src/logica/Fabrica.java b/src/logica/Fabrica.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2bd57da2e6990e8f3b9e0066bf2ad00dbc1efbc
--- /dev/null
+++ b/src/logica/Fabrica.java
@@ -0,0 +1,27 @@
+package logica;
+
+/**
+ * Fábrica para la construcción de un controlador de usuarios (uno distinto para cada invocación).
+ * Se implementa en base al patrón Singleton.
+ * @author TProg2017
+ *
+ */
+public class Fabrica {
+
+    private static Fabrica instancia;
+
+    private Fabrica() {
+    };
+
+    public static Fabrica getInstance() {
+        if (instancia == null) {
+            instancia = new Fabrica();
+        }
+        return instancia;
+    }
+
+    public IControladorUsuario getIControladorUsuario() {
+        return new ControladorUsuario();
+    }
+
+}
diff --git a/src/logica/IControladorUsuario.java b/src/logica/IControladorUsuario.java
new file mode 100644
index 0000000000000000000000000000000000000000..c75000beb9a5505d2c377f2f561caad2325d33a2
--- /dev/null
+++ b/src/logica/IControladorUsuario.java
@@ -0,0 +1,35 @@
+package logica;
+
+import excepciones.UsuarioNoExisteException;
+import excepciones.UsuarioRepetidoException;
+
+/**
+ * @author TProg2017
+ *
+ */
+public interface IControladorUsuario {
+    
+    /**
+     * Registra al usuario en el sistema.
+     * @param n Nombre del usuario.
+     * @param ap Apellido del usuario.
+     * @param ci Cédula del usuario.
+     * @throws UsuarioRepetidoException Si la cédula del usuario se encuentra registrada en el sistema.
+     */
+    public abstract void registrarUsuario(String n, String ap, String ci) throws UsuarioRepetidoException;
+
+    /**
+     * Retorna la información de un usuario con la cédula indicada.
+     * @param ci Cédula del usuario.
+     * @return Información del usuario.
+     * @throws UsuarioNoExisteException Si la cédula del usuario no está registrada en el sistema.
+     */
+    public abstract DataUsuario verInfoUsuario(String ci) throws UsuarioNoExisteException;
+
+    /**
+     * Retorna la información de todos los usuarios registrados en el sistema.
+     * @return Información de los usuarios del sistema.
+     * @throws UsuarioNoExisteException Si no existen usuarios registrados en el sistema.
+     */
+    public abstract DataUsuario[] getUsuarios() throws UsuarioNoExisteException;
+}
diff --git a/src/logica/ManejadorUsuario.java b/src/logica/ManejadorUsuario.java
new file mode 100644
index 0000000000000000000000000000000000000000..59906d3825ce413f6c4010c212e9f11cba13fc99
--- /dev/null
+++ b/src/logica/ManejadorUsuario.java
@@ -0,0 +1,52 @@
+package logica;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Clase que conserva la colección global de los usuarios del sistema.
+ * Los usuarios se identifican por su cédula de identidad.
+ * Se implementa en base al patrón Singleton.
+ * @author TProg2017
+ *
+ */
+public class ManejadorUsuario {
+    private Map<String, Usuario> usuariosCI;
+    private static ManejadorUsuario instancia = null;
+
+    private ManejadorUsuario() {
+        usuariosCI = new HashMap<String, Usuario>();
+    }
+
+    public static ManejadorUsuario getinstance() {
+        if (instancia == null)
+            instancia = new ManejadorUsuario();
+        return instancia;
+    }
+
+    public void addUsuario(Usuario usu) {
+        String ci = usu.getCedulaIdentidad();
+        usuariosCI.put(ci, usu);
+    }
+
+    public Usuario obtenerUsuario(String ci) {
+        return ((Usuario) usuariosCI.get(ci));
+    }
+
+    public Usuario[] getUsuarios() {
+        if (usuariosCI.isEmpty())
+            return null;
+        else {
+            Collection<Usuario> usrs = usuariosCI.values();
+            Object[] o = usrs.toArray();
+            Usuario[] usuarios = new Usuario[o.length];
+            for (int i = 0; i < o.length; i++) {
+                usuarios[i] = (Usuario) o[i];
+            }
+
+            return usuarios;
+        }
+    }
+
+}
diff --git a/src/logica/Usuario.java b/src/logica/Usuario.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a08ffc3aa6fdce4bef8c59aa31e878c10bd49b6
--- /dev/null
+++ b/src/logica/Usuario.java
@@ -0,0 +1,44 @@
+package logica;
+
+/**
+ * Representa a un usuario en el sistema con nombre, apellido y cédula de identidad.
+ * @author TProg2017
+ *
+ */
+public class Usuario {
+
+    private String nombre;
+    private String apellido;
+    private String cedulaIdentidad;
+
+    public Usuario(String n, String ap, String ci) {
+        this.nombre = n;
+        this.apellido = ap;
+        this.cedulaIdentidad = ci;
+    }
+
+    public String getNombre() {
+        return nombre;
+    }
+
+    public String getApellido() {
+        return apellido;
+    }
+
+    public String getCedulaIdentidad() {
+        return cedulaIdentidad;
+    }
+
+    public void setNombre(String n) {
+        nombre = n;
+    }
+
+    public void setApellido(String ap) {
+        apellido = ap;
+    }
+
+    public void setCedulaIdentidad(String ci) {
+        cedulaIdentidad = ci;
+    }
+
+}
diff --git a/src/presentacion/ConsultarUsuario.java b/src/presentacion/ConsultarUsuario.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b3c75f11d2fad3009b98f760075364a5f55ed5b
--- /dev/null
+++ b/src/presentacion/ConsultarUsuario.java
@@ -0,0 +1,158 @@
+package presentacion;
+
+import javax.swing.JInternalFrame;
+
+import excepciones.UsuarioNoExisteException;
+import logica.DataUsuario;
+import logica.IControladorUsuario;
+
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JTextField;
+import javax.swing.JButton;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+/**
+ * JInternalFrame que permite consultar la información de un usuario del sistema.
+ * @author TProg2017
+ *
+ */
+@SuppressWarnings("serial")
+public class ConsultarUsuario extends JInternalFrame {
+
+    // Controlador de usuarios que se utilizará para las acciones del JFrame
+    private IControladorUsuario controlUsr;
+    
+    // Los componentes gráficos se agregan como atributos de la clase
+    // para facilitar su acceso desde diferentes métodos de la misma.
+    private JTextField textFieldCI;
+    private JTextField textFieldNombre;
+    private JTextField textFieldApellido;
+    private JLabel lblIngresoCI;
+    private JButton btnBuscar;
+    private JLabel lblNombre;
+    private JLabel lblApellido;
+    private JButton btnCerrar;
+    private JLabel lblInfoUsuario;
+
+    /**
+     * Create the frame.
+     */
+    public ConsultarUsuario(IControladorUsuario icu) {
+        // Se inicializa con el controlador de usuarios
+        controlUsr = icu;
+        
+        // Propiedades del JInternalFrame como dimensión, posición dentro del frame, etc.
+        setResizable(true);
+        setIconifiable(true);
+        setMaximizable(true);
+        setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
+        setClosable(true);
+        setTitle("Consultar un Usuario");
+        setBounds(30, 30, 400, 280);
+
+        // En este caso usaremos el Absolute Layout y deberemos indicar
+        // la posición absoluta de todos los componentes
+        getContentPane().setLayout(null);
+
+        // Una etiqueta (JLabel) indicando que en el siguiente campo debe ingresarse 
+        // la cédula del usuario.
+        lblIngresoCI = new JLabel("Ingrese CI:");
+        lblIngresoCI.setBounds(10, 24, 170, 14);
+        getContentPane().add(lblIngresoCI);
+
+        // Una campo de texto (JTextField) para ingresar la cédula de un usuario. 
+        textFieldCI = new JTextField();
+        textFieldCI.setBounds(104, 17, 140, 30);
+        getContentPane().add(textFieldCI);
+
+        // Un botón (JButton) con un evento asociado que permite buscar un usuario.
+        // Dado que el código de registro tiene cierta complejidad, conviene delegarlo
+        // a otro método en lugar de incluirlo directamente de el método actionPerformed 
+        btnBuscar = new JButton("Buscar");
+        btnBuscar.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                cmdBuscarUsuarioActionPerformed(e);
+            }
+        });
+        btnBuscar.setBounds(256, 16, 95, 30);
+        getContentPane().add(btnBuscar);
+        
+        // Una etiqueta (JLabel) indicando que a continuación se verá la 
+        // información del usuarios buscado.
+        lblInfoUsuario = new JLabel("Información de Usuario");
+        lblInfoUsuario.setBounds(104, 70, 180, 14);
+        getContentPane().add(lblInfoUsuario);
+
+        // Una etiqueta (JLabel) indicando que en el siguiente campo se verá 
+        // el nombre del usuario encontrado.
+        lblNombre = new JLabel("Nombre:");
+        lblNombre.setBounds(10, 114, 65, 14);
+        getContentPane().add(lblNombre);
+
+        // Una campo de texto (JTextField) para mostrar el nombre del usuario. 
+        // El campo se hace no editable para impedir que se modifique.
+        textFieldNombre = new JTextField();
+        textFieldNombre.setEditable(false);
+        textFieldNombre.setBounds(80, 107, 271, 30);
+        getContentPane().add(textFieldNombre);
+
+        // Una etiqueta (JLabel) indicando que en el siguiente campo se verá 
+        // el apellido del usuario encontrado.
+        lblApellido = new JLabel("Apellido");
+        lblApellido.setBounds(10, 156, 65, 14);
+        getContentPane().add(lblApellido);
+        
+        // Una campo de texto (JTextField) para mostrar el apellido del usuario. 
+        // El campo se hace no editable para impedir que se modifique.
+        textFieldApellido = new JTextField();
+        textFieldApellido.setEditable(false);
+        textFieldApellido.setBounds(80, 149, 271, 30);
+        getContentPane().add(textFieldApellido);
+
+        // Un botón (JButton) con un evento asociado que permite cerrar el formulario (solo ocultarlo).
+        // Dado que antes de cerrar se limpia el formulario, se invoca un método reutilizable para ello. 
+        btnCerrar = new JButton("Cerrar");
+        btnCerrar.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                limpiarFormulario();
+                setVisible(false);
+            }
+        });
+        btnCerrar.setBounds(262, 191, 89, 23);
+        getContentPane().add(btnCerrar);
+    }
+
+    // Este método es invocado al querer buscar un usuario, funcionalidad
+    // provista por la operación del sistem verInfoUsuario().
+    // En caso de que haya un error de búsqueda se despliega
+    // un mensaje utilizando un panel de mensaje (JOptionPane).
+    // No es necesario verificar que el campo con la cédula sea un número ya
+    // que internamente el sistema almacena la cédula como un string.
+    protected void cmdBuscarUsuarioActionPerformed(ActionEvent e) {
+        DataUsuario du;
+        try {
+            du = controlUsr.verInfoUsuario(textFieldCI.getText());
+            textFieldNombre.setText(du.getNombre());
+            textFieldApellido.setText(du.getApellido());
+        } catch (UsuarioNoExisteException e1) {
+            // Si el usuario no existe, se muestra mensaje de error y se limpia el
+            // formulario.
+            JOptionPane.showMessageDialog(this, e1.getMessage(), "Buscar Usuario", JOptionPane.ERROR_MESSAGE);
+            limpiarFormulario();
+        }
+
+    }
+
+    // Permite borrar el contenido de un formulario antes de cerrarlo.
+    // Recordar que las ventanas no se destruyen, sino que simplemente 
+    // se ocultan, por lo que conviene borrar la información para que 
+    // no aparezca al mostrarlas nuevamente.
+    private void limpiarFormulario() {
+        textFieldNombre.setText("");
+        textFieldApellido.setText("");
+        textFieldCI.setText("");
+    }
+}
diff --git a/src/presentacion/CrearUsuario.java b/src/presentacion/CrearUsuario.java
new file mode 100644
index 0000000000000000000000000000000000000000..096ccf311a02fd079891d0a3fcbe24818c06bc60
--- /dev/null
+++ b/src/presentacion/CrearUsuario.java
@@ -0,0 +1,247 @@
+package presentacion;
+
+import javax.swing.JInternalFrame;
+
+import excepciones.UsuarioRepetidoException;
+import logica.IControladorUsuario;
+
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.SwingConstants;
+import javax.swing.JTextField;
+import javax.swing.JButton;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.awt.Insets;
+import javax.swing.JFrame;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+/**
+ * JInternalFrame que permite registrar un nuevo usuario al sistema.
+ * 
+ * @author TProg2017
+ *
+ */
+@SuppressWarnings("serial")
+public class CrearUsuario extends JInternalFrame {
+
+    // Controlador de usuarios que se utilizará para las acciones del JFrame
+    private IControladorUsuario controlUsr;
+    
+    // Los componentes gráficos se agregan como atributos de la clase
+    // para facilitar su acceso desde diferentes métodos de la misma.
+    private JTextField textFieldNombre;
+    private JTextField textFieldApellido;
+    private JTextField textFieldCI;
+    private JLabel lblIngreseNombre;
+    private JLabel lblIngreseApellido;
+    private JLabel lblIngreseCi;
+    private JButton btnAceptar;
+    private JButton btnCancelar;
+
+    /**
+     * Create the frame.
+     */
+    public CrearUsuario(IControladorUsuario icu) {
+        // Se inicializa con el controlador de usuarios
+        controlUsr = icu;
+
+        // Propiedades del JInternalFrame como dimensión, posición dentro del frame,
+        // etc.
+        setResizable(true);
+        setIconifiable(true);
+        setMaximizable(true);
+        setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
+        setClosable(true);
+        setTitle("Registrar un Usuario");
+        setBounds(10, 40, 360, 150);
+
+        // En este caso utilizaremos el GridBagLayout que permite armar una grilla
+        // en donde las filas y columnas no son uniformes.
+        // Conviene trabajar este componente desde la vista de diseño gráfico y sólo
+        // manipular los valores para ajustar alguna cosa.
+        GridBagLayout gridBagLayout = new GridBagLayout();
+        gridBagLayout.columnWidths = new int[] { 100, 120, 120, 0 };
+        gridBagLayout.rowHeights = new int[] { 30, 30, 30, 0, 0 };
+        gridBagLayout.columnWeights = new double[] { 0.0, 0.0, 0.0, Double.MIN_VALUE };
+        gridBagLayout.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE };
+        getContentPane().setLayout(gridBagLayout);
+
+        // Una etiqueta (JLabel) indicandp que en el siguiente campo debe ingresarse 
+        // el nombre del usuario. El texto está alineado horizontalmente a la derecha para
+        // que quede casi pegado al campo de texto.
+        lblIngreseNombre = new JLabel("Nombre:");
+        lblIngreseNombre.setHorizontalAlignment(SwingConstants.RIGHT);
+        GridBagConstraints gbc_lblIngreseNombre = new GridBagConstraints();
+        gbc_lblIngreseNombre.fill = GridBagConstraints.BOTH;
+        gbc_lblIngreseNombre.insets = new Insets(0, 0, 5, 5);
+        gbc_lblIngreseNombre.gridx = 0;
+        gbc_lblIngreseNombre.gridy = 0;
+        getContentPane().add(lblIngreseNombre, gbc_lblIngreseNombre);
+
+        // Una campo de texto (JTextField) para ingresar el nombre del usuario. 
+        // Por defecto es posible ingresar cualquier string.
+        textFieldNombre = new JTextField();
+        GridBagConstraints gbc_textFieldNombre = new GridBagConstraints();
+        gbc_textFieldNombre.gridwidth = 2;
+        gbc_textFieldNombre.fill = GridBagConstraints.BOTH;
+        gbc_textFieldNombre.insets = new Insets(0, 0, 5, 0);
+        gbc_textFieldNombre.gridx = 1;
+        gbc_textFieldNombre.gridy = 0;
+        getContentPane().add(textFieldNombre, gbc_textFieldNombre);
+        textFieldNombre.setColumns(10);
+
+        // Una etiqueta (JLabel) indicandp que en el siguiente campo debe ingresarse 
+        // el apellido del usuario. El texto está alineado horizontalmente a la derecha para
+        // que quede casi pegado al campo de texto.
+        lblIngreseApellido = new JLabel("Apellido:");
+        lblIngreseApellido.setHorizontalAlignment(SwingConstants.RIGHT);
+        GridBagConstraints gbc_lblIngreseApellido = new GridBagConstraints();
+        gbc_lblIngreseApellido.fill = GridBagConstraints.BOTH;
+        gbc_lblIngreseApellido.insets = new Insets(0, 0, 5, 5);
+        gbc_lblIngreseApellido.gridx = 0;
+        gbc_lblIngreseApellido.gridy = 1;
+        getContentPane().add(lblIngreseApellido, gbc_lblIngreseApellido);
+
+        // Una campo de texto (JTextField) para ingresar el apellido del usuario. 
+        // Por defecto es posible ingresar cualquier string.
+        textFieldApellido = new JTextField();
+        GridBagConstraints gbc_textFieldApellido = new GridBagConstraints();
+        gbc_textFieldApellido.gridwidth = 2;
+        gbc_textFieldApellido.fill = GridBagConstraints.BOTH;
+        gbc_textFieldApellido.insets = new Insets(0, 0, 5, 0);
+        gbc_textFieldApellido.gridx = 1;
+        gbc_textFieldApellido.gridy = 1;
+        getContentPane().add(textFieldApellido, gbc_textFieldApellido);
+        textFieldApellido.setColumns(10);
+
+        // Una etiqueta (JLabel) indicando que en el siguiente campo debe ingresarse 
+        // la cédula del usuario. El texto está alineado horizontalmente a la derecha para
+        // que quede casi pegado al campo de texto.
+        lblIngreseCi = new JLabel("C.I.:");
+        lblIngreseCi.setHorizontalAlignment(SwingConstants.RIGHT);
+        GridBagConstraints gbc_lblIngreseCi = new GridBagConstraints();
+        gbc_lblIngreseCi.fill = GridBagConstraints.BOTH;
+        gbc_lblIngreseCi.insets = new Insets(0, 0, 5, 5);
+        gbc_lblIngreseCi.gridx = 0;
+        gbc_lblIngreseCi.gridy = 2;
+        getContentPane().add(lblIngreseCi, gbc_lblIngreseCi);
+
+        // Una campo de texto (JTextField) para ingresar la cédula del usuario. 
+        // Por defecto es posible ingresar cualquier string.
+        // Al campo se le incluye un Tooltip que, al pasar el mouse por encima, despliega un mensaje.
+        textFieldCI = new JTextField();
+        textFieldCI.setToolTipText("Ingrese un número sin puntos ni guiones");
+        textFieldCI.setColumns(10);
+        GridBagConstraints gbc_textFieldCI = new GridBagConstraints();
+        gbc_textFieldCI.gridwidth = 2;
+        gbc_textFieldCI.fill = GridBagConstraints.BOTH;
+        gbc_textFieldCI.insets = new Insets(0, 0, 5, 0);
+        gbc_textFieldCI.gridx = 1;
+        gbc_textFieldCI.gridy = 2;
+        getContentPane().add(textFieldCI, gbc_textFieldCI);
+
+        // Un botón (JButton) con un evento asociado que permite registrar el usuario.
+        // Dado que el código de registro tiene cierta complejidad, conviene delegarlo
+        // a otro método en lugar de incluirlo directamente de el método actionPerformed 
+        btnAceptar = new JButton("Aceptar");
+        btnAceptar.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent arg0) {
+                cmdRegistroUsuarioActionPerformed(arg0);
+            }
+        });
+
+        GridBagConstraints gbc_btnAceptar = new GridBagConstraints();
+        gbc_btnAceptar.fill = GridBagConstraints.BOTH;
+        gbc_btnAceptar.insets = new Insets(0, 0, 0, 5);
+        gbc_btnAceptar.gridx = 1;
+        gbc_btnAceptar.gridy = 3;
+        getContentPane().add(btnAceptar, gbc_btnAceptar);
+
+        // Un botón (JButton) con un evento asociado que permite cerrar el formulario (solo ocultarlo).
+        // Dado que antes de cerrar se limpia el formulario, se invoca un método reutilizable para ello. 
+        btnCancelar = new JButton("Cancelar");
+        btnCancelar.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                limpiarFormulario();
+                setVisible(false);
+            }
+        });
+        GridBagConstraints gbc_btnCancelar = new GridBagConstraints();
+        gbc_btnCancelar.fill = GridBagConstraints.BOTH;
+        gbc_btnCancelar.gridx = 2;
+        gbc_btnCancelar.gridy = 3;
+        getContentPane().add(btnCancelar, gbc_btnCancelar);
+    }
+
+    // Este método es invocado al querer registrar un usuario, funcionalidad
+    // provista por la operación del sistem registrarUsuario().
+    // Previamente se hace una verificación de los campos, particularmente que no sean vacíos
+    // y que la cédula sea un número. 
+    // Tanto en caso de que haya un error (de verificación o de registro) o no, se despliega
+    // un mensaje utilizando un panel de mensaje (JOptionPane).
+    protected void cmdRegistroUsuarioActionPerformed(ActionEvent arg0) {
+        // TODO Auto-generated method stub
+
+        // Obtengo datos de los controles Swing
+        String nombreU = this.textFieldNombre.getText();
+        String apellidoU = this.textFieldApellido.getText();
+        String ciU = this.textFieldCI.getText();
+
+        if (checkFormulario()) {
+            try {
+                controlUsr.registrarUsuario(nombreU, apellidoU, ciU);
+
+                // Muestro éxito de la operación
+                JOptionPane.showMessageDialog(this, "El Usuario se ha creado con éxito", "Registrar Usuario",
+                        JOptionPane.INFORMATION_MESSAGE);
+
+            } catch (UsuarioRepetidoException e) {
+                // Muestro error de registro
+                JOptionPane.showMessageDialog(this, e.getMessage(), "Registrar Usuario", JOptionPane.ERROR_MESSAGE);
+            }
+
+            // Limpio el internal frame antes de cerrar la ventana
+            limpiarFormulario();
+            setVisible(false);
+        }
+    }
+
+    // Permite validar la información introducida en los campos e indicar
+    // a través de un mensaje de error (JOptionPane) cuando algo sucede.
+    // Este tipo de chequeos se puede realizar de otras formas y con otras librerías de Java, 
+    // por ejemplo impidiendo que se escriban caracteres no numéricos al momento de escribir en
+    // en el campo de la cédula, o mostrando un mensaje de error apenas el foco pasa a otro campo.
+    private boolean checkFormulario() {
+        String nombreU = this.textFieldNombre.getText();
+        String apellidoU = this.textFieldApellido.getText();
+        String ciU = this.textFieldCI.getText();
+
+        if (nombreU.isEmpty() || apellidoU.isEmpty() || ciU.isEmpty()) {
+            JOptionPane.showMessageDialog(this, "No puede haber campos vacíos", "Registrar Usuario",
+                    JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+
+        try {
+            Integer.parseInt(ciU);
+        } catch (NumberFormatException e) {
+            JOptionPane.showMessageDialog(this, "La CI debe ser un numero", "Registrar Usuario",
+                    JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+
+        return true;
+    }
+
+    // Permite borrar el contenido de un formulario antes de cerrarlo.
+    // Recordar que las ventanas no se destruyen, sino que simplemente 
+    // se ocultan, por lo que conviene borrar la información para que 
+    // no aparezca al mostrarlas nuevamente.
+    private void limpiarFormulario() {
+        textFieldNombre.setText("");
+        textFieldApellido.setText("");
+        textFieldCI.setText("");
+    }
+}
diff --git a/src/presentacion/ListaUsuarios.java b/src/presentacion/ListaUsuarios.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd0f4540da84d45768e8ae7fa75ac23ba6aa5184
--- /dev/null
+++ b/src/presentacion/ListaUsuarios.java
@@ -0,0 +1,94 @@
+package presentacion;
+
+import javax.swing.JFrame;
+import javax.swing.JInternalFrame;
+
+import excepciones.UsuarioNoExisteException;
+import logica.DataUsuario;
+import logica.IControladorUsuario;
+
+import java.awt.BorderLayout;
+import javax.swing.JLabel;
+import javax.swing.SwingConstants;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import javax.swing.JComboBox;
+
+/**
+ * JInternalFrame que permite listar todos los usuarios del sistema.
+ * @author TProg2017
+ *
+ */
+@SuppressWarnings("serial")
+public class ListaUsuarios extends JInternalFrame {
+
+    // Controlador de usuarios que se utilizará para las acciones del JFrame
+    private IControladorUsuario controlUsr;
+    
+    // Los componentes gráficos se agregan como atributos de la clase
+    // para facilitar su acceso desde diferentes métodos de la misma.
+    private JComboBox<DataUsuario> comboBoxUsuarios;
+    private JLabel lblUsuarios;
+    private JButton btnCerrar;
+
+    /**
+     * Create the frame.
+     */
+    public ListaUsuarios(IControladorUsuario icu) {
+        // Se inicializa con el controlador de usuarios
+        controlUsr = icu;
+        
+        // Propiedades del JInternalFrame como dimensión, posición dentro del frame, etc.
+        setResizable(true);
+        setIconifiable(true);
+        setMaximizable(true);
+        setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
+        setClosable(true);
+        setTitle("Consultar un Usuario");
+        setBounds(30, 30, 300, 100);
+        
+        // En este caso se utiliza un BorderLayout en donde los componentes se ubican según una orientación.
+        getContentPane().setLayout(new BorderLayout(0, 0));
+
+        // Una etiqueta (JLabel) muestra el título de la lista que vendrá después.
+        // Se ubica al norte del layout y el texto se centra horizontalmente.
+        lblUsuarios = new JLabel("Usuarios Registrados");
+        lblUsuarios.setHorizontalAlignment(SwingConstants.CENTER);
+        getContentPane().add(lblUsuarios, BorderLayout.NORTH);
+
+        // Un combo (JComboBox) muestra la lista de usuarios registrados en el sistema.
+        // Es posible utilizar otros componentes gráficos, esta es sólo una opción.
+        // Se ubica al centro del layout.
+        comboBoxUsuarios = new JComboBox<DataUsuario>();
+        getContentPane().add(comboBoxUsuarios, BorderLayout.CENTER);
+
+        // Un botón (JButton) con un evento asociado que permite limpiar la lista 
+        // de usuarios y cerrar la ventana (sólo la oculta).
+        // Se ubica al sur del layout.
+        btnCerrar = new JButton("Cerrar");
+        btnCerrar.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                comboBoxUsuarios.removeAllItems();
+                setVisible(false);
+            }
+        });
+        getContentPane().add(btnCerrar, BorderLayout.SOUTH);
+    }
+
+    // Método que permite cargar un nuevo modelo para el combo con la información
+    // actualizada de usuarios, provista por la operación del sistema getUsuarios(). 
+    // Se invoca el método antes de hacer visible el JInternalFrame
+    public void cargarUsuarios() {
+        DefaultComboBoxModel<DataUsuario> model;
+        try {
+            model = new DefaultComboBoxModel<DataUsuario>(controlUsr.getUsuarios());
+            comboBoxUsuarios.setModel(model);
+        } catch (UsuarioNoExisteException e) {
+            // No se imprime mensaje de error sino que simplemente no se muestra ningún elemento
+        }
+
+    }
+
+}
diff --git a/src/presentacion/Principal.java b/src/presentacion/Principal.java
new file mode 100644
index 0000000000000000000000000000000000000000..c5289ea72d756624e892bd4b8688aa1b44ebd8e9
--- /dev/null
+++ b/src/presentacion/Principal.java
@@ -0,0 +1,135 @@
+package presentacion;
+
+import java.awt.EventQueue;
+
+import javax.swing.JFrame;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+
+import logica.Fabrica;
+import logica.IControladorUsuario;
+
+import javax.swing.JMenu;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+/**
+ * Clase principal (Frame) con el método Main.
+ * @author TProg2017
+ *
+ */
+public class Principal {
+
+    private JFrame frmGestionDeUsuarios;
+    private IControladorUsuario ICU;
+    private CrearUsuario creUsrInternalFrame;
+    private ConsultarUsuario conUsrInternalFrame;
+    private ListaUsuarios lisUsrInternalFrame;
+
+    /**
+     * Launch the application.
+     */
+    public static void main(String[] args) {
+        EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                try {
+                    Principal window = new Principal();
+                    window.frmGestionDeUsuarios.setVisible(true);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    /**
+     * Create the application.
+     */
+    public Principal() {
+        initialize();
+
+        // Inicialización
+        Fabrica fabrica = Fabrica.getInstance();
+        ICU = fabrica.getIControladorUsuario();
+        
+        // Se crean los tres InternalFrame y se incluyen al Frame principal ocultos.
+        // De esta forma, no es necesario crear y destruir objetos lo que enlentece la ejecución.
+        // Cada InternalFrame usa un layout diferente, simplemente para mostrar distintas opciones.
+        creUsrInternalFrame = new CrearUsuario(ICU);
+        creUsrInternalFrame.setVisible(false);
+
+        conUsrInternalFrame = new ConsultarUsuario(ICU);
+        conUsrInternalFrame.setVisible(false);
+
+        lisUsrInternalFrame = new ListaUsuarios(ICU);
+        lisUsrInternalFrame.setVisible(false);
+        frmGestionDeUsuarios.getContentPane().setLayout(null);
+
+        frmGestionDeUsuarios.getContentPane().add(conUsrInternalFrame);
+        frmGestionDeUsuarios.getContentPane().add(creUsrInternalFrame);
+        frmGestionDeUsuarios.getContentPane().add(lisUsrInternalFrame);
+    }
+
+    /**
+     * Initialize the contents of the frame.
+     */
+    private void initialize() {
+        
+        // Se crea el Frame con las dimensiones indicadas.
+        frmGestionDeUsuarios = new JFrame();
+        frmGestionDeUsuarios.setTitle("Gestion de Usuarios 1.0");
+        frmGestionDeUsuarios.setBounds(100, 100, 450, 400);
+        frmGestionDeUsuarios.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+        // Se crea una barra de menú (JMenuBar) con dos menú (JMenu) desplegables.
+        // Cada menú contiene diferentes opciones (JMenuItem), los cuales tienen un 
+        // evento asociado que permite realizar una acción una vez se seleccionan. 
+        JMenuBar menuBar = new JMenuBar();
+        frmGestionDeUsuarios.setJMenuBar(menuBar);
+
+        JMenu menuSistema = new JMenu("Sistema");
+        menuBar.add(menuSistema);
+
+        JMenuItem menuSalir = new JMenuItem("Salir");
+        menuSalir.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent arg0) {
+                // Salgo de la aplicación
+                frmGestionDeUsuarios.setVisible(false);
+                frmGestionDeUsuarios.dispose();
+            }
+        });
+        menuSistema.add(menuSalir);
+
+        JMenu menuUsuarios = new JMenu("Usuarios");
+        menuBar.add(menuUsuarios);
+
+        JMenuItem menuItemRegistrar = new JMenuItem("Registrar Usuario");
+        menuItemRegistrar.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                // Muestro el InternalFrame para registrar un usuario
+                creUsrInternalFrame.setVisible(true);
+            }
+        });
+        menuUsuarios.add(menuItemRegistrar);
+
+        JMenuItem menuItemVerInfo = new JMenuItem("Ver Información");
+        menuItemVerInfo.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                // Muestro el InternalFrame para ver información de un usuario
+                conUsrInternalFrame.setVisible(true);
+            }
+        });
+        menuUsuarios.add(menuItemVerInfo);
+
+        JMenuItem mntmListaUsuarios = new JMenuItem("ListarUsuarios");
+        mntmListaUsuarios.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                // Muestro el InternalFrame para ver la lista de todos los usuarios,
+                // cargando previamente la lista
+                lisUsrInternalFrame.cargarUsuarios();
+                lisUsrInternalFrame.setVisible(true);
+            }
+        });
+        menuUsuarios.add(mntmListaUsuarios);
+    }
+}