You are on page 1of 382

Java - Enfoque Práctico

Ing. Javier Alberto Manrique Quiñonez

1

Java - Enfoque Práctico

Ing. Javier Alberto Manrique Quiñonez

2

Java - Enfoque Práctico

Ing. Javier Alberto Manrique Quiñonez

3

Java - Enfoque Práctico

LENGUAJE DE PROGRAMACIÓN JAVA
Java es un lenguaje de programación orientado a objetos que es utilizado por gran parte del mundo
industrial y académico. Java fue desarrollado a principios de los años 90 por James Gosling y su equipo en
Sun Microsystem en California. El lenguaje se basa en C y C++ pero tiene un modelo de objetos más simple
y elimina herramientas de bajo nivel que suelen inducir a muchos errores, como la manipulación directa
de punteros o memoria. Su propósito original fue escribir programas que controlaran electrodomésticos
de consumo masivo, tales como tostadoras, hornos microondas, etc. Al principio se llamó Oak, en honor al
roble que había afuera de la oficina de Gosling, luego pasó a denominarse Green tras descubrir
que Oak era ya una marca comercial registrada para adaptadores de tarjetas gráficas, pero el nombre ya
estaba tomado, así que el equipo lo renombró Java.
A menudo se describe al Java como un lenguaje de programación Web, debido a que se usa para escribir
programas llamados applets (subprogramas) que se ejecutan dentro de un navegador Web, los cuales
permiten una difusión más dinámica y flexible de la información en Internet. Java no solo se limita a
escribir Applets, también puede ser utilizado para escribir aplicaciones que son programas completos y
autónomos que no requieren de navegadores Web. En realidad, Java permite escribir programas como
otros lenguajes de programación, tales como el C# y Visual Basic .net.
En este libro utilizamos el lenguaje de programación Java, NetBeans como IDE libre para desarrollar
aplicaciones en Java, arquitectura de tres capas, acceso a base de datos utilizando MySQL y el iReport
como herramienta para generar y gestionar informes.

INSTALACIÓN DEL JAVA 1.6.16.
Para la instalación de Java JDK 1.6.16 debe de realizar lo siguiente:
 Ubique la carpeta E:\Programas\Java en el CD de trabajo y verifique que el archivo Java-6u16windows-i585.exe se encuentre grabado. Luego haga doble clic en el ejecutable Java-6u16-windowsi585.exe para empezar la instalación.

 Verifique que se presente el cuadro de diálogo de Bienvenida (Welcome). Luego haga clic en el botón
de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quiñonez

4

Java - Enfoque Práctico

 En cuadro de diálogo de Acuerdos de Licencia (License Agreement) haga clic en botón de comando
Aceptar (Accept).

 En cuadro de diálogo de Instalación (Installing) verifique que ha empezado la instalación.

 En el cuadro de dialogo Carpeta Destino (Destination Folder) haga clic en el botón de comando
Siguiente (Next). Utilice la carpeta destino por defecto.

Ing. Javier Alberto Manrique Quiñonez

5

Java - Enfoque Práctico

 En el cuadro de dialogo Progreso de Instalación (Setup Progress) verifique la indicación que el proceso
puede tomar algunos minutos (This may take a few minutes).

 En el cuadro de diálogo Instalando (Installing) verifique el progreso de la instalación ha empezado.

 En el cuadro de diálogo Java(TM) SE Development kit 6 Update 16 verifique el progreso de la instalación
ha terminado con éxito.

Ing. Javier Alberto Manrique Quiñonez

6

Java - Enfoque Práctico

NETBEANS
NetBeans es un entorno de desarrollo integrado (IDE) de código abierto el cual permite escribir, compilar,
depurar y ejecutar aplicaciones en Java y en otros lenguajes de programación. El NetBeans IDE posee una
herramienta de desarrollo modular para una amplia gama de tareas de desarrollo. La base IDE incluye un
avanzado editor de lenguaje, un depurador e integrador de perfiles, un archivo de control de versiones y
es el único IDE con características de colaboración. Posee herramientas para crear aplicaciones
empresariales en entorno escritorio, entorno Web y aplicaciones móviles con el lenguaje Java, C / C + +, e
incluso los lenguajes dinámicos como PHP, JavaScript , Groovy, y Ruby. El IDE NetBeans se instala, utiliza y
se ejecuta en varias plataformas, incluyendo Windows, Linux, Mac OS X y Solaris.
NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de
software llamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para
interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo.
Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevos módulos.
Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones basadas en la
plataforma NetBeans pueden ser extendidas fácilmente por otros desarrolladores de software.
NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una comunidad
en constante crecimiento, y con cerca de 100 socios en todo el mundo. Sun MicroSystems fundó el
proyecto de código abierto NetBeans en junio 2000 y continúa siendo el patrocinador principal de los
proyectos.

INSTALACIÓN DE NETBEANS 6.7.1
Para la instalación del NetBeans 6.7.1 se debe de realizar lo siguiente:
 Ubique la carpeta E:\Programas\Netbeans en el CD de trabajo y verifique que el archivo netbeans6.7.1 –ml-windows.exe se encuentre grabado. Luego haga doble clic en el ejecutable netbeans-6.7.1 –
ml-windows.exe para empezar la instalación.

 En el cuadro de diálogo Instalador del IDE del Netbeans (NetBeans IDE Installer) verifique que se está
realizando la configuración del instalador del IDE.

 En el cuadro de diálogo Instalador del IDE del Netbeans (NetBeans IDE Installer) verifique la
continuación de la configuración del instalador del IDE.

Ing. Javier Alberto Manrique Quiñonez

7

Java . Java SE y UML y luego haga clic en el botón de comando Ok.7.Enfoque Práctico  En el cuadro de diálogo de Bienvenida del Instalador del IDE NetBeans 6. Javier Alberto Manrique Quiñonez 8 .1 Installer) haga clic en el botón de comando Personalizar (Customize). Ing.1 (Welcome to the NetBeans IDE 6.7.  En el cuadro de diálogo de Personalización de Instalación (Customize installation) seleccione Base IDE.

7. Javier Alberto Manrique Quiñonez 9 . Ing.1 Installer) haga clic en el botón de comando Siguiente (Next).Java .Enfoque Práctico  En el cuadro de diálogo de Bienvenida del Instalador del IDE del NetBeans (Welcome to the NetBeans IDE 6.  En el cuadro de diálogo de Acuerdos de Licencia (License Agreement) seleccione la casilla de verificación “Yo Acepto los términos del acuerdo de licencia” (I accept the terms int the license agreement) y luego haga clic en el botón de comando Siguiente (Next).

Java .1 se instalará en la carpeta seleccionada anteriormente.7.1 Installation) seleccione la carpeta donde se instalará el IDE del Netbeans IDE y la carpeta donde se encuentra instalado el Java SE Development Kit (JDK).1 se instalará en la carpeta seleccionada anteriormente.  En el cuadro de diálogo de Resumen (Summary) verifique que el Netbeans 6. Luego haga clic en el botón de comando Instalar (Install).7.7.7. Ing.  En el cuadro de diálogo de Resumen (Summary) verifique que el Netbeans 6.1 (Netbeans IDE 6. Luego haga clic en el botón de comando Instalar (Install). Luego haga clic en el botón de comando Siguiente (Next).Enfoque Práctico  En el cuadro de diálogo de Instalación del Netbeans IDE 6. Javier Alberto Manrique Quiñonez 10 .

Ing.Enfoque Práctico  En el cuadro de diálogo de Instalación (Installation) verifique el progreso de la instalación se encuentra en progreso. Javier Alberto Manrique Quiñonez 11 . Nota: A la fecha es posible se existan nuevas versiones de NetBeans y Java SE pero las diferencias en la instalación son mínimas.Java .  En el cuadro de diálogo de instalación completa (Setup Complete) verifique que la instalación del IDE del NetBeans ha finalizado.

El iReport utiliza la biblioteca del JasperReports.jasper que permiten crear y probar cualquier tipo de fuentes de datos. El archivo .Java . vista previa y la exportación de informes en todos los formatos actualmente soportados tales como PDF.  Compilar el archivo .Jrxml en el que se configura el informe. Excel Open Office.  Rellenar los datos del informe generando un archivo .1 Para la instalación del plugin del iReport 3.5. para la impresora o para archivos. HTML.3.1 se debe de realizar lo siguiente:  Ubique la carpeta E:\Programas\iReport-nb-3.Jasper se carga en una aplicación Java utilizando la API de JasperRepors y se utiliza para generar el informe con un origen de datos que puede ser una conexión JDBC. El funcionamiento del iReport consiste generar un archivo XML donde se recogen las particularidades del informe.5. etc).  Cargue el NetBeans IDE 6. XLS. El proceso de generación de un informe es:  Utilizar el iReport para generar un archivo .Enfoque Práctico iReport iReport es un poderoso.1. La utilización de este añadido permite mejorar la creación y gestión de informes durante el desarrollo de aplicaciones en Java.Jrprint al formato que deseemos (pdf.7. EN NETBEANS 6.Jasper. diseño. El resultado del informe puede ser exportado en un formato final (como PDF) o verla en el visor incorporado del JasperReports. RTF.Jrxml para obtener un archivo . intuitivo y fácil diseñador visual de informes de código abierto. INSTALACIÓN DEL PLUGIN DEL iREPORT 3. incluyendo J2EE o aplicaciones Web para generar contenido dinámico.7. Javier Alberto Manrique Quiñonez 12 . El iReport está además integrado con JFreeChart que es una de las bibliotecas gráficas de código abierto más difundida para Java. El iReport puede entregar ricas presentaciones o diseños en la pantalla. Todas estas operaciones se pueden realizar directamente en iReport como parte del proceso de creación de los informes. El iReport se puede utilizar en una gran variedad de aplicaciones de escritorio en Java. JasperReport ha desarrolado un añadido (plugin) para integrarse al IDE de NetBeans. El iReport genera archivos . la cual es la mejor herramienta de código abierto en Java para generar y gestionar informes. Ing.Jrprint  Exportar el archivo . CSV. texto y XML. Si es necesario puede utilizar parámetros de entrada para filtrar los registros en el informe.3 en NetBeans 6. Este archivo XML lo tratan las clases del JasperReports para obtener una salida.5.3-plugin en del CD de trabajo.

Java . Ing.  En Añadidos (Plugins) haga clic en la pestaña Descargas (Downloaded).Enfoque Práctico  En Herramientas (Tools) del Menú Principal haga clic en Añadidos (Plugins). Javier Alberto Manrique Quiñonez 13 .

Java - Enfoque Práctico

 En el cuadro de diálogo Añadidos (Plugins) haga clic en botón de comando Agregar Añadidos (Add
Plugins).

 En Buscar del cuadro de diálogo Agregar Añadidos (Add Plugins) ubique la carpeta
E:\Programas\iReport-nb-3.5.3-plugin del CD de trabajo y seleccione los 4 archivos y haga clic en el
botón de comando Abrir.

Ing. Javier Alberto Manrique Quiñonez

14

Java - Enfoque Práctico

 En el cuadro de diálogo Añadidos (Plugins) seleccione las casillas de verificación de los plugins ireportdesigner, jasperserver-plugin, jasperreports-components y jasperreport-extensions. Luego haga clic en
el botón de comando Instalar (Install).

 En el cuadro de diálogo de Bienvenidos al Instalador de Añadidos del NetBeans (Welcome to the
NetBeans IDE Plugin Installer) haga clic en el botón de comando siguiente.

Ing. Javier Alberto Manrique Quiñonez

15

Java - Enfoque Práctico

 En el cuadro de diálogo de Acuerdos de Licencia seleccione “Yo acepto los términos de todos los
acuerdos de la licencia” (I accept the terms in all of the license agreements) y luego haga clic en el
botón de comando Instalar (Install).

 En el cuadro de diálogo Instalar IDE NetBeans (NetBeans IDE Installer) verifique el progreso del proceso
de instalación del plugin.

Ing. Javier Alberto Manrique Quiñonez

16

Java - Enfoque Práctico

 En el cuadro de diálogo Advertencia de Validación (Validation Warning) haga clic en el botón de
comando Continuar (Continue).

 En el cuadro de diálogo Instalación (Install) verifique que el proceso de instalación está en progreso.

 En el cuadro de diálogo Instalación (Install) verifique que el proceso de instalación ha terminado
exitosamente. Luego haga clic en el botón de comando Finalizar (Finish).

Ing. Javier Alberto Manrique Quiñonez

17

Java - Enfoque Práctico

 Haga clic en la pestaña Instalados (Installed) y verifique la instalación de ireport-designer, reportserver-plugin, jasperreports-components y jasperreports-extensions. Luego haga clic en el botón de
comando Cerrar (Close).

Ing. Javier Alberto Manrique Quiñonez

18

Java - Enfoque Práctico

 En Herramientas (Tools) del Menú Principal haga clic en Librerías (Libraries).

 En el cuadro de diálogo de Administración de Librerías (Library Manager) haga clic en el botón de
comando Nueva Librería (New Library).

Ing. Javier Alberto Manrique Quiñonez

19

Java - Enfoque Práctico

 En el cuadro de diálogo de Nueva Librería (New Library) escriba como nombre de la librería
JasperReport3.5.3.

 En el cuadro de diálogo de Administración de Librerías (Library Manger) verifique que se ha añadido la
librería JasperReports3.5.3. Luego haga clic en el botón de comando Agregar JAR/Carpeta (Add
JAR/Folder).

Ing. Javier Alberto Manrique Quiñonez

20

7.1\ireport\modules y seleccione todos los archivos JAR visualizados. Luego haga clic en el botón de comando Agregar JAR/Carpeta (Add JAR/Folder).  En el cuadro de diálogo de Administración de Librerías (Library Manger) verifique que se ha añadido las librerías JasperReports3. Javier Alberto Manrique Quiñonez 21 .Java .3. Ing.Enfoque Práctico  En Buscar del cuadro de diálogo de Visualizar JAR/Carpetas (Browse JAR/Folder) ubíquese en la carpeta C:\Archivos de programa\NetBeans 6. Luego haga clic en el botón de comando Agregar JAR/Carpeta (Add JAR/Folder).5.

Luego haga clic en el botón de comando Agregar JAR/Carpeta (Add JAR/Folder).  En el cuadro de diálogo de Administración de Librerías (Library Manger) verifique que se ha añadido las librerías JasperReports3. La instalación ha terminado.7.1\ireport\modules\ext y seleccione todos los archivos JAR visualizados.5. Javier Alberto Manrique Quiñonez 22 . Finalmente haga clic en el botón de comando OK.Java . Ing.3.Enfoque Práctico  En Buscar del cuadro de diálogo de Visualizar JAR/Carpetas (Browse JAR/Folder) ubíquese en la carpeta C:\Archivos de programa\NetBeans 6.

 Soporta programación con base de datos concurrente.VARCHAR. MySQL proporciona un servidor de base de datos SQL (Structured Query Language) muy rápido. BLOB.  Posee un soporte completo para operadores y funciones en las cláusulas de consultas SELECT y WHERE. Permite el acceso y almacenamiento de datos sin preocuparse por su representación interna.  Usa tablas en disco B-tree (MyISAM) muy rápidas con compresión de índice. STD(). TIMESTAMP.000. Por ejemplo:  Posee un soporte completo para las cláusulas SQL GROUP BY y ORDER BY. Su popularidad como aplicación Web está muy ligada a PHP. AVG(). MIN(). Los usuarios pueden elegir entre usar el software MySQL como un producto Open Source bajo los términos de la licencia GNU General Public License o pueden adquirir una licencia comercial estándar de MySQL AB. MySQL tiene una doble licencia. Ing. MySQL tiene las características más importantes:     Está escrito en C y en C++ y ha sido probado con un amplio rango de compiladores diferentes. Funciona en diferentes plataformas (Windows. Pueden usarse fácilmente múltiple CPUs si están disponibles. También conocemos a usuarios que usan MySQL Server con 60. Eiffel.  DELETE. Posee APIs disponibles para Java.  Da soporte a tecnologías actuales como Inteligencia de Negocios. Está diseñado para entornos de producción críticos. Linux. que a menudo aparece en combinación con MySQL.  Tablas hash en memoria. DOUBLE. Dichas aplicaciones pueden usarse por sí mismas o en entornos donde no hay red disponible. C++. multiusuario y robusto. 4. Es una marca registrada de MySQL AB.000. DATE. además posee un sistema de reserva de memoria muy rápido basado en hilos. Javier Alberto Manrique Quiñonez 23 .  Tiene Joins muy rápidos usando un multi-join de un paso optimizado. así como para integrarse en software para ser distribuido.). INSERT. TIME. YEAR. y GROUP_CONCAT()). También está disponible como biblioteca y puede ser incrustado (linkado) en aplicaciones autónomas. Uso completo de multihilo mediante hilos del kernel.  Utiliza las siguientes tipos de columnas: enteros con/sin signo de 1.000 de registros.Java .. PHP. Perl.Enfoque Práctico MySQL Es un sistema de administración de bases de datos (DBMS) que proporciona los mecanismos para almacenar. REPLACE. MAX(). 2. que son usadas como tablas temporales. El servidor está disponible como un programa separado para usar en un entorno de red cliente/servidor. C. y 8 bytes de longitud. y UPDATE devuelven el número de filas que han cambiado (han sido afectadas). con alta carga de trabajo. Soporte de funciones de agrupación (COUNT(). MySQL es una base de datos muy rápida en la lectura que utiliza el motor no transaccional MyISAM.COUNT(DISTINCT . DATETIME. obtener y modificar datos. ENUM. etc.. organizar. Python y Ruby. Utiliza registros de longitud fija y longitud variable. TEXT.000 tablas y cerca de 5.).000.  MySQL con respecto a la escalabilidad y límites.  MySQL posee un soporte completo soporte para LEFT OUTER JOIN y RIGHT OUTER JOIN cumpliendo estándares de sintaxis SQL y ODBC. 3. CHAR.  Las funciones SQL están implementadas usando una librería altamente optimizada y rápida.  Proporciona sistema de almacenamiento transaccional y no transaccional. multihilo. MySQL es muy utilizado en aplicaciones de escritorio y en aplicaciones Web tanto en plataformas Windows y Linux. SUM(). y tipos espaciales OpenGIS. SE T. soporta grandes bases de datos que pueden contener 50 millones de registros. FLOAT.

Enfoque Práctico INSTALACIÓN DEL MySQL 5. Javier Alberto Manrique Quiñonez 24 .  Ejecutar el archivo mysql-essential-5.1.msi y hacer clic en el botón de comando Ejecutar.Java .35 se debe de realizar lo siguiente:  Ubique el archivo mysql-essential-5.  En el cuadro de diálogo de Bienvenida de Asistente de Configuración (Setup Wizard) haga clic en el botón de comando Siguiente (Next).1.1 Para la instalación del MySQL 5.1.35 -win32. Ing.35-win32 en el CD de trabajo proporcionado.

 En el cuadro de diálogo de Personalización de Configuración (Custom Setup) del Asistente de Configuración (Setup Wizard) haga clic en el botón de comando Siguiente (Next). Javier Alberto Manrique Quiñonez 25 .Java .Enfoque Práctico  En el cuadro de diálogo de Tipo de Configuración (Setup Type) del Asistente de Configuración (Setup Wizard) seleccione Personalizado (Custom) y luego haga clic en botón de comando Siguiente (Next). Ing.

Javier Alberto Manrique Quiñonez 26 .  En el cuadro de diálogo del Asistente de Configuración (Setup Wizard) verifique el progreso de la instalación.Enfoque Práctico  En el cuadro de diálogo de Listo para Instalar el Programa (Ready to Install the Program) del Asistente de Configuración (Setup Wizard) haga clic en botón de comando Instalar (Installar). Ing.Java .

 En el cuadro de diálogo MySQL Enterprise haga clic en el botón de comando Siguiente (Next).Enfoque Práctico  En el cuadro de diálogo MySQL Enterprise haga clic en el botón de comando Siguiente (Next). Javier Alberto Manrique Quiñonez 27 .Java . Ing.

 En el cuadro de diálogo de Bienvenida del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) haga clic en el botón de comando Siguiente (Next).Enfoque Práctico  En el cuadro de diálogo Asistente Completado (Wizard Completed) del Asistente de Configuración (Setup Wizard) haga clic en el botón de comando Finalizar (Finish). Ing. Javier Alberto Manrique Quiñonez 28 .Java .

Javier Alberto Manrique Quiñonez 29 .  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Maquina de Desarrollo (Developer Machine) y luego haga clic en el botón de comando Siguiente (Next). Ing.Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Configuración detallada (Detailed Configuration) y luego haga clic en el botón de comando Siguiente (Next).Java .

Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Solo Base de Datos Transaccional (Transactional Database Only) y luego hacer clic en el botón de comando Siguiente (Next). Javier Alberto Manrique Quiñonez 30 .Java . Ing.  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) haga clic en el botón de comando Next (Siguiente).

Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de Instancia de una MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Procesamiento de Transacciones en Línea OLTP (Online Transacction Processing) y luego haga clic en el botón de comando Siguiente (Next). Ing. Javier Alberto Manrique Quiñonez 31 .  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) active la casilla de verificación Permitir Trabajo en Red con TCP/IP (Enabled CP/IP Networking) y la casilla de verificación Activar Modo Estricto (Enable Strict Mode). Luego asigne como Número de Puerto (Port Number) el valor 3306 y finalmente haga clic en el botón de comando Siguiente (Next).Java .

Luego hacer clic en el botón de comando Siguiente (Next).Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Conjunto de Caracteres Estándar (Estándar Character Set) y luego haga clic en el botón de comando Siguiente (Next). Javier Alberto Manrique Quiñonez 32 . Ing.Java .  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) active la casilla Instalar como Servicio Windows (Install As Windows Service) y la casilla de verificación Levantar el MySQL Server Automáticamente (Launch the MySQL Server Automatically).

Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) active la casilla de verificación Modificar Configuración de Seguridad (Modify Security Setting).  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) verifique que el proceso de instalación de la instancia ha empezado. En Nuevo palabra clave de raíz (New root password) ingrese “12345” y luego retipee palabra clave de raíz para confirmar (Confirm) “12345”. Javier Alberto Manrique Quiñonez 33 . Ing.Java . Finalmente hacer clic en el botón de comando Siguiente (Next).

Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) verifique que el proceso de instalación de la instancia ha terminado exitosamente. Javier Alberto Manrique Quiñonez 34 .Java . Ing.

Enfoque Práctico Ing. Javier Alberto Manrique Quiñonez 35 .Java .

Javier Alberto Manrique Quiñonez 36 . detiene su recorrido. Las clases son para los objetos como los planos de construcción son para las casas. etiquetas. clase casas. sus apellidos y nombres (apellidoNombre). etc. color. botones de comando. Por ejemplo una clase docente está relacionada con una clase alumno a través de la siguiente relación: “un docente enseña a un alumno”. porque Java es un lenguaje de programación orientado a objetos. peso. ya que las clases reutilizadas han pasado por un proceso de calidad muy extenso (depuración y optimización del rendimiento). Todos ellos con la capacidad de interactuar con los usuarios. cuadros de texto. La aplicación calcula y visualiza el promedio final (promedioFinal). barras de menú. Para calcular el promedio final se utiliza la fórmula: promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo ) El producto final es: Ing. Las clases se relacionan entre si y estas relaciones se denominan asociaciones. forma. Se aprovecha las relaciones entre clases de objetos. acelera la velocidad. El DOO permite crear aplicaciones (software) modelando de los objetos sus atributos y comportamiento. Las personas comprenden los objetos estudiando sus atributos y observando su comportamiento. Los objetos encapsulan (ocultan) los atributos (variables de instancia) y comportamiento (operaciones que se implementan mediante métodos). etc) y también comportamiento (por ejemplo un auto inicia su funcionamiento. etc). barra de herramientas. areas de texto. Las clases relacionadas se pueden empaquetar en componentes reutilizables para su posterior reutilización. etc.Java . animales. Tambien se modela la comunicación entre los objetos que se caracteriza por el envio y recepción de mensajes. gira una esquina. significando que solo ellos pueden cambiar los valores de sus atributos a través de sus métodos. Las clases son las plantillas para crear nuevos objetos. autos. en donde objetos de cierta clase tienen las mismas características (atributos y comportamiento). En Java. La programación en el lenguaje de programación en Java es orientada a objetos. Reutilizar clases existentes durante el proceso de desarrollo de aplicaciones permite ahorrar tiempo y esfuerzo. de la cual se instancias los objetos (crear objetos a partir de una clase). Aprovecha las relaciones de herencia en donde nuevas clases de objetos se derivan de clases objetos ya existentes de los cuales heredan sus características (atributos y comportamientos) y agrega nuevas características según sus necesidades. con productos más confiables y efectivos. Todos los objetos similares en sus atributos y comportamiento se caracterizan por ser agrupados en una misma clase (clase persona. Las aplicaciones (software) están compuestas por muchos objetos: interfaces gráficas de usuario. clase auto. etc). El diseño orientado a objetos (DOO) modela el software en términos similares a los que utilizan las personas para describir el mundo real. Todos los objetos tienen atributos (tamaño. la evaluación parcial 1 (evaluacionParcial1).Enfoque Práctico Programación Orientada a Objetos El mundo real está formado por objetos: personas. casas. la unidad básica de programación es una clase. A continuación se presenta el desarrollo de una aplicación en la cual se ingresa el código del alumno (alumno_id). la evaluación parcial 2 (evaluacionParcial2) y el promedio de trabajo (promedioDeTrabajo). cuadros de diálogo.

Java .Enfoque Práctico Para el desarrollo de la aplicación debe realizar las siguientes actividades:  Haga clic derecho en File (Archivo) y cree un proyecto vacío de Java  Seleccione un proyecto de Aplicación Java (Java Application). Ing. Javier Alberto Manrique Quiñonez 37 .

Desmarcar la casilla de verificación Cree una Clase Principal (Create Main Class) y luego haga clic en Finalizar (Finish).  Haga clic derecho en el Proyecto ProyectoProgramacionConObjetos y cree un Paquete denominado PaqueteProgramacionConObjetos.Enfoque Práctico  Asigne como Nombre de Proyecto (Project Name) ProyectoProgramacionConObjetos.Java . Localización del proyecto (Project Location) c:\NetBeansProjects y como Carpeta del Proyecto (Project Folder) c:\NetBeansProjects\ProyectoProgramacionConObjetos. Ing. Javier Alberto Manrique Quiñonez 38 .

Enfoque Práctico  Asigne como Nombre de Paquete (Package Name) PaqueteProgramacionConObjetos.  Haga clic derecho en PaqueteProgramacionConObjetos y cree una clase Java (Java Class) dentro del paquete PaqueteProgramacionConObjetos. Luego haga clic en Finalizar (Finish).Java . Ing. Localización (Location) Source Packages y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoProgramacionConObjetos\src\ PaqueteProgramacionConObjetos. Javier Alberto Manrique Quiñonez 39 . Proyecto (Project) ProyectoProgramacionConObjetos.

Luego haga clic en Finalizar (Finish). apellidoNombre de tipo String.Enfoque Práctico  Asigne como Nombre de Clase (Class name) Alumno. Ing. promedioDeTrabajo de tipo double y promedioFinal de tipo double. Javier Alberto Manrique Quiñonez 40 . evaluacionParcial1 de tipo double.  Haga clic en la clase Alumno y agregue las variables privadas alumno_id de tipo int.Java . paquete (Package) PaqueteProgramacionConObjetos y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProgramacionConObjetos\src\PaqueteProgramacionConObjetos \ Alumno.java. Proyecto (Project) ProyectoProgramacionConObjetos. localización (Location) Source Packages. evaluacionParcial2 de tipo double.

Enfoque Práctico  Haga clic en la clase Alumno después de la variable promedioFinal. Luego haga clic derecho y seleccione la opción Insert Code. Javier Alberto Manrique Quiñonez 41 . Ing.Java .

Enfoque Práctico  Luego seleccione la opción Gether and Sether. Javier Alberto Manrique Quiñonez 42 .  Marque todos los cuadros de chequeo (check box). Ing.Java .

Javier Alberto Manrique Quiñonez 43 . Ing.Java .Enfoque Práctico  Verifique el código de los métodos get y set insertados.

Java .  Verifique que el código de la Clase Alumno se presente como en el siguiente listado. public class Alumno { private int alumno_id. private double promedioDeTrabajo. Ing. private double evaluacionParcial1.  Inserte dos métodos constructores a la clase Alumno tal como se muestra en el gráfico siguiente.Enfoque Práctico  Modifique el código del método setPromedioFinal borrando el parámetro double promedioFinal. Javier Alberto Manrique Quiñonez 44 . private String apellidoNombre. private double promedioFinal. private double evaluacionParcial2. package PaqueteProgramacionConObjetos.

double promedioDeTrabajo.evaluacionParcial1.evaluacionParcial2 = 0. this. } public String getApellidoNombre() { return this. double evaluacionParcial1. } public double getEvaluacionParcial1() { return this.apellidoNombre=null. Javier Alberto Manrique Quiñonez 45 . this.alumno_id. } public void setEvaluacionParcial2 (double evaluacionParcial2) { this.promedioFinal = promedioFinal . double evaluacionParcial2. } public int getAlumno_id() { return this. } public void setApellidoNombre(String apellidoNombre) { this. this. } public void setEvaluacionParcial1 (double evaluacionParcial1) { this. } public void setAlumno_id(int alumno_id) { this. String apellidoNombre.evaluacionParcial2.apellidoNombre = apellidoNombre.promedioDeTrabajo = promedioDeTrabajo. this.Enfoque Práctico public Alumno() { this. promedioFinal = 0. this. } Ing.evaluacionParcial2 = evaluacionParcial2.alumno_id = alumno_id.promedioDeTrabajo = 0. this. this.alumno_id=0.evaluacionParcial1 = evaluacionParcial1.Java . this.alumno_id = alumno_id.apellidoNombre. } public Alumno(int alumno_id. this.evaluacionParcial1 = 0. double promedioFinal) { this.apellidoNombre = apellidoNombre. this.evaluacionParcial2 = evaluacionParcial2.evaluacionParcial1 = evaluacionParcial1. } public double getEvaluacionParcial2() { return this.

} public void setPromedioFinal() { this. } }  Haga clic derecho en PaqueteProgramacionConObjetos y cree un Formulario Java (JFrame Java) dentro del Paquete PaqueteProgramacionConObjetos.Enfoque Práctico public double getPromedioDeTrabajo() { return this.promedioDeTrabajo)/3.evaluacionParcial2+this.Java . Javier Alberto Manrique Quiñonez 46 .promedioDeTrabajo. } public double getPromedioFinal() { return this.evaluacionParcial1+this. } public void setPromedioDeTrabajo(double promedioDeTrabajo) { this. Ing.promedioFinal=(this.promedioFinal. promedioDeTrabajo = promedioDeTrabajo.

 Verifique que el proyecto se presente como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 47 .java.java. Localización (Location) Source Packages. Ing. Luego haga clic en Finalizar (Finish). Proyecto (Project) ProyectoProgramacionConObjetos.Enfoque Práctico  Asigne como Nombre de Clase (Class name) JFrameProgramacionConObjetos. Paquete (Package) PaqueteProgramacionConObjetos y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoProgramacionconObjetos\src\PaqueteProgramacionconObjetos\ JFrameProgramacionconObjetos.Java .

Enfoque Práctico  Haga doble clic en cuadro de diálogo JFrameProgramacionConObjetos. Javier Alberto Manrique Quiñonez 48 .Java .  Haga clic en la Ventana Inspector y verifique la presencia de los objetos que se visualizan en la ventana Design. Text Field (06) y Button (03). Luego haga clic en la pestaña Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label (07). Ing. tal como se presenta en el siguiente gráfico.

 Pulse las teclas Control-Mayúsculas-7 para visualizar la Ventana de Propiedades.Java . Ing. Javier Alberto Manrique Quiñonez 49 . Modifique la propiedad Text del objeto jLabelTitulo con el texto “Insertar alumnos”.Enfoque Práctico  Renombre los objetos en la ventana Inspector tal se presenta como en el siguiente gráfico.

Javier Alberto Manrique Quiñonez 50 .java para visualizar la ventana de Propiedades (Properties).Java .Enfoque Práctico  Cambie la propiedad Text de cada control Swing para que sea como el de la siguiente tabla. Nombre del Control Swing en el Inspector Propiedad Text del Control Swing jLabelTitulo Insertar alumnos jLabelAlumno_id Alumno_id: jLabel ApellidoNombre Apellido y nombre: jLabelEvaluacionParcial1 EvaluaciónParcial 1: jLabelEvaluacionParcial2 EvaluaciónParcial 2: jLabelPromedioDeTrabajo Promedio de Trabajo: jLabelPromedioFinal Promedio final: jButtonAceptar Aceptar jButtonReiniciar Reiniciar jButtonSalir Salir  Haga clic en alguna parte del Panel de Diseño (Designer) del jDialog JDialogInsertarAlumno. Ing.

Javier Alberto Manrique Quiñonez 51 .  Haga clic derecho en el objeto jButtonAceptar y seleccione en el menú conceptual Event-ActionactionPerformed para programar en evento clic del botón de comando. Ing.Java .Enfoque Práctico  Modifique la propiedad defaultCloseOperation y escriba DISPOSE (deshacerse).

}  Repita el proceso anterior y agregue el código del evento clic del objeto jButtonSalirActionPerformed.setText("").event. private void jButtonSalirActionPerformed(java. if (respuesta == JOptionPane.awt. y agregue el código del evento clic del objeto private void jButtonReiniciarActionPerformed(java. Alumno. "¿Esta seguro.setAlumno_id(Integer.parseDouble(jTextFieldPromedioDeTrabajo.getPromedioFinal()+"").event.getText())).setText(""). jTextFieldEvaluacionParcial2.setApellidoNombre( jTextFieldApellidoNombre..setText(""). jTextFieldPromedioDeTrabajo. Javier Alberto Manrique Quiñonez 52 . Ing.parseInt( jTextFieldAlumno_id.setEvaluacionParcial2(Double.getText()).showConfirmDialog(this. "Dialogo de Confirmación". jTextFieldPromedioFinal..Java .parseDouble(jTextFieldEvaluacionParcial2. jTextFieldApellidoNombre.setPromedioDeTrabajo(Double.parseDouble(jTextFieldEvaluacionParcial1. JOptionPane.setText(oAlumno. private void jButtonAceptarActionPerformed(java.getText())).?".getText())). oAlumno.awt. oAlumno. oAlumno.setEvaluacionParcial1(Double.YES_NO_OPTION. Debe presentarse errores en JOpcionPane.setText("").Enfoque Práctico  Agregue el código del evento clic del objeto jButtonAceptarActionPerformed. oAlumno. jTextFieldEvaluacionParcial1.setText(""). } }  Verique el código del botón de comando jBuutonSalirActionPerformed.ActionEvent evt) { jTextFieldAlumno_id. }  Repita el proceso anterior jButtonReiniciarActionPerformed. jTextFieldPromedioFinal.setText("").YES_OPTION) { dispose().event.ActionEvent evt) { Alumno oAlumno=new Alumno().YES_NO_OPTION).setPromedioFinal().getText())).awt. oAlumno.ActionEvent evt) { int respuesta = JOptionPane.

Javier Alberto Manrique Quiñonez 53 .Java .  Verifique la instrucción import agregada.Enfoque Práctico  Haga clic derecho en la palabra JOptionPane. Ing.YES_OPTION y seleccione Fix Imports (Refaccionar Importaciones).

Javier Alberto Manrique Quiñonez 54 .Java .Enfoque Práctico  Agregue una clase principal de Java (Java Main Class) tal como se presenta en el siguiente gráfico.  Verifique la clase Java Main Class agregada. Ing.  Agregue el código tal como se presenta en el siguiente gráfico.

Java . Haga clic en el botón de comando Reiniciar.  Verifique la ejecución de la aplicación creada. Haga clic en el botón de comando Aceptar.Enfoque Práctico  Verifique la ejecución de la aplicación creada. Javier Alberto Manrique Quiñonez 55 . Ing.

 Verifique la ejecución del proyecto creado. Haga clic en el botón de comando Salir.Java . Ing.Enfoque Práctico  Verifique la ejecución de la aplicación creada. Javier Alberto Manrique Quiñonez 56 . Haga clic en el botón de comando Si (Yes).

Javier Alberto Manrique Quiñonez 57 .Enfoque Práctico Ing.Java .

Java . disco. se denomina estructura de datos externa. Tienen un solo índice. TIPOS DE ARREGLOS Los arreglos se clasifican según su dimensión en:  Unidimensionales  Bidimensionales  Multidimensionales ARREGLOS UNIDIMENSIONALES Son arreglos de una sola dimensión. Los arreglos son utilizados muy seguidos para realizar ordenación y búsqueda de datos utilizando la memoria central (memoria RAM). La estructura de datos más importante desde el punto de vista de utilización es el arreglo. Contienen un número fijo. Declara un arreglo llamado nota que contiene 100 elementos de tipo enteros (int). matriz o poliedro. Esta estructura corresponde con los conceptos matemáticos de vector. CONCEPTOS Y DEFINICIONES Los arreglos son estructuras de datos que consisten en elementos de datos relacionados. double. El tamaño del arreglo es la longitud (número de elementos) multiplicado por el tipo de dato. Dicha clase contiene variables (atributos) de diferente tipo y métodos con los cuales se manipulan dichas variables.) contienen referencias a objetos de un tipo de clase en especial. es conveniente tratar el conjunto de datos de forma unitaria en lugar de utilizar 100 variables para cada dato simple. float. Los arreglos de objetos son arreglos que en vez de contener elementos de datos primitivos (int. Un arreglo es el realidad una referencia a un objeto arreglo en memoria. ARREGLOS DE OBJETOS En Java no se emplea el término "registro" sino el de “objeto”. de tal forma que constituyen una unidad para su tratamiento. cd. pudiendo por tanto intervenir en instrucciones de asignación/cáculo. cinta. etc. Los elementos de un arreglo se utilizan de la misma forma que cualquier variable de un programa. etc. La declaración de un arreglo tiene la siguiente sintaxis: TipoDeDato nombreDeVariable = new TipoDeDato [ NúmeroDeElementos ] Ejemplo: int nota [ ] = new int [ 100 ]. Un conjunto de datos homogéneo que se tratan como una sola unidad se denomina estructura de datos. Recíprocamente si reside en un soporte externo (disquete. Si una estructura de datos reside en memoria central (memoria RAM). se llama estructura de datos interna. Ing. También se denominan vectores. entrada/salida. Cada elemento del arreglo se accesa mediante su nombre seguido del número correspondiente al índice que se escribe entre corchetes. que es implementado en la totalidad de lenguajes de programación. Si se quiere manipular una lista de 100 notas de alumnos. los cuales son del mismo tipo y tienen un nombre común para todos ellos.Enfoque Práctico ARREGLOS En un gran número de problemas es necesario manejar un conjunto de datos más o menos grande que estén relacionados entre sí. La longitud de un arreglo es el número de elementos que contiene. La posición de cada elemento viene determinada por uno o varios índices de tipo entero. memoria USB. A cada elemento se le puede acceder de forma directa indicando el nombre del arreglo y su(s) respectivo índice(s). finito y ordenado de elementos contiguos. La utilización de arreglos se puede potenciar con el uso de punteros. Javier Alberto Manrique Quiñonez 58 . Cada variable se referencia empleando un nombre de campo los cuales son realmente el nombre de las instancias de las variables.

Si la longitud de la serie es N. para lo cual en la declaración del método se debe de poner como tipo de retorno un arreglo de objetos el cual tiene corchetes. Ing. } Los métodos pueden tener tipo de retorno de tipo arreglo.Enfoque Práctico Los elementos de un arreglo de objetos están numerados y para referirnos a un elemento concreto. Para que un método reciba un arreglo de objetos (la referencia al arreglo de objetos) la lista de parámetros del método debe especificar un parámetro de tipo arreglo de objetos el cual tiene corchetes. Javier Alberto Manrique Quiñonez 59 . Ejemplo: insertar(oAlumno). Esto es el índice del primer elemento de la serie es 0. Los arreglos de objetos se crean usando el operador new. el índice del último elemento del arreglo de objetos será n-1. utilizaremos su número de posición denominado índice. Ejemplo: Alumno oAlumno = new Alumno().Java . for(int i=0. } PASO Y RETORNO DE ARREGLOS A LOS MÉTODOS Para pasar un argumento de tipo arreglo de objetos (la referencia al arreglo de objetos) se especifica el nombre del arreglo sin corchetes. REFERENCIACIÓN A LOS ELEMENTOS DE ARREGLO Para referenciar los elementos de un arreglo y poder accesar a sus atributos (campos) se utiliza un bucle for y dentro de él.i=i+1) { oAlumno[i]=new Alumno(). CREACION DE UN ARREGLO DE OBJETOS Para crear un arreglo de objetos se utiliza el operador new. la referenciación a cada elemento utilizando el operador new. los elementos de un arreglo de objetos se empiezan a numerar desde cero. A continuación se presenta un modelo que representa un arreglo de objetos. public static Alumno[] insertar(Alumno[] oAlumno) { … return oAlumno. En Java.i<100.

Java . Si lo encuentra en el arreglo de registros lo presenta en pantalla. Si no lo encuentra presenta el mensaje "No se encuentra el registro !!!". Esta opción solicita el código del alumno (alumno_id). Se utiliza los atributos código del alumno (alumno_id). Esta opción solicita que se ingrese el código del alumno (alumno_id). la evaluación parcial 2 (evaluacionParcial2) y el promedio de trabajo (promedioDeTrabajo). } A continuación se presenta el desarrollo de una aplicación en el cual se utiliza un arreglo de objetos para almacenar los datos de un alumno. calcular su promedio final y mostrar los datos del alumno con su promedio final calculado. Si lo encuentra en el arreglo de registros lo presenta en pantalla y solicita nuevos datos (atributos apellidoNombre. El promedio final (promedioFinal) se calcula con la siguiente fórmula: promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo ) Nota: Para mayor comodidad al término “arreglo de objeto” lo denominaremos “arreglo de registros”. Esto se hace con el propósito de poder utilizar el mismo término en los capítulos posteriores.Enfoque Práctico public static Alumno[] insertar(Alumno[] oAlumno) { … return oAlumno. sus apellidos y nombres (apellidoNombre). La aplicación desarrollada para correr en consola presenta el siguiente menú de opciones: Cada opción se describe a continuación:  La ejecución de la opción I permite insertar objetos al arreglo de registros.  La ejecución de la opción M permite modificar un registro almacenado en el arreglo de registros. Esta opción solicita que se ingrese el código del alumno (alumno_id). Si lo encuentra presenta el mensaje “Registro encontrado !!!”  La ejecución de la opción C permite consultar un registro almacenado en el arreglo de registros. Javier Alberto Manrique Quiñonez 60 . evaluacionParcial1. Ing. la evaluación parcial 1 (evaluacionParcial1). evaluacionParcial2 y promedioDeTrabajo). Si no lo encuentra en el arreglo de registros permite ingresar los otros datos (apellidoNombre.

 La ejecución de la opción E permite eliminar registros al arreglo de registros. El término borrado siginifica poner en el atributo alumno_id el valor -99. Note que el promedio final se visualiza con el valor 0. Si no lo encuentra presenta el mensaje "No se encuentra el registro !!!". Si lo encuentra en el arreglo de registros lo presenta en pantalla y lo borra inmediatamente.  La ejecución de la opción L permite listar los los registros al arreglo de registros. evaluacionParcial2 y promedioDeTrabajo) los cauales reemplazan a los anteriores. Ing.Enfoque Práctico evaluacionParcial1.  La ejecución de la opción P permite calcular el promedio final de los registros del arreglo. Esta opción solicita que se ingrese el código del alumno (alumno_id). Si no lo encuentra presenta el mensaje "No se encuentra el registro !!!". Para visualizar el promedio final calculado tiene que ejecutar la opción [L]istar. Note que el promedio final se visualiza con el valor 0. Para visualzar el promedio final calculado tiene que ejecutar la opción [P]rocesar notas. Javier Alberto Manrique Quiñonez 61 . Para el desarrollo de la aplicación debe realizar las siguientes actividades:  Haga clic derecho en File (Archivo) y cree un proyecto vacío de Java.  La ejecución de la opción S se sale de la aplicación.Java .

Javier Alberto Manrique Quiñonez 62 .Enfoque Práctico  Seleccione un proyecto de Aplicación Java (Java Application).  Asigne como Nombre de Proyecto (Project Name) ProyectoArregloDeObjetos.Java . Localización del proyecto (Project Location) c:\NetBeansProjects y como Carpeta del Proyecto (Project Folder) Ing.

 Haga clic derecho en el Proyecto ProyectoArregloDeObjetos y cree un Paquete. Proyecto (Project) ProyectoArregloDeObjetos. Localización (Location) Source Packages y como Carpeta Creada (Created Ing. Desmarcar la casilla de verificación Cree una Clase Principal (Create Main Class) y luego haga clic en Finalizar (Finish).  Asigne como Nombre de Paquete (Package Name) PaqueteArregloDeObjetos.Java . Javier Alberto Manrique Quiñonez 63 .Enfoque Práctico c:\NetBeansProjects\ProyectoArregloDeObjetos.

Luego haga clic en Finalizar (Finish).Java .  Asigne como Nombre de Clase (Class name) Alumno. Proyecto (Project) ProyectoArregloDeObjetos. Javier Alberto Manrique Quiñonez 64 . paquete (Package) PaqueteArregloDeObjetos y como Carpeta Ing.Enfoque Práctico Folder) c:\NetBeansProjects\ArregloDeObjetos\src\ PaqueteArregloDeObjetos. localización (Location) Source Packages.  Haga clic derecho en PaqueteArregloDeObjetos y cree una Java Class.

alumno_id = alumno_id. private double promedioDeTrabajo. promedioFinal = 0.promedioFinal = promedioFinal . private String apellidoNombre. this. double evaluacionParcial2. this. this.alumno_id=0.  Agregue el siguiente código para la clase Alumno. private double promedioFinal. Luego haga clic en Finalizar (Finish).Enfoque Práctico Creada (Created Folder) c:\NetBeansProjects\ProyectoArregloDeObjetos\src\PaqueteArregloDeObjetos \ Alumno. public class Alumno { private int alumno_id. double promedioFinal) { this.promedioDeTrabajo = promedioDeTrabajo.java. Javier Alberto Manrique Quiñonez 65 . this.evaluacionParcial1 = 0. double promedioDeTrabajo.promedioDeTrabajo = 0.evaluacionParcial2 = 0. this. this. package PaqueteAccesoBaseDeDatosConJava.apellidoNombre = apellidoNombre. String apellidoNombre.Java . private double evaluacionParcial1.evaluacionParcial2 = evaluacionParcial2. } public int getAlumno_id() Ing. } public Alumno(int alumno_id. public Alumno() { this. double evaluacionParcial1. this. this.evaluacionParcial1 = evaluacionParcial1. this. this.apellidoNombre=null. private double evaluacionParcial2.

evaluacionParcial1+this.Java .Enfoque Práctico { return this. } public void setAlumno_id(int alumno_id) { this.evaluacionParcial2+this. } }  Cree un nuevo paquete. } public double getPromedioFinal() { return this.evaluacionParcial2 = evaluacionParcial2. Ing. } public double getEvaluacionParcial1() { return this.apellidoNombre = apellidoNombre. } public String getApellidoNombre() { return this.alumno_id.evaluacionParcial1 = evaluacionParcial1.promedioDeTrabajo)/3.promedioDeTrabajo.evaluacionParcial2. Javier Alberto Manrique Quiñonez 66 . } public void setPromedioDeTrabajo(double promedioDeTrabajo) { this. } public void setPromedioFinal() { this. } public double getPromedioDeTrabajo() { return this.evaluacionParcial1. } public double getEvaluacionParcial2() { return this. promedioDeTrabajo = promedioDeTrabajo.promedioFinal=(this. } public void setEvaluacionParcial1 (double evaluacionParcial1) { this.alumno_id = alumno_id. } public void setEvaluacionParcial2 (double evaluacionParcial2) { this.apellidoNombre.promedioFinal. } public void setApellidoNombre(String apellidoNombre) { this.

Luego haga clic en Finalizar (Finish).Java . Javier Alberto Manrique Quiñonez 67 .  Dentro del paquete PaqueteBiblioteca cree la clase denominada ClaseLectura. Ing. Localización (Location) Source Packages y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArregloDeObjetos\src\PaqueteBiblioteca. Proyecto (Project) ProyectoArregloDeObjetos.Enfoque Práctico  Asigne como Nombre de Paquete (Package Name) PaqueteBiblioteca.

} catch (NumberFormatException e) { System. return leerFloat(). return leerDouble(). Javier Alberto Manrique Quiñonez 68 ..valueOf(leerString()).print("ERROR.length==1) c=c1[0]. (Cortesía del Ing.Java . \n Ingrese de nuevo : ").out. J. return c.print("ERROR.F.. if (c1. \n Ingrese de nuevo:")....C. } } public static long leerLong() { try Ing.) package PaqueteBiblioteca.print("ERROR.toCharArray().N. } } public static float leerFloat() { try { return Float. } } public static int leerInt() { try { return Integer.J. \n Ingrese de nuevo:").S.Enfoque Práctico  Agregue el siguiente código para la clase ClaseLectura. } catch (NumberFormatException e) { System.J Flores Cueto – U.parseInt(leerString()).valueOf(leerString()). char [] c1=leerString().out.floatValue().doubleValue(). public class ClaseLectura { public static char leerChar() { char c=' '.out. import java. } catch (NumberFormatException e) { System..io. } public static double leerDouble() { try { return Double. return leerInt().*.

 Agregue a la aplicación arreglos de objetos el siguiente código..shortValue().Enfoque Práctico { return Long. return leerShort().out.Java . } catch (NumberFormatException e) { System. in)).valueOf(leerString()).valueOf(leerString()). } return cadena.out. Ing. } } Nota: El código anterior (ClaseLectura.  Cree una nueva clase denominada AplicacionArregloDeObjetos. String cadena ="". \n Ingrese de nuevo:").print("ERROR..print("ERROR... } catch (NumberFormatException e) { System.readLine(). try { cadena = in.println(e).longValue(). } } public static short leerShort() { try { return Short.out.java) puede descargarlo del cd de trabajo proporcionado por el autor. leerLong(). Javier Alberto Manrique Quiñonez 69 . \n Ingrese de nuevo:"). } } public static String leerString() { BufferedReader in = new BufferedReader(new InputStreamReader(System. } catch (IOException e) { System.

Java - Enfoque Práctico

package PaqueteArregloDeObjetos;
import PaqueteBiblioteca.ClaseLectura;
public class AplicacionArregloDeObjetos
{ static int numeroDeAlumno=0;
public static void main(String[ ] args)
{ char opcion=' ';
Alumno oAlumno[]=new Alumno[100];
for(int i=0;i<100;i=i+1)
{ oAlumno[i]=new Alumno();
}
do
{ System.out.println(" M E N U");
System.out.println(" =======");
System.out.println(" [I]nsertar");
System.out.println(" [C]onsulta");
System.out.println(" [M]odificar");
System.out.println(" [E]liminar");
System.out.println(" [L]istar");
System.out.println(" [P]rocesar notas");
System.out.println(" [S]alir ");
System.out.print(" Elija su opción : ");
opcion=Character.toUpperCase(ClaseLectura.leerChar());
switch (opcion)
{ case 'I' :
case 'C' :
case 'E' :
case 'M':
case 'P':
case 'L':

insertar(oAlumno);
break ;
consulta(oAlumno);
break ;
eliminar(oAlumno);
break ;
modificar(oAlumno);
break ;
procesarPromedio(oAlumno);
break ;
listar(oAlumno);
break ;

}
}
while (opcion!='S');
}

public static Alumno[] insertar(Alumno[] oAlumno)
{ int busqueda;
int posicion=0;
System.out.print("Alumno_id : "); busqueda=ClaseLectura.leerInt();
posicion=buscarRegistro(busqueda,oAlumno);
if (posicion==-99)
{ oAlumno[AplicacionArregloDeObjetos.numeroDeAlumno].setAlumno_id(busqueda);
leerRegistro(AplicacionArregloDeObjetos.numeroDeAlumno ,oAlumno);
AplicacionArregloDeObjetos.numeroDeAlumno++;
}
else
{ System.out.println("Registro encontrado !!!");
Ing. Javier Alberto Manrique Quiñonez

70

Java - Enfoque Práctico

}
return oAlumno;
}
public static void consulta(Alumno[] oAlumno)
{ int busqueda;
int posicion=0;
System.out.print("Alumno_id : "); busqueda=ClaseLectura.leerInt();
posicion=buscarRegistro(busqueda,oAlumno);
if (posicion!=-99)
{ visualizarRegistro(posicion, oAlumno);
}
else
{ System.out.println("No se encuentra el registro !!!");
}
}
public static Alumno[] modificar(Alumno[] oAlumno )
{ int busqueda;
int posicion=0;
System.out.print("Alumno_id : "); busqueda=ClaseLectura.leerInt();
posicion=buscarRegistro(busqueda,oAlumno);
if (posicion!=-99)
{ visualizarRegistro(posicion,oAlumno);
leerRegistro(posición,oAlumno);
}
else
{ System.out.println("No se encuentra el registro !!!");
}
return oAlumno;
}
public static Alumno[] eliminar(Alumno[] oAlumno) // se cambia alumno_id por un valor -99
{ int busqueda;
int posicion=0;
System.out.print("Alumno_id : "); busqueda=ClaseLectura.leerInt();
posicion=buscarRegistro(busqueda,oAlumno);
if (posicion!=-99)
{ visualizarRegistro(posicion , oAlumno);
oAlumno[posicion].setAlumno_id(-99);
System.out.println("Se borró el registro !!!");
}
else
{ System.out.println("No se encuentra el registro !!!");
}
return oAlumno;
}
public static Alumno[] procesarPromedio(Alumno[] oAlumno)
{ for (int i=0;i< AplicacionArregloDeObjetos.numeroDeAlumno;i=i+1)
{ oAlumno[i].setPromedioFinal();
}
System.out.println("Promedios calculados !!!");
return oAlumno;
}
public static void listar(Alumno[] oAlumno)
{ System.out.println("Alumno_id"+"\t"+"Apellido"+"\t"+"Nombre"+"\t"+"Ep1"+"\t"+
Ing. Javier Alberto Manrique Quiñonez

71

Java - Enfoque Práctico

"Ep2"+"\t"+"Pt"+"\t"+"Pf"+"\n");
for (int i=0;i< AplicacionArregloDeObjetos.numeroDeAlumno;i=i+1)
{ System.out.print(oAlumno[i].getAlumno_id()+"\t");
System.out.print(oAlumno[i].getApellidoNombre()+"\t");
System.out.print(oAlumno[i].getEvaluacionParcial1()+"\t");
System.out.print(oAlumno[i].getEvaluacionParcial2()+"\t");
System.out.print(oAlumno[i].getPromedioDeTrabajo()+"\t");
System.out.print(oAlumno[i].getPromedioFinal()+"\n");
}
}
public static int buscarRegistro(int busqueda,Alumno[] oAlumno)
{ int encontrado=0;
int posicion=0;
while ((posicion< AplicacionArregloDeObjetos.numeroDeAlumno) && (encontrado==0))
{ if (oAlumno[posicion].getAlumno_id()==busqueda)
{ encontrado=1;
}
else
{ posicion++;
}
}
if (encontrado==1)
{ return posicion;
}
else
{ return -99;
}
}

public static void visualizarRegistro(int posicion , Alumno[] oAlumo,)
{ System.out.print("Apellido y Nombre : "+oAlumno[posicion].getApellidoNombre()+"\n");
System.out.print("Evaluación parcial 1 : "+oAlumno[posicion].getEvaluacionParcial1()+"\n");
System.out.print("Evaluación parcial 2 : "+oAlumno[posicion].getEvaluacionParcial2()+"\n");
System.out.print("Promedio de trabajo :”+oAlumno[posicion].getPromedioDeTrabajo()+"\n");
System.out.print("Promedio final
: "+oAlumno[posicion].getPromedioFinal()+"\n");
}

public static void leerRegistro(int posicion , (Alumno[] oAlumno)
{ System.out.print("Apellido y Nombre : ");
oAlumno[posicion].setApellidoNombre(ClaseLectura.leerString());
System.out.print("Evaluación parcial 1 : ");
oAlumno[posicion].setEvaluacionParcial1(ClaseLectura.leerDouble());
System.out.print("Evaluación parcial 2 : ");
oAlumno[posicion].setEvaluacionParcial2(ClaseLectura.leerDouble());
System.out.print("Promedio de trabajo : ");
oAlumno[posicion].setPromedioDeTrabajo(ClaseLectura.leerDouble());
}
}

 Verifique laa ejecución de la aplicación mostrando el menú de opciones.

Ing. Javier Alberto Manrique Quiñonez

72

Java - Enfoque Práctico

 La ejecución de la aplicación mostrando la ejecución de la opción [I]nsertar.

 La ejecución de la aplicación mostrando la ejecución de la opción [L]istar.

Ing. Javier Alberto Manrique Quiñonez

73

Java - Enfoque Práctico

Ing. Javier Alberto Manrique Quiñonez

74

Java - Enfoque Práctico

SISTEMA DE MENÚ CON GUI
La interfaz gráfica de usuario, conocida también como GUI (del inglés graphical user interface) es un tipo
de interfaz de usuario que utiliza objetos gráficos para representar la información y acciones disponibles
en la interfaz.
Habitualmente las acciones se realizan mediante manipulación directa para facilitar la interacción del
usuario con la computadora. Surge de la evolución de la línea de comandos de los primeros sistemas
operativos y es pieza fundamental en un entorno gráfico. Como ejemplo de interfaz gráfica de usuario
podemos citar el entorno de escritorio del sistema operativo Windows, el X-Window de GNU/Linux o el de
Mac OS X, Aqua.
En el contexto del proceso de interacción persona-computadora, la interfaz gráfica de usuario es el
artefacto tecnológico de un sistema interactivo que posibilita, a través del uso y la representación del
lenguaje visual, una interacción amigable con un sistema informático.
Java utiliza la biblioteca gráfica Swing, la que permite construir interfaces gráficas de usuario utlizando
objetos como formularios, cajas de díalogo, barras de menús, barras de herramientas, etiquetas, cajas de
texto, areas de texto, botones de comando, botones de radio, cuadros combinados, listas deplegables, etc.
El paquete Swing es parte de la JFC (Java Foundation Classes) en la plataforma Java. La JFC provee
facilidades para ayudar a la gente a construir Interfaz Gráfica de Usuario.
La Estructura básica de una aplicación Swing se construye mezclando componentes con las siguientes
reglas:
 Debe existir, al menos, un contenedor de alto nivel (Top-Level Container), que provee el soporte que los
componentes Swing necesitan para el pintado y el manejo de eventos.
Un Top-Level Container puede ser:
 Formulario (JFrame): una ventana independiente.
 Cuadro de Diálogo (JDialog): ventanas de interacción sencilla con el usuario como por ejemplo:
 java.swing.JOptionPane: Ventana de diálogo tipo SI_NO, SI_NO_CANCELAR, ACEPTAR, etc...
 java.swing.JFileChooser: Ventana para elejir un archivo.
 java.swing.JColorChooser
 etc.
 Los contenedores de alto nivel sirven permiten colgar otros tipos de contenedores o componentes
simples).
 Se pueden agregar objetos (etiquetas, cajas de texto, botones de comando, etc) a los contenedores
para la construcción de la interfaz gráfica de usuario.
 Cada vez que el usuario interactúa con la aplicación se gatilla un evento. Para que un componente
determinado reaccione frente a un evento, debe poseer un "escuchador" con, al menos, un método
determinado que se ejecutará al escuchar un evento en particular. Swing puede generar un variado
conjunto de eventos y dentro de los más comunes tenemos:
Ejemplos de eventos y sus escuchadores
Acción que gatilla un evento

Tipo de escuchador

El usario hace un click, presiona Return
ActionListener
en un área de texto o selecciona un menú
El usuario hace un click sobre una componente

MouseListener

El usuario pasa el mouse sobre una componente MouseMotionListener
Una componente adquiere el foco del teclado

FocusListener

Cambia la selección en una lista o tabla

ListSelectionListener

Ing. Javier Alberto Manrique Quiñonez

75

Java - Enfoque Práctico

Para el desarrollo de la aplicación para crear un sistema de menú con GUI se debe realizar las siguientes
actividades:
 Haga clic derecho en File (Archivo) y cree un proyecto vacío de Java

 Seleccione un proyecto de Aplicación Java (Java Application).

Ing. Javier Alberto Manrique Quiñonez

76

Java - Enfoque Práctico

 Asigne como Nombre de Proyecto (Project Name) ProyectoSistemaDeMenu, Localización del proyecto
(Project Location) c:\NetBeansProjects y como Carpeta del Proyecto
(Project Folder)
c:\NetBeansProjects\ProyectoSistemaDeMenu. Desmarcar la casilla de verificación Cree una Clase
Principal (Create Main Class) y luego haga clic en Finalizar (Finish).

 Haga clic derecho en el Proyecto ProyectoSistemaDeMenu y cree un Paquete dentro del proyecto
ProyectoSistemaDeMenu.

Ing. Javier Alberto Manrique Quiñonez

77

Java - Enfoque Práctico

 Asigne como Nombre de Paquete (Package Name) PaqueteSistemaDeMenu, Proyecto (Project)
ProyectoSistemaDeMenu, Localización (Location) Source Packages y como Carpeta Creada (Created
Folder) c:\NetBeansProjects\ProyectoSistemaDeMenu\src\PaqueteSistemaDeMenu. Luego haga clic en
Finalizar (Finish).

 Haga clic derecho en PaqueteSistemaDeMenu y cree un formulario JFrame dentro del paquete
PaqueteSistemaDeMenu.

Ing. Javier Alberto Manrique Quiñonez

78

Java - Enfoque Práctico

 Asigne como Nombre de Clase (Class name) JFrameSistemaDeMenu, Proyecto (Project)
ProyectoSistemaDeMenu, localización (Location) Source Packages, paquete (Package)
PaqueteSistemaDeMenu
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoSistemaDeMenu\src\PaqueteSistemaDeMenu\
JFrameSistemaDeMenu.java. Luego haga clic en Finalizar (Finish).

 Verifique que el Proyecto ProyectoSistemaDeMenú se presente como en el siguiente gráfico.

Ing. Javier Alberto Manrique Quiñonez

79

Java - Enfoque Práctico

 Haga clic derecho en PaqueteSistemaDeMenu y cree un JDialog Form dentro del Paquete
PaqueteSistemaDeMenu.

 Asigne como Nombre de Clase (Class name) JDialog01, Proyecto (Project) ProyectoSistemaDeMenu,
Localización (Location) Source Packages, Paquete (Package) PaqueteSistemaDeMenu y como Carpeta
Creada (Created Folder) c:\NetBeansProjects\ProyectoSistemaDeMenu\src\PaqueteSistemaDeMenu\
JDialog01.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quiñonez

80

Java - Enfoque Práctico

 Haga clic derecho en PaqueteSistemaDeMenu y cree un JDialog Form dentro del Paquete
PaqueteSistemaDeMenu.

 Asigne como Nombre de Clase (Class name) JDialog02, Proyecto (Project) ProyectoSistemaDeMenu,
Localización (Location) Source Packages, Paquete (Package) PaqueteSistemaDeMenu y como Carpeta
Creada (Created Folder) c:\NetBeansProjects\ProyectoSistemaDeMenu\src\PaqueteSistemaDeMenu\
JDialog02.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quiñonez

81

Java - Enfoque Práctico

 Verifique que la barra de Menú se presente como en el siguiente gráfico. Luego hacer clic en el objeto
JFrameSistemaDeMenu.

 Haga clic en la pestaña Design de JFrameSistemaDeMenu.Java. Luego haga clic derecho en el panel de
JFrameSistemaDeMenu y agregue desde la Paleta (Add From Palette) una Barra de Menú (Menu Bar).

Ing. Javier Alberto Manrique Quiñonez

82

Java - Enfoque Práctico

 Verifique que la Barra de Menú se presente como en el siguiente gráfico.

 Haga clic derecho en la opción File de la Barra de Menú JFrameSistemaDeMenu y agregue desde la
Paleta (Add From Palette) un Elemento de Menú (Menu Item).

Ing. Javier Alberto Manrique Quiñonez

83

Enfoque Práctico  Verifique que la barra de Menú se presente como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 84 . Ing.Java .  Haga clic derecho en la opción File de la Barra de Menú JFrameSistemaDeMenu y agregue desde la Paleta (Add From Palette) un Elemento de Menu.

tal como se presenta en el siguiente gráfico. Javier Alberto Manrique Quiñonez 85 .Java .  Haga doble clic sobre el texto del primer Elemento de Menú (Menu ítem) y modifique el texto colocando “Submenú Cuadro de Diálogo 01”. Repita el proceso sobre el texto del segundo Elemento de Menu (Menú ítem) y modifique el texto colocando “Submenú Cuadro de Diálogo 02”. Ing.Enfoque Práctico  Verifique que la Barra de Menú se presente como en el siguiente gráfico.

JDialog tal como se presenta en el siguiente gráfico.Swing.Enfoque Práctico  Haga clic en la pestaña Source del frame JFrameSistemaDeMenu y cree la variable dialogo de tipo Javax. Ing. Javier Alberto Manrique Quiñonez 86 .  Haga clic derecho en primer Menu item (“Submenú Cuadro de Diálogo 01”) de la opción File del Menú de Opciones de JFrameSistemaDeMenu y agregue un Evento-Action-ActionPerformed.Java .

Repita el mismo proceso para en Menu ítem Submenú Cuadro de Diálogo 02. Ing. Javier Alberto Manrique Quiñonez y 87 el .Enfoque Práctico  En el jMenuItem1ActionPerformed agregue el código siguiente. Repetir el mismo proceso para el jMenuItem2ActionPerformed.  Haga clic en la pestaña Source y verifique que jMenuItem1ActionPerformed jMenuItem2ActionPerformed se presenten como en el siguiente gráfico.Java .

Java .Enfoque Práctico  Haga clic derecho en PaqueteSistemaDeMenu y cree una Clase Principal Java (Java main Class) dentro del paquete PaqueteSistemaDeMenu. Localización (Location) Source Packages. Luego haga clic en Finalizar (Finish). Proyecto (Project) ProyectoSistemaDeMenu. Ing.java. Paquete (Package) PaqueteSistemaDeMenu y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoSistemaDeMenu\src\PaqueteSistemaDeMenu\AplicacionSistemaDeMen u.  Asigne como Nombre de Clase (Class name) AplicacionSistemaDeMenu. Javier Alberto Manrique Quiñonez 88 .

Ing. Haga clic en Source. Javier Alberto Manrique Quiñonez 89 .Java .  Agregue el código correspondiente a la clase principal AplicacionSistemaDeMenu.Enfoque Práctico  Verifique que clase principal AplicacionSistemaDeMenu se presente como en el siguiente gráfico.

Java . Javier Alberto Manrique Quiñonez 90 .  Verifique que la ejecución del segundo elemento del Menú se presente como en el siguiente gráfico.Enfoque Práctico  Ejecute el Sistema de Menús. Ing. Verifique que la ejecución de la primer Elemento del Menú se presente como en el siguiente gráfico.

tal como se presenta en el siguiente gráfico. La primera opción de la Barra de Menú será “Alumnos” y Segunda opción de la Barra de Menú será “Salir”.Java . Javier Alberto Manrique Quiñonez 91 .  Haga clic derecho en el panel del Cuadro de Diálogo 01 y agregue un botón de comando (Button). En el primer elemento del Menú Alumnos colocar: “Agregar Alumnos” y el segundo elemento del Menú alumnos colocar “Listar alumnos”.Enfoque Práctico  Modifique el texto de cada opción de Menú de la Barra Principal. En la segunda Opción de la Barra de Menú Salir agregar un elemento de menú “Salir” y agregue a ese elemento de Menú un Evento-ActionActionPerformed con el comando dispose() para salir del Sistema de Menús. Ing.

 Haga clic derecho en el botón de comando y agregue un Evento-Action-ActionPerformed.Enfoque Práctico  Modifique el texto del botón de comando como se presenta en el siguiente gráfico.Java . Javier Alberto Manrique Quiñonez 92 . Ing.

Ing.Enfoque Práctico  Agregue el código correspondiente al botón de comando tal como se presenta en el siguiente gráfico.Java . Javier Alberto Manrique Quiñonez 93 . evento Evento-Action-ActionPerformed) con el Cuadro de Diálogo 02.  Repita los procesos anteriores (agregar botón de comando.

Ing.Enfoque Práctico  Verifique que la ejecución del sistema de menú con respecto al Cuadro de Diálogo 01  Verifique que la ejecución del sistema de menú con respecto al Cuadro de Diálogo 02. Javier Alberto Manrique Quiñonez 94 .Java .

Java .Enfoque Práctico  Verifique que la ejecución del sistema de menú con respecto a estructura. Javier Alberto Manrique Quiñonez 95 . Ing.

Enfoque Práctico Ing.Java . Javier Alberto Manrique Quiñonez 96 .

calcular su promedio final y mostrar los datos del alumno con su promedio final calculado. evaluacionParcial1. Se utiliza los atributos código del alumno (alumno_id). Javier Alberto Manrique Quiñonez 97 . apellidoNombre. la evaluación parcial 2 (evaluacionParcial2) y el promedio de trabajo (promedioDeTrabajo). Esta opción solicita los datos del alumno (alumno_od.Enfoque Práctico SISTEMA DE MENÚ CON GUI PARA MANIPULAR UN ARREGLO DE OBJETOS A continuación se presenta el desarrollo de una aplicación en el cual se utiliza un arreglo de objetos para almacenar los datos de un alumno. evaluacionParcial2 y promedioDeTrabajo). Ing.Java . El promedio final (promedioFinal) se calcula con la siguiente fórmula: promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo ) La aplicación desarrollada con GUI presenta el siguiente menú de opciones: Cada opción se describe a continuación:  La ejecución de la opción Insertar alumnos permite insertar objetos al arreglo de registros utilizando un cuadro de diálogo. la evaluación parcial 1 (evaluacionParcial1). sus apellidos y nombres (apellidoNombre).

Note que el promedio final se visualiza con el valor 0.  La ejecución de la opción Calcular promedio final permite calcular el promedio final de los objetos del arreglo de registros.  La ejecución de la opción Salir del sistema sale de la aplicación. Ing.Enfoque Práctico  La ejecución de la opción Listar registros permite listar los registros del arreglo de registros utilizando un cuadro de area de texto. Para ver los cambios realizados se tiene que ejecutar la opción Listar registros.Java . Javier Alberto Manrique Quiñonez 98 . Para visualzar el promedio final calculado tiene que ejecutar la opción Calcular promedio final.

Enfoque Práctico Para el desarrollo de la aplicación debe realizar las siguientes actividades:  Haga clic derecho en File (Archivo) y cree un proyecto vacío de Java.Java .  Seleccione un proyecto de Aplicación Java (Java Application). Ing. Javier Alberto Manrique Quiñonez 99 .

Localización del proyecto (Project Location) c:\NetBeansProjects y como Carpeta del Proyecto (Project Folder) c:\NetBeansProjects\ProyectoArreglosConGUI. Ing. Desmarque la casilla de verificación Cree una clase Principal (Create Main Class) y luego haga clic en Finalizar (Finish).Java . Javier Alberto Manrique Quiñonez 100 .Enfoque Práctico  Asigne como Nombre de Proyecto (Project Name) ProyectoArreglosConGUI.  Haga clic derecho en el Proyecto ProyectoArreglosConGUI y cree un Paquete dentro del proyecto ProyectoArreglosConGUI.

Enfoque Práctico  Asigne como Nombre de Paquete (Package Name) PaqueteArreglosConGUI. Proyecto (Project) ProyectoArreglosConGUI.  Haga clic derecho en PaqueteArreglosConGUI y cree una clase Java (Java Class).Java . Ing. Localización (Location) Source Packages y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI. Luego haga clic en Finalizar (Finish). Javier Alberto Manrique Quiñonez 101 .

this.evaluacionParcial1 = evaluacionParcial1.Enfoque Práctico  Asigne como Nombre de Clase (Class name) Alumno. this. this. Javier Alberto Manrique Quiñonez 102 . Luego haga clic en Finalizar (Finish). private double promedioDeTrabajo.promedioDeTrabajo = promedioDeTrabajo. } public Alumno(int alumno_id. promedioFinal = 0. package PaqueteArreglosConGUI. this.evaluacionParcial1 = 0. this. this. private double evaluacionParcial1.alumno_id = alumno_id.java.java.apellidoNombre = apellidoNombre.evaluacionParcial2 = evaluacionParcial2. String apellidoNombre. private double promedioFinal. double evaluacionParcial2. double promedioFinal) { this. private String apellidoNombre.alumno_id=0. this. double promedioDeTrabajo. Proyecto (Project) ProyectoArreglosConGUI. paquete (Package) PaqueteArreglosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI \ Alumno.apellidoNombre=null. public Alumno() { this.evaluacionParcial2 = 0. this. double evaluacionParcial1. this.promedioDeTrabajo = 0.promedioFinal = promedioFinal . localización (Location) Source Packages.  Agregue el siguiente código para la clase Alumno. public class Alumno { private int alumno_id. } Ing.Java . this. private double evaluacionParcial2.

evaluacionParcial1 = evaluacionParcial1.promedioFinal=(this.evaluacionParcial2+this. } public double getPromedioFinal() { return this.evaluacionParcial2 = evaluacionParcial2.alumno_id = alumno_id.evaluacionParcial1.evaluacionParcial1+this.Java . } public void setEvaluacionParcial2 (double evaluacionParcial2) { this.Enfoque Práctico public int getAlumno_id() { return this. } public void setApellidoNombre(String apellidoNombre) { this.apellidoNombre. } public double getEvaluacionParcial2() { return this.promedioDeTrabajo.apellidoNombre = apellidoNombre. promedioDeTrabajo = promedioDeTrabajo. } public void setPromedioFinal() { this.evaluacionParcial2. } public String getApellidoNombre() { return this. } public double getEvaluacionParcial1() { return this. } public void setPromedioDeTrabajo(double promedioDeTrabajo) { this.promedioDeTrabajo)/3. } public void setAlumno_id(int alumno_id) { this. } public double getPromedioDeTrabajo() { return this. Javier Alberto Manrique Quiñonez 103 . } } Ing.alumno_id.promedioFinal. } public void setEvaluacionParcial1 (double evaluacionParcial1) { this.

Luego haga clic en Finalizar (Finish). Proyecto (Project) ProyectoArreglosConGUI. Ing.java.Java . paquete (Package) PaqueteArreglosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\ JFrameArreglosConGUI.Enfoque Práctico  Haga clic derecho en PaqueteArreglosConGUI y cree una JFrame Form. Javier Alberto Manrique Quiñonez 104 .  Asigne como Nombre de Clase (Class name) JFrameArreglosConGUI. localización (Location) Source Packages.

Verifique que la ventana JFrameArreglosConGUI se presente como en el siguiente gráfico.Enfoque Práctico  Verifique que el Proyecto ProyectoArreglosConGUI se presente como en el siguiente gráfico. Ing.java Cree una variable oAlumno del tipo arreglo Alumno. Javier Alberto Manrique Quiñonez 105 . Agregue al constructor el parámetro oAlumno del tipo arreglo Alumno y asigne el parámetro a la variable oAlumno creada anteriormente.  Haga clic en la pestaña Source de la ventana JFrameArreglosConGUI.Java .

Localización (Location) Source Packages. Javier Alberto Manrique Quiñonez 106 . Luego haga clic en Finalizar (Finish).Enfoque Práctico  Haga clic derecho en PaqueteArreglosConGUI y cree un JDialog Form dentro del Paquete PaqueteArreglosConGUI.Java .java. Proyecto (Project) ProyectoArreglosConGUI. Ing.  Asigne como Nombre de Clase (Class name) JDialogInsertarAlumno. Paquete (Package) PaqueteArreglosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\ JDialogInsertarAlumno.

Agregue al constructor el parámetro oAlumno del tipo arreglo Alumno y asigne el parámetro a la variable oAlumno creada anteriormente. Verifique que la ventana JDialogInsertarAlumno. Ing.  Haga clic derecho en PaqueteArreglosConGUI y cree un dialog Form PaqueteArreglosConGUI.java Cree una variable oAlumno del tipo arreglo Alumno.Enfoque Práctico  Haga clic en la pestaña Source de la ventana JDialogInsertarAlumno.Java .java se presente como en el siguiente gráfico. Javier Alberto Manrique Quiñonez dentro del Paquete 107 .

 Verifique que el proyecto se presente como en el siguiente gráfico. Luego haga clic en Finalizar (Finish). Paquete (Package) PaqueteArreglosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\ JDialogListarAlumnos. Proyecto (Project) ProyectoArreglosConGUI.java. Javier Alberto Manrique Quiñonez 108 . Ing.Enfoque Práctico  Asigne como Nombre de Clase (Class name) JDialogListarAlumnos.Java . Localización (Location) Source Packages.

Agregue al constructor el parámetro oAlumno del tipo arreglo Alumno y asigne el parámetro a la variable oAlumno creada anteriormente.java Cree una variable oAlumno del tipo arreglo Alumno.java se presente como en el siguiente gráfico.Java . Verifique que la ventana JDialogListarAlumno. Javier Alberto Manrique Quiñonez 109 . Ing.  Haga clic derecho en PaqueteArreglosConGUI y cree un JDialog Form dentro del Paquete PaqueteArreglosConGUI.Enfoque Práctico  Haga clic en la pestaña Source de la ventana JDialogListarAlumno.

Luego haga clic en Finalizar (Finish).java. Ing. Paquete (Package) PaqueteArreglosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\ JDialogCalcularPromedioFinalFinal. Javier Alberto Manrique Quiñonez 110 .Enfoque Práctico  Asigne como Nombre de Clase (Class name) JDialogCalcularPromedioFinal. Proyecto (Project) ProyectoArreglosConGUI.Java .java. Localización (Location) Source Packages.  Verifique que el proyecto se presente como en el siguiente gráfico.

Text Field (05) y Button (03).java Cree una variable oAlumno del tipo arreglo Alumno. Agregue al constructor el parámetro oAlumno del tipo arreglo Alumno y asigne el parámetro a la variable oAlumno creada anteriormente. Luego haga clic en la pestaña Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label (06).  Haga doble clic en cuadro de diálogo JDialogInsertarAlumno. Ing.java se presente como en el siguiente gráfico.Enfoque Práctico  Haga clic en la pestaña Source de la ventana JDialogCalcularPromedioFinal. Javier Alberto Manrique Quiñonez 111 .Java . tal como se presenta en el siguiente gráfico. Verifique que la ventana JDialogCalcularPromedioFinal.

Enfoque Práctico  Haga clic en la Ventana Inspector y verifique la presencia de los objetos que se visualizan en la ventana Design. Ing.  Renombre los objetos en la ventana Inspector tal se presente como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 112 .Java .

Java . Modifique la propiedad Text del objeto jLabelTitulo con el texto “Insertar alumnos”.Enfoque Práctico  Pulse las teclas Control-Mayúsculas-7 para visualizar la Ventana de Propiedades.  Cambie la propiedad Text de cada control Swing para que sea como el de la siguiente tabla. Nombre del Control Swing en el Inspector Propiedad Text del Control Swing jLabelTitulo Insertar alumnos jLabelAlumno_id Alumno_id: jLabel ApellidoNombre Apellido y nombre: jLabelEvaluacionParcial1 EvaluaciónParcial 1: jLabelEvaluacionParcial2 EvaluaciónParcial 2: jLabelPromedioDeTrabajo Promedio de Trabajo: jButtonAceptar Aceptar jButtonReiniciar Reiniciar jButtonSalir Salir Ing. Javier Alberto Manrique Quiñonez 113 .

Java .java para visualizar la ventana de Propiedades (Properties).  Modifique la propiedad defaultCloseOperation y escriba DISPOSE (deshacerse).Enfoque Práctico  Haga clic en alguna parte del Panel de Diseño (Design) del jDialog JDialogInsertarAlumno. Ing. Javier Alberto Manrique Quiñonez 114 .

private void jButtonAceptarActionPerformed(java.numeroDeAlumno].ActionEvent evt) { Alumno[AplicacionArreglosConGUI. oAlumno[AplicacionArreglosConGUI.getText())).getText())).Enfoque Práctico  Haga clic derecho en el objeto jButtonAceptar y seleccione en el menú conceptual Event-ActionactionPerformed para programar en evento clic del botón de comando.parseDouble( jTextFieldEvaluacionParcial1.numeroDeAlumno++.setPromedioDeTrabajo(Double. AplicacionArreglosConGUI.numeroDeAlumno].awt.getText()).numeroDeAlumno].getText())). oAlumno[AplicacionArreglosConGUI.getText())). Javier Alberto Manrique Quiñonez 115 .setAlumno_id(Integer.parseDouble( jTextFieldEvaluacionParcial2. oAlumno[AplicacionArreglosConGUI.setApellidoNombre( jTextFieldApellidoNombre.Java .event.setEvaluacionParcial1(Double.parseDouble( jTextFieldPromedioDeTrabajo. } Ing.numeroDeAlumno].setEvaluacionParcial2(Double.parseInt( jTextFieldAlumno_id. oAlumno[AplicacionArreglosConGUI.  Agregue el código del evento clic del objeto jButtonAceptarActionPerformed.numeroDeAlumno].

append("Alumno_id"+"\t"+"Apellido y nombre"+ "\t"+"Ep1"+"\t"+"Ep2"+"\t"+ "Pt"+ "\t"+ "Pf"+ "\n").event.Java .setText("").i=i+1) { jTextAreaListado.getPromedioDeTrabajo()+"\t").append(oAlumno[i]. private void jButtonListarActionPerformed(java.append(oAlumno[i]. } Ing. for (int i=0.append(oAlumno[i]. Javier Alberto Manrique Quiñonez 116 . Finalmente en el Inspector cambie los nombres de los controles tal como se presenta en el siguiente gráfico.getApellidoNombre()+"\t\t"). jTextAreaListado.getPromedioFinal()+"\n").append(oAlumno[i].awt.  Agregue el código del evento clic del objeto jButtonListarActionPerformed. jTextAreaListado. }  Haga doble clic en cuadro de diálogo JDialogListarAlumno.ActionEvent evt) { dispose(). jTextFieldApellidoNombre. jTextFieldEvaluacionParcial2. Luego haga clic en la pestaña Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label.ActionEvent evt) { jTextFieldAlumno_id.event.event. jTextAreaListado.append(oAlumno[i].awt. jTextArea y Button.setText(""). }  Repita el proceso anterior y gregue el código del evento clic del objeto jButtonSalirActionPerformed.setText(""). jTextAreaListado.Enfoque Práctico  Repita el proceso anterior jButtonReiniciarActionPerformed.setText("").getAlumno_id()+"\t"). jTextAreaListado.ActionEvent evt) { jTextAreaListado. jTextAreaListado.getEvaluacionParcial1()+"\t").numeroDeAlumno.setText("").setText("").i<AplicacionArreglosConGUI. y agregue el código del evento clic del objeto private void jButtonReiniciarActionPerformed(java. jTextFieldPromedioDeTrabajo.awt.append(oAlumno[i]. jTextFieldEvaluacionParcial1.getEvaluacionParcial2()+"\t"). private void jButtonSalirActionPerformed(java.

Enfoque Práctico  Verifique que el proyecto se presente como en el siguiente gráfico. Luego haga clic en el objeto JDialogCalcularPromedioFinal. Luego haga clic en la pestaña Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) el objeto Button.java. Javier Alberto Manrique Quiñonez 117 .  Haga doble clic en cuadro de diálogo JDialogCalcularPromedioFinal. Ing.Java . Cambie la propiedad text del jButton por Calcular Promedio Final y finalmente en el Inspector cambie el nombre del botón de comando por jButtonCalcularPromedioFinal.java.

"¿Esta seguro.awt.YES_OPTION) { for (int i=0. if (respuesta == JOptionPane.event..numeroDeAlumno.setPromedioFinal().ActionEvent evt) { int respuesta = JOptionPane. JOptionPane.Java . Javier Alberto Manrique Quiñonez 118 .YES_NO_OPTION).i<AplicacionArreglosConGUI.i=i+1) { oAlumno[i].. private void jButtonCalcularPromedioFinalActionPerformed(java.Enfoque Práctico  Haga clic en la Ventana Inspector para verificar el cuadro de diálogo JDialogCalcularPromedioFinal. "Dialogo de Confirmación".  Agregue el código del evento clic del objeto jButtonCalcularPromedioFinalActionPerformed. Debe presentarse errores en JOptionPane.?".YES_NO_OPTION. } } dispose().showConfirmDialog(this. Ing. }  Verique el código del botón de comando jButtonCalcularPromedioFinalActionPerformed.

 Verifique la instrucción import agregada. Javier Alberto Manrique Quiñonez 119 . Ing.Enfoque Práctico  Haga clic derecho en la palabra JOptionPane.Java .YES_OPTION y seleccione Fix Import (Refaccionar Importaciones).

java y luego clic en la pestaña Design del mismo.Java . Ing. Javier Alberto Manrique Quiñonez 120 .Enfoque Práctico  Haga doble clic en el JFrame JFrameArreglosConGUI. Luego haga clic derecho en el panel de JFrameArreglosConGUI y agregue desde la Paleta (Add From Palette) una Barra de Menú (Menu Bar).  Verifique que la Barra de Menú se presente como en el siguiente gráfico.

 Verifique que la barra de Menú se presente como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 121 .Java .Enfoque Práctico  Haga clic derecho en la opción File de la Barra de Menú del JFrameArreglosConGUI y agregue desde la Paleta (Add From Palette) un Elemento de Menú (Menu Item). Ing.

 Verifique que la Barra de Menú se presente como en el siguiente gráfico. Ing. Javier Alberto Manrique Quiñonez 122 .Java .Enfoque Práctico  Haga clic derecho en la opción File de la Barra de Menú del JFrameArreglosConGUI y agregue desde la Paleta (Add From Palette) un Elemento de Menú (Menu Item).

Java . Ing.  Haga doble clic sobre el texto del primer Elemento de Menú (jMenuItem1) y modifique el texto colocando “Insertar Alumnos”. Repita el proceso sobre el texto del segundo Elemento de Menú (jMenuItem2) y modifique el texto colocando “Listado de alumnos”. Javier Alberto Manrique Quiñonez 123 . tal como se presenta en el siguiente gráfico.Enfoque Práctico  Haga clic derecho sobre la primera opción File y modifique el texto colocando “Alumnos”.

Javier Alberto Manrique Quiñonez 124 .  Haga clic derecho en la opción Proceso de la Barra de Menú del JArregloConGUI y agregue desde la Paleta (Add From Palette) un Elemento de Menú (Menu Item).Enfoque Práctico  Haga clic derecho sobre la segunda opción Edit y seleccione la propiedad Editar Texto.Java . Ing. Modifique y póngale Proceso.

Java . Ing. Finalmente verifique que la Barra de Menú se presente como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 125 .Enfoque Práctico  Cambie la propiedad textro del elemento de menú creado y proporcióne el texto Calcular promedio final.  Haga clic derecho en la barra de menú y seleccione Agregar menú (Add Menu).

Enfoque Práctico  Haga clic derecho en la opción de menú jMenu3 y seleccione Editar Texto (Edit Text).  Haga clic derecho en la opción de menú Salir y seleccione Agregar Elemento de Menú (Menu Item) desde la paleta (Add From Palette). Ing.Java . Cambie el nombre de la opción de menú jMenu3 por Salir. Javier Alberto Manrique Quiñonez 126 .

Enfoque Práctico  Haga clic derecho en la opción de menú jMenuItem4 y seleccione Editar Texto (Edit Text).  Verifique que la Barra de Menú se presente como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 127 . Ing.Java . Cambie el nombre del elemento de menú jMenuItem4 por Salir de la aplicación.

Enfoque Práctico  Renombre los objetos de la barra de menú en la ventana Inspector del JFrameArreglosConGUI.Swing. Ing.Java .JDialog tal como se presenta en el siguiente gráfico.  Haga clic en la pestaña Source de la ventana JFrameArreglosConGUI y cree la variable dialogo de tipo Javax. tal como se presenta como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 128 .

Java . Javier Alberto Manrique Quiñonez 129 . Ing.  Agregue el código siguiente.Enfoque Práctico  Haga clic derecho en el primer elemento de menú Alumnos (Insertar alumnos) y agregue un EventoAction-ActionPerformed.

Java . Debe ser ListarAlumno Ing. Javier Alberto Manrique Quiñonez 130 .Enfoque Práctico  Haga clic derecho en el segundo elemento de menú Alumnos (Listar alumnos) y agregue un EventoAction-ActionPerformed.  Agregue el código siguiente.

Java .  Agregue el código siguiente.Enfoque Práctico  Haga clic derecho en el primer elemento de menú Proceso (Calcular promedio final) y agregue un Evento-Action-ActionPerformed. Ing. Javier Alberto Manrique Quiñonez 131 .

showConfirmDialog(this. private void jButtonSalirActionPerformed(java.. Debe presentarse errores en JOpctonPane.?". } }  Verique el código del botón de comando jButtonSalirActionPerformed.YES_OPTION) { dispose().awt.Java .Enfoque Práctico  Haga clic derecho en el primer elemento de menú Salir (Salir del sistema) y agregue un Evento-ActionActionPerformed..  Repita el proceso anterior y agregue el código del evento clic del objeto jButtonSalirActionPerformed. Javier Alberto Manrique Quiñonez 132 . if (respuesta == JOptionPane. "¿Esta seguro.event. Ing.YES_NO_OPTION). "Dialogo de Confirmación".ActionEvent evt) { int respuesta = JOptionPane.YES_NO_OPTION. JOptionPane.

Ing.YES_OPTION y seleccione Fix Import (Refaccionar Importaciones). Javier Alberto Manrique Quiñonez 133 .  Verifique la instrucción import agregada.Enfoque Práctico  Haga clic derecho en la palabra JOptionPane.Java .

Enfoque Práctico  Verifique que el código de todos los elementos de menú se presenten como en el siguiente gráfico.  Haga clic derecho en PaqueteArreglosConGUI y cree una Clase Principal Java (Java Main Class) dentro del paquete PaqueteArreglosConGUI. Javier Alberto Manrique Quiñonez 134 . Ing.Java .

Luego haga clic en Finalizar (Finish).Java . Javier Alberto Manrique Quiñonez 135 . Proyecto (Project) ProyectoArreglosConGUI. Localización (Location) Source Packages.Enfoque Práctico  Asigne como Nombre de Clase (Class name) AplicacionArreglosConGUI. Ing. Paquete (Package) PaqueteArreglosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArregloConGUI\src\PaqueteArreglosConGUI\ AplicacionArreglosConGUI.  Verifique que clase principal AplicacionArreglosConGUI se presente como en el siguiente gráfico. Haga clic en Source.java.

 Ejecute la aplicación AplicacionArreglosConGUI Ing.Java .Enfoque Práctico  Agregue el código correspondiente a la clase principal AplicacionArreglosConGUI. Javier Alberto Manrique Quiñonez 136 .

Javier Alberto Manrique Quiñonez 137 .  Verifique la ejecución de la opción Listar alumnos Ing.Java .Enfoque Práctico  Verifique la ejecución de la opción Insertar alumnos.

Javier Alberto Manrique Quiñonez 138 .Java .Enfoque Práctico  Verifique la ejecución de la opción Calcular promedio final  Verifique la ejecución de la opción Salir de la aplicación Ing.

Java .Enfoque Práctico Ing. Javier Alberto Manrique Quiñonez 139 .

Javier Alberto Manrique Quiñonez 140 . El procesamiento de archivos es una de las herramientas más importantes que debe tener un lenguaje de programación para soportar las aplicaciones comerciales.Java . Acceder a registros. como el código o nombre de una persona Registro. como pueden localizarse los temas clave en un libro.Enfoque Práctico ARCHIVOS DE DATOS El almacenamiento en variables y arreglos es temporal. ORGANIZACIÓN DIRECTA O ALEATORIA. siguiendo algún método (secuencial. Archivo. Las computadoras utilizan archivos de datos para la retención de a largo plazo de grandes cantidades de datos.…) Examinar información almacenada en los registros de datos. o cuando el programa termina. ORGANIZACIÓN DE LOS ARCHIVOS DE DATOS Los archivos de datos se organizan de la siguiente forma: Campo. Es un grupo de registros del mismo tipo. Sustituir una información de los registros de datos. discos ópticos y cintas magnéticas. ORGANIZACIÓN SECUENCIAL Método para almacenar registros de datos. Se denominan datos persistentes a aquellos que duran más allá de la duración de la ejecución del programa. al azar. que generalmente procesan grandes cantidades de datos persistentes. Es un grupo de campos considerados como una unidad. Es un grupo de archivos que almacenan la información de una organización. Java posee pose poderosas características de procesamiento de archivos de datos. Método para almacenar registros de datos en un archivo de modo que se pueda acceder a ellos en cualquier secuencia sin importar su orden físico real en los medios de almacenamiento. las cuales permiten a un programa leer y escribir datos en memoria interna y/o memoria externa o en archivos a través de la red. incluso hasta después de que terminan los programas que crean esos datos. Base de datos. El método utiliza un índice de campo clave para buscar y localizar físicamente un registro. Utiliza un arreglo de índice en la RAM donde se almacena en forma ordenada el campo clave y la dirección física de los registros. Es el agrupamiento de caracteres para formar una palabra o una cifra completa. los datos se pierden cuando una variable local queda fuera del alcance. Entre las operaciones que se pueden realizar con archivos de datos tenemos:     Agregar registros de datos. Las computadoras almacenan archivos en dispositivos de almacenamiento secundario como disco duros. Después Ing. USB. en el cual los registros se deben recuperar en el mismo orden en que se almacenaron. ORGANIZACIÓN SECUENCIAL INDEXADA Los registros se almacenan en orden.

Cesar Alumno_id apellidoNombre 1 Campo Byte Bit Arias. Alex 10000001 Letra A en ASCII 1 ARCHIVOS BINARIO EN JAVA Todos los lenguajes de programación tienen alguna forma de interactuar con los sistemas de archivos locales. Javier Alberto Manrique Quiñonez 141 . Antes de realizar acciones sobre un archivo. Un índice es una tabla o lista que contiene las claves de registros con las posiciones físicas en archivo de acceso indexado. Ing. La clase File proporciona muchas utilidades para el manejo y obtención de información de archivos. CREACIÓN DE UN OBJETO FILE Para crear un objeto de tipo File se utiliza: //Se crea la variable Archivo de tipo File que contendrá la dirección del archivo de datos. Java no es una excepción. Alex Barreto.Enfoque Práctico de operaciones de mantenimiento este arreglo de índices puede ser grabado en forma separada en el medio magnético para luego ser utilizado en la próxima sesión previa carga de los índices en la memoria RAM. JERARQUÍA DE DATOS Archivo de Notas Archivo de CxP Base de datos Archivo de expedientes personales Alumno_id apellidoNombre Archivo 1 2 3 Registro Arias. Si se está desarrollando una aplicación Java para uso interno. File archivo = new File("Alumno.Java . Alex evaluación parcial 1 11 12 13 evaluación promedio parcial 2 de trabajo 11 11 12 12 13 13 evaluación parcial 1 11 evaluación parcial 2 11 promedio de trabajo 11 apellidoNombre Arias. Byron Cespedes.dat"). necesitamos un poco de información sobre ese archivo. probablemente será necesario el acceso directo a archivos.

archivo.dat").getEvaluacionParcial2()).writeDouble(oAlumno. Este puntero indica la posición actual en el archivo. archivo. no se desea leer un archivo de principio a fin. } } Ing. } catch(IOException e) { System. Además de los métodos de I/O normales que implícitamente mueven el puntero de archivo cuando ocurre la operación.println(“error :”+e). CREACIÓN Y ACCESO A UN ARCHIVO DE ACCESO ALEATORIO Para abrir un archivo de acceso aleatorio para accesarlo se realiza lo siguiente. ACTUALIZACIÓN DE INFORMACIÓN Se pueden utilizar archivo de acceso aleatorio para escribir información. cada uno en diferentes partes del archivo.out.writeInt( oAlumno. //Se crea la variable archivo de tipo RandomAccessFile o de acceso aleatorio."rw"). archivo.getAlumno_id()). getFilePointer : Devuelve la posición actual (byte) del puntero de fichero. Los objetos RandomAccessFile esperan información de lectura/escritura utilizando los métodos read…() y write…(). indicando el principio del archivo. Ejemplo: public static void escribirRegistro(RandomAccessFile archivo.writeDouble(oAlumno.Enfoque Práctico ARCHIVOS DE ACCESO ALEATORIO (ORGANIZACIÓN EN JAVA) A menudo. //Abre el archivo de acceso aleatorio para lectura y escritura archivo = new RandomAccessFile(Fichero.writeUTF( oAlumno. RandomAccessFile contiene tres métodos que manipulan explícitamente el puntero de archivo: skipBytes : Mueve el puntero hacia adelante el número de bytes especificado.getEvaluacionParcial1()). //Se crea la variable archivo de tipo File que contendrá la dirección File fichero=new File("Alumno. El argumento modo determina si se tiene acceso de sólo lectura (r) o de lectura/escritura (r/w). sino acceder al archivo como una base de datos. archivo. Javier Alberto Manrique Quiñonez 142 . Las llamadas a los métodos readXXX y writeXXX ajustan la posición del puntero de archivo según el número de bytes leídos o escritos.Java .getApellidoNombre()). seek : Posiciona el puntero de archivo en la posición anterior al byte especificado. Java proporciona una clase RandomAccessFile para este tipo de entrada/salida. RandomAccessFile archivo. RandomAccessFile soporta la noción de puntero de archivo. donde se salta de un registro a otro. el puntero de archivo es 0. Alumno oAlumno) { try { archivo. Cuando el archivo se crea por primera vez.writeDouble(oAlumno.getPromedioDeTrabajo()).

String readLine() Lee la siguiente línea de texto desde un archivo. oAlumno.readInt()).Java .setAlumno_id(archivo. void writeBytes( String ) Escribe un string como una secuencia de bytes. } } MÉTODOS PARA ESCRITURA void writeBoolean( boolean ) Escribe un boolean como un valor byte.Enfoque Práctico LECTURA DE INFORMACIÓN Se pueden utilizar archivo de acceso aleatorio para leer información. void writeUTF( String str ) Escribe un String hacia un archive usando UTF-8 modificado en una máquina de manera independiente.RandomAccessFile archivo) { try { oAlumno. void writeByte( int ) Escribe un byte como un valor byte. void writeChar( int ) Escribe un character como dos valores bytes. char readChar() leer un único carácter desde un archivo double readDouble() lee un double desde un archivo float readFloat() lee un float desde un archivo int readInt() lee un valor int de 32 bits con signo desde un archivo. oAlumno. oAlumno.setApellidoNombre(archivo. Javier Alberto Manrique Quiñonez 143 . high byte first.readDouble()). String readUTF() lee un String desde un archivo. void writeShort( int ) Escribe a short como una secuencia de dos bytes. oAlumno.readUTF()). return oAlumno. void writeChars( String ) Escribe un string como una secuencia de caracteres.setEvaluacionParcial1(archivo.readDouble()). long readLong() lee un valor long de 64 bits con signo desde un archivo. short readShort() lee un valor short de 16 bits con signo desde un archivo. void writeLong( long) Escribe un long como una secuencia de ocho bytes.readDouble()). void writeDouble( double ) Convierte un double como una secuencia de ocho bytes.setEvaluacionParcial2(archivo. void writeFloat( float ) Convierte un float como una secuencia de cuatro bytes. void writeInt( int ) Escribe un int como una secuencia de cuatro bytes. } catch(IOException e) { return null. Ejemplo: public static Alumno leerRegistro(Alumno oAlumno. Ing.setPromedioDeTrabajo(archivo. MÉTODOS PARA LECTURA boolean readBoolean () Lee un boolean desde un archivo byte readByte() Lee un valor de 8 bits con signo desde un archivo.

El promedio final (promedioFinal) se calcula con la siguiente fórmula: promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo ) La aplicación desarrollada para correr en consola presenta el siguiente menú de opciones: Cada opción se describe a continuación:  La ejecución de la opción I permite insertar objetos al archivo de datos.Java . sus apellidos y nombres (apellidoNombre). Javier Alberto Manrique Quiñonez 144 . Si no lo encuentra presenta el mensaje "No se encuentra el registro!!!". calcular su promedio final y mostrar los datos del alumno con su promedio final calculado. Si lo encuentra en el archivo de datos lo presenta en pantalla. Si lo encuentra presenta el mensaje “Registro encontrado!!!”  La ejecución de la opción C permite consultar un registro almacenado en el archivo de datos . Ing.  La ejecución de la opción M permite modificar un registro almacenado en el archivo de datos. Se utiliza los atributos código del alumno (alumno_id). evaluacionParcial1. Esta opción solicita el código del alumno (alumno_id). evaluacionParcial2 y promedioDeTrabajo) los cauales reemplazan a los anteriores. la evaluación parcial 1 (evaluacionParcial1). Esta opción solicita que se ingrese el código del alumno (alumno_id). evaluacionParcial1. Esta opción solicita que se ingrese el código del alumno (alumno_id). Si no lo encuentra presenta el mensaje "No se encuentra el registro!!!".Enfoque Práctico A continuación se presenta el desarrollo de una aplicación en el cual se utiliza un archivo de datos para almacenar los datos de un alumno. Si lo encuentra en el archivo de datos lo presenta en pantalla y solicita nuevos datos (atributos apellidoNombre. la evaluación parcial 2 (evaluacionParcial2) y el promedio de trabajo (promedioDeTrabajo). evaluacionParcial2 y promedioDeTrabajo). Si no lo encuentra en el arreglo de registros permite ingresar los otros datos (apellidoNombre.

Para visualizar el promedio final calculado tiene que ejecutar la opción [L]istar.  La ejecución de la opción S se sale de la aplicación.Enfoque Práctico  La ejecución de la opción E permite eliminar registros al arreglo de registros.  La ejecución de la opción L permite listar los los registros al archivo de datos. Note que el promedio final se visualiza con el valor 0. Javier Alberto Manrique Quiñonez 145 . Si lo encuentra en el archivo de datos lo presenta en pantalla y lo borra inmediatamente. Esta opción solicita que se ingrese el código del alumno (alumno_id). Para visualzar el promedio final calculado tiene que ejecutar la opción [P]rocesar notas. El término borrado siginifica poner en el atributo alumno_id el valor -99.  La ejecución de la opción P permite calcular el promedio final de los registros del arreglo. Ing. Note que el promedio final se visualiza con el valor 0.Java . Si no lo encuentra presenta el mensaje "No se encuentra el registro!!!".

Enfoque Práctico Para el desarrollo de la aplicación debe realizar las siguientes actividades:  Haga clic derecho en File (Archivo) y cree un proyecto vacío de Java  Seleccione un proyecto de Aplicación Java (Java Application).Java . Javier Alberto Manrique Quiñonez 146 . Ing.

Javier Alberto Manrique Quiñonez 147 . Ing.Enfoque Práctico  Asigne como Nombre de Proyecto (Project Name) ProyectoArchivoDeDatos. Desmarcar la casilla de verificación Cree una Clase Principal (Create Main Class) y luego haga clic en Finalizar (Finish).Java .  Haga clic derecho en el Proyecto ProyectoArchivoDeDatos y cree un Paquete. Localización del proyecto (Project Location) c:\NetBeansProjects y como Carpeta del Proyecto (Project Folder) c:\NetBeansProjects\ProyectoArchivoDeDatos.

Javier Alberto Manrique Quiñonez 148 .Java . Luego haga clic en Finalizar (Finish).Enfoque Práctico  Asigne como Nombre de Paquete (Package Name) PaqueteArchivoDeDatos. Ing.  Haga clic derecho en PaqueteArchivoDeDatos y cree una Java Class. Proyecto (Project) ProyectoArchivoDeDatos. Localización (Location) Source Packages y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivoDeDatos\src\ PaqueteArchivoDeDatos.

double promedioFinal) { this.evaluacionParcial2 = evaluacionParcial2.evaluacionParcial2 = 0. String apellidoNombre. package PaqueteAccesoBaseDeDatosConJava. promedioFinal = 0. Luego haga clic en Finalizar (Finish). paquete (Package) PaqueteArchivoDeDatos y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivoDeDatos\src\PaqueteArchivoDeDatos\ Alumno. this. public class Alumno { private int alumno_id.promedioDeTrabajo = 0. this.promedioFinal = promedioFinal . private double promedioFinal. this. private double promedioDeTrabajo. this.evaluacionParcial1 = 0. double promedioDeTrabajo.alumno_id=0. public Alumno() { this. } Ing. this.Enfoque Práctico  Asigne como Nombre de Clase (Class name) Alumno.apellidoNombre=null.evaluacionParcial1 = evaluacionParcial1. private double evaluacionParcial1. Obserse que se ha agregado un nuevo método set para el atributo promedioFinal. double evaluacionParcial2. this. this.java.promedioDeTrabajo = promedioDeTrabajo.alumno_id = alumno_id. localización (Location) Source Packages. private String apellidoNombre. this.  Agregue el siguiente código para la clase Alumno.apellidoNombre = apellidoNombre. Javier Alberto Manrique Quiñonez 149 . double evaluacionParcial1. this. this. Proyecto (Project) ProyectoArchivoDeDatos. } public Alumno(int alumno_id.Java . private double evaluacionParcial2.

promedioFinal. } public double getEvaluacionParcial1() { return this.Enfoque Práctico public int getAlumno_id() { return this.evaluacionParcial2 = evaluacionParcial2. } public void setPromedioDeTrabajo(double promedioDeTrabajo) { this. } public double getPromedioDeTrabajo() { return promedioDeTrabajo.apellidoNombre = apellidoNombre.promedioDeTrabajo)/3.promedioFinal=(this. } public String getApellidoNombre() { return this. } public void setEvaluacionParcial1 (double evaluacionParcial1) { this.apellidoNombre.evaluacionParcial1.evaluacionParcial2+this.alumno_id = alumno_id.alumno_id. } public void setEvaluacionParcial2 (double evaluacionParcial2) { this. } public void setApellidoNombre(String apellidoNombre) { this.evaluacionParcial2.evaluacionParcial1+this.promedioDeTrabajo = promedioDeTrabajo. Javier Alberto Manrique Quiñonez 150 .Java . } public double getPromedioFinal() { return this. } public void setAlumno_id(int alumno_id) { this. } } Ing. } public void setPromedioFinal() { this. } public double getEvaluacionParcial2() { return this.evaluacionParcial1 = evaluacionParcial1.

Ing. Luego haga clic en Finalizar (Finish). Localización (Location) Source Packages y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivoeDatos\src\PaqueteBiblioteca. Proyecto (Project) ProyectoArchivoDeDatos.Java .  Asigne como Nombre de Paquete (Package Name) PaqueteBiblioteca.Enfoque Práctico  Cree un nuevo paquete. Javier Alberto Manrique Quiñonez 151 .

return leerDouble().floatValue(). } } Ing.C.valueOf(leerString()). } } public static int leerInt() { try { return Integer.valueOf(leerString()).print("ERROR. \n Ingrese de nuevo:").length==1) c=c1[0]..print("ERROR.J... } catch (NumberFormatException e) { System. public class ClaseLectura { public static char leerChar() { char c=' '.S.out.Java .parseInt(leerString()).) package PaqueteBiblioteca.print("ERROR. } } public static float leerFloat() { try { return Float.. \n Ingrese de nuevo:"). \n Ingrese de nuevo : ").F. char [] c1=leerString().Enfoque Práctico  Dentro del paquete PaqueteBiblioteca cree la clase denominada ClaseLectura.  Agregue el siguiente código para la clase ClaseLectura. } public static double leerDouble() { try { return Double. (Cortesía del Ing.toCharArray(). return leerFloat().out.*.. if (c1. import java.io.. Javier Alberto Manrique Quiñonez 152 . return c.out.N. J. return leerInt().J. } catch (NumberFormatException e) { System. } catch (NumberFormatException e) { System. Flores Cueto – U.doubleValue().

Enfoque Práctico public static long leerLong() { try { return Long.valueOf(leerString()). Javier Alberto Manrique Quiñonez 153 . return leerShort().java) puede descargarlo del cd de trabajo proporcionado por el autor.longValue().out. } } public static String leerString() { BufferedReader in = new BufferedReader(new InputStreamReader(System..valueOf(leerString())..out. leerLong(). in)). } } public static short leerShort() { try { return Short.print("ERROR.out. try { cadena = in. \n Ingrese de nuevo:"). } } Nota: El código anterior (ClaseLectura. String cadena ="".  Cree una nueva clase denominada AplicacionArchivoDeDatos Ing. } catch (NumberFormatException e) { System.readLine().print("ERROR.println(e). \n Ingrese de nuevo:").. } return cadena.. } catch (NumberFormatException e) { System.shortValue().Java . } catch (IOException e) { System.

print(" Elija su opción : "). case 'P': procesar().leerChar()). case 'L': listar(). case 'C': consulta().dat"). System.out. System.println(" [C]onsulta").out.println(" [M]odificar"). Ing. } RandomAccessFile archivo. switch (Opcion) { case 'I': insertar(). break . System.io.println(" M E N U").println(" [P]rocesar notas"). System. break .print("Alumno_id : "). System. System.*.out.Java .out. System. File Fichero=new File("Alumno.println(" [I]nsertar"). import PaqueteBiblioteca.out. System. case 'E': eliminar(). break. do { System. System. posicion=buscarRegistro(busqueda. Opcion=Character.out. import java. break .println(" [L]istar").archivo).out.out. System.out. } public static void insertar() { try { Alumno oAlumno=new Alumno().out. public class AplicaciónArchivoDeDatos { tatic int tamañoDeRegistro=100. archivo=new RandomAccessFile(Fichero. default: } } while (Opcion!='S'). Javier Alberto Manrique Quiñonez 154 . public static void main(String[ ] args) { char Opcion. break . int busqueda=0.getName()+ "No es un Fichero").out. case 'M': modificar().*. break . busqueda=ClaseLectura.toUpperCase(ClaseLectura. int posicion=0.println(" =======").isFile ( ) ) { throw new IOException (Fichero.Enfoque Práctico  Agregue el siguiente código para la clase AplicacionArchivoDeDatos package PaqueteArchivoDeDatos. "rw").println(" [E]liminar").leerInt().println(" [S]alir "). if ( Fichero.exists( ) && ! Fichero.

seek(posicion*tamañoDeRegistro). int busqueda=0.busqueda=ClaseLectura. "rw"). System.Java . } else { System. archivo).dat"). if (posicion!=-99) { archivo.leerInt(). } catch(IOException e) { System.oAlumno). visualizarRegistro(oAlumno).ceil((double)archivo.close( ).seek(posicion*tamañoDeRegistro). } archivo.dat"). int posicion=0.out. escribirRegistro(archivo.out.oAlumno). posicion=buscarRegistro(busqueda.getName()+ "No es un Fichero"). } RandomAccessFile archivo. archivo.print("Alumno_id : "). } } public static void eliminar() { try { Alumno oAlumno=new Alumno().archivo). archivo=new RandomAccessFile(Fichero. archivo.Enfoque Práctico if (posicion==-99) { oAlumno. int busqueda=0.println("No se pudo insertar el registro").println("No se pudo modificar el registro").println("No se puede encuentra el registro !!!"). } catch(IOException e) { System. escribirRegistro(archivo.out.println("Registro encontrado!!!"). int posicion=0. posicion=(int )Math.length()/tamañoDeRegistro).isFile ( ) ) { throw new IOException (Fichero. } } public static void modificar() { try { Alumno oAlumno=new Alumno(). oAlumno=actualizarRegistro(oAlumno). File Fichero=new File("Alumno. Ing. } else { System.out.seek(posicion*tamañoDeRegistro). File Fichero=new File("Alumno.close( ).out. if ( Fichero. leerRegistro(oAlumno.exists( ) && ! Fichero.setAlumno_id(busqueda). Javier Alberto Manrique Quiñonez 155 . oAlumno=actualizarRegistro(oAlumno). } archivo.

out.exists( ) && ! Fichero.ceil((double)archivo. leerRegistro(oAlumno. int posicion=0. if (posicion!=-99) { archivo. RandomAccessFile archivo) { try { Alumno oAlumno=new Alumno().setAlumno_id(-99).println("No se puede encuentra el registro !!!").Enfoque Práctico if ( Fichero. } archivo.out. Javier Alberto Manrique Quiñonez 156 . System.close( ).print("Alumno_id : ").seek(posicion*tamañoDeRegistro). System. archivo=new RandomAccessFile( "alumno.println("Fallo la operación de consulta! ! !"). if (posicion!=-99) { archivo.out.Java . archivo).length()/tamañoDeRegistro).out. } } public static int buscarRegistro(int alumno_id. } else { System. posicion=buscarRegistro(busqueda. int posicion=0. visualizarRegistro(oAlumno).out. archivo.busqueda=ClaseLectura. leerRegistro(oAlumno. } catch(IOException e) { System.print("Alumno_id : "). "r").leerInt(). oAlumno. } } catch (IOException e) { System. int i=(int )Math.seek(posicion*tamañoDeRegistro). Ing.dat". archivo=new RandomAccessFile(Fichero.leerInt(). oAlumno). visualizarRegistro(oAlumno). escribirRegistro(archivo. } } public static void consulta() { try { Alumno oAlumno=new Alumno(). RandomAccessFile archivo.println("No se pudo eliminar el registro").archivo).archivo). busqueda=ClaseLectura. posicion=buscarRegistro(busqueda.isFile ( ) ) { throw new IOException (Fichero. } RandomAccessFile archivo. int encontrado=0. } else { System.seek(posicion*tamañoDeRegistro).println("No se puede encuentra el registro !!!").out. archivo). int busqueda=0. "rw").getName()+ "No es un Fichero").

length()/tamañoDeRegistro). archivo=new RandomAccessFile("alumno. archivo).println("Fallo la operación de listado ! ! ! ").posicion=posicion+1) { archivo. System.ceil((double)archivo.getApellidoNombre()+"\t").print("Ep 1 Ep2 P.out.getPromedioDeTrabajo()+"\t"). int i=(int )Math. System.out.seek ( posicion * tamañoDeRegistro ). if (alumno_id==oAlumno.print(oAlumno. } } catch(IOException e) { return -99. int posicion=0."rw").Java .deTrab.print("Alumno_id Apellido y Nombre ")."r"). System. Ing.print(oAlumno.Final\n").getAlumno_id()) { encontrado=1. int posicion=0. System. System.print(oAlumno.// } } public static void procesar() { try { Alumno oAlumno=new Alumno().dat".print("==============================================================\n"). } else { posicion++.print("============================================================================\n"). System.dat". System.getAlumno_id()+"\t\t"). } } catch (IOException e) { System. RandomAccessFile archivo.out. RandomAccessFile archivo. leerRegistro(oAlumno. int i=(int )Math.out.out.archivo). archivo=new RandomAccessFile("alumno.out. } } if (encontrado==1) { return posicion. System.out.out. } } public static void listar() { try { Alumno oAlumno=new Alumno(). leerRegistro(oAlumno.out.ceil((double)archivo.out.print(oAlumno.length()/tamañoDeRegistro).getPromedioFinal()+"\n"). System. } else { return -99.seek( posicion*tamañoDeRegistro ).getEvaluacionParcial2()+"\t").Enfoque Práctico while ((posicion<i) && (encontrado==0)) { archivo.print(oAlumno. System.print(oAlumno.getEvaluacionParcial1()+"\t"). Javier Alberto Manrique Quiñonez 157 . P.posicion<i.out. for (posicion=0.

archivo.print("Evaluación parcial 1 : "+oAlumno. archivo.writeInt( oAlumno.readDouble()).getEvaluacionParcial1()+"\n"). } catch(IOException e) { System. System. oAlumno.readDouble()).readDouble()).writeDouble(oAlumno.Enfoque Práctico for (posicion=0.out. archivo. System.getEvaluacionParcial2()).readDouble()). System.out.print("Apellido y Nombre : "+oAlumno. oAlumno.getEvaluacionParcial1()). oAlumno.writeUTF( oAlumno.writeDouble(oAlumno.getAlumno_id()).out. archivo.setEvaluacionParcial1(ClaseLectura.println("Fallo la operación de escritura !!! "). return oAlumno. oAlumno.getPromedioDeTrabajo()).print("Evaluación parcial 1 : ").setEvaluacionParcial1(archivo. oAlumno). System.setPromedioFinal(). System.leerDouble()).posicion<i.getPromedioDeTrabajo()+"\n").print("Promedio de trabajo : ").readUTF()).getPromedioFinal()).out. oAlumno.leerDouble()).setApellidoNombre(archivo. archivo.seek( posicion*tamañoDeRegistro ). } public static void escribirRegistro(RandomAccessFile archivo.out. oAlumno.out.seek(posicion*tamañoDeRegistro ).writeDouble(oAlumno.print("Promedio de trabajo : "+oAlumno. oAlumno.getApellidoNombre()+"\n").out. Alumno oAlumno) { try { archivo.print("Evaluación parcial 2 : "+oAlumno. System.leerDouble()).readInt()).print("Promedio final : "+oAlumno.writeDouble(oAlumno. } public static Alumno actualizarRegistro(Alumno oAlumno) { System. return oAlumno.setEvaluacionParcial2(ClaseLectura.setEvaluacionParcial2(archivo.// } } public static void visualizarRegistro(Alumno oAlumno) { System.setPromedioDeTrabajo(archivo.getEvaluacionParcial2()+"\n"). oAlumno. Javier Alberto Manrique Quiñonez 158 . oAlumno. leerRegistro(oAlumno.posicion=posicion+1) { archivo. setApellidoNombre(ClaseLectura.out.getApellidoNombre()).out.Java .getPromedioFinal()+"\n").setPromedioFinal(archivo.out.leerString()). archivo).out.RandomAccessFile archivo) { try { oAlumno.println("Fallo la operación de listado ! ! ! ").print("Apellido y Nombre : ").setPromedioDeTrabajo(ClaseLectura. escribirRegistro(archivo. archivo.print("Evaluación parcial 2 : "). } Ing. System.// } } public static Alumno leerRegistro(Alumno oAlumno.setAlumno_id(archivo. } } catch (IOException e) { System.

} } }  La ejecución de la aplicación mostrando el menú de opciones. Javier Alberto Manrique Quiñonez 159 . Ing.  La ejecución de la aplicación mostrando la ejecución de la opción [L]istar.Java .Enfoque Práctico catch(IOException e) { return null.

Javier Alberto Manrique Quiñonez 160 .Java .Enfoque Práctico Ing.

calcular su promedio final y mostrar los datos del alumno con su promedio final calculado. Esta opción solicita los datos del alumno (alumno_id. El promedio final (promedioFinal) se calcula con la siguiente fórmula: promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo ) La aplicación desarrollada con GUI presenta el siguiente menú de opciones: Cada opción se describe a continuación:  La ejecución de la opción Insertar alumnos permite insertar objetos al archivo de datos utilizando un cuadro de diálogo. la evaluación parcial 1 (evaluacionParcial1). la evaluación parcial 2 (evaluacionParcial2) y el promedio de trabajo (promedioDeTrabajo). Javier Alberto Manrique Quiñonez 161 .Enfoque Práctico SISTEMA DE MENÚ CON GUI PARA MANIPULAR UN ARCHIVO DE DATOS A continuación se presenta el desarrollo de una aplicación en la cual se utiliza un archivo de objetos para almacenar los datos de un alumno.Java . Se utiliza los atributos código del alumno (alumno_id). apellidoNombre. sus apellidos y nombres (apellidoNombre). Ing. evaluacionParcial2 y promedioDeTrabajo). evaluacionParcial1.

Javier Alberto Manrique Quiñonez 162 .Enfoque Práctico  La ejecución de la opción Listar registros permite listar los registros del archivo de datos utilizando un cuadro de area de texto. Note que el promedio final se visualiza con el valor 0. Para visualzar el promedio final calculado tiene que ejecutar la opción Calcular promedio final.  La ejecución de la opción Salir del sistema sale de la aplicación. Ing. Para ver los cambios realizados se tiene que ejecutar la opción Listar registros.Java .  La ejecución de la opción Calcular promedio final permite calcular el promedio final de los registros del archivo de datos.

Java .  Haga clic derecho en File (Archivo) y cree un proyecto vacío de Java.  Seleccione un proyecto de Aplicación Java (Java Application). Javier Alberto Manrique Quiñonez 163 .Enfoque Práctico A continuación se presenta una práctica para crear un sistema de menú con GUI para manipular un archivo de datos. Ing.

 Haga clic derecho en el Proyecto ProyectoArchivosConGUI y cree un Paquete dentro del proyecto ProyectoArchivosConGUI. Localización del proyecto (Project Location) c:\NetBeansProjects y como Carpeta del Proyecto (Project Folder) c:\NetBeansProjects\ProyectoArchivosConGUI.Java . Javier Alberto Manrique Quiñonez 164 .Enfoque Práctico  Asigne como Nombre de Proyecto (Project Name) ProyectoArchivosConGUI. Ing. Desmarque la casilla de verificación Cree una clase Principal (Create Main Class) y luego haga clic en Finalizar (Finish).

Ing. Proyecto (Project) ProyectoArchivosConGUI.  Haga clic derecho en PaqueteArchivosConGUI y cree una clase Java (Java Class). Javier Alberto Manrique Quiñonez 165 . Localización (Location) Source Packages y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI.Java . Luego haga clic en Finalizar (Finish).Enfoque Práctico  Asigne como Nombre de Paquete (Package Name) PaqueteArchivosConGUI.

String apellidoNombre. localización (Location) Source Packages. promedioFinal = 0. private String apellidoNombre. this. private double evaluacionParcial1. paquete (Package) PaqueteArchivosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI \ Alumno.alumno_id=0. } Ing. this. Obserse que se ha agregado un nuevo método set para el atributo promedioFinal. private double promedioFinal. public Alumno() { this. private double evaluacionParcial2. this. this.evaluacionParcial2 = 0.alumno_id = alumno_id.promedioDeTrabajo = 0.Java . this.java. private double promedioDeTrabajo.evaluacionParcial2 = evaluacionParcial2.apellidoNombre = apellidoNombre. Javier Alberto Manrique Quiñonez 166 . double promedioFinal) { this. this. } public Alumno(int alumno_id.  Agregue el siguiente código para la clase Alumno.promedioFinal = promedioFinal . double evaluacionParcial1.apellidoNombre=null.Enfoque Práctico  Asigne como Nombre de Clase (Class name) Alumno. Proyecto (Project) ProyectoArchivosConGUI. this. Luego haga clic en Finalizar (Finish). double evaluacionParcial2. double promedioDeTrabajo. package PaqueteArchivosConGUI.evaluacionParcial1 = 0. this.promedioDeTrabajo = promedioDeTrabajo. this. this.evaluacionParcial1 = evaluacionParcial1. public class Alumno { private int alumno_id.

alumno_id.promedioFinal=(this. } public void setEvaluacionParcial1 (double evaluacionParcial1) { this. } public void setEvaluacionParcial2 (double evaluacionParcial2) { this. } } Ing. } public void setPromedioFinal() { this.Java .Enfoque Práctico public int getAlumno_id() { return this.promedioDeTrabajo = promedioDeTrabajo. } public String getApellidoNombre() { return this. } public double getPromedioFinal() { return this. } public void setAlumno_id(int alumno_id) { this.promedioDeTrabajo)/3.apellidoNombre = apellidoNombre.evaluacionParcial2. } public double getEvaluacionParcial2() { return this.apellidoNombre. } public void setApellidoNombre(String apellidoNombre) { this. } public double getPromedioDeTrabajo() { return promedioDeTrabajo.promedioFinal.evaluacionParcial2 = evaluacionParcial2. } public double getEvaluacionParcial1() { return this.evaluacionParcial2+this. } public void setPromedioDeTrabajo(double promedioDeTrabajo) { this.evaluacionParcial1+this.alumno_id = alumno_id.evaluacionParcial1 = evaluacionParcial1.evaluacionParcial1. Javier Alberto Manrique Quiñonez 167 .

Luego haga clic en Finalizar (Finish).Java .java.  Asigne como Nombre de Clase (Class name) JFrameArchivosConGUI.Enfoque Práctico  Haga clic derecho en PaqueteArchivosConGUI y cree una JFrame Form. paquete (Package) PaqueteArchivosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI\ JFrameArreglosConGUI. Proyecto (Project) ProyectoArchivosConGUI. Javier Alberto Manrique Quiñonez 168 . localización (Location) Source Packages. Ing.

 Haga clic derecho en PaqueteArchivosConGUI y cree un JDialog Form dentro del Paquete PaqueteArchivosConGUI.Enfoque Práctico  Verifique que el Proyecto ProyectoAchivosConGUI se presente como en el siguiente gráfico. Ing.Java . Javier Alberto Manrique Quiñonez 169 .

Paquete (Package) PaqueteArchivosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI\ JDialogInsertarAlumno.java. Javier Alberto Manrique Quiñonez dentro del Paquete 170 . Localización (Location) Source Packages. Luego haga clic en Finalizar (Finish).Enfoque Práctico  Asigne como Nombre de Clase (Class name) JDialogInsertarAlumno.Java .  Haga clic derecho en PaqueteArchivosConGUI y cree un JDialog Form PaqueteArchivosConGUI. Ing. Proyecto (Project) ProyectoArchivosConGUI.

Javier Alberto Manrique Quiñonez 171 . Proyecto (Project) ProyectoArchivosConGUI.Java .java. Paquete (Package) PaqueteArchivosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI\ JDialogListarAlumnos. Localización (Location) Source Packages. Ing.Enfoque Práctico  Asigne como Nombre de Clase (Class name) JDialogListarAlumnos.  Verifique que el proyecto se presente como en el siguiente gráfico. Luego haga clic en Finalizar (Finish).

Javier Alberto Manrique Quiñonez 172 . Ing.java. Paquete (Package) PaqueteArreglosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\ JDialogCalcularPromedioFinalFinal.Java .java.  Asigne como Nombre de Clase (Class name) JDialogCalcularPromedioFinal.Enfoque Práctico  Haga clic derecho en PaqueteArchivosConGUI y cree un JDialog Form dentro del Paquete PaqueteArchivosConGUI. Luego haga clic en Finalizar (Finish). Proyecto (Project) ProyectoArreglosConGUI. Localización (Location) Source Packages.

Enfoque Práctico  Verifique que el proyecto se presente como en el siguiente gráfico. Text Field (05) y Button (03). Ing. Javier Alberto Manrique Quiñonez 173 .Java . Luego haga clic en la pestaña Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label (06).  Haga doble clic en cuadro de diálogo JDialogInsertarAlumno. tal como se presenta en el siguiente gráfico.

Ing. Javier Alberto Manrique Quiñonez 174 .  Renombre los objetos en la ventana Inspector tal se presente como en el siguiente gráfico.Java .Enfoque Práctico  Haga clic en la Ventana Inspector y verifique la presencia de los objetos que se visualizan en la ventana Disegn.

Nombre del Control Swing en el Inspector Propiedad Text del Control Swing jLabelTitulo Insertar alumnos jLabelAlumno_id Alumno_id: jLabel ApellidoNombre Apellido y nombre: jLabelEvaluacionParcial1 EvaluaciónParcial 1: jLabelEvaluacionParcial2 EvaluaciónParcial 2: jLabelPromedioDeTrabajo Promedio de Trabajo: jButtonAceptar Aceptar jButtonReiniciar Reiniciar jButtonSalir Salir Ing.Java . Modifique la propiedad Text del objeto jLabelTitulo con el texto “Insertar alumnos”.Enfoque Práctico  Pulse las teclas Control-Mayúsculas-7 para visualizar la Ventana de Propiedades.  Cambie la propiedad Text de cada control Swing para que sea como el de la siguiente tabla. Javier Alberto Manrique Quiñonez 175 .

Enfoque Práctico  Haga clic en alguna parte del Panel de Diseño (Designer) del jDialog JDialogInsertarAlumno. Javier Alberto Manrique Quiñonez 176 .Java . Ing.java para visualizar la ventana de Propiedades (Properties).  Modifique la propiedad defaultCloseOperation y escriba DISPOSE (deshacerse).

File fichero=new File("Alumno. oAlumno.awt.setEvaluacionParcial2(Double.exists() && ! fichero. int posicion=0.getText())).getText()).event.Enfoque Práctico  Haga clic derecho en el objeto jButtonAceptar y seleccione en el menú conceptual Event-ActionactionPerformed para programar en evento clic del botón de comando. } RandomAccessFile archivo.dat").getText()). oAlumno. archivo. getText())). Javier Alberto Manrique Quiñonez 177 .parseDouble(jTextFieldEvaluacionParcial2.parseInt(jTextFieldAlumno_id.parseDouble(jTextFieldEvaluacionParcial1.isFile () ) { throw new IOException (fichero.setAlumno_id(busqueda).setApellidoNombre(jTextFieldApellidoNombre. oAlumno.Java . oAlumno. if (posicion==-99) { oAlumno. posicion=(int )Math. busqueda=Integer. private void jButtonAceptarActionPerformed(java.getText())). int busqueda=0. posicion=buscarRegistro(busqueda.seek(posicion*100).  Agregue el código del evento clic del objeto jButtonAceptarActionPerformed.archivo).setPromedioDeTrabajo(Double.parseDouble(jTextFieldPromedioDeTrabajo. if ( fichero. archivo=new RandomAccessFile(fichero."rw").setEvaluacionParcial1(Double.length()/100).ActionEvent evt){ { try { Alumno oAlumno=new Alumno().getName()+ "No es un archivo de datos").ceil((double)archivo. Ing.

archivo).close( ). Javier Alberto Manrique Quiñonez 178 . Ing. } catch(IOException e) { JOptionPane.showMessageDialog(null."Error .Java .no se grabó el registro!!!")."Operación Exitosa!!!").showMessageDialog(null."Registro encontrado !!!").showMessageDialog(null.Enfoque Práctico escribirRegistro(oAlumno. } archivo. JOptionPane. } } }  Haga clic derecho en la palabra FILE y seleccione Fix Imports (Refaccionar Importaciones). } else { JOptionPane.

Java . Ing.Enfoque Práctico  En Reparar todas las importaciones (Fix all imports) haga clic en el botón de comando Ok  Verifique las importaciones agregadas. Javier Alberto Manrique Quiñonez 179 .

length()/100).setAlumno_id(archivo. oAlumno. archivo.ceil((double)archivo. Ing.getPromedioFinal()). RandomAccessFile archivo) { try { archivo.setText("").setEvaluacionParcial2(archivo.readUTF()). } } public static int buscarRegistro(int busqueda. jTextFieldEvaluacionParcial1. RandomAccessFile archivo) { try { Alumno oAlumno=new Alumno().writeDouble(oAlumno. jTextFieldPromedioDeTrabajo. oAlumno.setText(""). int posicion=0.getApellidoNombre()).getEvaluacionParcial1()).writeInt( oAlumno. } catch(IOException e) { return null."No se grabó el registro !!!").getAlumno_id()). public static Alumno leerRegistro(Alumno oAlumno.getEvaluacionParcial2()). int encontrado=0.writeDouble(oAlumno.Java .setPromedioFinal(archivo.writeDouble(oAlumno. private void jButtonSalirActionPerformed(java.awt.Enfoque Práctico  Repita el proceso anterior jButtonReiniciarActionPerformed.setApellidoNombre(archivo.awt. oAlumno. jTextFieldEvaluacionParcial2. archivo.setPromedioDeTrabajo(archivo.setText("").setText(""). } } public static void escribirRegistro(Alumno oAlumno. y agregue el código del evento clic del objeto private void jButtonReiniciarActionPerformed(java.setEvaluacionParcial1(archivo.setText("").showMessageDialog(null. }  Repita el proceso anterior y gregue el código del evento clic del objeto jButtonSalirActionPerformed. Javier Alberto Manrique Quiñonez 180 .writeDouble(oAlumno.readInt()). } catch(IOException e) { JOptionPane.readDouble()).event.readDouble()). archivo. archivo. int i=(int )Math. return oAlumno.readDouble()).getPromedioDeTrabajo()).readDouble()). escribir registro y buscarRegistro.writeUTF( oAlumno. oAlumno. jTextFieldApellidoNombre. }  Haga clic en la pestaña source del cuadro de diólogo JDialogInsertar y agregue los métodos leerRegistro.event.ActionEvent evt) { jTextFieldAlumno_id. archivo. oAlumno.ActionEvent evt) { dispose().RandomAccessFile archivo) { try { oAlumno.

ActionEvent evt) { try { Alumno oAlumno=new Alumno().Java . Javier Alberto Manrique Quiñonez 181 .append("Alumno_id"+"\t"+"Apellido y nombre" + "\t" + "Ep1" + "\t"+ "Ep2" +"\t" + "Pt"+ "\t"+"Pf" + "\n").getAlumno_id()) { encontrado=1.  Agregue el código del evento clic del objeto jButtonListarActionPerformed. jTextAreaListado. } } if (encontrado==1) { return posicion.setText("")."r").ceil((double)archivo. } } catch(IOException e) { return -99.archivo).event. jTextArea y Button. Finalmente en el Inspector cambie los nombres de los controles tal como se presenta en el siguiente gráfico.seek ( posicion * 100 ). jTextAreaListado. } else { posicion++. } }  Haga doble clic en cuadro de diálogo JDialogListarAlumno.Enfoque Práctico while ((posicion<i) && (encontrado==0)) { archivo. Luego haga clic en la pestaña Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label. private void jButtonListarActionPerformed(java. oAlumno=leerRegistro(oAlumno. Ing. int i=(int )Math.awt.length()/100). archivo=new RandomAccessFile("alumno. RandomAccessFile archivo. if (busqueda==oAlumno.dat". int posicion=0. } else { return -99.

Javier Alberto Manrique Quiñonez 182 .readInt()). } }  Haga clic derecho en la palabra RandomAccessFile y seleccione Fix Imports (Refaccionar Importaciones).setPromedioDeTrabajo(archivo.getPromedioDeTrabajo()+"\t").setPromedioFinal(archivo.readUTF()).RandomAccessFile archivo) { try { oAlumno. oAlumno. oAlumno. return oAlumno.readDouble()).append( oAlumno.readDouble()). jTextAreaListado.readDouble()). jTextAreaListado. leerRegistro(oAlumno.getEvaluacionParcial2()+"\t"). oAlumno. jTextAreaListado."Error al listar registros!!!").Enfoque Práctico for (posicion=0.seek( posicion*100). jTextAreaListado.readDouble()).append(oAlumno. archivo).setAlumno_id(archivo. jTextAreaListado. } catch(IOException e) { return null.getApellidoNombre()+"\t\t").append(oAlumno. Ing.append( oAlumno.append(oAlumno. oAlumno.getPromedioFinal()+"\n").setEvaluacionParcial1(archivo.setEvaluacionParcial2(archivo.Java .append(oAlumno. } } catch (IOException e) { JOptionPane.posicion=posicion+1) { archivo.setApellidoNombre(archivo.posicion<i. oAlumno.showMessageDialog(null. jTextAreaListado. public static Alumno leerRegistro(Alumno oAlumno.getAlumno_id()+"\t").getEvaluacionParcial1()+"\t"). } }  Haga clic en la pestaña source del cuadro de diólogo JDialogListarAlumnos y agregue el método leerRegistro.

java.  Verifique las importaciones agregadas.  Verifique que el proyecto se presente como en el siguiente gráfico. Luego haga clic en el objeto JDialogCalcularPromedioFinal. Ing.Java . Javier Alberto Manrique Quiñonez 183 .Enfoque Práctico  En Reparar todas las importaciones (Fix All Import) haga clic en aceptar para seleccionar todas las importaciones.

Java - Enfoque Práctico

 Haga doble clic en cuadro de diálogo JDialogCalcularPromedioFinal.java. Luego haga clic en la pestaña
Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) el objeto Button. Cambie la
propiedad text del jButton por Calcular Promedio Final y finalmente en el Inspector cambie el nombre
del botón de comando por jButtonCalcularPromedioFinal.

 Haga clic en la Ventana Inspector para verificar el cuadro de diálogo JDialogCalcularPromedioFinal.

 Agregue el código del evento clic del objeto jButtonCalcularPromedioFinalActionPerformed.
private void jButtonCalcularPromedioFinalActionPerformed(java.awt.event.ActionEvent evt) {
int respuesta = JOptionPane.showConfirmDialog(this, "¿Esta seguro...?", "Dialogo de Confirmación",
JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
{
Ing. Javier Alberto Manrique Quiñonez

184

Java - Enfoque Práctico

try
{ Alumno oAlumno=new Alumno();
int posicion=0;
RandomAccessFile archivo;
archivo=new RandomAccessFile("alumno.dat","rw");
int i=(int )Math.ceil((double)archivo.length()/100);
for (posicion=0;posicion<i;posicion=posicion+1)
{ archivo.seek( posicion*100 );
leerRegistro(oAlumno, archivo);
oAlumno.setPromedioFinal();
archivo.seek(posicion*100 );
escribirRegistro(archivo, oAlumno);
}
}
catch (IOException e)
{ JOptionPane.showMessageDialog(null,"Falló en procesarpromedio final !!!");
}
}
dispose();
}
 Agregar los métodos leer Registro y escribirRegistro.
public static Alumno leerRegistro(Alumno oAlumno,RandomAccessFile archivo)
{ try
{ oAlumno.setAlumno_id(archivo.readInt());
oAlumno.setApellidoNombre(archivo.readUTF());
oAlumno.setEvaluacionParcial1(archivo.readDouble());
oAlumno.setEvaluacionParcial2(archivo.readDouble());
oAlumno.setPromedioDeTrabajo(archivo.readDouble());
oAlumno.setPromedioFinal(archivo.readDouble());
return oAlumno;
}
catch(IOException e)
{ return null;
}
}
public static void escribirRegistro(RandomAccessFile archivo, Alumno oAlumno)
{ try { archivo.writeInt( oAlumno.getAlumno_id());
archivo.writeUTF( oAlumno.getApellidoNombre());
archivo.writeDouble(oAlumno.getEvaluacionParcial1());
archivo.writeDouble(oAlumno.getEvaluacionParcial2());
archivo.writeDouble(oAlumno.getPromedioDeTrabajo());
archivo.writeDouble(oAlumno.getPromedioFinal());
}
catch(IOException e)
{ JOptionPane.showMessageDialog(null,"Falló al escribir el registro !!!");
}
}

Ing. Javier Alberto Manrique Quiñonez

185

Java - Enfoque Práctico

 Verificar que se muestran errores por falta de librerías.

 Haga clic derecho en la palabra JOptionPane y seleccione Fix Imports (Refaccionar Importaciones).

 En Reparar todas las importaciones (Fix All Import) haga clic en aceptar para seleccionar todas las
importaciones.

Ing. Javier Alberto Manrique Quiñonez

186

Java - Enfoque Práctico

 Verifique las importaciones agregadas.

 Haga doble clic en el JFrame JFrameArchivosConGUI.java y luego clic en la pestaña Design del mismo.
Luego haga clic derecho en el panel de JFrameArchivosConGUI y agregue desde la Paleta (Add From
Palette) una Barra de Menú (Menu Bar).

Ing. Javier Alberto Manrique Quiñonez

187

Java - Enfoque Práctico

 Verifique que la Barra de Menú se presente como en el siguiente gráfico.

 Haga clic derecho en la opción File de la Barra de Menú del JFrameArchivosConGUI y agregue desde la
Paleta (Add From Palette) un Elemento de Menú (Menu Item).

Ing. Javier Alberto Manrique Quiñonez

188

Java - Enfoque Práctico

 Verifique que la barra de Menú se presente como en el siguiente gráfico.

 Haga clic derecho en la opción File de la Barra de Menú del JArchivosConGUI y agregue desde la Paleta
(Add From Palette) un Elemento de Menú (Menu Item).

Ing. Javier Alberto Manrique Quiñonez

189

Java - Enfoque Práctico

 Verifique que la Barra de Menú se presente como en el siguiente gráfico.

 Haga clic derecho sobre la primera opción File y modifique el texto colocando “Alumnos”.

Ing. Javier Alberto Manrique Quiñonez

190

Java . Modifique y póngale Proceso. Javier Alberto Manrique Quiñonez 191 .Enfoque Práctico  Haga doble clic sobre el texto del primer Elemento de Menú (jMenuItem1) y modifique el texto colocando “Insertar Alumnos”. Ing.  Haga clic derecho sobre la segunda opción Edit y seleccione la propiedad Editar Texto. tal como se presenta en el siguiente gráfico. Repita el proceso sobre el texto del segundo Elemento de Menú (jMenuItem2) y modifique el texto colocando “Listado de alumnos”.

Javier Alberto Manrique Quiñonez 192 .Java . Finalmente verifique que la Barra de Menú se presente como en el siguiente gráfico.Enfoque Práctico  Haga clic derecho en la opción Proceso de la Barra de Menú del JArregloConGUI y agregue desde la Paleta (Add From Palette) un Elemento de Menú (Menu Item).  Cambie la propiedad textro del elemento de menú creado y proporcióne el texto Calcular promedio final. Ing.

Javier Alberto Manrique Quiñonez 193 .Enfoque Práctico  Haga clic derecho en la barra de menú y seleccione Agregar menú (Add Menu). Ing.Java .  Haga clic derecho en la opción de menú jMenu3 y seleccione Editar Texto (Edit Text). Cambie el nombre de la opción de menú jMenu3 por Salir.

Java .Enfoque Práctico  Haga clic derecho en la opción de menú Salir y seleccione Agregar Elemento de Menú (Menu Item) desde la paleta (Add From Palette). Cambie el nombre del elemento de menú jMenuItem4 por Salir de la aplicación. Ing. Javier Alberto Manrique Quiñonez 194 .  Haga clic derecho en la opción de menú jMenuItem4 y seleccione Editar Texto (Edit Text).

Enfoque Práctico  Verifique que la Barra de Menú se presente como en el siguiente gráfico. Ing.Java .  Renombre los objetos de la barra de menú en la ventana Inspector del JFrameArchivosConGUI. tal como se presenta como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 195 .

Ing.Enfoque Práctico  Haga clic en la pestaña Source del frame JFrameArreglosConGUI y cree la variable dialogo de tipo Javax.Java . Javier Alberto Manrique Quiñonez 196 .Swing.JDialog tal como se presenta en el siguiente gráfico.  Haga clic derecho en el primer elemento de menú Alumnos (Insertar alumnos) y agregue un EventoAction-ActionPerformed.

 Haga clic derecho en el segundo elemento de menú Alumnos (Listar alumnos) y agregue un EventoAction-ActionPerformed.Java .  Agregue el código siguiente. Debe ser ListarAlumno Ing. Javier Alberto Manrique Quiñonez 197 .Enfoque Práctico  Agregue el código siguiente.

Javier Alberto Manrique Quiñonez 198 . Ing.Java .Enfoque Práctico  Haga clic derecho en el primer elemento de menú Proceso (Calcular promedio final) y agregue un Evento-Action-ActionPerformed.  Agregue el código siguiente.  Haga clic derecho en el primer elemento de menú Salir (Salir del sistema) y agregue un Evento-ActionActionPerformed.

Ing. Javier Alberto Manrique Quiñonez 199 .Java .Enfoque Práctico  Agregue el código siguiente.  Haga clic en Ok para agregar las importaciones  Verifique las importaciones agregadas.

Java .  Haga clic derecho en PaqueteArchivosConGUI y cree una Clase Principal Java (Java main Class) dentro del paquete PaqueteArchivosConGUI. Ing. Javier Alberto Manrique Quiñonez 200 .Enfoque Práctico  Verifique que el código de todos los elementos de menú se presenten como en el siguiente gráfico.

Enfoque Práctico  Asigne como Nombre de Clase (Class name) AplicacionArchivosConGUI.  Verifique que clase principal AplicacionArchivossConGUI se presente como en el siguiente gráfico. Proyecto (Project) ProyectoArchivosConGUI. Paquete (Package) PaqueteArchivosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI\ AplicacionArchivosConGUI. Luego haga clic en Finalizar (Finish). Ing. Javier Alberto Manrique Quiñonez 201 .Java . Haga clic en Source. Localización (Location) Source Packages.java.

Java .Enfoque Práctico  Agregue el código correspondiente a la clase principal AplicacionArreglosConGUI.  Ejecute la aplicación AplicacionArchivosConGUI  Verifique la ejecución de la opción Insertar alumnos. Ing. Javier Alberto Manrique Quiñonez 202 .

Enfoque Práctico  Verifique la ejecución de la opción Listar alumnos  Verifique la ejecución de la opción Calcular promedio final Ing.Java . Javier Alberto Manrique Quiñonez 203 .

Enfoque Práctico  Verifique la ejecución de la opción Salir de la aplicación Ing. Javier Alberto Manrique Quiñonez 204 .Java .

Enfoque Práctico Ing.Java . Javier Alberto Manrique Quiñonez 205 .

Ejemplo: create database dbalumno. Javier Alberto Manrique Quiñonez 206 . El password del cliente es “12345”.1. Ing.Java . CREATE DATABASES Crea una base de datos.  En la ventana de Comandos de Línea de Cliente del MySQL ingrese el password y pulse enter.1 Para cargar el MySQL 5.Enfoque Práctico COMANDO BÁSICOS EN MySQL 5. Luego utilice los conceptos y los ejemplos para trabajar con MySQL 5.1 y utilizar los comandos básicos de manejo de base de datos realice lo siguiente:  En el menú de inicio del Windows seleccione Programas / MySQL / MySQL Command Line Cliente para acceder como cliente de MySQL.

Ejemplo: show databases. CREATE TABLE Crea una tabla. evaluacionParcial1 double. promedioDeTrabajo double ) . Ing. Javier Alberto Manrique Quiñonez 207 . apellidoNombre char(31). USE Indica al MYSQL que use una base de datos especificada. Ejemplo: create table alumn ( alumno_id int. evaluacionParcial2 double.Enfoque Práctico SHOW DATABASES Visualiza la relación de bases de datos. Ejemplo: use dbalumno.Java .

Ejemplo. 11 ) . ‘Arias. promedioDeTrabajo ) values ( 1. 11. Ejemplo: desc alumno.Enfoque Práctico SHOW TABLES Visualiza los nombres de las tablas de la base de datos activa. insert into alumno ( alumno_id. Ejemplo: show tables. apellidoNombre. INSERT Inserta registros. evaluacionParcial1. SELECT Visualiza los registros de una tabla. Javier Alberto Manrique Quiñonez 208 . Ing. Alex’. evaluacionParcial2.Java . DESC Visualiza los campos de una tabla. 11. Ejemplo: select * from alumno.

apellidoNombre from alumno. Para visualizar el número de registros almacenados en la tabla alumno. UPDATE Actualiza datos de registros. DELETE Elimina un registro. Ing. se actualizan todos los registros.Enfoque Práctico Puede también visualizar solo campos especificados: select alumno_id. Javier Alberto Manrique Quiñonez 209 . Para visualizar los campos Codigo y ApeNon de la tabla alumno. update alumno set evaluacionParcial=10 where alumno_id=1. Si no se especifica un registro determinado. Ejemplo.Java . delete from alumno where alumno_id=1. La cláusula where permite condicionar la actualización de un registro específico. ó select count (*) from alumno.

RENAME TO . Ejemplo: alter table alumno rename to talumno.Enfoque Práctico ALTER TABLE . Ing. Javier Alberto Manrique Quiñonez 210 . .Java . . DROP COLUMN . Elimina una columna de la tabla. . Modifica el nombre de una tabla. . . Ejemplo: alter table talumno drop column promedioDeTrabajo. . ALTER TABLE . . .

. Ejemplo: alter table talumno add column promedioDeTrabajo int. ALTER TABLE . . . . . Modifica el tipo de dato de una columna. Javier Alberto Manrique Quiñonez 211 . ADD COLUMN .Enfoque Práctico ALTER TABLE . Ejemplo: alter table talumno modify column promedioDeTrabajo double. MODIFY COLUMN . . Agrega una columna de la tabla. Ing. .Java . .

Ing.Java . Modifica el nombre de una columna. CHANGE COLUMN . . .Enfoque Práctico ALTER TABLE . . . Ejemplo: alter table talumno change column promedioDeTrabajo promedioDeLaboratorio double. Ejemplo: drop table talumno. DROP TABLE Borra una tabla. Javier Alberto Manrique Quiñonez 212 .

Ing. . . Ejemplo: drop database dbalumno. ADD CONSTRAINT . Javier Alberto Manrique Quiñonez 213 .Enfoque Práctico DROP DATABASE Borra una base de datos.Java . ALTER TABLE . Ejemplo: quit. QUIT Sale del MySQL. crear un índice a tabla de datos. . . Ejemplo: alter table alumno add constraint pk_alumno primary key alumno(alumno_id).

Enfoque Práctico Ing. Javier Alberto Manrique Quiñonez 214 .Java .

Ejemplo: Class. Connection conexion = DriverManager. INSTRUCCIONES BÁSICAS DE MANEJO DE BASE DE DATOS CON JAVA Para poder conectar Java con una base de datos (MySQL en este ejemplo) se necesita conocer los siguientes conceptos: driver: Conector de la base de datos. usuario: Un usuario válido para la base de datos. Ejemplo: private static String driver = "com. DB2.forName(driver): Carga el driver o conector de base de datos. url: Es una cadena de caracteres que nos permite localizar la base de datos.mysql. password: Palabra clave del usuario. los sistemas de gestión de base de datos más utilizados son las bases de datos relacionales. Informix. Actualmente. PostgreSQL y MySQL. organizar. Existen controladores JDBC proporcionados por la mayoría de sistemas de gestión de base de datos para conectar Java con una base de datos especial y manipular sus datos almacenadas en ella. usuario. un parámetro con el nombre del usuario usuario y el password password de dicho usuario.getConnection(url. DriverManager. obtener y modificar datos. Oracle. sin la necesidad de preocuparse de su implementación interna.Driver". Para Mysql. Devolviendo un objeto de tipo Connection.Java . usuario. El SQL. Sabe la forma cómo hablar con la base de datos. El método getConnection de la clase DriverManager pasa como parámetro un url de conexión a la base de datos. private static String usuario = "root". password).jdbc. Los programas en Java se comunican con las base de datos y manipulan sus datos utilizando la API JDBC.Enfoque Práctico BASE DE DATOS Una base de datos es una colección organizada de datos. private static String password = "12345". password): Obtiene una conexión con una base de datos en particular.getConnection(url. Javier Alberto Manrique Quiñonez 215 . Sybase. Un sistema de gestión de base de datos es un software que proporciona los mecanismos para almacenar. Ing. Class. Los sistemas de gestión de base de datos relacionales más populares son Microsoft SQL Server. es un lenguaje estándar e internacional que se utiliza en casi todas las base de datos relacionales para realizar consultas y manipular datos en una base de datos. Ejemplo: private static String url = "jdbc:mysql://localhost:3306/dbAlumno".forName(driver).

"+ oAlumno.getAlumno_id()+"."+ oAlumno.getEvaluacionParcial1()+".createStatement() : Este método crea/devuelve un objeto Statement con el cual podemos crear sentencias SQL y luego ejecutarlas sobre la base de datos.getEvaluacionParcial1()+".executeUpdate("UPDATE Alumno SET"+ apellidoNombre='"+oAlumno. Recibe como parámetro una sentencia SQL y devuelve un objeto ResultSet (conjunto de registros) que contendrá los datos de la consulta.'"+ oAlumno. resultado=sentencia.getAlumno_id()).Java . Javier Alberto Manrique Quiñonez 216 .getAlumno_id()).executeUpdate("INSERT INTO Alumno VALUES ("+oAlumno. "+ "EvaluacionParcial1="+oAlumno.getPrmedioDeTrabajo()+".executeUpdate("DELETE FROM Alumno WHERE alumno_id="+ oAlumno. Se utiliza para insertar.next()): Las consultas se hacen con el método executeQuery() y este devuelve un ResultSet (conjunto de registros).executeUpdate: Manipula datos de una base de datos y devuelve un número de filas (registros) afectados."+ "PromedioFinal="+oAlumno."+ "EvaluacionParcial2="+oAlumno. executeQuery( ) Se utiliza en las instrucciones de consulta del tipo SELECT. executeQuery(): Ejecuta consultas sobre la base de datos. En resumen: Método Descripción executeUpdate( ) Se utiliza con instrucciones SQL de manipulación de datos tales como INSERT. Statement sentencia = conexion. El puntero de registros al inicio se encuentra una posición anterior al primer registro.executeQuery("SELECT * FROM Alumno WHERE Alumno_id="+ oAlumno. actualizar y eliminar registros. resultado=sentencia. sentencia.getEvaluacionParcial2()+". Ing.getApellidoNombre()+"'.getPromedioFinal()+")").getEvaluacionParcial2()+".getAlumno_id()).Enfoque Práctico conexion. resultado = sentencia. el cual se manipula a través del método next()."+ "PromedioDeTrabajo="+oAlumno. DELETE o UPDATE."+ oAlumno.getPromedioFinal()+ " WHERE alumno_ido="+oAlumno. Ejemplo: sentencia. indicando que ya no quedan más registros. resultado.createStatement(). Para manipular el siguiente registro se utiliza otra vez el método next() y así sucesivamente hasta que el método next() devuelva el valor falso (false).getPromedioDeTrabajo()+".getApellidoNombre()+"'."+ oAlumno. Para recorrer los registros del ResultSet se utiliza un puntero de registros. o modificados.

. System. System.getDouble("promedioFinal"). } Hemos hecho un SELECT para obtener los registros de la base datos. En estos métodos get() podemos pasar como parámetro un entero. conexion.executeQuery("SELECT * FROM Alumno WHERE alumno_id="+ oAlumno. el objeto Statement y el objeto Connection. evaluacionParcial2 = resultado.getInt("alumno_id").. Ejemplo: resultado. Después hacer next().println("EvaluacionParcial1 : "+ evaluacionParcial1). si pedimos getObject(1) obtenemos el valor de campo1.out. que es el número del campo en el SELECT.out. Luego utilizamos un bucle while(resultado. podemos pedirlo con getInt(). etc. Javier Alberto Manrique Quiñonez 217 . System.getDouble("promedioDeTrabajo").close(). getString(). Si no lo sabemos o nos da igual (como en este caso).next()) { alumno_id=resultado.println("EvaluacionParcial2 : "+ evaluacionParcial2).close(). los datos del registro está disponible para ser leídos .out. Es decir.out.getString(“apellidoNombre”). campo3 .close(). promedioDeTrabajo = resultado. while (resultado.println("Promedio de Trabajo : "+ promedioDeTrabajo). Otra opción es pasar el nombre del campo por ejemplo getObject("alumno_id") nos devuelve el valor del campo alumno_id.close(). empezando en 1. La forma de leer los campos de un registro es pedirlos con algún método get(). etc.. Las líneas con los métodos getXXX() permiten tener acceso a las diferentes columnas de los registros. System. evaluacionParcial1 = resultado. resultado = sentencia.Enfoque Práctico ResultSet resultado. Si sabemos de qué tipo es el dato de cada campo. capaz de traer cualquier tipo de dato. conexion. apellidoNombre = resultado. resultado.close(): Cierra el objeto ResultSet.next()) para traer los registros mientras que el puntero de registros pueda colocarse en un registro válido (no haber llegado al final del ResultSet). para getObject(2) el de campo2.getDouble("evaluacionParcial1").Java .close() . campo2. sentencia. Ing. System.out.println("ApellidoNombre : "+ apellidoNombre).getAlumno_id()). sentencia. promedioFinal = resultado.println("Promedio Final : "+ promedio Final).getDouble("evaluacionParcial2"). bastará con un getObject(). si hacemos SELECT campo1.

0 y es el valor predeterminado si se construye el Statement sin argumentos). Si esa fila no existe.TYPE_SCROLL_SENSITIVE. Sólo se podrá utilizar el método next (este es el único valor para JDBC 1. devuelve false Coloca el puntero delante del primer registro.CONCUR_UPDATABLE El conjunto de resultados no tendrá desplazamiento. Para el tipo: ResultSet. si no lo hay devuelve false.Java . Si esa fila no existe. devuelve false. Obtiene el número de registro actual modificación de datos Ing. Coloca el puntero de registros en la fila indicada. devuelve false. A continuación se presenta un resumen de lo expuesto. Si el número de fila se indica con un número negativo. es creado utilizando el método createStatement. Javier Alberto Manrique Quiñonez 218 .TYPE_FORWARD_ONLY ResultSet. Sin embargo este método puede utilizar dos argumentos que permiten indicar el tipo de ResultSet que obtendría el Statement. Devuelve true si el puntero está situado en el último registro. Devuelve true si el puntero está situado en el primer registro. Conjunto de resultados con desplazamiento y sensibilidad a los cambio La base de datos no puede ser modificada mediante el uso del conjunto de resultados La base de datos es actualizable Desplazamiento por los conjuntos de resultados Si se permite el desplazamiento. El método previous se movería al último registro si se utiliza tras esta orden. Devuelve true si el puntero está situado delante del primer registro.Enfoque Práctico SENTENCIAS PARA ACTUALIZAR LA BASE DE DATOS DESDE UN RESULTSET Una consulta se crea mediante un objeto Statement el cual a su vez. Si no hay último registro. Devuelve true si existe registro siguiente. Coloca el puntero en el primer registro. Coloca el puntero detrás del último registro. El número de fila se puede indicar de forma negativa y en ese caso el puntero se mueve hacia el primer registro (si es positivo se mueve hacia el final). Coloca el puntero de registros en la fila indicada a partir de la posición actual del puntero. El conjunto de resultados tendrá desplazamiento completo pero no tendrá en cuenta los cambios. la fila se cuenta desde el final. Si no hay primer registro.CONCUR_READ_ONLY ResultSet. la clase ResultSet posee los siguientes métodos para desplazarse por los registros: Método boolean next() boolean previous() boolean absolute(int reg) boolean relative(int fila) boolean first() boolean last() void beforeFirst() void afterLast() boolean isFirst() boolean isLast() boolean isBeforeFirst() boolean isAfterLast() int getRow() Uso Avanza el puntero de registros del conjunto de resultados al siguiente registro. devuelve false Coloca el puntero en el último registro.TYPE_SCROLL_INSENSITIVE ResultSet. Coloca el puntero de registros en el registro anterior si lo hay. El método next se movería al primer registro si se utiliza tras esta orden. Devuelve true si el puntero está situado detrás del último registro. Para la concurrencia: ResultSet. Esos dos argumentos son de tipo y de concurrencia y permiten utilizar estas constantes.

En cada llamada obtendremos un nuevo objeto SQLWarning hasta que. ya que esta clase es heredera suya. ocurre que la base de datos provoca excepciones. sino advertencias (warnings). Añade el método getNextWarning que funciona de forma similar a getNextException. resultado.err. El método clearWarnings de la clase ResultSet permite borrar las advertencias almacenadas hasta ese momento.getNextException().getPromedioFinal). System.sql se encuentra la clase SQLException que captura las excepciones ocurridas en el manejo de la base de datos.getErrorCode()). salvo que éste recoge el texto que envía el controlador JDBC según lo informado por el gestor de bases de datos. ya que a veces ocurren varias a la vez (especialmente en transacciones y operaciones complejas).updateDouble("promedioFinal". } } SQLWarning Otras veces. finalmente no haya más (devolverá entonces el valor null). Devuelve el código de error ocurrido (según lo informado por el gestor de la base de datos) getNextException.println("Código: "+e. Su uso no difiere del resto de excepciones. Ejemplo: resultado.oAlumnoTemporal. System.Java .println("Mensaje: "+e. EXCEPCIONES EN LA BASE DE DATOS SQLException En el paquete java. El método updateRow es el que permite actualizar la base de datos con los nuevos cambios. Para ver los errores basta con llamar repetidamente al método getSQLWarning. El método típico de excepciones.getSQLState()). pero que en esta clase no se suele utilizar ya que las sucesivas llamadas al método getSQLWarnings provocan el mismo resultado.println("Estado: "+e. getMessage. Se debe utilizar cuando estamos seguros de que los cambios son los correctos. Que permite ver la siguiente excepción ocurrida. pero incorpora nuevos métodos interesantes: getSQLState.err. Los métodos que permiten observar el contenido de la advertencia son los mismos que los de la clase SQLException. getErrorCode. Ejemplo: try { //instrucciones de manejo de la base de datos } catch(SQLException sqle) { while(e!=null) { System.updateRow().Enfoque Práctico Los conjuntos de resultados se pueden utilizar también para modificar los datos obtenidos por la consulta SELECT (siempre y cuando sea posible). Los objetos que las provocan (sobre todo los ResultSet) las van almacenando en objetos de tipo SQLWarning. Para ello se necesitan utilizar los métodos update de la clase ResultSet que permiten modificar el contenido de un campo en la posición actual del puntero de registros. e.err. Se trata de un conjunto de métodos que comienzan con la palabra update seguida del tipo de datos Java del campo y un segundo parámetro que indica el nuevo valor para el campo. Javier Alberto Manrique Quiñonez 219 . Ing. Describe el error según las convenciones XOPEN.getMessage()). Si queremos anular los cambios se debe utilizar el método cancelRowUpdates. lo que le hace muy efectivo.

Si lo encuentra en la tabla de base de datos lo presenta en pantalla. Si no lo encuentra presenta el mensaje "No se encuentra el registro !!!". Esta opción solicita que se ingrese el código del alumno (alumno_id). Esta opción solicita que se ingrese el código del alumno (alumno_id).Enfoque Práctico APLICACIÓN DE CONSOLA CON ACCESO A BASE DE DATOS A continuación se presenta el desarrollo de una aplicación en la cual se utiliza tabla de base de datos para almacenar los datos de un alumno. Javier Alberto Manrique Quiñonez 220 . Esta opción solicita el código del alumno (alumno_id). Se utiliza los atributos código del alumno (alumno_id). Si lo encuentra presenta el mensaje “Registro encontrado !!!”  La ejecución de la opción C permite consultar un registro almacenado en una tabla de base de datos. El promedio final (promedioFinal) se calcula con la siguiente fórmula: promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo ) La aplicación desarrollada para correr en consola presenta el siguiente menú de opciones: Cada opción se describe a continuación:  La ejecución de la opción I permite insertar objetos la tabla de base de datos. sus apellidos y nombres (apellidoNombre). evaluacionParcial1. Si no lo encuentra presenta el mensaje "No se encuentra el registro !!!".  La ejecución de la opción M permite modificar un registro almacenado en el arreglo de registros. Ing.Java . la evaluación parcial 2 (evaluacionParcial2) y el promedio de trabajo (promedioDeTrabajo). evaluacionParcial2 y promedioDeTrabajo). Si no lo encuentra en la tabla de base de datos permite ingresar los otros datos (apellidoNombre. la evaluación parcial 1 (evaluacionParcial1). Si lo encuentra en la tabla de base de datos lo presenta en pantalla y solicita nuevos datos (atributos apellidoNombre. evaluacionParcial2 y promedioDeTrabajo) los cuales reemplazan a los anteriores. evaluacionParcial1. calcular su promedio final y mostrar los datos del alumno con su promedio final calculado.

Para visualzar el promedio final calculado tiene que ejecutar la opción [P]rocesar notas.Java . Si no lo encuentra presenta el mensaje "No se encuentra el registro !!!". Si lo encuentra en la tabla de base de datos lo presenta en pantalla y lo borra inmediatamente. Javier Alberto Manrique Quiñonez 221 . Note que el promedio final se visualiza con el valor 0.  La ejecución de la opción P permite calcular el promedio final de los registros de la tabla de base de datos. Para visualizar el promedio final calculado tiene que ejecutar la opción [L]istar.  La ejecución de la opción L permite listar los registros de la tabla de base de datos. Note que el promedio final se visualiza con el valor 0. Esta opción solicita que se ingrese el código del alumno (alumno_id).Enfoque Práctico  La ejecución de la opción E permite eliminar registros al arreglo de registros. Para el desarrollo de la aplicación debe realizar las siguientes actividades: Ing.  La ejecución de la opción S se sale de la aplicación.

El password es 12345. Javier Alberto Manrique Quiñonez 222 .Enfoque Práctico  En el menú de inicio del Windows seleccionar Programas / MySQL / MySQL Command Line Cliente para levantar el servicio cliente de MySQL.Java . Ing.  Tipee el password y pulse enter.  Cree la base de datos escribiendo create database dbalumno. y luego pulse la tecla enter.

double 223 .  Indique la base de datos a usar escribiendo use dbalumno. double. double.Java . Javier Alberto Manrique Quiñonez int.Enfoque Práctico  Visualice la relación de bases de datos creadas escribiendo show databases. double.  Cree la tabla de base de datos alumnos escribiendo: create table alumno ( alumno_id apellidoNombre evaluacionParcial1 evaluacionParcial2 promedioDeTrabajo promedioFinal ) . char(31). Ing. y luego pulse enter.

Javier Alberto Manrique Quiñonez 224 . Ing.1 y haga clic derecho en File (Archivo) y cree un proyecto vacío de Java  Seleccione un proyecto de Aplicación Java (Java Application).Enfoque Práctico  Cree un índice a tabla de datos alumno escribiendo: alter table alumno add constraint pk_alumno primary key alumno(alumno_id).  Cargue el NetBeans 6.Java .7.

Enfoque Práctico  Asigne como Nombre de Proyecto (Project Name) ProyectoAccesoBaseDeDatosConJava. Localización del proyecto (Project Location) c:\NetBeansProjects y como Carpeta del Proyecto (Project Folder) c:\NetBeansProjects\ProyectoAccesoBaseDeDatosConJava.  Haga clic derecho en el Proyecto ProyectoAccesoBaseDeDatosConJava y cree un Paquete.Java . Javier Alberto Manrique Quiñonez 225 . Ing. Desmarcar la casilla de verificación Cree una Clase Principal (Create Main Class) y luego haga clic en Finalizar (Finish).

Javier Alberto Manrique Quiñonez 226 . Ing. Localización (Location) Source Packages y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoAccesoBaseDeDatosConJava\src\ PaqueteAccesoBaseDeDatosConJava.Java . Proyecto (Project) ProyectoAccesoBaseDeDatosConJava.  Haga clic derecho en PaqueteAccesoBaseDeDatosConJava y cree una Java Class. Luego haga clic en Finalizar (Finish).Enfoque Práctico  Asigne como Nombre de Paquete (Package Name) PaqueteAccesoBaseDeDatosConJava.

promedioDeTrabajo = 0. this. } public Alumno(int alumno_id. double evaluacionParcial1. private double evaluacionParcial2.Java . package PaqueteAccesoBaseDeDatosConJava. this. Proyecto (Project) ProyectoAccesoBaseDeDatosConJava. public class Alumno { private int alumno_id. this.alumno_id=0. } Ing.evaluacionParcial1 = evaluacionParcial1.apellidoNombre = apellidoNombre. localización (Location) Source Packages.alumno_id = alumno_id. this. this. double evaluacionParcial2. double promedioDeTrabajo. public Alumno() { this. this. private double promedioFinal. Luego haga clic en Finalizar (Finish).promedioDeTrabajo = promedioDeTrabajo. this. Javier Alberto Manrique Quiñonez 227 .evaluacionParcial2 = evaluacionParcial2.java. this. promedioFinal = 0. private double evaluacionParcial1.Enfoque Práctico  Asigne como Nombre de Clase (Class name) Alumno. private String apellidoNombre. private double promedioDeTrabajo.promedioFinal = promedioFinal .apellidoNombre=null. String apellidoNombre.evaluacionParcial2 = 0. paquete (Package) PaqueteAccesoBaseDeDatosConJava y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoAccesoBaseDeDatosConJava\src\PaqueteAccesoBaseDeDatosConJava\ Alumno.evaluacionParcial1 = 0. this. double promedioFinal) { this.  Agregue el siguiente código para la clase Alumno. this.

} public double getPromedioFinal() { return this. promedioDeTrabajo = promedioDeTrabajo.Java .apellidoNombre = apellidoNombre.alumno_id = alumno_id.promedioFinal=(this. } public String getApellidoNombre() { return this. } } Ing. } public double getEvaluacionParcial2() { return this.promedioFinal=promedioFinal.evaluacionParcial2 = evaluacionParcial2. } public void setPromedioFinal(double promedioFinal) { this. } public void setPromedioDeTrabajo(double promedioDeTrabajo) { this. } public void setAlumno_id(int alumno_id) { this.apellidoNombre.promedioDeTrabajo. } public void setEvaluacionParcial1 (double evaluacionParcial1) { this.alumno_id.evaluacionParcial2. } public void setPromedioFinal() { this.evaluacionParcial1 = evaluacionParcial1. } public void setEvaluacionParcial2 (double evaluacionParcial2) { this. } public void setApellidoNombre(String apellidoNombre) { this. } public double getPromedioDeTrabajo() { return this.Enfoque Práctico public int getAlumno_id() { return this.evaluacionParcial1. Javier Alberto Manrique Quiñonez 228 . } public double getEvaluacionParcial1() { return this.evaluacionParcial2+this.promedioDeTrabajo)/3.evaluacionParcial1+this.promedioFinal.

Localización (Location) Source Packages y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoAccesoBaseDeDatosConJava\src\PaqueteBiblioteca.Java . Javier Alberto Manrique Quiñonez 229 .Enfoque Práctico  Cree un nuevo paquete. Proyecto (Project) ProyectoAccesoBaseDeDatosConJava. Luego haga clic en Finalizar (Finish). Ing.  Asigne como Nombre de Paquete (Package Name) PaquetePaqueteBiblioteca.

J..C.J.Enfoque Práctico  Dentro del paquete PaqueteBiblioteca cree la clase denominada ClaseLectura.. char [] c1=leerString(). } catch (NumberFormatException e) { System.) package PaqueteBiblioteca.print("ERROR.floatValue(). } catch (NumberFormatException e) { System..N.valueOf(leerString()).print("ERROR. public class ClaseLectura { public static char leerChar() { char c=' '.F. return leerInt().print("ERROR. \n Ingrese de nuevo : "). return c. } } public static int leerInt() { try { return Integer.out..parseInt(leerString()).valueOf(leerString()). } } public static float leerFloat() { try { return Float. \n Ingrese de nuevo:").. } public static double leerDouble() { try { return Double. return leerFloat().Java .out.toCharArray().doubleValue().S. import java. } catch (NumberFormatException e) { System. if (c1. } } Ing. (Cortesía del Ing.  Agregue el siguiente código para la clase ClaseLectura. Javier Alberto Manrique Quiñonez 230 .length==1) c=c1[0]. \n Ingrese de nuevo:"). return leerDouble().*.io.J Flores Cueto – U.out..

print("ERROR.out.. } } public static short leerShort() { try { return Short.shortValue(). Ing. \n Ingrese de nuevo:").out. } } Nota: El código anterior (ClaseLectura..valueOf(leerString()).Enfoque Práctico public static long leerLong() { try { return Long.out. String cadena ="".java) puede descargarlo del cd de trabajo proporcionado por el autor. try { cadena = in.. \n Ingrese de nuevo:"). } catch (NumberFormatException e) { System. return leerShort(). Javier Alberto Manrique Quiñonez 231 .  Cree una nueva clase denominada AlumnoDAO.Java .longValue().readLine(). } } public static String leerString() { BufferedReader in = new BufferedReader(new InputStreamReader(System.valueOf(leerString())..print("ERROR. leerLong().println(e). } return cadena. } catch (IOException e) { System. in)). } catch (NumberFormatException e) { System.

close().getConnection(url.Vector.getApellidoNombre()+"'. } } Ing.close().sql. private static final String url = "jdbc:mysql://localhost:3306/dbAlumno". import java.executeUpdate("INSERT INTO Alumno VALUES ("+ oAlumno.forName(driver).sql.Java ."+ oAlumno. filasAfectadas= sentencia.sql.x"+e).Connection. Connection conexion=DriverManager. if(filasAfectadas==0) { return false.password). private static final String usuario = "root".usuario.mysql.ResultSet.createStatement(). Connection conexion=DriverManager. return false. return true..Statement."+ oAlumno.util.Enfoque Práctico  Agregue el siguiente código para la clase AlumnoDAO. conexion."+e).out. public class AlumnoDAO { private static final String driver = "com."+ oAlumno..getConnection(url. return false.getAlumno_id()).out...sql. Statement sentencia=conexion.password). import java. import java.usuario.createStatement().getEvaluacionParcial2()+".DriverManager.getAlumno_id()+".jdbc. Statement sentencia= conexion. conexion. sentencia. import java.executeUpdate("DELETE FROM Alumno WHERE Alumno_id =" + oAlumno.getPromedioDeTrabajo()+". Javier Alberto Manrique Quiñonez 232 . Class. public boolean insertarAlumno(Alumno oAlumno) { try { Class.forName(driver).'"+ oAlumno. } else { return true. } } catch (Exception e) { System.print("Error ."+ oAlumno.getPromedioFinal()+")").. import java..getEvaluacionParcial1()+". } } public boolean eliminarAlumno(Alumno oAlumno) { try { int filasAfectadas=0. private static final String password = "12345".Driver". } catch (Exception e) { System. package PaqueteAccesoBaseDeDatosConJava.print("Error .

resultado. evaluacionParcial1="+oAlumno. Connection conexion = DriverManager.createStatement().executeUpdate("UPDATE Alumno SET "+ " apellidoNombre='"+ oAlumno. resultado. filasAfectadas=sentencia.getPromedioDeTrabajo()+ ".usuario.password).getConnection(url.getEvaluacionParcial2()+ ".next()) { do { oAlumnoTemporal = new Alumno( resultado.getDouble("promedioDeTrabajo"). Statement sentencia = conexion. promedioDeTrabajo="+ oAlumno.Enfoque Práctico public Vector<Alumno> obtenerDatosEnVectorAlumno() { try { Vector<Alumno> oVector = new Vector<Alumno>().getDouble("evaluacionParcial2"). Class. Statement sentencia = conexion. } } public boolean modificarAlumno(Alumno oAlumno) { try { int filasAfectadas=0.getString("apellidoNombre").getDouble("promedioFinal") ).usuario. evaluacionParcial2="+ oAlumno. if(resultado. } } Ing.next()).executeQuery("SELECT * FROM Alumno"). Class. } else { return null.getPromedioFinal()+ " WHERE alumno_id="+ oAlumno.password). resultado.Java .forName(driver).out.close().getInt("alumno_id"). Alumno oAlumnoTemporal. resultado. conexion. } else { return true. promedioFinal="+oAlumno..addElement(oAlumnoTemporal). oVector. resultado. } } catch (Exception e) { System. return oVector. return null.getApellidoNombre() + "'.forName(driver). ResultSet resultado=sentencia. } while(resultado..getEvaluacionParcial1()+ ".getDouble("evaluacionParcial1").getAlumno_id()). if(filasAfectadas==0) { return false..getConnection(url."+e).createStatement().print("Error . Connection conexion = DriverManager. Javier Alberto Manrique Quiñonez 233 .

while (resultado. ResultSet resultado = sentencia.createStatement( ResultSet."+e).getAlumno_id()).. oAlumnoTemporal. if(resultado.createStatement(). } Ing.Java .getDouble("evaluacionParcial1")).setEvaluacionParcial2(resultado.close().setEvaluacionParcial1(resultado.next()) { oAlumnoTemporal.out.getConnection(url.Enfoque Práctico catch (Exception e) { System..print("Error .usuario.close().executeQuery("SELECT * FROM Alumno"). ResultSet resultado=sentencia. } else { return null.print("Error . } resultado. return true. resultado. return oAlumnoTemporal. Statement sentencia = conexion. Connection conexion = DriverManager. oAlumnoTemporal.getDouble("evaluacionParcial2")). sentencia. oAlumnoTemporal = new Alumno(). oAlumnoTemporal.getDouble("evaluacionParcial1")).password).setEvaluacionParcial2(resultado.setPromedioDeTrabajo(resultado.updateDouble("promedioFinal". oAlumnoTemporal.usuario.next()) { oAlumnoTemporal.getPromedioFinal()).CONCUR_UPDATABLE).getConnection(url.. oAlumnoTemporal. Class. ResultSet.password).. oAlumnoTemporal.getDouble("promedioDeTrabajo")). conexion. } } public Alumno buscarAlumno(Alumno oAlumno) { try { Alumno oAlumnoTemporal.getDouble("promedioDeTrabajo")). resultado.getDouble("promedioFinal")).TYPE_SCROLL_SENSITIVE. Statement sentencia = conexion."+e). conexion.getInt("alumno_id")).setPromedioDeTrabajo(resultado.executeQuery("SELECT * FROM Alumno WHERE alumno_id ="+oAlumno.getDouble("evaluacionParcial2")).setPromedioFinal(resultado. } } catch (Exception e) { System.setAlumno_id(resultado.updateRow().out.setEvaluacionParcial1(resultado.close().close(). } } public boolean procesarPromedioAlumno() { try { Alumno oAlumnoTemporal=new Alumno(). resultado. Connection conexion = DriverManager.setApellidoNombre(resultado.close()..forName(driver). Javier Alberto Manrique Quiñonez 234 .forName(driver).getString("apellidoNombre")). oAlumnoTemporal. Class.oAlumnoTemporal.. return false. return null. oAlumnoTemporal.setPromedioFinal().

println(" [C]onsulta").toUpperCase(ClaseLectura.println(" =======").println(" [P]rocesar notas")."+e).leerChar()).Enfoque Práctico catch (Exception e) { System.print(" Elija su opción : "). break . System.. case 'E' : eliminar().util.Java . } } }  Cree una nueva clase denominada AplicacionConsola.out.. break .println(" [I]nsertar").out. public class AplicacionConsola { public static void main(String[ ] args) { char opcion. break .out. switch (opcion) { case 'I' : insertar(). case 'C' : consulta().out. import java. System.println(" [S]alir "). Javier Alberto Manrique Quiñonez 235 . return false . System. System. break . break . package PaqueteAccesoBaseDeDatosConJava.out.Vector. do { System.  Agregue el siguiente código para la clase AplicacionConsola.out.out.println(" M E N U"). case 'M': modificar().out.out. System. System.println(" [M]odificar").println(" [L]istar"). import PaqueteBiblioteca. } } while (opcion!='S').print("Error .out.. System. break .ClaseLectura. case 'P': procesarPromedio().out. System.println(" [E]liminar"). opcion=Character. } Ing. System. case 'L': listar().

buscarAlumno(oAlumno).. } } public static void modificar() { Alumno oAlumno = new Alumno().out.buscarAlumno(oAlumnoBuscar).setAlumno_id(mAlumno_id). oAlumno.modificarAlumno(oAlumno)) { System. int mAlumno_id. AlumnoDAO oAlumnoDAO=new AlumnoDAO(). if (oAlumnoDAO..leerInt().leerInt(). oAlumno.print("Alumno_id :").println("No se realizó la operacion . System.out.out."). } else { System. oAlumno=actualizarRegistro(oAlumno). mAlumno_id=ClaseLectura. Javier Alberto Manrique Quiñonez 236 . oAlumnoBuscar=oAlumnoDAO. AlumnoDAO oAlumnoDAO=new AlumnoDAO(). if(oAlumnoBuscar == null) { Alumno oAlumno = new Alumno().out."). System..out.print("Alumno_id :"). oAlumno.buscarAlumno(oAlumno).println("Se realizo la operación . } else { System.").").leerInt(). if(oAlumno !=null) { visualizarRegistro(oAlumno). oAlumno=actualizarRegistro(oAlumno). } } public static void consulta() { Alumno oAlumno = new Alumno()..out.println("Se realizó la operación .Enfoque Práctico public static void insertar() { Alumno oAlumnoBuscar = new Alumno().setAlumno_id(mAlumno_id). System..out. oAlumnoDAO.Java ..print("Alumno_id : ").setAlumno_id(mAlumno_id). System. if(oAlumno !=null) { visualizarRegistro(oAlumno). oAlumnoBuscar.setAlumno_id(mAlumno_id).. mAlumno_id=ClaseLectura.println("No se realizó la operación .. int mAlumno_id.out. oAlumno=oAlumnoDAO..println("No se realizó la operación . AlumnoDAO oAlumnoDAO=new AlumnoDAO()."). } else { System..insertarAlumno(oAlumno). int mAlumno_id. mAlumno_id=ClaseLectura. } } } Ing. oAlumno=oAlumnoDAO.

y Nom.print("P. alumnoDAO.print(oVector.get(i).out.P. System.out. } public static void listar() { AlumnoDAO alumnoDAO=new AlumnoDAO().print("Evaluación parcial 1 : "+oAlumno.get(i).F.obtenerDatosEnVectorAlumno(). mAlumno_id=ClaseLectura.. System. } } public static void procesarPromedio() { AlumnoDAO alumnoDAO=new AlumnoDAO().\n"). System.").println("No se realizó la operación . System.out.out.Java . System..getAlumno_id()+"\t\t").print(oVector.getEvaluacionParcial1()+"\n").print("Apellido y Nombre : "+oAlumno..T.P.out. System..get(i).").setAlumno_id(mAlumno_id).println("No se realizó la operación .out.")..print("P.print("Alumno_id\t").println("Se realizó la operación .out. i < oVector. oVector = alumnoDAO.\t").out.leerInt(). oAlumno=oAlumnoDAO.out.print("E. } else { System.procesarPromedioAlumno().out.get(i).get(i).\t\t").print("Evaluación parcial 2 : "+oAlumno. } } catch(Exception e) { System.get(i). System. } } else { System.getEvaluacionParcial2()+"\n"). System. System.print(oVector.print("E.getApellidoNombre()+"\n"). i ++) { System.. System.getEvaluacionParcial1()+"\t").eliminarAlumno(oAlumno).Enfoque Práctico public static void eliminar() { Alumno oAlumno = new Alumno().out.print(oVector. System. AlumnoDAO oAlumnoDAO=new AlumnoDAO(). Ing.buscarAlumno(oAlumno).out.out.. System.print("Ap. int mAlumno_id.getApellidoNombre()+"\t\t"). Vector<Alumno> oVector.getPromedioDeTrabajo()+"\t"). oAlumno. System. if(oVector!=null) { try { System. oAlumnoDAO..out. Javier Alberto Manrique Quiñonez 237 .out.out."). } } public static void visualizarRegistro(Alumno oAlumno) { System.out.out.print(oVector.print(oVector.println("No se realizó la operación . 2\t").getPromedioFinal()+"\n"). 1\t").out.size().out.getEvaluacionParcial2()+"\t").print("Alumno_id :"). System. for(int i = 0. if (oAlumno !=null) { visualizarRegistro(oAlumno).

setEvaluacionParcial1(ClaseLectura.print("Evaluación parcial 2 : ").getPromedioFinal()+"\n").leerDouble ()).out. return oAlumno. } }  Haga clic derecho en Librerias (Libraries) para agregar la librería MySQL JDBC driver.print("Evaluación parcial 1 : "). System. oAlumno.leerString()).leerDouble()).out.getPromedioDeTrabajo()+"\n").print("Apellido y Nombre : ").out.Java . System.out.out.print("Promedio de trabajo : "+oAlumno.print("Promedio final : "+oAlumno.leerDouble ()).out.print("Promedio de trabajo : "). oAlumno.setPromedioDeTrabajo(ClaseLectura. oAlumno. } public static Alumno actualizarRegistro(Alumno oAlumno) { System. System.  Ing.setApellidoNombre(ClaseLectura. oAlumno. System.Enfoque Práctico System.setEvaluacionParcial2(ClaseLectura. Javier Alberto Manrique Quiñonez 238 .

Enfoque Práctico  Seleccione la librería MySQL JDBC driver y haga clic en Agregar librería (Add library). Javier Alberto Manrique Quiñonez 239 .  Verifique que la librería MySQL JDBC driver a sido agregada.Java . Ing.

Javier Alberto Manrique Quiñonez 240 . Ing.Enfoque Práctico  La ejecución de la aplicación mostrando el menú de opciones.  La ejecución de la aplicación mostrando la ejecución de la opción [L]istar.Java .

Javier Alberto Manrique Quiñonez 241 .Enfoque Práctico Ing.Java .

Enfoque Práctico Ing. Javier Alberto Manrique Quiñonez 242 .Java .

calcular su promedio final y mostrar los datos del alumno con su promedio final calculado. la evaluación parcial 1 (evaluacionParcial1).Enfoque Práctico ACCESO A BASE DE DATOS CON GUI A continuación se presenta el desarrollo de una aplicación en la cual se utiliza una tabla de base de datos para almacenar los datos de un alumno. Esta opción solicita los datos del alumno (alumno_id. Ing. sus apellidos y nombres (apellidoNombre). evaluacionParcial1. Javier Alberto Manrique Quiñonez 243 . la evaluación parcial 2 (evaluacionParcial2) y el promedio de trabajo (promedioDeTrabajo). apellidoNombre.Java . Se utiliza los atributos código del alumno (alumno_id). evaluacionParcial2 y promedioDeTrabajo). El promedio final (promedioFinal) se calcula con la siguiente fórmula: promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo ) La aplicación desarrollada con GUI presenta el siguiente menú de opciones: Cada opción se describe a continuación:  La ejecución de la opción Insertar alumnos permite insertar registros en una tabla de base de datos utilizando un cuadro de diálogo.

Javier Alberto Manrique Quiñonez 244 .Enfoque Práctico  La ejecución de la opción Listar registros permite listar los registros de la tabla de base de datos utilizando un cuadro de area de texto. Ing. Para visualzar el promedio final calculado tiene que ejecutar la opción Calcular promedio final.  La ejecución de la opción Salir del sistema sale de la aplicación.Java .  La ejecución de la opción Calcular promedio final permite calcular el promedio final de los registros de la tabla de base de datos. Para ver los cambios realizados se tiene que ejecutar la opción Listar registros. Note que el promedio final se visualiza con el valor 0.

Enfoque Práctico A continuación se presenta una práctica para crear un sistema de menú con GUI para manipular una tabla de base de datos  Haga clic derecho en File (Archivo) y seleccione Abrir Proyecto (Open Project).Java . Ing. En Abrir Proyecto (Open Project) seleccione ProyectoAccesoBaseDeDatosConJava. Javier Alberto Manrique Quiñonez 245 .  Haga clic derecho en el Proyecto ProyectoAccesoBaseDeDatosConJava y seleccione Copiar (Copy) para copiar el proyecto en otro.

Ing.  Verifique que el proyecto ProyectoBaseDeDatosConGUI se presente como en el siguiente gráfico.Java .Enfoque Práctico  Escriba como nombre de proyecto (Project Name) ProyectoBaseDeDatosConGUI. Javier Alberto Manrique Quiñonez 246 .

Ing.java y seleccione Borrar (Delete) para eliminar el archivo.Java .Enfoque Práctico  Haga clic derecho en AplicacionConsola.  Haga clic derecho en el paquete PaqueteBiblioteca y seleccione Borrar (Delete) para eliminar el paquete PaqueteBiblioteca. Javier Alberto Manrique Quiñonez 247 .

Java .  Haga clic derecho en PaqueteBaseDeDatosConGUI y cree una JFrame Form Ing. Javier Alberto Manrique Quiñonez 248 .Enfoque Práctico  Verifique que el proyecto ProyectoBaseDeDatosConGUI se presente como en el siguiente gráfico.

Javier Alberto Manrique Quiñonez 249 .  Verifique que el Proyecto ProyectoBadeDeDatosConGUI se presente como en el siguiente gráfico. paquete (Package) PaqueteBaseDedatosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteBaseDeDatosConGUI\ JFrameBaseDeDatosConGUI.java.Enfoque Práctico  Asigne como Nombre de Clase (Class name) JFrameBaseDeDatosConGUI. Proyecto (Project) ProyectoBaseDeDatosConGUI. localización (Location) Source Packages. Ing.Java . Luego haga clic en Finalizar (Finish).

Enfoque Práctico  Haga clic derecho en PaqueteBaseDeDatosConGUI y cree un JDialog Form dentro del Paquete PaqueteBaseDeDatosConGUI. Localización (Location) Source Packages.  Asigne como Nombre de Clase (Class name) JDialogInsertarAlumno. Paquete (Package) PaqueteBaseDeDatosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoBaseDeDatosConGUI\src\PaqueteBaseDeDatosConGUI\ JDialogInsertarAlumno.java. Proyecto (Project) ProyectoBaseDeDatosConGUI. Luego haga clic en Finalizar (Finish). Javier Alberto Manrique Quiñonez 250 .Java . Ing.

Java . Ing. Javier Alberto Manrique Quiñonez 251 .Enfoque Práctico  Haga clic derecho en PaqueteBaseDeDatosConGUI y cree un JDialog Form PaqueteBaseDeDatosConGUI. dentro del Paquete  Asigne como Nombre de Clase (Class name) JDialogListarAlumnos. Luego haga clic en Finalizar (Finish). Localización (Location) Source Packages. Proyecto (Project) ProyectoBaseDeDatosConGUI. Paquete (Package) PaqueteBaseDeDatosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoBaseDeDatosConGUI\src\PaqueteBaseDeDatosConGUI\ JDialogListarAlumnos.java.

 Haga clic derecho en PaqueteBaseDeDatosConGUI y cree un JDialog Form dentro del Paquete PaqueteBaseDeDatosConGUI. Javier Alberto Manrique Quiñonez 252 . Ing.Java .Enfoque Práctico  Verifique que el proyecto se presente como en el siguiente gráfico.

Luego haga clic en Finalizar (Finish).java.Java .  Verifique que el proyecto se presente como en el siguiente gráfico. Proyecto (Project) ProyectoBaseDeDatosConGUI. Localización (Location) Source Packages.java.Enfoque Práctico  Asigne como Nombre de Clase (Class name) JDialogCalcularPromedioFinal. Ing. Paquete (Package) PaqueteBaseDeDatosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoBaseDeDatosConGUI\src\PaqueteBaseDeDatosConGUI\ JDialogCalcularPromedioFinalFinal. Javier Alberto Manrique Quiñonez 253 .

Javier Alberto Manrique Quiñonez 254 .  Haga clic en la Ventana Inspector y verifique la presencia de los objetos que se visualizan en la ventana Design. Ing. tal como se presenta en el siguiente gráfico. Text Field (05) y Button (03). Luego haga clic en la pestaña Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label (06).Enfoque Práctico  Haga doble clic en cuadro de diálogo JDialogInsertarAlumno.Java .

Java . Javier Alberto Manrique Quiñonez 255 . Modifique la propiedad Text del objeto jLabelTitulo con el texto “Insertar alumnos”.Enfoque Práctico  Renombre los objetos en la ventana Inspector tal como se presenta en el siguiente gráfico.  Pulse las teclas Control-Mayúsculas-7 para visualizar la Ventana de Propiedades. Ing.

Nombre del Control Swing en el Inspector Propiedad Text del Control Swing jLabelTitulo Insertar alumnos jLabelAlumno_id Alumno_id: jLabel ApellidoNombre Apellido y nombre: jLabelEvaluacionParcial1 EvaluaciónParcial 1: jLabelEvaluacionParcial2 EvaluaciónParcial 2: jLabelPromedioDeTrabajo Promedio de Trabajo: jButtonAceptar Aceptar jButtonReiniciar Reiniciar jButtonSalir Salir  Haga clic en alguna parte del Panel de Diseño (Designer) del jDialog JDialogInsertarAlumno.java para visualizar la ventana de Propiedades (Properties).Java .Enfoque Práctico  Cambie la propiedad Text de cada control Swing para que sea como el de la siguiente tabla. Ing. Javier Alberto Manrique Quiñonez 256 .

 Haga clic derecho en el objeto jButtonAceptar y seleccione en el menú conceptual Event-ActionactionPerformed para programar en evento clic del botón de comando. Javier Alberto Manrique Quiñonez 257 .Enfoque Práctico  Modifique la propiedad defaultCloseOperation y escriba DISPOSE (deshacerse).Java . Ing.

awt.getText())). Luego haga clic en la pestaña Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label. if (oAlumnoDAO.showMessageDialog(null. oAlumno. oAlumno. jTextArea y Button.ActionEvent evt) { Alumno oAlumno=new Alumno(). } else { JOptionPane.setText(""). y agregue el código del evento clic del objeto private void jButtonReiniciarActionPerformed(java.awt. jTextFieldEvaluacionParcial2.awt.parseDouble(jTextFieldPromedioDeTrabajo."Operación Fallida"). Javier Alberto Manrique Quiñonez 258 . private void jButtonAceptarActionPerformed(java.parseInt(jTextFieldAlumno_id.ActionEvent evt) { jTextFieldAlumno_id.setText("").event. Ing.setAlumno_id(Integer. }  Repita el proceso anterior y gregue el código del evento clic del objeto jButtonSalirActionPerformed. AlumnoDAO oAlumnoDAO=new AlumnoDAO().parseDouble(jTextFieldEvaluacionParcial1.Enfoque Práctico  Agregue el código del evento clic del objeto jButtonAceptarActionPerformed.event. } }  Repita el proceso anterior jButtonReiniciarActionPerformed."Operación Exitosa").Java . oAlumno. oAlumno.getText())).parseDouble(jTextFieldEvaluacionParcial2.event.getText())).setText("").getText()).setText("").insertarAlumno(oAlumno)) { JOptionPane. oAlumno. jTextFieldApellidoNombre.setEvaluacionParcial2(Double. private void jButtonSalirActionPerformed(java. Finalmente en el Inspector cambie los nombres de los controles tal como se presenta en el siguiente gráfico.setPromedioDeTrabajo(Double. jTextFieldEvaluacionParcial1.setText(""). jTextFieldPromedioDeTrabajo.setEvaluacionParcial1(Double.showMessageDialog(null. }  Haga doble clic en cuadro de diálogo JDialogListarAlumno.ActionEvent evt) { dispose().setApellidoNombre(jTextFieldApellidoNombre.getText())).

Ing.append(oVector. jTextAreaListado.get(i). System.getApellidoNombre()+"\t"+"\t"). jTextAreaListado.i=i+1) { jTextAreaListado.append(oVector.get(i).event. }  Verifique que el proyecto se presente como en el siguiente gráfico.append(oVector. jTextAreaListado.get(i).get(i).setText(""). Luego haga clic en la pestaña Diseño (Design) y agregue de la Paleta de Controles (Swing Controls) el objeto Button.java. private void jButtonListarActionPerformed(java.getEvaluacionParcial2()+"\t").get(i).java. Cambie la propiedad text del jButton por Calcular Promedio Final y finalmente en el Inspector cambie el nombre del botón de comando por jButtonCalcularPromedioFinal.size()). jTextAreaListado.append(oVector. Javier Alberto Manrique Quiñonez 259 . for (int i=0.Enfoque Práctico  Agregue el código del evento clic del objeto jButtonListarActionPerformed.Java . AlumnoDAO oAlumnoDAO=new AlumnoDAO(). jTextAreaListado.out.jTextAreaListado.getPromedioFinal()+"\n").get(i).getPromedioDeTrabajo()+"\t").append("Alumno_id"+"\t"+"Apellido y Nombre"+ "\t"+ "Ep1"+ "\t"+ "Ep2"+"\t"+"Pt"+"\t"+"Pf"+"\n").println(oVector.getEvaluacionParcial1()+"\t").getAlumno_id()+"\t").append(oVector.  Haga doble clic en cuadro de diálogo JDialogCalcularPromedioFinal.awt.append(oVector. Luego haga clic en el objeto JDialogCalcularPromedioFinal. oVector=oAlumnoDAO.size().i<oVector. Vector<Alumno> oVector = new Vector<Alumno>().ActionEvent evt) { jTextAreaListado.obtenerDatosEnVectorAlumno().

ActionEvent evt) { int respuesta = JOptionPane. } dispose(). oAlumnoDAO.procesarPromedioAlumno()..  Agregue el código del evento clic del objeto jButtonCalcularPromedioFinalActionPerformed. "Dialogo Confirmación".awt.YES_NO_OPTION).?".event.Java . private void jButtonCalcularPromedioFinalActionPerformed(java. OptionPane. } Ing.Enfoque Práctico  Haga clic en la Ventana Inspector para verificar el cuadro de diálogo JDialogCalcularPromedioFinal. if (respuesta == JOptionPane. "¿Esta seguro.showConfirmDialog(this. Javier Alberto Manrique Quiñonez de 260 .YES_OPTION) { AlumnoDAO oAlumnoDAO=new AlumnoDAO()..

 Verifique que la Barra de Menú se presente como en el siguiente gráfico.Java . Luego haga clic derecho en el panel de JFrameArreglosConGUI y agregue desde la Paleta (Add From Palette) una Barra de Menú (Menu Bar). Javier Alberto Manrique Quiñonez 261 .Enfoque Práctico  Haga doble clic en el JFrame JFrameArreglosConGUI. Ing.java y luego clic en la pestaña Design del mismo.

Java . Javier Alberto Manrique Quiñonez 262 .Enfoque Práctico  Haga clic derecho en la opción File de la Barra de Menú del JFrameBaseDeDatosConGUI y agregue desde la Paleta (Add From Palette) un Elemento de Menú (Menu Item). Ing.  Verifique que la barra de Menú se presente como en el siguiente gráfico.

Ing. Javier Alberto Manrique Quiñonez 263 .  Verifique que la Barra de Menú se presente como en el siguiente gráfico.Java .Enfoque Práctico  Haga clic derecho en la opción File de la Barra de Menú y agregue desde la Paleta (Add From Palette) un Elemento de Menú (Menu Item).

tal como se presenta en el siguiente gráfico.Java . Ing.Enfoque Práctico  Haga clic derecho sobre la primera opción File y modifique el texto colocando “Alumnos”.  Haga doble clic sobre el texto del primer Elemento de Menú (jMenuItem1) y modifique el texto colocando “Insertar Alumnos”. Repita el proceso sobre el texto del segundo Elemento de Menú (jMenuItem2) y modifique el texto colocando “Listado de alumnos”. Javier Alberto Manrique Quiñonez 264 .

 Haga clic derecho en la opción Proceso de la Barra de Menú del JArregloConGUI y agregue desde la Paleta (Add From Palette) un Elemento de Menú (Menu Item).Enfoque Práctico  Haga clic derecho sobre la segunda opción Edit y seleccione la propiedad Editar Texto. Ing. Modifique y póngale Proceso.Java . Javier Alberto Manrique Quiñonez 265 .

Javier Alberto Manrique Quiñonez 266 . Ing.  Haga clic derecho en la barra de menú y seleccione Agregar menú (Add Menu). Finalmente verifique que la Barra de Menú se presente como en el siguiente gráfico.Enfoque Práctico  Cambie la propiedad textro del elemento de menú creado y proporcióne el texto Calcular promedio final.Java .

Cambie el nombre de la opción de menú jMenu3 por Salir. Javier Alberto Manrique Quiñonez 267 .  Haga clic derecho en la opción de menú Salir y seleccione Agregar Elemento de Menú (Menu Item) desde la paleta (Add From Palette).Enfoque Práctico  Haga clic derecho en la opción de menú jMenu3 y seleccione Editar Texto (Edit Text). Ing.Java .

 Verifique que la Barra de Menú se presente como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 268 . Cambie el nombre del elemento de menú jMenuItem4 por Salir de la aplicación. Ing.Enfoque Práctico  Haga clic derecho en la opción de menú jMenuItem4 y seleccione Editar Texto (Edit Text).Java .

Ing.JDialog tal como se presenta en el siguiente gráfico.Enfoque Práctico  Renombre los objetos de la barra de menú en la ventana Inspector del JFrameBaseDeDatosConGUI.Swing.  Haga clic en la pestaña Source del frame JFrameBaseDeDatosConGUI y cree la variable dialogo de tipo Javax. Javier Alberto Manrique Quiñonez 269 . tal como se presenta como en el siguiente gráfico.Java .

Java .  Agregue el código siguiente. Javier Alberto Manrique Quiñonez 270 .Enfoque Práctico  Haga clic derecho en el primer elemento de menú Alumnos (Insertar alumnos) y agregue un EventoAction-ActionPerformed. Ing.

Javier Alberto Manrique Quiñonez 271 .Enfoque Práctico  Haga clic derecho en el segundo elemento de menú Alumnos (Listar alumnos) y agregue un EventoAction-ActionPerformed. Debe ser ListarAlumno Ing.  Agregue el código siguiente.Java .

Java . Javier Alberto Manrique Quiñonez 272 .Enfoque Práctico  Haga clic derecho en el primer elemento de menú Proceso (Calcular promedio final) y agregue un Evento-Action-ActionPerformed. Ing.  Agregue el código siguiente.  Haga clic derecho en el primer elemento de menú Salir (Salir del sistema) y agregue un Evento-ActionActionPerformed.

Java . Ing.  Verifique que el código de todos los elementos de menú se presenten como en el siguiente gráfico.Enfoque Práctico  Agregue el código siguiente. Javier Alberto Manrique Quiñonez 273 .

Javier Alberto Manrique Quiñonez 274 . Ing.Java .java. Proyecto (Project) ProyectoBaseDeDatosConGUI. Localización (Location) Source Packages.  Asigne como Nombre de Clase (Class name) AplicacionBaseDeDatosConGUI.Enfoque Práctico  Haga clic derecho en PaqueteBaseDeDatosConGUI y cree una Clase Principal Java (Java main Class) dentro del paquete PaqueteBaseDeDatosConGUI. Luego haga clic en Finalizar (Finish). Paquete (Package) PaqueteBaseDeDatosConGUI y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoBaseDeDatosConGUI\src\PaqueteBaseDeDatosConGUI\ AplicacionBaseDeDatosConGUI.

Java . Javier Alberto Manrique Quiñonez 275 . Ing.  En el menú de inicio del Windows seleccionar Programas / MySQL / MySQL Command Line Cliente para levantar el servicio cliente de MySQL.  Agregue el código correspondiente a la clase principal AplicacionBaseDeDatosConGUI. Haga clic en Source.Enfoque Práctico  Verifique que clase principal AplicacionBaseDeDatosConGUI se presente como en el siguiente gráfico.

El password es 12345. y luego pulse la tecla enter.  Indique la base de datos a usar escribiendo use dbalumno. Ing. Javier Alberto Manrique Quiñonez 276 .Enfoque Práctico  Tipee el password y pulse enter.Java . y luego pulse enter.  Cree la base de datos escribiendo create database dbalumno.  Visualice la relación de bases de datos creadas escribiendo show databases.

Java . double. int. Javier Alberto Manrique Quiñonez 277 . double.Enfoque Práctico  Cree la tabla de base de datos alumnos escribiendo: create table alumno ( alumno_id apellidoNombre evaluacionParcial1 evaluacionParcial2 promedioDeTrabajo promedioFinal ) . double. char(31). double  Cree un índice a tabla de datos alumno escribiendo: alter table alumno add constraint pk_alumno primary key alumno(alumno_id) Ing.

Java .  Seleccione la librería MySQL JDBC driver y haga clic en Agregar librería (Add library). Javier Alberto Manrique Quiñonez 278 . Ing.Enfoque Práctico  Haga clic derecho en Librerias (Libraries) para agregar la librería MySQL JDBC driver.

 Ejecute la aplicación AplicacionBaseDeDatosConGUI  Verifique la ejecución de la opción Insertar alumnos. Ing. Javier Alberto Manrique Quiñonez 279 .Java .Enfoque Práctico  Verifique que la librería MySQL JDBC driver a sido agregada.

Enfoque Práctico  Verifique la ejecución de la opción Listar alumnos  Verifique la ejecución de la opción Calcular promedio final Ing.Java . Javier Alberto Manrique Quiñonez 280 .

Java .Enfoque Práctico  Verifique la ejecución de la opción Salir de la aplicación Ing. Javier Alberto Manrique Quiñonez 281 .

Enfoque Práctico Ing.Java . Javier Alberto Manrique Quiñonez 282 .

 Cree la base de datos escribiendo create database dbalumno. Ing.  Tipee el password y pulse enter.Java .  En el menú de inicio del Windows seleccionar Programas / MySQL / MySQL Command Line Cliente para levantar el servicio cliente de MySQL. El password es 12345. Javier Alberto Manrique Quiñonez 283 . y luego pulse la tecla enter.Enfoque Práctico REPORTES SIN USO DE PARÁMETROS A continuación se presenta una práctica para crear un reporte utilizando Java e iReport.

double.13.evalucionParcial2.13).Enfoque Práctico  Visualice la relación de bases de datos creadas escribiendo show databases. Insert into alumno(alumno_id. Alex’.’Barreto.promedioDeTrabajo) values (2.’Cespedes.evaluacionParcial1. double. Cesar’.evaluacionParcial1. apellidoNombre.  Indique la base de datos a usar escribiendo use dbalumno. create table alumno ( alumno_id apellidoNombre evaluacionParcial1 evaluacionParcial2 promedioDeTrabajo promedioFinal int.promedioDeTrabajo) values (3.11). Insert into alumno(alumno_id.12). Insert into alumno(alumno_id. Ing.Java . char(31). Javier Alberto Manrique Quiñonez 284 .promedioDeTrabajo) values (1. 12.11.12. double ) . y luego pulse enter. 13. Byron’. apellidoNombre. double.  Inserte los siguientes registros.evalucionParcial2.  Cree la tabla de base de datos alumnos. apellidoNombre. 11.evaluacionParcial1.’Arias.evalucionParcial2.

 En Conexiones/origen de Datos (Connections/Datasources) haga clic en Nuevo (new)..Java .1.Enfoque Práctico  Cree un índice a tabla de datos alumno escribiendo: alter table alumno add constraint pk_alumno primary key alumno(alumno_id)  En la barra de herramientas del NetBeans 6.7. haga clic en el botón conexión/origen de datos para reportes (Report Datasources) cuyo ícono es . Javier Alberto Manrique Quiñonez 285 . Ing.

Enfoque Práctico  En Conexión/origen de Datos (Datasources) seleccione Database JDBC connection y luego haga clic en siguiente.  Configure la Conexión a base de datos JDBC (Database JDBC connection) tal como se presenta en el siguiente gráfico.Java . Javier Alberto Manrique Quiñonez 286 . luego haga clic en Test. El password es el configurado en el MySQL (password: 12345) Ing.

Java . Javier Alberto Manrique Quiñonez 287 .  En Conexión/origen de Datos (Connections/Datasources) verifique la conexión JDCB creada y luego cierre la ventana. Ing.Enfoque Práctico  En Conexión a base de datos con JDBC (Database JDBC connection) active cuadro de texto Salvar contraseña(Save password) y luego haga clic en el botón grabar (Save) y finalmente cierre la ventana.

El proyecto mencionado se encuentra en el Cd proporcionado por el autor en la carpeta Backup.  Haga clic derecho en el Proyecto ProyectoBaseDeDatosConGUIBackup y seleccione Copiar (Copy).Java .Enfoque Práctico  Haga clic derecho en File (Archivo) y seleccione Abrir Proyecto (Open Project). En Abrir Proyecto (Open Project) seleccione ProyectoBaseDeDatosConGUIBackup. Javier Alberto Manrique Quiñonez 288 . Ing.

Enfoque Práctico  Escriba como nombre de proyecto (Project Name) ProyectoReportesConJava. Ing.  Verifique que el proyecto ProyectoReportesConJava se presente como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 289 .Java .

Java .Enfoque Práctico  Haga clic derecho en paquete PaqueteBaseDedatosConGUI y seleccione Reparar/Renombrar (Refactor/Rename).  Dea como nuevo nombre de paquete PaqueteReportesConJava y luego haga clic en el botón Refaccionar (Refactor). Ing. Javier Alberto Manrique Quiñonez 290 .

Enfoque Práctico  Haga clic derecho en la clase AplicacionBaseDeDatosConGUI y seleccione Refaccionar/renombrar (Refactor/Rename). Ing. Javier Alberto Manrique Quiñonez y luego haga clic en el botón 291 .  Dea como nuevo nombre de clase AplicacionReportesConJava Refaccionar (Refactor).Java .

 Haga clic derecho en el proyecto ProyectoBaseDeDatosConGUIBackup y selecciones close. Luego verifique que el proyecto se presente como en el siguiente gráfico. Ing.java por el nombre JFrameReportesConJava.Enfoque Práctico  Repita los procesos anteriores para renombrar a la clase JFrameBaseDeDatosConGUI. Javier Alberto Manrique Quiñonez 292 .Java .

 Seleccione JasperReports3. Javier Alberto Manrique Quiñonez 293 .Java .Enfoque Práctico  Haga clic derecho en Libraries y seleccione Agregar Librería (Add Library).5. Ing.3 y luego haga clin el el botón Agregar Librería (Add Library).

java Ing.Java .  Agregue de la Carpeta F:\ClasesParaReportes (Cd de trabajo proporcionado por el Autor) la clase ClaseReporteSinParametro.Enfoque Práctico  Verifique que en el explorador del proyecto se han agregado las librerías de JasperReport. Javier Alberto Manrique Quiñonez 294 .

jasperreports. } catch (Exception j) { System. import java. jviewer.exit(3).util.JRLoader.sf. } } Ing.Driver". import java. private final String login = "root".setTitle("Reporte de alumnos"). ex.jasperreports. JasperViewer jviewer = new JasperViewer(jasperPrint.println("Error cargando el reporte maestro: " + e.getMessage()). } catch (SQLException ex) { System. jviewer.printStackTrace().parametro.jdbc.out. } Map parametro = new HashMap().sql.out. } catch (JRException e) { System. try { masterReport = (JasperReport) JRLoader. private String url = "jdbc:mysql://localhost:3306/dbAlumno". ex.setVisible(true).engine. import java.forName(driver).Map.out.fillReport(masterReport. conexion = DriverManager. System.Enfoque Práctico  Verifique el código del la clase ClaseReporteSinParametro.loadObject(reporteURL). package PaqueteReportesConJava. public ClaseReporteSinParametro() { try { Class.view. } catch (ClassNotFoundException ex) { System.conexion).SQLException.java.HashMap.sql.println("Falló la conexión !!!").println("Falló carga de driver !!!"). Javier Alberto Manrique Quiñonez 295 . private final String password = "12345". import net.false). import java.util.*. private String driver= "com.sql.out.engine.getMessage()).Java .util.jasperreports.DriverManager.mysql.sf. } } public void ejecutarReporte(String reporteURL) { try { JasperReport masterReport = null.getConnection(url. import java.*.printStackTrace(). public class ClaseReporteSinParametro { private Connection conexion.sf.println("Mensaje de Error:"+j. import net.Connection. JasperPrint jasperPrint = JasperFillManager.login. import net.password).

Java . } catch (SQLException ex) { ex.Enfoque Práctico public void cerrarReporte() { try { conexion. Ing.printStackTrace(). } } }  Haga clic derecho en el Paquete PaqueteReporteConJava y seleccione Nuevo/Otro (New/Other).close().  Seleccione Reporte Vacío (Empty report). Javier Alberto Manrique Quiñonez 296 .

 Haga clic en el objeto Ing. Luego haga clic en Finalizar (Finish). como se presenta en el siguiente gráfico.Java . Javier Alberto Manrique Quiñonez para crear una consulta SQL de base datos.Enfoque Práctico  En Nuevo Reporte Vacío (New Empty Report) configure el reporte y localización. 297 .

Javier Alberto Manrique Quiñonez ).Enfoque Práctico  Haga clic en el botón de comando Query Designer. seleccione los campos de la consulta y luego haga clic en OK.  Arrastre el objeto alumno ( Ing.Java . 298 .

Java .  Haga clic en en el botón ok.Enfoque Práctico  Haga clic en la pestaña SQL y finalmente hacer clic en ok. Ing. Javier Alberto Manrique Quiñonez 299 .

Javier Alberto Manrique Quiñonez 300 . Ing. En caso que no se visualizará haga clic en la opción Windows-Reset Windows del menú principal del NetBeans 6.1.Java .7.  Verifique la visualización de la Ventana Inspector de Reportes (Report Inspector).Enfoque Práctico  Pulse Control-Shift+8 y verifique la visualización de la paleta de objetos para reportes.

 Haga clic en Preview para realizar una vista previa. alumno_apellidoNombre y alumno_promedioFinal de la Ventana PaqueteReporteConJava – Navegador (Navigator) a la fila Detail del área de diseño del reporte.Enfoque Práctico  Arrastre las variables alumno_id_alumno_id.Java . Ing. Javier Alberto Manrique Quiñonez 301 .

Luego haga doble clic en cada uno de los objetos Etiqueta de Texto Estática (label Static Text) y cambie los textos como se visualizan en el siguiente gráfico.Java . Javier Alberto Manrique Quiñonez 302 .Enfoque Práctico  Haga clic en la pestaña Designer y arrastre el objeto Etiqueta de Texto Estática (label Static Text) a la banda Cabecera de Página (Page Header) del área de diseño del reporte. Ing.  Repita el proceso anterior y agregue dos objetos Etiqueta de Texto Estática (label Static Text) más.

Luego haga doble clic en el objeto agregado y cambie el texto como se visualizan en el siguiente gráfico.  Haga clic en Preview para realizar una vista previa. Javier Alberto Manrique Quiñonez 303 . Ing.Enfoque Práctico  Repita el proceso anterior y agregue un objeto Etiqueta de Texto Estática (label Static Text) en la banda Cabecera de Página (Page Header).Java .

Enfoque Práctico  Haga doble clic en JFrameReportesConJava.  En el inspector modifique el nombre de los objetos agregados. Ing. Java y agregue la opción Reportes y el elemento de menú Reporte de alumnos. Javier Alberto Manrique Quiñonez 304 .Java .

private jMenuItemReporteDeAlumnosActionPerformed (java.jasper se crea cuando se hace al reporte vista previa al reporte. } Nota: La variable de tipo String reporteURL contiene la dirección donde se ha grabado el archivo ReporteDeAlumnos. oClaseReporteSinParametro.Enfoque Práctico  Haga clic derecho en el primer elemento de menú Reportes (Reportes de alumnos) y agregue un EventoAction-ActionPerformed. Javier Alberto Manrique Quiñonez 305 .ActionEvent evt) { ClaseReporteSinParametro oClaseReporteSinParametro=new ClaseReporteSinParametro(). String reporteURL="C:/NetBeansProjects/ProyectoReportesConJava/src/PaqueteReportesConJava/ReporteDeAlumnos. El archivo .  Agregue el código siguiente.event.jasper".ejecutarReporte(reporteURL).awt.Java .jasper. Ing.

java y seleccione Ejecutar archivo (RunFile) para ejecutar la aplicación.Enfoque Práctico  Haga clic derecho a la clase AplicacionReportesConJava. Ing.Java .  Seleccione el primer elemento de menú Reportes (Reportes de alumnos) de la opción de menú Reportes y visualice el reporte generado. Javier Alberto Manrique Quiñonez 306 .

Ing. Javier Alberto Manrique Quiñonez 307 .Java . Dea el nombre del archivo PDF y luego haga clic en Grabar (Save).Enfoque Práctico  Haga clic en el el botón Imprimir (Imprimir) impresora instaladae imprimir el reporte el papel. Puede seleccionar la  Haga clic en el el botón Grabar (Save) para grabar el reporte en el formato PDF. para imprimir el reporte.

Enfoque Práctico  Verifique el funcionamiento de las otras opciones del la barra de herramientas. Ing.Java . Javier Alberto Manrique Quiñonez 308 .

Javier Alberto Manrique Quiñonez 309 .Java . Ing.Enfoque Práctico CREACIÓN DE UN REPORTE CON USO DE PARÁMETROS  Seleccione Reporte Vacío (Empty report).

Enfoque Práctico  En Nuevo Reporte Vacío (New Empty Report) configure el reporte y localización. Luego haga clic en Finalizar (Finish).jrxml ha sido creado. como se presenta en el siguiente gráfico. Javier Alberto Manrique Quiñonez 310 .  Verifique que el archivo ReporteIndividual. Ing.Java .

DriverManager.util.*.view.sql.password).engine. import net. private String url = "jdbc:mysql://localhost/DbAlumno". } } Ing.println("Falló la conexión !!!").login.jasperreports. private final String driver=”com. import java.Enfoque Práctico  Agregue de la Carpeta F:\ClasesParaReportes (Cd de trabajo proporcionado por el Autor) la clase ClaseReporteConParametro. conexion = DriverManager.out.util.engine. package PaqueteReportesConJava.printStackTrace(). import java.sf.jasperreports.out. ex. import java. import java. public class ClaseReporteConParametro { private Connection conexion.sql. private final String password = "12345".Driver” private final String login = "root". } catch (SQLException ex) { System.getConnection(url.HashMap. } catch (ClassNotFoundException ex) { System.jdbc.sf.forName(driver). public ClaseReporteConParametro() { try { Class. import java. Javier Alberto Manrique Quiñonez 311 . import net.Java . ex.util.printStackTrace().Connection.SQLException.mysql.java  Verifique el código agregado de la clase ClaseReporteConParametro.sf.Map.println("Falló carga de driver !!!").sql.*.JRLoader. import net.jasperreports.

System.println("Error cargando el reporte maestro: " + e.close(). System.println("No encuentra el archivo de reporte !!!").parametro.Enfoque Práctico public void ejecutarReporte(String reporteURL.exit(2).getMessage()).false).printStackTrace().put("pAlumno_id". } } public void cerrarReporte() { try { conexion. String pAlumno_id) { try { if (reporteURL == null) { System. no termina aplicación al salir JasperViewer jviewer = new JasperViewer(jasperPrint.loadObject(reporteURL).exit(3). } JasperReport masterReport = null. } //Preparacion del reporte (en esta etapa se inserta el valor del query en el reporte) Map parametro = new HashMap(). jviewer.setTitle("Reporte de alumnos"). try { masterReport = (JasperReport) JRLoader. //Se lanza el Viewer de Jasper.pAlumno_id).out. jviewer. } catch (SQLException ex) { ex.setVisible(true).getMessage()). } catch (Exception j) { System.fillReport(masterReport. } catch (JRException e) { System.out.println("Mensaje de Error:"+j. Javier Alberto Manrique Quiñonez 312 . } } } Ing. parametro. //Reporte diseñado y compilado con iReport JasperPrint jasperPrint = JasperFillManager.conexion).Java .out.

 Haga clic derecho en parameter 1 y seleccione Rename.Enfoque Práctico  En la ventana Inspector de Reportes (Report Inspector) haga clic derecho en Parameter y seleccionar Add Parameter. Javier Alberto Manrique Quiñonez 313 .  Digite como nuevo nombre pcodigo. luego hacer clic en OK.Java . Ing.

Ing. Javier Alberto Manrique Quiñonez 314 .  Haga clic en el botón Query Designer.Enfoque Práctico  Haga clic en el objeto para crear una consulta SQL de datos.Java .

Ing. seleccione los campos de la consulta y luego haga clic en OK. Javier Alberto Manrique Quiñonez 315 .Java .  Haga clic en la pestaña SQL y finalmente hacer clic en OK.Enfoque Práctico  Arrastre el objeto alumno ( ).

 Agregue la selección condicional (WHERE) y finalmente haga clic en botón OK.Java .Enfoque Práctico  Haga clic en la sentencia SQL agregada después de la cláusula FROM. Ing. Javier Alberto Manrique Quiñonez 316 .

Enfoque Práctico  Configure el reporte como se presenta en el siguiente gráfico. Ing.  Haga clic en Preview para realizar una vista previa. Ingresar el parámetro 1.Java . Javier Alberto Manrique Quiñonez 317 .

 Configure el cuadro de diálogo JDialogGenerarReporte y agregue los controles que se presentan en el inspector y con el diseño que se presenta en el gráfico siguiente. String reporteURL= "C:/NetBeansProjects/ProyectoReportesConJava/src/PaqueteReportesConJava/ReporteIndividual.awt.  Agregue el código al botón Aceptar.event.jTextFieldAlumno_id.ejecutarReporte(reporteURL.Enfoque Práctico  Cree un nuevo cuadro de diálogo denominado JDialogGenerarReporte. Javier Alberto Manrique Quiñonez 318 .Java . } Ing. private void jButtonAceptarActionPerformed(java. oClaseReporteConParametro.ActionEvent evt) { ClaseReporteConParametro oClaseReporteConParametro=new ClaseReporteConParametro().jasper".getText()).

 En el inspector modifique el nombre de los objetos agregados.awt. }  Haga doble clic en JFrameReportesConJava. Java y agregue el elemento de menú Reporte de alumnos individual.ActionEvent evt) { dispose().Enfoque Práctico  Agregue el código al botón Salir private void jButtonSalirActionPerformed(java. Ing. Javier Alberto Manrique Quiñonez 319 .event.Java .

event. dialogo. dialogo. dialogo. } Ing.Enfoque Práctico  Haga clic derecho en el segundo elemento de menú Reportes (Reportes de alumnos) y agregue un Evento-Action-ActionPerformed.Java .100). dialogo.  Cree un nuevo cuadro de diálogo denominado JDialogGenerarReporte.ActionEvent evt) { dialogo=new JDialogGenerarReporte(this.true).setVisible(true).setTitle("Reporte individual").setSize(300. Javier Alberto Manrique Quiñonez 320 .awt.setLocationRelativeTo(this). private void jMenuItemReporteDeAlumnosIndividualActionPerformed(java.

Enfoque Práctico  Ejecute el reporte recién creado. Javier Alberto Manrique Quiñonez 321 . Ing.Java .

double. double. double. double. tipoDeDocente =1 tipoDeDocente =2 tipoDeDocente =3 (Eventual) (Contratado) (De planta) porcentaje=0. Javier Alberto Manrique Quiñonez 322 .Java . create table Docente ( docente_id apellidoNombre tipoDeDocente_id nick anhoDeIngreso fotografia horasDictadas tarifaPorHora sueldoBruto movilidad afiliadoAFP bonificacionPorTipoDeDocente sueldoTotal descuentoAFP impuestoALaRenta descuentoTotal sueldoNeto ).1 utilizando la estructura que se muestra a continuación: create database dbDocente.  Cree la base datos dbDocente y la tabla Docente en MySQL 5.13 Si sueldoTotal<2200 Si sueltoTotal>=2200 impuestoALaRenta=0 impuestoALaRenta=sueldoTotal*0. int. double Ing.0 porcentaje=0. int. char(31). double. double.descuentoTotal. int.10 descuentoTotal= descuentoAFP + impuestoALaRenta sueldoNeto = sueldoTotal . double. char(31).10 porcentaje=0.Enfoque Práctico SISTEMAS CON REPORTES AVANZADOS A continuación se presenta la descripción de la clase Docente. int. use dbDocente. double. Descripción Nombre Tipo Código de docente docente_id Apellido y Nombre Tipo de docente Nick (alias) Horas dictadas Año de ingreso Tarifa por hora Movildad Afiliado a AFP Sueldo bruto Fórmula int apellidoNombre tipoDeDocente_id nick horasDictadas anhoDeIngreso tarifaPorHora movilidad afiliadoAFP sueldoBruto String int String double int double double int double Bonificación por bonificacionPorTipoDeDocente tipo de docente double Sueldo Total sueldoTotal double Descuento de AFP descuentoAFP double Impuesto a la renta impuestoALaRenta double Descuento total Sueldo Neto double double descuentoTotal sueldoNeto Pasajes y taxis por vivir fuera de la ciudad en soles 1 : si no es afiliado a AFP 2 : si es afiliado a AFP sueldoBruto = horasDictadas * tarifaPorHora bonificaciónPorTipoDeDocente = sueldoBruto * porcentaje. char(100). double. el cual se utilizará en el desarrollo de la práctica de Sistemas con Reportes Avanzados.20 sueldoTotal = sueldoBruto + bonificacionPorTipoDeDocente + movilidad afiliado_a_AFP = 1 afiliado_a_AFP = 2 descuentoAFP = 0 descuentoAFP = sueldoTotal* 0.

int(11).  Cree la tabla Reporte en MySQL utilizando la estructura que se muestra a continuación. alter table docente add constraint pk_docente primary key docente(docente_id). alter table reporte add constraint pk_reporte primary key reporte(reporte_id). Javier Alberto Manrique Quiñonez 323 . char(200).Enfoque Práctico  Cree un índice y utilice como campo clave el campo docente_id.  Haga clic derecho en la Opción Archivo (File) del menú principal para crear un nuevo proyecto. create table reporte ( reporte_id descripcion url conCuadroDeDialogo conParametro ).Java . int(11)  Cree un índice y utilice como campo clave el campo docente_id. Ing. int(11). char(150).

Ing. Localización del proyecto (Project Location) c:\NetBeansProjects y como Carpeta del Proyecto (Project Folder) c:\NetBeansProjects\ProyectoReporteAvanzado.  Asigne como Nombre de Proyecto (Project Name) ProyectoReporteAvanzado. Javier Alberto Manrique Quiñonez 324 .Enfoque Práctico  Seleccione un proyecto de Aplicación Java (Java Application).Java . Desmarcar la casilla de verificación Cree una Clase Principal (Create Main Class) y luego haga clic en Finalizar (Finish).

Javier Alberto Manrique Quiñonez 325 . Localización (Location) Source Packages y como Carpeta Creada (Created Folder) c:\NetBeansProjects\ProyectoReporteAvanzado\src\PaqueteReporteAvanzado. Ing. Proyecto (Project) ProyectoReporteAvanzado. Luego haga clic en Finalizar (Finish).  Asigne como Nombre de Paquete (Package Name) PaqueteReporteAvanzado.Enfoque Práctico  Haga clic derecho en el Proyecto ProyectoReporteAvanzado y cree un Paquete denominado PaqueteReporteAvanzado.Java .

actualizar 326 . del proyecto del proyecto  Las funciones de las clases copiadas son las siguientes: CLASE FUNCIÓN ConexionBD DocenteDAO GestionDeReporte ImagePreview ModeloDeFiltroDeArchivo ModeloDeLista ParametroDeReporte Reporte Ing.Enfoque Práctico  Copie las clases ConexionBD. ImagePreview. GestionDeReporte. DocenteDAO. ParametroDeReporte.Java . ModeloDeLista. Proporciona los métodos insertar. Javier Alberto Manrique Quiñonez Retorna una conexión a una base de datos. eliminar. Reporte ProyectoReporteAvanzadoBackup al paquete PaqueteReporteAvanzado ProyectoReporteAvanzado. ModeloDeFiltroDeArchivo.

Javier Alberto Manrique Quiñonez 327 .  En Conexiones / Origen de Datos (Connections/Datasources) haga clic en Nuevo (new).Enfoque Práctico  Haga clic en el botón para crear conexión a origen de datos. Ing.Java .

Javier Alberto Manrique Quiñonez 328 .Enfoque Práctico  En Conexión a Origen de Datos (Datasources) seleccione Database JDBC connection y haga clic en siguiente. El password es el configurado en el MySQL. Ing. Luego haga clic en el botón Test parea testear la conexión.  Configure la Conexión a Base de Datos JDBC (Database JDBC connection) tal como se presenta en el siguiente gráfico.Java .

Java .Enfoque Práctico  En Conexión a base de datos JDBC (Database JDBC connection) haga clic en grabar (Save) y luego cierre la ventana. Ing.  En Conexiones y Origen de Datos (Connections/Datasources) verifique la conexión JDCB creada y luego cierre la ventana. Javier Alberto Manrique Quiñonez 329 .

Ing.  Seleccione JasperReport 3. Javier Alberto Manrique Quiñonez 330 .Enfoque Práctico  Haga clic derecho en Libraries del Proyecto ProyectoReportesAvanzados y seleccione Agregar Librería (Add Library).5 y haga clic en Agregar Librería (Add Library).Java .

java.Java . Javier Alberto Manrique Quiñonez 331 .Enfoque Práctico  Verifique que en el Explorador del Proyecto se han agregado las librerías de JasperReport3.5 y ya no aparece error en la clase ClaseReporteSinParametro.  Haga clic derecho en el Paquete PaqueteReportesAvanzados y seleccione Nuevo (New) y Reporte Vacio (Empty Report). Ing.

 Verifique en el Explorador de Proyectos (Projects) que el reporte ReporteAvanzado ha sido creado.Enfoque Práctico  En Nuevo Reporte Vacío (New Empty Report) configure el reporte y localización. Ing. Luego haga clic en Finalizar (Finish). como se presenta en el siguiente gráfico. Javier Alberto Manrique Quiñonez 332 .Java .

Javier Alberto Manrique Quiñonez 333 .Java . Ing.Enfoque Práctico  Haga clic en el objeto para crear una consulta SQL de base de datos  Haga clic en el botón Query Designer.

Ing.Enfoque Práctico  Haga doble clic en la tabla graduado y seleccione los campos de la consulta.Java . Finalmente haga clic en OK.  Haga clic en el botón Leer Campos (Read Fields) y finalmente haga clic en ok. Javier Alberto Manrique Quiñonez 334 .

Ing. Javier Alberto Manrique Quiñonez 335 .Enfoque Práctico  Verifique que el Inspector de Reportes (Report Inspector) presenta los campos seleccionados en el proceso anterior.Java .  En la Paleta (Palette) de Elementos de Reportes (Report Elements) seleccione Frame ( ).

Enfoque Práctico  Arrastre el Elemento de Reporte Frame ( ) al área de diseño del reporte. Ing. Javier Alberto Manrique Quiñonez 336 .  Haga clic derecho en el Frame y seleccione Relleno y Borde (Padding And Border).Java .

 Configure el reporte como se presenta en el siguiente gráfico. Ing.Enfoque Práctico  Configure el borde y relleno como se presenta en el siguiente gráfico.Java . Arrastre y suelte los campos de la ventana del Inspector dentro del Frame ( ) que se encuentra en detalles (detail) del área de diseño del reporte. Javier Alberto Manrique Quiñonez 337 .

A la aparición del cuadro de diálogo Seleccionar archivo de imagen (Select image file).Enfoque Práctico  Reacomode los campos seleccionados que se encuentra en detalles (detail) del área de diseño del reporte.  Arrastre el elemento de reporte Imagen ( ) al Frame del área de diseño del reporte. Javier Alberto Manrique Quiñonez 338 . Ing.Java . haga clic en el botón Cancelar para no seleccionar ninguna imagen.

Java . Javier Alberto Manrique Quiñonez 339 .Enfoque Práctico  En propiedades haga clic en el botón de la propiedad Expresión de Imagen (Image Expression).  En Expresión de Imagen (Image Expression) agregue la siguiente expresión. Ing.

 Seleccione Code39 y haga clic en el botón Use Barcode4J. Ing. ha copiado el proyecto en otra carpeta diferente a la indicada.Enfoque Práctico Si Ud.Java . tiene que colocar la ruta específica en expresión de imagen  Arrastre el Elemento de Reporte Barcode ( ) al Frame del área de diseño del reporte.  Verifique que el Frame del áre de diseño de reporte se presenta como en el siguiente gráfico. Javier Alberto Manrique Quiñonez 340 .

Ing.  En Code39 (Component. Barcode4J) .Expresión de Código.Java . Javier Alberto Manrique Quiñonez 341 . agregue la siguiente expresión.Enfoque Práctico  Verifique que el Frame se presenta como en el siguiente gráfico y en propiedades de Code39 haga clic en el botón de la propiedad Code Expression.

 En el Inspector de Reportes haga clic derecho en Styles.Java . Ing.Enfoque Práctico  Haga clic en la pestaña Vista Previa (Preview) para realizar una vista previa del reporte. Javier Alberto Manrique Quiñonez 342 .

Java .153.0.Enfoque Práctico  Renombre el estilo seleccionado. Ing. Javier Alberto Manrique Quiñonez 343 .  En Propiedades del estilo StyleConBandasMulticolor cambie la propiedad Forecolor ([0.0])y Backcolor ([153.153]).

 Verifique que el Inspector de Reportes se presente como en el siguiente gráfico. Ing.Enfoque Práctico  Haga clic derecho en StyleConBandasMulticolor del Inspector de Reportes y seleccione Agregar Estilo Condicional (Add Conditional Style). Javier Alberto Manrique Quiñonez 344 .Java .

Java . Ing.  En el Editor de Expresiones (Expression editor) agregue la siguiente expresión.Enfoque Práctico  En propiedades de <No condition set > haga clic en la propiedad Condition Expression. Javier Alberto Manrique Quiñonez 345 .

255.Enfoque Práctico  Cambie la propiedad Forecolor ([0.Java . Javier Alberto Manrique Quiñonez 346 .0. Ing.0]) y Backcolor ([204.  Verifique que el Inspector de Reportes se presente como en el siguiente gráfico.204]) del Condition Expression.

 Agregue la fecha. paginación y cabecera del reporte.Enfoque Práctico  Haga clic en el Frame del Diseñador de Reportes y modifique las propiedades como se presenta en el siguiente gráfico.Java . Javier Alberto Manrique Quiñonez 347 . título. Ing. luego haga una vista previa.

Enfoque Práctico  Modifique la clase ClaseReporteSinParametro. Javier Alberto Manrique Quiñonez 348 . Ing. Agregue a la variable master el String: “C:/NetBeansProjects/ProyectoSistemaDeMenuConReporte/src/PaqueteSistemaDeMenuReporte/Reporte Avanzado.jasper"  Cuelgue el reporte en el sistema de menú.Java .

Enfoque Práctico Ing. Javier Alberto Manrique Quiñonez 349 .Java .

exe para empezar la instalación. Javier Alberto Manrique Quiñonez 350 .exe se encuentre grabado. Luego haga doble clic en el ejecutable mysql-tools.Enfoque Práctico PROGRAMACIÓN CON BASE DE DATOS CONCURRENTE Instalación de mysql tools Para la instalación del MySQL Tools debe de realizar lo siguiente:  Ubique en el CD de trabajo la carpeta E:\Programas\mysql-tools y verifique que el mysql-tools.  En el cuadro de diálogo de Bienvenida de Asistente de Configuración (Setup Wizard) haga clic en el botón de comando Siguiente (Next).Java . Ing.

Ing.Java . Javier Alberto Manrique Quiñonez 351 .  En el cuadro de diálogo de Carpeta Destino (Destination Folder) haga clic en botón de comando Siguiente (Next).Enfoque Práctico  En cuadro de diálogo de Acuerdos de Licencia (License Agreement) seleccione Acepto los términos y acuerdos de licencia (I accept terms in the license agreement) yluego haga clic en botón de comando Siguiente (Next).

Java .Enfoque Práctico  En el cuadro de diálogo de Tipo de Configuración (Setup Type) del Asistente de Configuración (Setup Wizard) seleccione Completo (Complete) y luego haga clic en botón de comando Siguiente (Next).  En el cuadro de diálogo de Listo para Instalar el Programa (Ready to Install the Program) del Asistente de Configuración (Setup Wizard) seleccione Completo (Complete) y luego haga clic en botón de comando Siguiente (Next). Ing. Javier Alberto Manrique Quiñonez 352 .

Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración (Setup Wizard) verifique el progreso de la instalación.Java . Ing.  En el cuadro de diálogo MySQL Enterprise haga clic en el botón de comando Siguiente (Next). Javier Alberto Manrique Quiñonez 353 .

Enfoque Práctico  En el cuadro de diálogo MySQL Enterprise haga clic en el botón de comando Siguiente (Next). Javier Alberto Manrique Quiñonez 354 .  En el cuadro de diálogo Asistente Completado (Wizard Completed) del Asistente de Configuración (Setup Wizard) haga clic en el botón de comando Finalizar (Finish). Ing.Java .

Ing.1.Java .  En el cuadro de diálogo de Bienvenida del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) haga clic en el botón de comando Siguiente (Next).Enfoque Práctico Configuración del MySql para trabajar con base de datos en forma concurrente Para configurar el MySQL para que trabaje con base de datos en forma concurrente realice lo siguiente:  En el menú de inicio del Windows seleccione Programas / MySQL / MySQL Server 5. Javier Alberto Manrique Quiñonez 355 . / MySQL Server Instance Config Wizard.

Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Reconfiguración de Instancia (Reconfigure Instance) y luego haga clic en el botón de comando Siguiente (Next). Javier Alberto Manrique Quiñonez 356 . Ing.Java .  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Configuración detallada (Detailed Configuration) y luego haga clic en el botón de comando Siguiente (Next).

Ing.Java .  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Solo Base de Datos Transaccional (Transactional Database Only) y luego hacer clic en el botón de comando Siguiente (Next).Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Maquina de Desarrollo (Developer Machine) y luego haga clic en el botón de comando Siguiente (Next). Javier Alberto Manrique Quiñonez 357 .

Java . Javier Alberto Manrique Quiñonez 358 .Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) haga clic en el botón de comando Next (Siguiente).  En el cuadro de diálogo del Asistente de Configuración de Instancia de una MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Procesamiento de Transacciones en Línea OLTP (Online Transacction Processing) y luego haga clic en el botón de comando Siguiente (Next). Ing.

Java .  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) seleccione Conjunto de Caracteres Estándar (Estándar Character Set) y luego haga clic en el botón de comando Siguiente (Next). También active la casilla de verificación Agregar Corta Fuegos excepcionalmente por este puerto (Add firewall exception for this port).Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) active la casilla de verificación Permitir Trabajo en Red con TCP/IP (Enabled CP/IP Networking) y asigne como Número de Puerto (Port Number) el valor 3306. Luego active la casilla de verificación Activar Modo Estricto (Enable Strict Mode). Finalmente haga clic en el botón de comando Siguiente (Next). Javier Alberto Manrique Quiñonez 359 . Ing.

Finalmente hacer clic en el botón de comando Siguiente (Next). Finalmente haga clic en el botón de comando Siguiente (Next).  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) active la casilla de verificación Modificar Configuración de Seguridad (Modify Security Setting). También active la casilla de verificación Inclusión del Directorio de Binarios en la Ruta de Windows (Include Bin Directory in Windows Path). En Nuevo palabra clave de raíz (New root password) ingrese “12345” y luego retipee palabra clave de raíz para confirmar (Confirm) “12345”. Javier Alberto Manrique Quiñonez 360 .Java .Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) active la casilla Instalar como Servicio Windows (Install As Windows Service) y la casilla de verificación Levantar el MySQL Server Automáticamente (Launch the MySQL Server Automatically). Ing.

Enfoque Práctico  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) verifique que el proceso de instalación de la instancia ha empezado.Java .  En el cuadro de diálogo del Asistente de Configuración de una Instancia de MySQL Server (MySQL Server Instance Configuration Wizard) verifique que el proceso de instalación de la instancia ha terminado exitosamente. Ing. Javier Alberto Manrique Quiñonez 361 .

Para configurar la Red Windows realice lo siguiente:  En el menú de inicio del Windows seleccione Panel de Control.Enfoque Práctico Configuración de la Red Windows.  En Panel de Control seleccione Conexiones de red. Javier Alberto Manrique Quiñonez 362 . Ing.Java .

Enfoque Práctico  En conexiones de red haga clic en Conexión de área local  En Conexión de área local haga clic derecho. Ing.Java . Javier Alberto Manrique Quiñonez 363 .

48.225. Máscara de subred 255.255.48..130 y 200.1.225. Ing.Java .255.146.1. Luego haga clic en aceptar.  En propiedades de Protocolo Internet (TCP/IP) seleccione el botón de radio Usar la siguiente dirección IP e ingrese los datos de la Dirección IP 192. Para conectarse a Internet seleccione los valores de servidor DNS 200.1.0 y en puerta de enlace predeterminada 192. Javier Alberto Manrique Quiñonez 364 .168.5.Enfoque Práctico  Haga doble clic en Protocolo Internet (TCP/IP).168.

Ing.Enfoque Práctico  En Tareas de red de Conexiones de red haga doble clic en Configurar una red doméstica o para pequeña oficina.Java . Javier Alberto Manrique Quiñonez 365 .  En el Asistente para configuración de red haga clic en Siguiente.

Luego haga clic en siguiente.Enfoque Práctico  En el Asistente para configuración de red verifique la Lista de comprobación para crear una red y luego haga clic en Siguiente. Ing. Javier Alberto Manrique Quiñonez 366 .  En Seleccione un método de conexión del Asistente para configuración de red seleccione Este equipo se conecta a Internet a través de una puerta de enlace residencial o de otro equipo de mi red.Java .

Java .Enfoque Práctico  En Dé a este equipo una descripción y nombre del Asistente para configuración de red ingrese la descripción del equipo y el nombre del equipo. Luego haga clic en siguiente. Ing.  En Dé nombre a su red del Asistente para configuración de red ingrese el Nombre del grupo de trabajo. En nuestro caso escribimos INICIO. Luego haga clic en Siguiente. Javier Alberto Manrique Quiñonez 367 .

Javier Alberto Manrique Quiñonez 368 .Enfoque Práctico  En Compartir archivos e impresoras del Asistente para configuración de red seleccione Activar el uso compartido de archivo e impresoras.Java . Luego haga clic en siguiente Ing. Luego haga clic en siguiente  En Listo para aplicar la configuración de red del Asistente para configuración de red verifique la configuración realizada.

Enfoque Práctico  En el Asistente para configuración de red verifique que la red se está configurando.  En el Asistente para configuración de red seleccione Finalizar el asistente. Javier Alberto Manrique Quiñonez 369 .Java . Ing.

 Cuando se reinicie la Pc utilice el Explorer para verificar la Red creada. Javier Alberto Manrique Quiñonez 370 . Ing.Java .  Para cambiar la configuración del Sistema Windows reinicie el equipo.Enfoque Práctico  En Finalización del Asistente para configuración de red del Asistente para configuración de red haga clic en Finalizar.

Java .  En el MySQL Administrator 1. En este caso es 192.1.12 agregue el IP del Servidor Host (Server Host). Finalmente haga clic en siguiente. Luego escriba el nombre del usuario (Username) y su clave de acceso (Password).Enfoque Práctico Configuración del Servidor de MySql para trabajar con base de datos en forma concurrente.168.5. Javier Alberto Manrique Quiñonez 371 . Para configurar el Servidor de MySQL para que trabaje con base de datos en forma concurrente realice lo siguiente:  En el menú de inicio del Windows seleccione Programas / MySQL / MySQL Administrator. Ing.2.

12 haga clic en Administración de Usuarios (User Administration). Ing.Enfoque Práctico  En el MySQL Administrator 1. Javier Alberto Manrique Quiñonez 372 .  En el MySQL Administrator 1.2.12 verifique que el Servidor MySQL está corriendo.2.Java .

 Haga clic en la pestaña Información de Usuarios (User Information) y agregue los datos del Nuevo usuario (New User).Enfoque Práctico  En cuentas de usuarios haga clic derecho y seleccione Agregar nuevo usuario (Add new user). Ing.Java . Javier Alberto Manrique Quiñonez 373 .

Javier Alberto Manrique Quiñonez 374 .Java . Ing.Enfoque Práctico  Haga clic en la pestaña Esquema de Privilegios (Schema Privileges) y seleccione la base de datos dbContacto.  Asigne los privilegios al Usuario Invitado sobre la tabla dbContacto.

Java .Enfoque Práctico  Haga clic en la pestaña Recursos (Resources) y modifique los ecursos asignados del usuario Invitado sobre la base de datos dbContacto. Ing. Javier Alberto Manrique Quiñonez 375 .

Java . Javier Alberto Manrique Quiñonez 376 . Ing.Enfoque Práctico Configuración del Corta Fuegos (Firewall) Para configurar el Servidor de MySQL para que trabaje con base de datos en forma concurrente realice lo siguiente:  En Panel de Control selección Corta fuego (Firewall).  En Corta fuegos de Windows haga clic en la pestaña excepciones (Excepciones) y luego haga clic en Agregar Puerto.

Ing. Javier Alberto Manrique Quiñonez 377 .Enfoque Práctico  Agregue un puerto con el nombre de MySQL con el número de puerto 3306.  Verifique la creación del puerto y luego haga clic en Aceptar.Java .

4. Javier Alberto Manrique Quiñonez 378 . Está construido con Java Swing y permite crear instaladores para sus aplicaciones. Tiene las siguientes características:  Confirmado para trabajar en Windows 7. instaladores EXE  Licenciado bajo la GPL INSTALACIÓN DEL PackJacket Para la instalación de Java PackJacket 4. Windows Vista y Ubuntu  Guardar configuraciones  Crear XML. JAR.  Verifique la extracción del programa.Enfoque Práctico PackJacket Es una interfaz gráfica para el proyecto LzPack.Java .2_Setup del Cd proporcionado y luego haga doble clic en el mismo para empezar la instalación.2 debe de realizar lo siguiente:  Ubique el archivo PackJacket_0.  Haga clic en botón de comando Ejecutar. Los instaladores creados por este programa son multi-plataforma y multi-idioma. Ing.

Enfoque Práctico  Seleccione el lenguaje.Java . Ing.  Haga clic en siguiente para empezar la instalación.  Seleccione la ruta para la instalación del programa PackJacket. Javier Alberto Manrique Quiñonez 379 .

 Verifique que se ha iniciado la instalación del programa PackJacket. Javier Alberto Manrique Quiñonez 380 .Enfoque Práctico  Haga clic en Aceptar. Luego haga clic en Siguiente.  Verifique que la instalación del programa PackJacket sigue en marcha.Java . Ing.

Java . Luego haga clic en Siguiente. Ing.Enfoque Práctico  Verifique que se ha está instalando la conexión con procesos externos del programa PackJacket.  Configure los atajos (Shortcuts) y luego haga clic en siguiente. Javier Alberto Manrique Quiñonez 381 .

Java ..Enfoque Práctico  Verifique que se ha finalizado la instalación del programa PackJacket. Ing.  Verifique que en Inicio de Programas se encuentre el programa PackJacket. Luego haga clic en Siguiente. Javier Alberto Manrique Quiñonez 382 .