Вы находитесь на странице: 1из 382

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

Java - Enfoque Prctico

LENGUAJE DE PROGRAMACIN JAVA


Java es un lenguaje de programacin orientado a objetos que es utilizado por gran parte del mundo
industrial y acadmico. Java fue desarrollado a principios de los aos 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 ms simple
y elimina herramientas de bajo nivel que suelen inducir a muchos errores, como la manipulacin directa
de punteros o memoria. Su propsito original fue escribir programas que controlaran electrodomsticos
de consumo masivo, tales como tostadoras, hornos microondas, etc. Al principio se llam Oak, en honor al
roble que haba 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 grficas, pero el nombre ya
estaba tomado, as que el equipo lo renombr Java.
A menudo se describe al Java como un lenguaje de programacin Web, debido a que se usa para escribir
programas llamados applets (subprogramas) que se ejecutan dentro de un navegador Web, los cuales
permiten una difusin ms dinmica y flexible de la informacin en Internet. Java no solo se limita a
escribir Applets, tambin puede ser utilizado para escribir aplicaciones que son programas completos y
autnomos que no requieren de navegadores Web. En realidad, Java permite escribir programas como
otros lenguajes de programacin, tales como el C# y Visual Basic .net.
En este libro utilizamos el lenguaje de programacin 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.

INSTALACIN DEL JAVA 1.6.16.


Para la instalacin 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 instalacin.

Verifique que se presente el cuadro de dilogo de Bienvenida (Welcome). Luego haga clic en el botn
de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

Java - Enfoque Prctico

En cuadro de dilogo de Acuerdos de Licencia (License Agreement) haga clic en botn de comando
Aceptar (Accept).

En cuadro de dilogo de Instalacin (Installing) verifique que ha empezado la instalacin.

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

Ing. Javier Alberto Manrique Quionez

Java - Enfoque Prctico

En el cuadro de dialogo Progreso de Instalacin (Setup Progress) verifique la indicacin que el proceso
puede tomar algunos minutos (This may take a few minutes).

En el cuadro de dilogo Instalando (Installing) verifique el progreso de la instalacin ha empezado.

En el cuadro de dilogo Java(TM) SE Development kit 6 Update 16 verifique el progreso de la instalacin


ha terminado con xito.

Ing. Javier Alberto Manrique Quionez

Java - Enfoque Prctico

NETBEANS
NetBeans es un entorno de desarrollo integrado (IDE) de cdigo abierto el cual permite escribir, compilar,
depurar y ejecutar aplicaciones en Java y en otros lenguajes de programacin. 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 caractersticas de colaboracin. Posee herramientas para crear aplicaciones
empresariales en entorno escritorio, entorno Web y aplicaciones mviles con el lenguaje Java, C / C + +, e
incluso los lenguajes dinmicos 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 mdulos. Un mdulo 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 mdulo.
Las aplicaciones construidas a partir de mdulos pueden ser extendidas agregndole nuevos mdulos.
Debido a que los mdulos pueden ser desarrollados independientemente, las aplicaciones basadas en la
plataforma NetBeans pueden ser extendidas fcilmente por otros desarrolladores de software.
NetBeans es un proyecto de cdigo 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 cdigo abierto NetBeans en junio 2000 y contina siendo el patrocinador principal de los
proyectos.

INSTALACIN DE NETBEANS 6.7.1


Para la instalacin 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 instalacin.

En el cuadro de dilogo Instalador del IDE del Netbeans (NetBeans IDE Installer) verifique que se est
realizando la configuracin del instalador del IDE.

En el cuadro de dilogo Instalador del IDE del Netbeans (NetBeans IDE Installer) verifique la
continuacin de la configuracin del instalador del IDE.

Ing. Javier Alberto Manrique Quionez

Java - Enfoque Prctico

En el cuadro de dilogo de Bienvenida del Instalador del IDE NetBeans 6.7.1 (Welcome to the NetBeans
IDE 6.7.1 Installer) haga clic en el botn de comando Personalizar (Customize).

En el cuadro de dilogo de Personalizacin de Instalacin (Customize installation) seleccione Base IDE,


Java SE y UML y luego haga clic en el botn de comando Ok.

Ing. Javier Alberto Manrique Quionez

Java - Enfoque Prctico

En el cuadro de dilogo de Bienvenida del Instalador del IDE del NetBeans (Welcome to the NetBeans
IDE 6.7.1 Installer) haga clic en el botn de comando Siguiente (Next).

En el cuadro de dilogo de Acuerdos de Licencia (License Agreement) seleccione la casilla de


verificacin Yo Acepto los trminos del acuerdo de licencia (I accept the terms int the license
agreement) y luego haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

Java - Enfoque Prctico

En el cuadro de dilogo de Instalacin del Netbeans IDE 6.7.1 (Netbeans IDE 6.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). Luego haga clic en el botn de comando Siguiente (Next).

En el cuadro de dilogo de Resumen (Summary) verifique que el Netbeans 6.7.1 se instalar en la


carpeta seleccionada anteriormente. Luego haga clic en el botn de comando Instalar (Install).

En el cuadro de dilogo de Resumen (Summary) verifique que el Netbeans 6.7.1 se instalar en la


carpeta seleccionada anteriormente. Luego haga clic en el botn de comando Instalar (Install).

Ing. Javier Alberto Manrique Quionez

10

Java - Enfoque Prctico

En el cuadro de dilogo de Instalacin (Installation) verifique el progreso de la instalacin se encuentra


en progreso.

En el cuadro de dilogo de instalacin completa (Setup Complete) verifique que la instalacin del IDE
del NetBeans ha finalizado.

Nota:
A la fecha es posible se existan nuevas versiones de NetBeans y Java SE pero las diferencias en la
instalacin son mnimas.

Ing. Javier Alberto Manrique Quionez

11

Java - Enfoque Prctico

iReport
iReport es un poderoso, intuitivo y fcil diseador visual de informes de cdigo abierto. El iReport genera
archivos .jasper que permiten crear y probar cualquier tipo de fuentes de datos, diseo, vista previa y la
exportacin de informes en todos los formatos actualmente soportados tales como PDF, HTML, RTF, XLS,
CSV, Excel Open Office, texto y XML. El iReport utiliza la biblioteca del JasperReports, la cual es la mejor
herramienta de cdigo abierto en Java para generar y gestionar informes. El iReport puede entregar ricas
presentaciones o diseos en la pantalla, para la impresora o para archivos. El iReport se puede utilizar en
una gran variedad de aplicaciones de escritorio en Java, incluyendo J2EE o aplicaciones Web para generar
contenido dinmico.
El funcionamiento del iReport consiste generar un archivo XML donde se recogen las particularidades del
informe. Este archivo XML lo tratan las clases del JasperReports para obtener una salida. El proceso de
generacin de un informe es:
Utilizar el iReport para generar un archivo .Jrxml en el que se configura el informe.
Compilar el archivo .Jrxml para obtener un archivo .Jasper.
Rellenar los datos del informe generando un archivo .Jrprint
Exportar el archivo .Jrprint al formato que deseemos (pdf, etc).
El archivo .Jasper se carga en una aplicacin Java utilizando la API de JasperRepors y se utiliza para generar
el informe con un origen de datos que puede ser una conexin JDBC. Si es necesario puede utilizar
parmetros de entrada para filtrar los registros en el informe. El resultado del informe puede ser
exportado en un formato final (como PDF) o verla en el visor incorporado del JasperReports. Todas estas
operaciones se pueden realizar directamente en iReport como parte del proceso de creacin de los
informes. El iReport est adems integrado con JFreeChart que es una de las bibliotecas grficas de cdigo
abierto ms difundida para Java.
JasperReport ha desarrolado un aadido (plugin) para integrarse al IDE de NetBeans. La utilizacin de este
aadido permite mejorar la creacin y gestin de informes durante el desarrollo de aplicaciones en Java.

INSTALACIN DEL PLUGIN DEL iREPORT 3.5.3. EN NETBEANS 6.7.1


Para la instalacin del plugin del iReport 3.5.3 en NetBeans 6.1 se debe de realizar lo siguiente:
Ubique la carpeta E:\Programas\iReport-nb-3.5.3-plugin en del CD de trabajo.

Cargue el NetBeans IDE 6.7.1.

Ing. Javier Alberto Manrique Quionez

12

Java - Enfoque Prctico

En Herramientas (Tools) del Men Principal haga clic en Aadidos (Plugins).

En Aadidos (Plugins) haga clic en la pestaa Descargas (Downloaded).

Ing. Javier Alberto Manrique Quionez

13

Java - Enfoque Prctico

En el cuadro de dilogo Aadidos (Plugins) haga clic en botn de comando Agregar Aadidos (Add
Plugins).

En Buscar del cuadro de dilogo Agregar Aadidos (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
botn de comando Abrir.

Ing. Javier Alberto Manrique Quionez

14

Java - Enfoque Prctico

En el cuadro de dilogo Aadidos (Plugins) seleccione las casillas de verificacin de los plugins ireportdesigner, jasperserver-plugin, jasperreports-components y jasperreport-extensions. Luego haga clic en
el botn de comando Instalar (Install).

En el cuadro de dilogo de Bienvenidos al Instalador de Aadidos del NetBeans (Welcome to the


NetBeans IDE Plugin Installer) haga clic en el botn de comando siguiente.

Ing. Javier Alberto Manrique Quionez

15

Java - Enfoque Prctico

En el cuadro de dilogo de Acuerdos de Licencia seleccione Yo acepto los trminos de todos los
acuerdos de la licencia (I accept the terms in all of the license agreements) y luego haga clic en el
botn de comando Instalar (Install).

En el cuadro de dilogo Instalar IDE NetBeans (NetBeans IDE Installer) verifique el progreso del proceso
de instalacin del plugin.

Ing. Javier Alberto Manrique Quionez

16

Java - Enfoque Prctico

En el cuadro de dilogo Advertencia de Validacin (Validation Warning) haga clic en el botn de


comando Continuar (Continue).

En el cuadro de dilogo Instalacin (Install) verifique que el proceso de instalacin est en progreso.

En el cuadro de dilogo Instalacin (Install) verifique que el proceso de instalacin ha terminado


exitosamente. Luego haga clic en el botn de comando Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

17

Java - Enfoque Prctico

Haga clic en la pestaa Instalados (Installed) y verifique la instalacin de ireport-designer, reportserver-plugin, jasperreports-components y jasperreports-extensions. Luego haga clic en el botn de
comando Cerrar (Close).

Ing. Javier Alberto Manrique Quionez

18

Java - Enfoque Prctico

En Herramientas (Tools) del Men Principal haga clic en Libreras (Libraries).

En el cuadro de dilogo de Administracin de Libreras (Library Manager) haga clic en el botn de


comando Nueva Librera (New Library).

Ing. Javier Alberto Manrique Quionez

19

Java - Enfoque Prctico

En el cuadro de dilogo de Nueva Librera (New Library) escriba como nombre de la librera
JasperReport3.5.3.

En el cuadro de dilogo de Administracin de Libreras (Library Manger) verifique que se ha aadido la


librera JasperReports3.5.3. Luego haga clic en el botn de comando Agregar JAR/Carpeta (Add
JAR/Folder).

Ing. Javier Alberto Manrique Quionez

20

Java - Enfoque Prctico

En Buscar del cuadro de dilogo de Visualizar JAR/Carpetas (Browse JAR/Folder) ubquese en la carpeta
C:\Archivos de programa\NetBeans 6.7.1\ireport\modules y seleccione todos los archivos JAR
visualizados. Luego haga clic en el botn de comando Agregar JAR/Carpeta (Add JAR/Folder).

En el cuadro de dilogo de Administracin de Libreras (Library Manger) verifique que se ha aadido las
libreras JasperReports3.5.3. Luego haga clic en el botn de comando Agregar JAR/Carpeta (Add
JAR/Folder).

Ing. Javier Alberto Manrique Quionez

21

Java - Enfoque Prctico

En Buscar del cuadro de dilogo de Visualizar JAR/Carpetas (Browse JAR/Folder) ubquese en la carpeta
C:\Archivos de programa\NetBeans 6.7.1\ireport\modules\ext y seleccione todos los archivos JAR
visualizados. Luego haga clic en el botn de comando Agregar JAR/Carpeta (Add JAR/Folder).

En el cuadro de dilogo de Administracin de Libreras (Library Manger) verifique que se ha aadido las
libreras JasperReports3.5.3. Finalmente haga clic en el botn de comando OK. La instalacin ha
terminado.

Ing. Javier Alberto Manrique Quionez

22

Java - Enfoque Prctico

MySQL
Es un sistema de administracin de bases de datos (DBMS) que proporciona los mecanismos para
almacenar, organizar, obtener y modificar datos. Permite el acceso y almacenamiento de datos sin
preocuparse por su representacin interna. MySQL proporciona un servidor de base de datos SQL
(Structured Query Language) muy rpido, multihilo, multiusuario y robusto. Est diseado para entornos
de produccin crticos, con alta carga de trabajo, as como para integrarse en software para ser
distribuido. Es una marca registrada de MySQL AB.
MySQL tiene una doble licencia. Los usuarios pueden elegir entre usar el software MySQL como un
producto Open Source bajo los trminos de la licencia GNU General Public License o pueden adquirir una
licencia comercial estndar de MySQL AB.
MySQL es muy utilizado en aplicaciones de escritorio y en aplicaciones Web tanto en plataformas
Windows y Linux. Su popularidad como aplicacin Web est muy ligada a PHP, que a menudo aparece en
combinacin con MySQL. MySQL es una base de datos muy rpida en la lectura que utiliza el motor no
transaccional MyISAM.
MySQL tiene las caractersticas ms importantes:

Est escrito en C y en C++ y ha sido probado con un amplio rango de compiladores diferentes.
Funciona en diferentes plataformas (Windows, Linux, etc.).
Posee APIs disponibles para Java, C, C++, Eiffel, Perl, PHP, Python y Ruby.
Uso completo de multihilo mediante hilos del kernel. Pueden usarse fcilmente mltiple CPUs si estn
disponibles, adems posee un sistema de reserva de memoria muy rpido basado en hilos.
Proporciona sistema de almacenamiento transaccional y no transaccional.
Usa tablas en disco B-tree (MyISAM) muy rpidas con compresin de ndice.
Tiene Joins muy rpidos usando un multi-join de un paso optimizado.
Tablas hash en memoria, que son usadas como tablas temporales.
Las funciones SQL estn implementadas usando una librera altamente optimizada y rpida. El servidor
est disponible como un programa separado para usar en un entorno de red cliente/servidor. Tambin
est disponible como biblioteca y puede ser incrustado (linkado) en aplicaciones autnomas. Dichas
aplicaciones pueden usarse por s mismas o en entornos donde no hay red disponible.
Utiliza las siguientes tipos de columnas: enteros con/sin signo de 1, 2, 3, 4, y 8 bytes de
longitud, FLOAT, DOUBLE, CHAR,VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SE
T, ENUM, y tipos espaciales OpenGIS. Utiliza registros de longitud fija y longitud variable.
Posee un soporte completo para operadores y funciones en las clusulas de consultas SELECT y WHERE.
Por ejemplo:
Posee un soporte completo para las clusulas SQL GROUP BY y ORDER BY. Soporte de funciones de
agrupacin (COUNT(),COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX(), MIN(), y GROUP_CONCAT()).
MySQL posee un soporte completo soporte para LEFT OUTER JOIN y RIGHT OUTER JOIN cumpliendo
estndares de sintaxis SQL y ODBC.
DELETE, INSERT, REPLACE, y UPDATE devuelven el nmero de filas que han cambiado (han sido
afectadas).
Soporta programacin con base de datos concurrente.
Da soporte a tecnologas actuales como Inteligencia de Negocios.
MySQL con respecto a la escalabilidad y lmites, soporta grandes bases de datos que pueden contener
50 millones de registros. Tambin conocemos a usuarios que usan MySQL Server con 60.000 tablas y
cerca de 5.000.000.000.000 de registros.

Ing. Javier Alberto Manrique Quionez

23

Java - Enfoque Prctico

INSTALACIN DEL MySQL 5.1


Para la instalacin del MySQL 5.1.35 se debe de realizar lo siguiente:
Ubique el archivo mysql-essential-5.1.35-win32 en el CD de trabajo proporcionado.

Ejecutar el archivo mysql-essential-5.1.35 -win32.msi y hacer clic en el botn de comando Ejecutar.

En el cuadro de dilogo de Bienvenida de Asistente de Configuracin (Setup Wizard) haga clic en el


botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

24

Java - Enfoque Prctico

En el cuadro de dilogo de Tipo de Configuracin (Setup Type) del Asistente de Configuracin (Setup
Wizard) seleccione Personalizado (Custom) y luego haga clic en botn de comando Siguiente (Next).

En el cuadro de dilogo de Personalizacin de Configuracin (Custom Setup) del Asistente de


Configuracin (Setup Wizard) haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

25

Java - Enfoque Prctico

En el cuadro de dilogo de Listo para Instalar el Programa (Ready to Install the Program) del Asistente
de Configuracin (Setup Wizard) haga clic en botn de comando Instalar (Installar).

En el cuadro de dilogo del Asistente de Configuracin (Setup Wizard) verifique el progreso de la


instalacin.

Ing. Javier Alberto Manrique Quionez

26

Java - Enfoque Prctico

En el cuadro de dilogo MySQL Enterprise haga clic en el botn de comando Siguiente (Next).

En el cuadro de dilogo MySQL Enterprise haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

27

Java - Enfoque Prctico

En el cuadro de dilogo Asistente Completado (Wizard Completed) del Asistente de Configuracin


(Setup Wizard) haga clic en el botn de comando Finalizar (Finish).

En el cuadro de dilogo de Bienvenida del Asistente de Configuracin de una Instancia de MySQL Server
(MySQL Server Instance Configuration Wizard) haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

28

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) seleccione Configuracin detallada (Detailed Configuration) y
luego haga clic en el botn de comando Siguiente (Next).

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) seleccione Maquina de Desarrollo (Developer Machine) y luego
haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

29

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin 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 botn de comando Siguiente (Next).

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) haga clic en el botn de comando Next (Siguiente).

Ing. Javier Alberto Manrique Quionez

30

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de Instancia de una MySQL Server (MySQL
Server Instance Configuration Wizard) seleccione Procesamiento de Transacciones en Lnea OLTP
(Online Transacction Processing) y luego haga clic en el botn de comando Siguiente (Next).

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) active la casilla de verificacin Permitir Trabajo en Red con
TCP/IP (Enabled CP/IP Networking) y la casilla de verificacin Activar Modo Estricto (Enable Strict
Mode). Luego asigne como Nmero de Puerto (Port Number) el valor 3306 y finalmente haga clic en el
botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

31

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) seleccione Conjunto de Caracteres Estndar (Estndar
Character Set) y luego haga clic en el botn de comando Siguiente (Next).

En el cuadro de dilogo del Asistente de Configuracin 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 verificacin Levantar el MySQL Server Automticamente (Launch the
MySQL Server Automatically). Luego hacer clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

32

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) active la casilla de verificacin Modificar Configuracin de
Seguridad (Modify Security Setting). En Nuevo palabra clave de raz (New root password) ingrese
12345 y luego retipee palabra clave de raz para confirmar (Confirm) 12345. Finalmente hacer clic
en el botn de comando Siguiente (Next).

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) verifique que el proceso de instalacin de la instancia ha
empezado.

Ing. Javier Alberto Manrique Quionez

33

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) verifique que el proceso de instalacin de la instancia ha
terminado exitosamente.

Ing. Javier Alberto Manrique Quionez

34

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

35

Java - Enfoque Prctico

Programacin Orientada a Objetos


El mundo real est formado por objetos: personas, animales, casas, autos, etc. Las aplicaciones (software)
estn compuestas por muchos objetos: interfaces grficas de usuario, cuadros de dilogo, barras de men,
barra de herramientas, cuadros de texto, botones de comando, etiquetas, areas de texto, etc. Todos ellos
con la capacidad de interactuar con los usuarios. Todos los objetos tienen atributos (tamao, forma, color,
peso, etc) y tambin comportamiento (por ejemplo un auto inicia su funcionamiento, acelera la velocidad,
gira una esquina, detiene su recorrido, etc). Todos los objetos similares en sus atributos y comportamiento
se caracterizan por ser agrupados en una misma clase (clase persona, clase casas, clase auto, etc). Las
personas comprenden los objetos estudiando sus atributos y observando su comportamiento.
El diseo orientado a objetos (DOO) modela el software en trminos similares a los que utilizan las
personas para describir el mundo real. Se aprovecha las relaciones entre clases de objetos, en donde
objetos de cierta clase tienen las mismas caractersticas (atributos y comportamiento). Aprovecha las
relaciones de herencia en donde nuevas clases de objetos se derivan de clases objetos ya existentes de los
cuales heredan sus caractersticas (atributos y comportamientos) y agrega nuevas caractersticas segn sus
necesidades. El DOO permite crear aplicaciones (software) modelando de los objetos sus atributos y
comportamiento. Tambien se modela la comunicacin entre los objetos que se caracteriza por el envio y
recepcin de mensajes. Los objetos encapsulan (ocultan) los atributos (variables de instancia) y
comportamiento (operaciones que se implementan mediante mtodos), significando que solo ellos
pueden cambiar los valores de sus atributos a travs de sus mtodos.
La programacin en el lenguaje de programacin en Java es orientada a objetos, porque Java es un
lenguaje de programacin orientado a objetos. En Java, la unidad bsica de programacin es una clase, de
la cual se instancias los objetos (crear objetos a partir de una clase). Las clases son para los objetos como
los planos de construccin son para las casas. Las clases son las plantillas para crear nuevos objetos. Las
clases se relacionan entre si y estas relaciones se denominan asociaciones. Por ejemplo una clase docente
est relacionada con una clase alumno a travs de la siguiente relacin: un docente ensea a un alumno.
Las clases relacionadas se pueden empaquetar en componentes reutilizables para su posterior
reutilizacin. Reutilizar clases existentes durante el proceso de desarrollo de aplicaciones permite ahorrar
tiempo y esfuerzo, con productos ms confiables y efectivos, ya que las clases reutilizadas han pasado por
un proceso de calidad muy extenso (depuracin y optimizacin del rendimiento).
A continuacin se presenta el desarrollo de una aplicacin en la cual se ingresa el cdigo del alumno
(alumno_id), sus apellidos y nombres (apellidoNombre), la evaluacin parcial 1 (evaluacionParcial1), la
evaluacin parcial 2 (evaluacionParcial2) y el promedio de trabajo (promedioDeTrabajo). La aplicacin
calcula y visualiza el promedio final (promedioFinal). Para calcular el promedio final se utiliza la frmula:
promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo )
El producto final es:

Ing. Javier Alberto Manrique Quionez

36

Java - Enfoque Prctico

Para el desarrollo de la aplicacin debe realizar las siguientes actividades:


Haga clic derecho en File (Archivo) y cree un proyecto vaco de Java

Seleccione un proyecto de Aplicacin Java (Java Application).

Ing. Javier Alberto Manrique Quionez

37

Java - Enfoque Prctico

Asigne como Nombre de Proyecto (Project Name) ProyectoProgramacionConObjetos, Localizacin del


proyecto (Project Location) c:\NetBeansProjects y como Carpeta del Proyecto (Project Folder)
c:\NetBeansProjects\ProyectoProgramacionConObjetos. Desmarcar la casilla de verificacin 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.

Ing. Javier Alberto Manrique Quionez

38

Java - Enfoque Prctico

Asigne como Nombre de Paquete (Package Name) PaqueteProgramacionConObjetos, Proyecto (Project)


ProyectoProgramacionConObjetos, Localizacin (Location) Source Packages y como Carpeta Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoProgramacionConObjetos\src\
PaqueteProgramacionConObjetos. Luego haga clic en Finalizar (Finish).

Haga clic derecho en PaqueteProgramacionConObjetos y cree una clase Java (Java Class) dentro del
paquete PaqueteProgramacionConObjetos.

Ing. Javier Alberto Manrique Quionez

39

Java - Enfoque Prctico


Asigne

como
Nombre
de
Clase
(Class
name)
Alumno,
Proyecto
(Project)
ProyectoProgramacionConObjetos, localizacin (Location) Source Packages, paquete (Package)
PaqueteProgramacionConObjetos
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProgramacionConObjetos\src\PaqueteProgramacionConObjetos \ Alumno.java.
Luego haga clic en Finalizar (Finish).

Haga clic en la clase Alumno y agregue las variables privadas alumno_id de tipo int, apellidoNombre de

tipo String, evaluacionParcial1 de tipo double, evaluacionParcial2 de tipo double, promedioDeTrabajo


de tipo double y promedioFinal de tipo double.

Ing. Javier Alberto Manrique Quionez

40

Java - Enfoque Prctico


Haga clic en la clase Alumno despus de la variable promedioFinal. Luego haga clic derecho y seleccione

la opcin Insert Code.

Ing. Javier Alberto Manrique Quionez

41

Java - Enfoque Prctico


Luego seleccione la opcin Gether and Sether.

Marque todos los cuadros de chequeo (check box).

Ing. Javier Alberto Manrique Quionez

42

Java - Enfoque Prctico


Verifique el cdigo de los mtodos get y set insertados.

Ing. Javier Alberto Manrique Quionez

43

Java - Enfoque Prctico


Modifique el cdigo del mtodo setPromedioFinal borrando el parmetro double promedioFinal.

Inserte dos mtodos constructores a la clase Alumno tal como se muestra en el grfico siguiente.

Verifique que el cdigo de la Clase Alumno se presente como en el siguiente listado.


package PaqueteProgramacionConObjetos;
public class Alumno
{ private int
alumno_id;
private String apellidoNombre;
private double evaluacionParcial1;
private double evaluacionParcial2;
private double promedioDeTrabajo;
private double promedioFinal;

Ing. Javier Alberto Manrique Quionez

44

Java - Enfoque Prctico

public Alumno()
{ this.alumno_id=0;
this.apellidoNombre=null;
this.evaluacionParcial1 = 0;
this.evaluacionParcial2 = 0;
this.promedioDeTrabajo = 0;
this. promedioFinal
= 0;
}
public Alumno(int alumno_id, String apellidoNombre, double evaluacionParcial1,
double evaluacionParcial2, double promedioDeTrabajo, double promedioFinal)
{ this.alumno_id
= alumno_id;
this.apellidoNombre
= apellidoNombre;
this.evaluacionParcial1 = evaluacionParcial1;
this.evaluacionParcial2 = evaluacionParcial2;
this.promedioDeTrabajo = promedioDeTrabajo;
this.promedioFinal
= promedioFinal ;
}

public int getAlumno_id()


{ return this.alumno_id;
}
public void setAlumno_id(int alumno_id)
{ this.alumno_id = alumno_id;
}
public String getApellidoNombre()
{ return this.apellidoNombre;
}
public void setApellidoNombre(String apellidoNombre)
{ this.apellidoNombre = apellidoNombre;
}
public double getEvaluacionParcial1()
{ return this.evaluacionParcial1;
}

public void setEvaluacionParcial1 (double evaluacionParcial1)


{ this.evaluacionParcial1 = evaluacionParcial1;
}

public double getEvaluacionParcial2()


{ return this.evaluacionParcial2;
}

public void setEvaluacionParcial2 (double evaluacionParcial2)


{ this.evaluacionParcial2 = evaluacionParcial2;
}

Ing. Javier Alberto Manrique Quionez

45

Java - Enfoque Prctico

public double getPromedioDeTrabajo()


{ return this.promedioDeTrabajo;
}
public void setPromedioDeTrabajo(double promedioDeTrabajo)
{ this. promedioDeTrabajo = promedioDeTrabajo;
}

public void setPromedioFinal()


{ this.promedioFinal=(this.evaluacionParcial1+this.evaluacionParcial2+this.promedioDeTrabajo)/3;
}

public double getPromedioFinal()


{ return this.promedioFinal;
}
}

Haga clic derecho en PaqueteProgramacionConObjetos y cree un Formulario Java (JFrame Java) dentro
del Paquete PaqueteProgramacionConObjetos.

Ing. Javier Alberto Manrique Quionez

46

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) JFrameProgramacionConObjetos.java, Proyecto (Project)


ProyectoProgramacionConObjetos, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteProgramacionConObjetos
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoProgramacionconObjetos\src\PaqueteProgramacionconObjetos\
JFrameProgramacionconObjetos.java. Luego haga clic en Finalizar (Finish).

Verifique que el proyecto se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

47

Java - Enfoque Prctico

Haga doble clic en cuadro de dilogo JFrameProgramacionConObjetos. Luego haga clic en la pestaa
Diseo (Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label (07), Text Field
(06) y Button (03), tal como se presenta en el siguiente grfico.

Haga clic en la Ventana Inspector y verifique la presencia de los objetos que se visualizan en la ventana
Design.

Ing. Javier Alberto Manrique Quionez

48

Java - Enfoque Prctico

Renombre los objetos en la ventana Inspector tal se presenta como en el siguiente grfico.

Pulse las teclas Control-Maysculas-7 para visualizar la Ventana de Propiedades. Modifique la


propiedad Text del objeto jLabelTitulo con el texto Insertar alumnos.

Ing. Javier Alberto Manrique Quionez

49

Java - Enfoque Prctico

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

EvaluacinParcial 1:

jLabelEvaluacionParcial2

EvaluacinParcial 2:

jLabelPromedioDeTrabajo

Promedio de Trabajo:

jLabelPromedioFinal

Promedio final:

jButtonAceptar

Aceptar

jButtonReiniciar

Reiniciar

jButtonSalir

Salir

Haga clic en alguna parte del Panel de Diseo (Designer) del jDialog JDialogInsertarAlumno.java para
visualizar la ventana de Propiedades (Properties).

Ing. Javier Alberto Manrique Quionez

50

Java - Enfoque Prctico

Modifique la propiedad defaultCloseOperation y escriba DISPOSE (deshacerse).

Haga clic derecho en el objeto jButtonAceptar y seleccione en el men conceptual Event-ActionactionPerformed para programar en evento clic del botn de comando.

Ing. Javier Alberto Manrique Quionez

51

Java - Enfoque Prctico

Agregue el cdigo del evento clic del objeto jButtonAceptarActionPerformed.


private void jButtonAceptarActionPerformed(java.awt.event.ActionEvent evt)
{
Alumno oAlumno=new Alumno();
Alumno.setAlumno_id(Integer.parseInt( jTextFieldAlumno_id.getText()));
oAlumno.setApellidoNombre( jTextFieldApellidoNombre.getText());
oAlumno.setEvaluacionParcial1(Double.parseDouble(jTextFieldEvaluacionParcial1.getText()));
oAlumno.setEvaluacionParcial2(Double.parseDouble(jTextFieldEvaluacionParcial2.getText()));
oAlumno.setPromedioDeTrabajo(Double.parseDouble(jTextFieldPromedioDeTrabajo.getText()));
oAlumno.setPromedioFinal();
jTextFieldPromedioFinal.setText(oAlumno.getPromedioFinal()+"");
}

Repita el proceso anterior


jButtonReiniciarActionPerformed.

agregue

el

cdigo

del

evento

clic

del

objeto

private void jButtonReiniciarActionPerformed(java.awt.event.ActionEvent evt)


{
jTextFieldAlumno_id.setText("");
jTextFieldApellidoNombre.setText("");
jTextFieldEvaluacionParcial1.setText("");
jTextFieldEvaluacionParcial2.setText("");
jTextFieldPromedioDeTrabajo.setText("");
jTextFieldPromedioFinal.setText("");
}
Repita el proceso anterior y agregue el cdigo del evento clic del objeto jButtonSalirActionPerformed.

private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt)


{ int respuesta = JOptionPane.showConfirmDialog(this, "Esta seguro...?", "Dialogo de
Confirmacin", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
{ dispose();
}
}
Verique el cdigo del botn de comando jBuutonSalirActionPerformed. Debe presentarse errores en
JOpcionPane.YES_NO_OPTION.

Ing. Javier Alberto Manrique Quionez

52

Java - Enfoque Prctico

Haga clic derecho en la palabra JOptionPane.YES_OPTION y seleccione Fix Imports (Refaccionar


Importaciones).

Verifique la instruccin import agregada.

Ing. Javier Alberto Manrique Quionez

53

Java - Enfoque Prctico

Agregue una clase principal de Java (Java Main Class) tal como se presenta en el siguiente grfico.

Verifique la clase Java Main Class agregada.

Agregue el cdigo tal como se presenta en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

54

Java - Enfoque Prctico

Verifique la ejecucin de la aplicacin creada. Haga clic en el botn de comando Aceptar.

Verifique la ejecucin de la aplicacin creada. Haga clic en el botn de comando Reiniciar.

Ing. Javier Alberto Manrique Quionez

55

Java - Enfoque Prctico

Verifique la ejecucin de la aplicacin creada. Haga clic en el botn de comando Salir.

Verifique la ejecucin del proyecto creado. Haga clic en el botn de comando Si (Yes).

Ing. Javier Alberto Manrique Quionez

56

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

57

Java - Enfoque Prctico

ARREGLOS
En un gran nmero de problemas es necesario manejar un conjunto de datos ms o menos grande que
estn relacionados entre s, de tal forma que constituyen una unidad para su tratamiento. Si se quiere
manipular una lista de 100 notas de alumnos, es conveniente tratar el conjunto de datos de forma unitaria
en lugar de utilizar 100 variables para cada dato simple. Un conjunto de datos homogneo que se tratan
como una sola unidad se denomina estructura de datos. Si una estructura de datos reside en memoria
central (memoria RAM), se llama estructura de datos interna. Recprocamente si reside en un soporte
externo (disquete, disco, cd, memoria USB, cinta, se denomina estructura de datos externa. La estructura
de datos ms importante desde el punto de vista de utilizacin es el arreglo, que es implementado en la
totalidad de lenguajes de programacin. Esta estructura corresponde con los conceptos matemticos de
vector, matriz o poliedro.
CONCEPTOS Y DEFINICIONES
Los arreglos son estructuras de datos que consisten en
elementos de datos relacionados, los cuales son del mismo
tipo y tienen un nombre comn para todos ellos. Contienen
un nmero fijo, finito y ordenado de elementos contiguos. La
posicin de cada elemento viene determinada por uno o
varios ndices de tipo entero. A cada elemento se le puede
acceder de forma directa indicando el nombre del arreglo y
su(s) respectivo ndice(s). La longitud de un arreglo es el
nmero de elementos que contiene. El tamao del arreglo es
la longitud (nmero de elementos) multiplicado por el tipo de
dato. Los elementos de un arreglo se utilizan de la misma
forma que cualquier variable de un programa, pudiendo por
tanto intervenir en instrucciones de asignacin/cculo,
entrada/salida, etc. Un arreglo es el realidad una referencia a
un objeto arreglo en memoria.
TIPOS DE ARREGLOS
Los arreglos se clasifican segn su dimensin en:
Unidimensionales
Bidimensionales
Multidimensionales
ARREGLOS UNIDIMENSIONALES
Son arreglos de una sola dimensin. Tambin se denominan vectores. Tienen un solo ndice. Cada
elemento del arreglo se accesa mediante su nombre seguido del nmero correspondiente al ndice que se
escribe entre corchetes. La declaracin de un arreglo tiene la siguiente sintaxis:
TipoDeDato nombreDeVariable = new TipoDeDato [ NmeroDeElementos ]
Ejemplo:
int nota [ ] = new int [ 100 ];
Declara un arreglo llamado nota que contiene 100 elementos de tipo enteros (int).
Los arreglos son utilizados muy seguidos para realizar ordenacin y bsqueda de datos utilizando la
memoria central (memoria RAM). La utilizacin de arreglos se puede potenciar con el uso de punteros.
ARREGLOS DE OBJETOS
En Java no se emplea el trmino "registro" sino el de objeto. Los arreglos de objetos son arreglos que en
vez de contener elementos de datos primitivos (int, float, double, etc.) contienen referencias a objetos de
un tipo de clase en especial. Dicha clase contiene variables (atributos) de diferente tipo y mtodos con los
cuales se manipulan dichas variables. Cada variable se referencia empleando un nombre de campo los
cuales son realmente el nombre de las instancias de las variables.
Ing. Javier Alberto Manrique Quionez

58

Java - Enfoque Prctico

Los elementos de un arreglo de objetos estn numerados y para referirnos a un elemento concreto,
utilizaremos su nmero de posicin denominado ndice.
En Java, los elementos de un arreglo de objetos se empiezan a numerar desde cero. Esto es el ndice del
primer elemento de la serie es 0. Si la longitud de la serie es N, el ndice del ltimo elemento del arreglo de
objetos ser n-1. Los arreglos de objetos se crean usando el operador new. A continuacin se presenta
un modelo que representa un arreglo de objetos.

CREACION DE UN ARREGLO DE OBJETOS


Para crear un arreglo de objetos se utiliza el operador new. Ejemplo:
Alumno oAlumno = new Alumno();
REFERENCIACIN 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, la referenciacin a cada elemento utilizando el operador new.
for(int i=0;i<100;i=i+1)
{ oAlumno[i]=new Alumno();
}
PASO Y RETORNO DE ARREGLOS A LOS MTODOS
Para pasar un argumento de tipo arreglo de objetos (la referencia al arreglo de objetos) se especifica el nombre del
arreglo sin corchetes. Ejemplo:
insertar(oAlumno);
Para que un mtodo reciba un arreglo de objetos (la referencia al arreglo de objetos) la lista de parmetros del mtodo
debe especificar un parmetro de tipo arreglo de objetos el cual tiene corchetes.
public static Alumno[] insertar(Alumno[] oAlumno)
{
return oAlumno;
}
Los mtodos pueden tener tipo de retorno de tipo arreglo, para lo cual en la declaracin del mtodo se debe de poner
como tipo de retorno un arreglo de objetos el cual tiene corchetes.
Ing. Javier Alberto Manrique Quionez

59

Java - Enfoque Prctico

public static Alumno[] insertar(Alumno[] oAlumno)


{
return oAlumno;
}
A continuacin se presenta el desarrollo de una aplicacin 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. Se utiliza los atributos cdigo del alumno (alumno_id), sus apellidos y nombres
(apellidoNombre), la evaluacin parcial 1 (evaluacionParcial1), la evaluacin parcial 2 (evaluacionParcial2)
y el promedio de trabajo (promedioDeTrabajo). El promedio final (promedioFinal) se calcula con la
siguiente frmula:
promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo )
Nota: Para mayor comodidad al trmino arreglo de objeto lo denominaremos arreglo de registros. Esto
se hace con el propsito de poder utilizar el mismo trmino en los captulos posteriores.
La aplicacin desarrollada para correr en consola presenta el siguiente men de opciones:

Cada opcin se describe a continuacin:


La ejecucin de la opcin I permite insertar objetos al arreglo de registros. Esta opcin solicita el
cdigo del alumno (alumno_id). Si no lo encuentra en el arreglo de registros permite ingresar los
otros datos (apellidoNombre, evaluacionParcial1, evaluacionParcial2 y promedioDeTrabajo). Si lo
encuentra presenta el mensaje Registro encontrado !!!

La ejecucin de la opcin C permite consultar un registro almacenado en el arreglo de registros.


Esta opcin solicita que se ingrese el cdigo del alumno (alumno_id). Si lo encuentra en el arreglo
de registros lo presenta en pantalla. Si no lo encuentra presenta el mensaje "No se encuentra el
registro !!!".

La ejecucin de la opcin M permite modificar un registro almacenado en el arreglo de registros.


Esta opcin solicita que se ingrese el cdigo del alumno (alumno_id). Si lo encuentra en el arreglo
de registros lo presenta en pantalla y solicita nuevos datos (atributos apellidoNombre,
Ing. Javier Alberto Manrique Quionez

60

Java - Enfoque Prctico

evaluacionParcial1, evaluacionParcial2 y promedioDeTrabajo) los cauales reemplazan a los


anteriores. Si no lo encuentra presenta el mensaje "No se encuentra el registro !!!".

La ejecucin de la opcin E permite eliminar registros al arreglo de registros. Esta opcin solicita
que se ingrese el cdigo del alumno (alumno_id). Si lo encuentra en el arreglo de registros lo
presenta en pantalla y lo borra inmediatamente. El trmino borrado siginifica poner en el atributo
alumno_id el valor -99. Si no lo encuentra presenta el mensaje "No se encuentra el registro !!!".

La ejecucin de la opcin L permite listar los los registros al arreglo de registros. Note que el
promedio final se visualiza con el valor 0. Para visualzar el promedio final calculado tiene que
ejecutar la opcin [P]rocesar notas.

La ejecucin de la opcin P permite calcular el promedio final de los registros del arreglo. Note que
el promedio final se visualiza con el valor 0.

Para visualizar el promedio final calculado tiene que ejecutar la opcin [L]istar.

La ejecucin de la opcin S se sale de la aplicacin.

Para el desarrollo de la aplicacin debe realizar las siguientes actividades:


Haga clic derecho en File (Archivo) y cree un proyecto vaco de Java.

Ing. Javier Alberto Manrique Quionez

61

Java - Enfoque Prctico

Seleccione un proyecto de Aplicacin Java (Java Application).

Asigne como Nombre de Proyecto (Project Name) ProyectoArregloDeObjetos, Localizacin del proyecto
(Project Location) c:\NetBeansProjects y como Carpeta del Proyecto
(Project Folder)
Ing. Javier Alberto Manrique Quionez

62

Java - Enfoque Prctico

c:\NetBeansProjects\ProyectoArregloDeObjetos. Desmarcar la casilla de verificacin Cree una Clase


Principal (Create Main Class) y luego haga clic en Finalizar (Finish).

Haga clic derecho en el Proyecto ProyectoArregloDeObjetos y cree un Paquete.

Asigne como Nombre de Paquete (Package Name) PaqueteArregloDeObjetos, Proyecto (Project)


ProyectoArregloDeObjetos, Localizacin (Location) Source Packages y como Carpeta Creada (Created
Ing. Javier Alberto Manrique Quionez

63

Java - Enfoque Prctico

Folder) c:\NetBeansProjects\ArregloDeObjetos\src\ PaqueteArregloDeObjetos. Luego haga clic en


Finalizar (Finish).

Haga clic derecho en PaqueteArregloDeObjetos y cree una Java Class.

Asigne como Nombre de Clase (Class name) Alumno, Proyecto (Project) ProyectoArregloDeObjetos,

localizacin (Location) Source Packages, paquete (Package) PaqueteArregloDeObjetos y como Carpeta


Ing. Javier Alberto Manrique Quionez

64

Java - Enfoque Prctico

Creada (Created Folder) c:\NetBeansProjects\ProyectoArregloDeObjetos\src\PaqueteArregloDeObjetos


\ Alumno.java. Luego haga clic en Finalizar (Finish).

Agregue el siguiente cdigo para la clase Alumno.


package PaqueteAccesoBaseDeDatosConJava;
public class Alumno
{ private int
alumno_id;
private String apellidoNombre;
private double evaluacionParcial1;
private double evaluacionParcial2;
private double promedioDeTrabajo;
private double promedioFinal;
public Alumno()
{ this.alumno_id=0;
this.apellidoNombre=null;
this.evaluacionParcial1 = 0;
this.evaluacionParcial2 = 0;
this.promedioDeTrabajo = 0;
this. promedioFinal
= 0;
}
public Alumno(int alumno_id, String apellidoNombre, double evaluacionParcial1,
double evaluacionParcial2, double promedioDeTrabajo, double promedioFinal)
{ this.alumno_id
= alumno_id;
this.apellidoNombre
= apellidoNombre;
this.evaluacionParcial1 = evaluacionParcial1;
this.evaluacionParcial2 = evaluacionParcial2;
this.promedioDeTrabajo = promedioDeTrabajo;
this.promedioFinal
= promedioFinal ;
}

public int getAlumno_id()


Ing. Javier Alberto Manrique Quionez

65

Java - Enfoque Prctico

{ return this.alumno_id;
}
public void setAlumno_id(int alumno_id)
{ this.alumno_id = alumno_id;
}
public String getApellidoNombre()
{ return this.apellidoNombre;
}
public void setApellidoNombre(String apellidoNombre)
{ this.apellidoNombre = apellidoNombre;
}
public double getEvaluacionParcial1()
{ return this.evaluacionParcial1;
}
public void setEvaluacionParcial1 (double evaluacionParcial1)
{ this.evaluacionParcial1 = evaluacionParcial1;
}
public double getEvaluacionParcial2()
{ return this.evaluacionParcial2;
}
public void setEvaluacionParcial2 (double evaluacionParcial2)
{ this.evaluacionParcial2 = evaluacionParcial2;
}
public double getPromedioDeTrabajo()
{ return this.promedioDeTrabajo;
}
public void setPromedioDeTrabajo(double promedioDeTrabajo)
{ this. promedioDeTrabajo = promedioDeTrabajo;
}
public void setPromedioFinal()
{ this.promedioFinal=(this.evaluacionParcial1+this.evaluacionParcial2+this.promedioDeTrabajo)/3;
}
public double getPromedioFinal()
{ return this.promedioFinal;
}
}

Cree un nuevo paquete.


Ing. Javier Alberto Manrique Quionez

66

Java - Enfoque Prctico

Asigne como Nombre de Paquete (Package Name) PaqueteBiblioteca, Proyecto (Project)


ProyectoArregloDeObjetos, Localizacin (Location) Source Packages y como Carpeta Creada (Created
Folder) c:\NetBeansProjects\ProyectoArregloDeObjetos\src\PaqueteBiblioteca. Luego haga clic en
Finalizar (Finish).

Dentro del paquete PaqueteBiblioteca cree la clase denominada ClaseLectura.


Ing. Javier Alberto Manrique Quionez

67

Java - Enfoque Prctico

Agregue el siguiente cdigo para la clase ClaseLectura. (Cortesa del Ing. J.J Flores Cueto U.N.J.F.S.C.)
package PaqueteBiblioteca;
import java.io.*;
public class ClaseLectura
{ public static char leerChar()
{ char c=' ';
char [] c1=leerString().toCharArray();
if (c1.length==1)
c=c1[0];
return c;
}
public static double leerDouble()
{ try { return Double.valueOf(leerString()).doubleValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo : ");
return leerDouble();
}
}
public static float leerFloat()
{ try
{ return Float.valueOf(leerString()).floatValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
return leerFloat();
}
}
public static int leerInt()
{ try
{ return Integer.parseInt(leerString());
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
return leerInt();
}
}
public static long leerLong()
{ try
Ing. Javier Alberto Manrique Quionez

68

Java - Enfoque Prctico

{ return Long.valueOf(leerString()).longValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
leerLong();
}
}
public static short leerShort()
{ try
{ return Short.valueOf(leerString()).shortValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
return leerShort();
}
}
public static String leerString()
{ BufferedReader in = new
BufferedReader(new InputStreamReader(System. in));
String cadena ="";
try
{ cadena = in.readLine();
}
catch (IOException e)
{ System.out.println(e); }
return cadena;
}
}

Nota: El cdigo anterior (ClaseLectura.java) puede descargarlo del cd de trabajo proporcionado por el
autor.

Cree una nueva clase denominada AplicacionArregloDeObjetos.

Agregue a la aplicacin arreglos de objetos el siguiente cdigo.


Ing. Javier Alberto Manrique Quionez

69

Java - Enfoque Prctico

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 opcin : ");
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 Quionez

70

Java - Enfoque Prctico

}
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(posicin,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 Quionez

71

Java - Enfoque Prctico

"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("Evaluacin parcial 1 : "+oAlumno[posicion].getEvaluacionParcial1()+"\n");
System.out.print("Evaluacin 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("Evaluacin parcial 1 : ");
oAlumno[posicion].setEvaluacionParcial1(ClaseLectura.leerDouble());
System.out.print("Evaluacin parcial 2 : ");
oAlumno[posicion].setEvaluacionParcial2(ClaseLectura.leerDouble());
System.out.print("Promedio de trabajo : ");
oAlumno[posicion].setPromedioDeTrabajo(ClaseLectura.leerDouble());
}
}

Verifique laa ejecucin de la aplicacin mostrando el men de opciones.

Ing. Javier Alberto Manrique Quionez

72

Java - Enfoque Prctico

La ejecucin de la aplicacin mostrando la ejecucin de la opcin [I]nsertar.

La ejecucin de la aplicacin mostrando la ejecucin de la opcin [L]istar.

Ing. Javier Alberto Manrique Quionez

73

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

74

Java - Enfoque Prctico

SISTEMA DE MEN CON GUI


La interfaz grfica de usuario, conocida tambin como GUI (del ingls graphical user interface) es un tipo
de interfaz de usuario que utiliza objetos grficos para representar la informacin y acciones disponibles
en la interfaz.
Habitualmente las acciones se realizan mediante manipulacin directa para facilitar la interaccin del
usuario con la computadora. Surge de la evolucin de la lnea de comandos de los primeros sistemas
operativos y es pieza fundamental en un entorno grfico. Como ejemplo de interfaz grfica 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 interaccin persona-computadora, la interfaz grfica de usuario es el
artefacto tecnolgico de un sistema interactivo que posibilita, a travs del uso y la representacin del
lenguaje visual, una interaccin amigable con un sistema informtico.
Java utiliza la biblioteca grfica Swing, la que permite construir interfaces grficas de usuario utlizando
objetos como formularios, cajas de dalogo, barras de mens, 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 Grfica de Usuario.
La Estructura bsica de una aplicacin 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 Dilogo (JDialog): ventanas de interaccin sencilla con el usuario como por ejemplo:
java.swing.JOptionPane: Ventana de dilogo 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 construccin de la interfaz grfica de usuario.
Cada vez que el usuario interacta con la aplicacin se gatilla un evento. Para que un componente
determinado reaccione frente a un evento, debe poseer un "escuchador" con, al menos, un mtodo
determinado que se ejecutar al escuchar un evento en particular. Swing puede generar un variado
conjunto de eventos y dentro de los ms comunes tenemos:
Ejemplos de eventos y sus escuchadores
Accin 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 seleccin en una lista o tabla

ListSelectionListener

Ing. Javier Alberto Manrique Quionez

75

Java - Enfoque Prctico

Para el desarrollo de la aplicacin para crear un sistema de men con GUI se debe realizar las siguientes
actividades:
Haga clic derecho en File (Archivo) y cree un proyecto vaco de Java

Seleccione un proyecto de Aplicacin Java (Java Application).

Ing. Javier Alberto Manrique Quionez

76

Java - Enfoque Prctico

Asigne como Nombre de Proyecto (Project Name) ProyectoSistemaDeMenu, Localizacin del proyecto
(Project Location) c:\NetBeansProjects y como Carpeta del Proyecto
(Project Folder)
c:\NetBeansProjects\ProyectoSistemaDeMenu. Desmarcar la casilla de verificacin 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 Quionez

77

Java - Enfoque Prctico

Asigne como Nombre de Paquete (Package Name) PaqueteSistemaDeMenu, Proyecto (Project)


ProyectoSistemaDeMenu, Localizacin (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 Quionez

78

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) JFrameSistemaDeMenu, Proyecto (Project)


ProyectoSistemaDeMenu, localizacin (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 grfico.

Ing. Javier Alberto Manrique Quionez

79

Java - Enfoque Prctico

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,
Localizacin (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 Quionez

80

Java - Enfoque Prctico

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,
Localizacin (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 Quionez

81

Java - Enfoque Prctico

Verifique que la barra de Men se presente como en el siguiente grfico. Luego hacer clic en el objeto
JFrameSistemaDeMenu.

Haga clic en la pestaa 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 Quionez

82

Java - Enfoque Prctico

Verifique que la Barra de Men se presente como en el siguiente grfico.

Haga clic derecho en la opcin 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 Quionez

83

Java - Enfoque Prctico

Verifique que la barra de Men se presente como en el siguiente grfico.

Haga clic derecho en la opcin File de la Barra de Men JFrameSistemaDeMenu y agregue desde la
Paleta (Add From Palette) un Elemento de Menu.

Ing. Javier Alberto Manrique Quionez

84

Java - Enfoque Prctico

Verifique que la Barra de Men se presente como en el siguiente grfico.

Haga doble clic sobre el texto del primer Elemento de Men (Menu tem) y modifique el texto
colocando Submen Cuadro de Dilogo 01. Repita el proceso sobre el texto del segundo Elemento de
Menu (Men tem) y modifique el texto colocando Submen Cuadro de Dilogo 02, tal como se
presenta en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

85

Java - Enfoque Prctico

Haga clic en la pestaa Source del frame JFrameSistemaDeMenu y cree la variable dialogo de tipo
Javax.Swing.JDialog tal como se presenta en el siguiente grfico.

Haga clic derecho en primer Menu item (Submen Cuadro de Dilogo 01) de la opcin File del Men
de Opciones de JFrameSistemaDeMenu y agregue un Evento-Action-ActionPerformed.

Ing. Javier Alberto Manrique Quionez

86

Java - Enfoque Prctico

En el jMenuItem1ActionPerformed agregue el cdigo siguiente. Repetir el mismo proceso para el


jMenuItem2ActionPerformed. Repita el mismo proceso para en Menu tem Submen Cuadro de
Dilogo 02.

Haga clic en la pestaa Source y verifique que jMenuItem1ActionPerformed


jMenuItem2ActionPerformed se presenten como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

87

el

Java - Enfoque Prctico

Haga clic derecho en PaqueteSistemaDeMenu y cree una Clase Principal Java (Java main Class) dentro
del paquete PaqueteSistemaDeMenu.

Asigne como Nombre de Clase (Class name) AplicacionSistemaDeMenu, Proyecto (Project)


ProyectoSistemaDeMenu, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteSistemaDeMenu
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoSistemaDeMenu\src\PaqueteSistemaDeMenu\AplicacionSistemaDeMen
u.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

88

Java - Enfoque Prctico

Verifique que clase principal AplicacionSistemaDeMenu se presente como en el siguiente grfico. Haga
clic en Source.

Agregue el cdigo correspondiente a la clase principal AplicacionSistemaDeMenu.

Ing. Javier Alberto Manrique Quionez

89

Java - Enfoque Prctico

Ejecute el Sistema de Mens. Verifique que la ejecucin de la primer Elemento del Men se presente
como en el siguiente grfico.

Verifique que la ejecucin del segundo elemento del Men se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

90

Java - Enfoque Prctico

Modifique el texto de cada opcin de Men de la Barra Principal. La primera opcin de la Barra de
Men ser Alumnos y Segunda opcin de la Barra de Men ser Salir. En el primer elemento del
Men Alumnos colocar: Agregar Alumnos y el segundo elemento del Men alumnos colocar Listar
alumnos, tal como se presenta en el siguiente grfico. En la segunda Opcin 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 Mens.

Haga clic derecho en el panel del Cuadro de Dilogo 01 y agregue un botn de comando (Button).

Ing. Javier Alberto Manrique Quionez

91

Java - Enfoque Prctico

Modifique el texto del botn de comando como se presenta en el siguiente grfico.

Haga clic derecho en el botn de comando y agregue un Evento-Action-ActionPerformed.

Ing. Javier Alberto Manrique Quionez

92

Java - Enfoque Prctico

Agregue el cdigo correspondiente al botn de comando tal como se presenta en el siguiente grfico.

Repita los procesos anteriores (agregar botn de comando, evento Evento-Action-ActionPerformed)


con el Cuadro de Dilogo 02.

Ing. Javier Alberto Manrique Quionez

93

Java - Enfoque Prctico

Verifique que la ejecucin del sistema de men con respecto al Cuadro de Dilogo 01

Verifique que la ejecucin del sistema de men con respecto al Cuadro de Dilogo 02.

Ing. Javier Alberto Manrique Quionez

94

Java - Enfoque Prctico

Verifique que la ejecucin del sistema de men con respecto a estructura.

Ing. Javier Alberto Manrique Quionez

95

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

96

Java - Enfoque Prctico

SISTEMA DE MEN CON GUI PARA MANIPULAR UN


ARREGLO DE OBJETOS
A continuacin se presenta el desarrollo de una aplicacin 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. Se utiliza los atributos cdigo del alumno (alumno_id), sus apellidos y nombres
(apellidoNombre), la evaluacin parcial 1 (evaluacionParcial1), la evaluacin parcial 2 (evaluacionParcial2)
y el promedio de trabajo (promedioDeTrabajo). El promedio final (promedioFinal) se calcula con la
siguiente frmula:
promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo )
La aplicacin desarrollada con GUI presenta el siguiente men de opciones:

Cada opcin se describe a continuacin:


La ejecucin de la opcin Insertar alumnos permite insertar objetos al arreglo de registros
utilizando un cuadro de dilogo. Esta opcin solicita los datos del alumno (alumno_od,
apellidoNombre, evaluacionParcial1, evaluacionParcial2 y promedioDeTrabajo).

Ing. Javier Alberto Manrique Quionez

97

Java - Enfoque Prctico

La ejecucin de la opcin Listar registros permite listar los registros del arreglo de registros
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 opcin Calcular promedio final.

La ejecucin de la opcin Calcular promedio final permite calcular el promedio final de los objetos
del arreglo de registros. Para ver los cambios realizados se tiene que ejecutar la opcin Listar
registros.

La ejecucin de la opcin Salir del sistema sale de la aplicacin.

Ing. Javier Alberto Manrique Quionez

98

Java - Enfoque Prctico

Para el desarrollo de la aplicacin debe realizar las siguientes actividades:


Haga clic derecho en File (Archivo) y cree un proyecto vaco de Java.

Seleccione un proyecto de Aplicacin Java (Java Application).

Ing. Javier Alberto Manrique Quionez

99

Java - Enfoque Prctico

Asigne como Nombre de Proyecto (Project Name) ProyectoArreglosConGUI, Localizacin del proyecto
(Project Location) c:\NetBeansProjects y como Carpeta del Proyecto
(Project Folder)
c:\NetBeansProjects\ProyectoArreglosConGUI. Desmarque la casilla de verificacin Cree una clase
Principal (Create Main Class) y luego haga clic en Finalizar (Finish).

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

Ing. Javier Alberto Manrique Quionez

100

Java - Enfoque Prctico

Asigne como Nombre de Paquete (Package Name) PaqueteArreglosConGUI, Proyecto (Project)


ProyectoArreglosConGUI, Localizacin (Location) Source Packages y como Carpeta Creada (Created
Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI. Luego haga clic en
Finalizar (Finish).

Haga clic derecho en PaqueteArreglosConGUI y cree una clase Java (Java Class).

Ing. Javier Alberto Manrique Quionez

101

Java - Enfoque Prctico


Asigne como Nombre de Clase (Class name) Alumno, Proyecto (Project) ProyectoArreglosConGUI,

localizacin (Location) Source Packages, paquete (Package) PaqueteArreglosConGUI y como Carpeta


Creada (Created Folder) c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI \
Alumno.java. Luego haga clic en Finalizar (Finish).

Agregue el siguiente cdigo para la clase Alumno.java.


package PaqueteArreglosConGUI;
public class Alumno
{ private int
alumno_id;
private String apellidoNombre;
private double evaluacionParcial1;
private double evaluacionParcial2;
private double promedioDeTrabajo;
private double promedioFinal;
public Alumno()
{ this.alumno_id=0;
this.apellidoNombre=null;
this.evaluacionParcial1 = 0;
this.evaluacionParcial2 = 0;
this.promedioDeTrabajo = 0;
this. promedioFinal
= 0;
}
public Alumno(int alumno_id, String apellidoNombre, double evaluacionParcial1,
double evaluacionParcial2, double promedioDeTrabajo, double promedioFinal)
{ this.alumno_id
= alumno_id;
this.apellidoNombre
= apellidoNombre;
this.evaluacionParcial1 = evaluacionParcial1;
this.evaluacionParcial2 = evaluacionParcial2;
this.promedioDeTrabajo = promedioDeTrabajo;
this.promedioFinal
= promedioFinal ;
}
Ing. Javier Alberto Manrique Quionez

102

Java - Enfoque Prctico

public int getAlumno_id()


{ return this.alumno_id;
}
public void setAlumno_id(int alumno_id)
{ this.alumno_id = alumno_id;
}
public String getApellidoNombre()
{ return this.apellidoNombre;
}
public void setApellidoNombre(String apellidoNombre)
{ this.apellidoNombre = apellidoNombre;
}
public double getEvaluacionParcial1()
{ return this.evaluacionParcial1;
}
public void setEvaluacionParcial1 (double evaluacionParcial1)
{ this.evaluacionParcial1 = evaluacionParcial1;
}
public double getEvaluacionParcial2()
{ return this.evaluacionParcial2;
}
public void setEvaluacionParcial2 (double evaluacionParcial2)
{ this.evaluacionParcial2 = evaluacionParcial2;
}
public double getPromedioDeTrabajo()
{ return this.promedioDeTrabajo;
}
public void setPromedioDeTrabajo(double promedioDeTrabajo)
{ this. promedioDeTrabajo = promedioDeTrabajo;
}
public void setPromedioFinal()
{ this.promedioFinal=(this.evaluacionParcial1+this.evaluacionParcial2+this.promedioDeTrabajo)/3;
}
public double getPromedioFinal()
{ return this.promedioFinal;
}
}

Ing. Javier Alberto Manrique Quionez

103

Java - Enfoque Prctico

Haga clic derecho en PaqueteArreglosConGUI y cree una JFrame Form.

Asigne como Nombre de Clase (Class name) JFrameArreglosConGUI, Proyecto (Project)


ProyectoArreglosConGUI,
localizacin
(Location)
Source
Packages,
paquete
(Package)
PaqueteArreglosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\
JFrameArreglosConGUI.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

104

Java - Enfoque Prctico

Verifique que el Proyecto ProyectoArreglosConGUI se presente como en el siguiente grfico.

Haga clic en la pestaa Source de la ventana JFrameArreglosConGUI.java Cree una variable oAlumno del
tipo arreglo Alumno. Agregue al constructor el parmetro oAlumno del tipo arreglo Alumno y asigne el
parmetro a la variable oAlumno creada anteriormente. Verifique que la ventana
JFrameArreglosConGUI se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

105

Java - Enfoque Prctico

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

Asigne como Nombre de Clase (Class name) JDialogInsertarAlumno, Proyecto (Project)


ProyectoArreglosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteArreglosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\
JDialogInsertarAlumno.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

106

Java - Enfoque Prctico

Haga clic en la pestaa Source de la ventana JDialogInsertarAlumno.java Cree una variable oAlumno del
tipo arreglo Alumno. Agregue al constructor el parmetro oAlumno del tipo arreglo Alumno y asigne el
parmetro a la variable oAlumno creada anteriormente. Verifique que la ventana
JDialogInsertarAlumno.java se presente como en el siguiente grfico.

Haga clic derecho en PaqueteArreglosConGUI y cree un dialog Form


PaqueteArreglosConGUI.

Ing. Javier Alberto Manrique Quionez

dentro del Paquete

107

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) JDialogListarAlumnos, Proyecto (Project)


ProyectoArreglosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteArreglosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\ JDialogListarAlumnos.java.
Luego haga clic en Finalizar (Finish).

Verifique que el proyecto se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

108

Java - Enfoque Prctico

Haga clic en la pestaa Source de la ventana JDialogListarAlumno.java Cree una variable oAlumno del
tipo arreglo Alumno. Agregue al constructor el parmetro oAlumno del tipo arreglo Alumno y asigne el
parmetro a la variable oAlumno creada anteriormente. Verifique que la ventana
JDialogListarAlumno.java se presente como en el siguiente grfico.

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

Ing. Javier Alberto Manrique Quionez

109

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) JDialogCalcularPromedioFinal.java, Proyecto (Project)


ProyectoArreglosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteArreglosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\
JDialogCalcularPromedioFinalFinal.java. Luego haga clic en Finalizar (Finish).

Verifique que el proyecto se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

110

Java - Enfoque Prctico

Haga clic en la pestaa Source de la ventana JDialogCalcularPromedioFinal.java Cree una variable


oAlumno del tipo arreglo Alumno. Agregue al constructor el parmetro oAlumno del tipo arreglo
Alumno y asigne el parmetro a la variable oAlumno creada anteriormente. Verifique que la ventana
JDialogCalcularPromedioFinal.java se presente como en el siguiente grfico.

Haga doble clic en cuadro de dilogo JDialogInsertarAlumno. Luego haga clic en la pestaa Diseo
(Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label (06), Text Field (05) y
Button (03), tal como se presenta en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

111

Java - Enfoque Prctico

Haga clic en la Ventana Inspector y verifique la presencia de los objetos que se visualizan en la ventana
Design.

Renombre los objetos en la ventana Inspector tal se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

112

Java - Enfoque Prctico

Pulse las teclas Control-Maysculas-7 para visualizar la Ventana de Propiedades. Modifique la


propiedad Text del objeto jLabelTitulo con el texto Insertar alumnos.

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

EvaluacinParcial 1:

jLabelEvaluacionParcial2

EvaluacinParcial 2:

jLabelPromedioDeTrabajo

Promedio de Trabajo:

jButtonAceptar

Aceptar

jButtonReiniciar

Reiniciar

jButtonSalir

Salir

Ing. Javier Alberto Manrique Quionez

113

Java - Enfoque Prctico

Haga clic en alguna parte del Panel de Diseo (Design) del jDialog JDialogInsertarAlumno.java para
visualizar la ventana de Propiedades (Properties).

Modifique la propiedad defaultCloseOperation y escriba DISPOSE (deshacerse).

Ing. Javier Alberto Manrique Quionez

114

Java - Enfoque Prctico

Haga clic derecho en el objeto jButtonAceptar y seleccione en el men conceptual Event-ActionactionPerformed para programar en evento clic del botn de comando.

Agregue el cdigo del evento clic del objeto jButtonAceptarActionPerformed.


private void jButtonAceptarActionPerformed(java.awt.event.ActionEvent evt)
{
Alumno[AplicacionArreglosConGUI.numeroDeAlumno].setAlumno_id(Integer.parseInt(
jTextFieldAlumno_id.getText()));
oAlumno[AplicacionArreglosConGUI.numeroDeAlumno].setApellidoNombre(
jTextFieldApellidoNombre.getText());
oAlumno[AplicacionArreglosConGUI.numeroDeAlumno].setEvaluacionParcial1(Double.parseDouble(
jTextFieldEvaluacionParcial1.getText()));
oAlumno[AplicacionArreglosConGUI.numeroDeAlumno].setEvaluacionParcial2(Double.parseDouble(
jTextFieldEvaluacionParcial2.getText()));
oAlumno[AplicacionArreglosConGUI.numeroDeAlumno].setPromedioDeTrabajo(Double.parseDouble(
jTextFieldPromedioDeTrabajo.getText()));
AplicacionArreglosConGUI.numeroDeAlumno++;
}

Ing. Javier Alberto Manrique Quionez

115

Java - Enfoque Prctico

Repita el proceso anterior


jButtonReiniciarActionPerformed.

agregue

el

cdigo

del

evento

clic

del

objeto

private void jButtonReiniciarActionPerformed(java.awt.event.ActionEvent evt)


{ jTextFieldAlumno_id.setText("");
jTextFieldApellidoNombre.setText("");
jTextFieldEvaluacionParcial1.setText("");
jTextFieldEvaluacionParcial2.setText("");
jTextFieldPromedioDeTrabajo.setText("");
}

Repita el proceso anterior y gregue el cdigo del evento clic del objeto jButtonSalirActionPerformed.

private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt)


{
dispose();
}
Haga doble clic en cuadro de dilogo JDialogListarAlumno. Luego haga clic en la pestaa Diseo (Design)
y agregue de la Paleta de Controles (Swing Controls) los objetos Label, jTextArea y Button. Finalmente
en el Inspector cambie los nombres de los controles tal como se presenta en el siguiente grfico.

Agregue el cdigo del evento clic del objeto jButtonListarActionPerformed.


private void jButtonListarActionPerformed(java.awt.event.ActionEvent evt)
{ jTextAreaListado.setText("");
jTextAreaListado.append("Alumno_id"+"\t"+"Apellido y nombre"+ "\t"+"Ep1"+"\t"+"Ep2"+"\t"+
"Pt"+
"\t"+ "Pf"+ "\n");
for (int i=0;i<AplicacionArreglosConGUI.numeroDeAlumno;i=i+1)
{ jTextAreaListado.append(oAlumno[i].getAlumno_id()+"\t");
jTextAreaListado.append(oAlumno[i].getApellidoNombre()+"\t\t");
jTextAreaListado.append(oAlumno[i].getEvaluacionParcial1()+"\t");
jTextAreaListado.append(oAlumno[i].getEvaluacionParcial2()+"\t");
jTextAreaListado.append(oAlumno[i].getPromedioDeTrabajo()+"\t");
jTextAreaListado.append(oAlumno[i].getPromedioFinal()+"\n");
}
Ing. Javier Alberto Manrique Quionez

116

Java - Enfoque Prctico

Verifique que el proyecto se presente como en el siguiente grfico. Luego haga clic en el objeto
JDialogCalcularPromedioFinal.java.

Haga doble clic en cuadro de dilogo JDialogCalcularPromedioFinal.java. Luego haga clic en la pestaa
Diseo (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 botn de comando por jButtonCalcularPromedioFinal.

Ing. Javier Alberto Manrique Quionez

117

Java - Enfoque Prctico

Haga clic en la Ventana Inspector para verificar el cuadro de dilogo JDialogCalcularPromedioFinal.

Agregue el cdigo del evento clic del objeto jButtonCalcularPromedioFinalActionPerformed.


private void jButtonCalcularPromedioFinalActionPerformed(java.awt.event.ActionEvent evt)
{ int respuesta = JOptionPane.showConfirmDialog(this, "Esta seguro...?", "Dialogo de Confirmacin",
JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
{ for (int i=0;i<AplicacionArreglosConGUI.numeroDeAlumno;i=i+1)
{ oAlumno[i].setPromedioFinal();
}
}
dispose();
}

Verique el cdigo del botn de comando jButtonCalcularPromedioFinalActionPerformed. Debe


presentarse errores en JOptionPane.YES_NO_OPTION.

Ing. Javier Alberto Manrique Quionez

118

Java - Enfoque Prctico

Haga clic derecho en la palabra JOptionPane.YES_OPTION y seleccione Fix Import (Refaccionar


Importaciones).

Verifique la instruccin import agregada.

Ing. Javier Alberto Manrique Quionez

119

Java - Enfoque Prctico

Haga doble clic en el JFrame JFrameArreglosConGUI.java y luego clic en la pestaa Design del mismo.
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 grfico.

Ing. Javier Alberto Manrique Quionez

120

Java - Enfoque Prctico

Haga clic derecho en la opcin File de la Barra de Men del JFrameArreglosConGUI y agregue desde la
Paleta (Add From Palette) un Elemento de Men (Menu Item).

Verifique que la barra de Men se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

121

Java - Enfoque Prctico

Haga clic derecho en la opcin File de la Barra de Men del JFrameArreglosConGUI y agregue desde la
Paleta (Add From Palette) un Elemento de Men (Menu Item).

Verifique que la Barra de Men se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

122

Java - Enfoque Prctico

Haga clic derecho sobre la primera opcin 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, tal como se presenta en el
siguiente grfico.

Ing. Javier Alberto Manrique Quionez

123

Java - Enfoque Prctico

Haga clic derecho sobre la segunda opcin Edit y seleccione la propiedad Editar Texto. Modifique y
pngale Proceso.

Haga clic derecho en la opcin Proceso de la Barra de Men del JArregloConGUI y agregue desde la
Paleta (Add From Palette) un Elemento de Men (Menu Item).

Ing. Javier Alberto Manrique Quionez

124

Java - Enfoque Prctico

Cambie la propiedad textro del elemento de men creado y proporcine el texto Calcular promedio
final. Finalmente verifique que la Barra de Men se presente como en el siguiente grfico.

Haga clic derecho en la barra de men y seleccione Agregar men (Add Menu).

Ing. Javier Alberto Manrique Quionez

125

Java - Enfoque Prctico

Haga clic derecho en la opcin de men jMenu3 y seleccione Editar Texto (Edit Text). Cambie el nombre
de la opcin de men jMenu3 por Salir.

Haga clic derecho en la opcin de men Salir y seleccione Agregar Elemento de Men (Menu Item)
desde la paleta (Add From Palette).

Ing. Javier Alberto Manrique Quionez

126

Java - Enfoque Prctico

Haga clic derecho en la opcin de men jMenuItem4 y seleccione Editar Texto (Edit Text). Cambie el
nombre del elemento de men jMenuItem4 por Salir de la aplicacin.

Verifique que la Barra de Men se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

127

Java - Enfoque Prctico

Renombre los objetos de la barra de men en la ventana Inspector del JFrameArreglosConGUI, tal como
se presenta como en el siguiente grfico.

Haga clic en la pestaa Source de la ventana JFrameArreglosConGUI y cree la variable dialogo de tipo
Javax.Swing.JDialog tal como se presenta en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

128

Java - Enfoque Prctico

Haga clic derecho en el primer elemento de men Alumnos (Insertar alumnos) y agregue un EventoAction-ActionPerformed.

Agregue el cdigo siguiente.

Ing. Javier Alberto Manrique Quionez

129

Java - Enfoque Prctico

Haga clic derecho en el segundo elemento de men Alumnos (Listar alumnos) y agregue un EventoAction-ActionPerformed.

Agregue el cdigo siguiente. Debe ser ListarAlumno

Ing. Javier Alberto Manrique Quionez

130

Java - Enfoque Prctico

Haga clic derecho en el primer elemento de men Proceso (Calcular promedio final) y agregue un
Evento-Action-ActionPerformed.

Agregue el cdigo siguiente.

Ing. Javier Alberto Manrique Quionez

131

Java - Enfoque Prctico

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 cdigo del evento clic del objeto jButtonSalirActionPerformed.

private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt)


{ int respuesta = JOptionPane.showConfirmDialog(this, "Esta seguro...?", "Dialogo de
Confirmacin", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
{ dispose();
}
}
Verique el cdigo del botn de comando jButtonSalirActionPerformed. Debe presentarse errores en
JOpctonPane.YES_NO_OPTION.

Ing. Javier Alberto Manrique Quionez

132

Java - Enfoque Prctico

Haga clic derecho en la palabra JOptionPane.YES_OPTION y seleccione Fix Import (Refaccionar


Importaciones).

Verifique la instruccin import agregada.

Ing. Javier Alberto Manrique Quionez

133

Java - Enfoque Prctico

Verifique que el cdigo de todos los elementos de men se presenten como en el siguiente grfico.

Haga clic derecho en PaqueteArreglosConGUI y cree una Clase Principal Java (Java Main Class) dentro
del paquete PaqueteArreglosConGUI.

Ing. Javier Alberto Manrique Quionez

134

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) AplicacionArreglosConGUI, Proyecto (Project)


ProyectoArreglosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteArreglosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArregloConGUI\src\PaqueteArreglosConGUI\
AplicacionArreglosConGUI.java. Luego haga clic en Finalizar (Finish).

Verifique que clase principal AplicacionArreglosConGUI se presente como en el siguiente grfico. Haga
clic en Source.

Ing. Javier Alberto Manrique Quionez

135

Java - Enfoque Prctico

Agregue el cdigo correspondiente a la clase principal AplicacionArreglosConGUI.

Ejecute la aplicacin AplicacionArreglosConGUI

Ing. Javier Alberto Manrique Quionez

136

Java - Enfoque Prctico

Verifique la ejecucin de la opcin Insertar alumnos.

Verifique la ejecucin de la opcin Listar alumnos

Ing. Javier Alberto Manrique Quionez

137

Java - Enfoque Prctico

Verifique la ejecucin de la opcin Calcular promedio final

Verifique la ejecucin de la opcin Salir de la aplicacin

Ing. Javier Alberto Manrique Quionez

138

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

139

Java - Enfoque Prctico

ARCHIVOS DE DATOS
El almacenamiento en variables y arreglos es temporal; los datos se pierden cuando una variable local
queda fuera del alcance, o cuando el programa termina. Las computadoras utilizan archivos de datos para
la retencin de a largo plazo de grandes cantidades de datos, incluso hasta despus de que terminan los
programas que crean esos datos. Se denominan datos persistentes a aquellos que duran ms all de la
duracin de la ejecucin del programa. Las computadoras almacenan archivos en dispositivos de
almacenamiento secundario como disco duros, USB, discos pticos y cintas magnticas.

El procesamiento de archivos es una de las herramientas ms importantes que debe tener un lenguaje de
programacin para soportar las aplicaciones comerciales, que generalmente procesan grandes cantidades
de datos persistentes. Java posee pose poderosas caractersticas de procesamiento de archivos de datos,
las cuales permiten a un programa leer y escribir datos en memoria interna y/o memoria externa o en
archivos a travs de la red. Entre las operaciones que se pueden realizar con archivos de datos tenemos:

Agregar registros de datos.


Acceder a registros, siguiendo algn mtodo (secuencial, al azar,)
Examinar informacin almacenada en los registros de datos.
Sustituir una informacin de los registros de datos.

ORGANIZACIN DE LOS ARCHIVOS DE DATOS


Los archivos de datos se organizan de la siguiente forma:
Campo.

Es el agrupamiento de caracteres para formar una palabra o una cifra completa, como el
cdigo o nombre de una persona

Registro.

Es un grupo de campos considerados como una unidad.

Archivo.

Es un grupo de registros del mismo tipo.

Base de datos.

Es un grupo de archivos que almacenan la informacin de una organizacin.

ORGANIZACIN SECUENCIAL
Mtodo para almacenar registros de datos, en el cual los registros se deben recuperar en el mismo orden
en que se almacenaron.
ORGANIZACIN DIRECTA O ALEATORIA.
Mtodo para almacenar registros de datos en un archivo de modo que se pueda acceder a ellos en
cualquier secuencia sin importar su orden fsico real en los medios de almacenamiento.
ORGANIZACIN SECUENCIAL INDEXADA
Los registros se almacenan en orden. El mtodo utiliza un ndice de campo clave para buscar y localizar
fsicamente un registro, como pueden localizarse los temas clave en un libro. Utiliza un arreglo de ndice en
la RAM donde se almacena en forma ordenada el campo clave y la direccin fsica de los registros. Despus
Ing. Javier Alberto Manrique Quionez

140

Java - Enfoque Prctico

de operaciones de mantenimiento este arreglo de ndices puede ser grabado en forma separada en el
medio magntico para luego ser utilizado en la prxima sesin previa carga de los ndices en la memoria
RAM. Un ndice es una tabla o lista que contiene las claves de registros con las posiciones fsicas en archivo
de acceso indexado.
JERARQUA DE DATOS
Archivo de Notas

Archivo de CxP

Base de datos
Archivo de expedientes personales

Alumno_id apellidoNombre
Archivo
1
2
3

Registro

Arias, Alex
Barreto, Byron
Cespedes, Cesar

Alumno_id apellidoNombre
1

Campo

Byte

Bit

Arias, Alex

evaluacin
parcial 1
11
12
13

evaluacin promedio
parcial 2 de trabajo
11
11
12
12
13
13

evaluacin
parcial 1
11

evaluacin
parcial 2
11

promedio
de trabajo
11

apellidoNombre
Arias, Alex

10000001

Letra A en ASCII

ARCHIVOS BINARIO EN JAVA


Todos los lenguajes de programacin tienen alguna forma de interactuar con los sistemas de archivos
locales; Java no es una excepcin. Si se est desarrollando una aplicacin Java para uso interno,
probablemente ser necesario el acceso directo a archivos. Antes de realizar acciones sobre un archivo,
necesitamos un poco de informacin sobre ese archivo. La clase File proporciona muchas utilidades para
el manejo y obtencin de informacin de archivos.

CREACIN DE UN OBJETO FILE


Para crear un objeto de tipo File se utiliza:
//Se crea la variable Archivo de tipo File que contendr la direccin del archivo de datos.
File archivo = new File("Alumno.dat");
Ing. Javier Alberto Manrique Quionez

141

Java - Enfoque Prctico

ARCHIVOS DE ACCESO ALEATORIO (ORGANIZACIN EN JAVA)


A menudo, no se desea leer un archivo de principio a fin; sino acceder al archivo como una base de datos,
donde se salta de un registro a otro; cada uno en diferentes partes del archivo. Java proporciona una clase
RandomAccessFile para este tipo de entrada/salida.
CREACIN Y ACCESO A UN ARCHIVO DE ACCESO ALEATORIO
Para abrir un archivo de acceso aleatorio para accesarlo se realiza lo siguiente;
//Se crea la variable archivo de tipo File que contendr la direccin
File fichero=new File("Alumno.dat");
//Se crea la variable archivo de tipo RandomAccessFile o de acceso aleatorio.
RandomAccessFile archivo;
//Abre el archivo de acceso aleatorio para lectura y escritura
archivo = new RandomAccessFile(Fichero,"rw");
El argumento modo determina si se tiene acceso de slo lectura (r) o de lectura/escritura (r/w).
RandomAccessFile soporta la nocin de puntero de archivo. Este puntero indica la posicin actual en el
archivo. Cuando el archivo se crea por primera vez, el puntero de archivo es 0, indicando el principio del
archivo. Las llamadas a los mtodos readXXX y writeXXX ajustan la posicin del puntero de archivo segn
el nmero de bytes ledos o escritos.

Los objetos RandomAccessFile esperan informacin de lectura/escritura utilizando los mtodos read() y
write().
Adems de los mtodos de I/O normales que implcitamente mueven el puntero de archivo cuando ocurre
la operacin, RandomAccessFile contiene tres mtodos que manipulan explcitamente el puntero de
archivo:
skipBytes
: Mueve el puntero hacia adelante el nmero de bytes especificado.
seek
: Posiciona el puntero de archivo en la posicin anterior al byte especificado.
getFilePointer : Devuelve la posicin actual (byte) del puntero de fichero.
ACTUALIZACIN DE INFORMACIN
Se pueden utilizar archivo de acceso aleatorio para escribir informacin. Ejemplo:
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());
}
catch(IOException e)
{ System.out.println(error :+e);
}
}
Ing. Javier Alberto Manrique Quionez

142

Java - Enfoque Prctico

LECTURA DE INFORMACIN
Se pueden utilizar archivo de acceso aleatorio para leer informacin. Ejemplo:
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());
return oAlumno;
}
catch(IOException e)
{ return null;
}
}

MTODOS PARA ESCRITURA


void writeBoolean( boolean )

Escribe un boolean como un valor byte.

void writeByte( int )

Escribe un byte como un valor byte.

void writeBytes( String )

Escribe un string como una secuencia de bytes.

void writeChar( int )

Escribe un character como dos valores bytes.

void writeChars( String )

Escribe un string como una secuencia de caracteres.

void writeDouble( double )

Convierte un double como una secuencia de ocho bytes.

void writeFloat( float )

Convierte un float como una secuencia de cuatro bytes.

void writeInt( int )

Escribe un int como una secuencia de cuatro bytes.

void writeLong( long)

Escribe un long como una secuencia de ocho bytes.

void writeShort( int )

Escribe a short como una secuencia de dos bytes. high byte first.

void writeUTF( String str )

Escribe un String hacia un archive usando UTF-8 modificado en una


mquina de manera independiente.

MTODOS PARA LECTURA


boolean readBoolean ()

Lee un boolean desde un archivo

byte

readByte()

Lee un valor de 8 bits con signo desde un archivo.

char

readChar()

leer un nico carcter 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.

String readLine()

Lee la siguiente lnea de texto desde un archivo.

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.

String readUTF()

lee un String desde un archivo.

Ing. Javier Alberto Manrique Quionez

143

Java - Enfoque Prctico

A continuacin se presenta el desarrollo de una aplicacin en el cual se utiliza un archivo de datos para
almacenar los datos de un alumno, calcular su promedio final y mostrar los datos del alumno con su
promedio final calculado. Se utiliza los atributos cdigo del alumno (alumno_id), sus apellidos y nombres
(apellidoNombre), la evaluacin parcial 1 (evaluacionParcial1), la evaluacin parcial 2 (evaluacionParcial2)
y el promedio de trabajo (promedioDeTrabajo). El promedio final (promedioFinal) se calcula con la
siguiente frmula:
promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo )
La aplicacin desarrollada para correr en consola presenta el siguiente men de opciones:

Cada opcin se describe a continuacin:


La ejecucin de la opcin I permite insertar objetos al archivo de datos. Esta opcin solicita el
cdigo del alumno (alumno_id). Si no lo encuentra en el arreglo de registros permite ingresar los
otros datos (apellidoNombre, evaluacionParcial1, evaluacionParcial2 y promedioDeTrabajo). Si lo
encuentra presenta el mensaje Registro encontrado!!!

La ejecucin de la opcin C permite consultar un registro almacenado en el archivo de datos . Esta


opcin solicita que se ingrese el cdigo del alumno (alumno_id). Si lo encuentra en el archivo de
datos lo presenta en pantalla. Si no lo encuentra presenta el mensaje "No se encuentra el
registro!!!".

La ejecucin de la opcin M permite modificar un registro almacenado en el archivo de datos. Esta


opcin solicita que se ingrese el cdigo del alumno (alumno_id). Si lo encuentra en el archivo de
datos lo presenta en pantalla y solicita nuevos datos (atributos apellidoNombre,
evaluacionParcial1, evaluacionParcial2 y promedioDeTrabajo) los cauales reemplazan a los
anteriores. Si no lo encuentra presenta el mensaje "No se encuentra el registro!!!".

Ing. Javier Alberto Manrique Quionez

144

Java - Enfoque Prctico

La ejecucin de la opcin E permite eliminar registros al arreglo de registros. Esta opcin solicita
que se ingrese el cdigo del alumno (alumno_id). Si lo encuentra en el archivo de datos lo presenta
en pantalla y lo borra inmediatamente. El trmino borrado siginifica poner en el atributo
alumno_id el valor -99. Si no lo encuentra presenta el mensaje "No se encuentra el registro!!!".

La ejecucin de la opcin L permite listar los los registros al archivo de datos. Note que el
promedio final se visualiza con el valor 0. Para visualzar el promedio final calculado tiene que
ejecutar la opcin [P]rocesar notas.

La ejecucin de la opcin P permite calcular el promedio final de los registros del arreglo. Note que
el promedio final se visualiza con el valor 0.

Para visualizar el promedio final calculado tiene que ejecutar la opcin [L]istar.

La ejecucin de la opcin S se sale de la aplicacin.

Ing. Javier Alberto Manrique Quionez

145

Java - Enfoque Prctico

Para el desarrollo de la aplicacin debe realizar las siguientes actividades:


Haga clic derecho en File (Archivo) y cree un proyecto vaco de Java

Seleccione un proyecto de Aplicacin Java (Java Application).

Ing. Javier Alberto Manrique Quionez

146

Java - Enfoque Prctico

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

Haga clic derecho en el Proyecto ProyectoArchivoDeDatos y cree un Paquete.

Ing. Javier Alberto Manrique Quionez

147

Java - Enfoque Prctico

Asigne como Nombre de Paquete (Package Name) PaqueteArchivoDeDatos, Proyecto (Project)


ProyectoArchivoDeDatos, Localizacin (Location) Source Packages y como Carpeta Creada (Created
Folder) c:\NetBeansProjects\ProyectoArchivoDeDatos\src\ PaqueteArchivoDeDatos. Luego haga clic en
Finalizar (Finish).

Haga clic derecho en PaqueteArchivoDeDatos y cree una Java Class.

Ing. Javier Alberto Manrique Quionez

148

Java - Enfoque Prctico


Asigne como Nombre de Clase (Class name) Alumno, Proyecto (Project) ProyectoArchivoDeDatos,

localizacin (Location) Source Packages, paquete (Package) PaqueteArchivoDeDatos y como Carpeta


Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivoDeDatos\src\PaqueteArchivoDeDatos\
Alumno.java. Luego haga clic en Finalizar (Finish).

Agregue el siguiente cdigo para la clase Alumno. Obserse que se ha agregado un nuevo mtodo set
para el atributo promedioFinal.
package PaqueteAccesoBaseDeDatosConJava;
public class Alumno
{ private int
alumno_id;
private String apellidoNombre;
private double evaluacionParcial1;
private double evaluacionParcial2;
private double promedioDeTrabajo;
private double promedioFinal;
public Alumno()
{ this.alumno_id=0;
this.apellidoNombre=null;
this.evaluacionParcial1 = 0;
this.evaluacionParcial2 = 0;
this.promedioDeTrabajo = 0;
this. promedioFinal
= 0;
}
public Alumno(int alumno_id, String apellidoNombre, double evaluacionParcial1,
double evaluacionParcial2, double promedioDeTrabajo, double promedioFinal)
{ this.alumno_id
= alumno_id;
this.apellidoNombre
= apellidoNombre;
this.evaluacionParcial1 = evaluacionParcial1;
this.evaluacionParcial2 = evaluacionParcial2;
this.promedioDeTrabajo = promedioDeTrabajo;
this.promedioFinal
= promedioFinal ;
}
Ing. Javier Alberto Manrique Quionez

149

Java - Enfoque Prctico

public int getAlumno_id()


{ return this.alumno_id;
}
public void setAlumno_id(int alumno_id)
{ this.alumno_id = alumno_id;
}
public String getApellidoNombre()
{ return this.apellidoNombre;
}
public void setApellidoNombre(String apellidoNombre)
{ this.apellidoNombre = apellidoNombre;
}
public double getEvaluacionParcial1()
{ return this.evaluacionParcial1;
}
public void setEvaluacionParcial1 (double evaluacionParcial1)
{ this.evaluacionParcial1 = evaluacionParcial1;
}
public double getEvaluacionParcial2()
{ return this.evaluacionParcial2;
}
public void setEvaluacionParcial2 (double evaluacionParcial2)
{ this.evaluacionParcial2 = evaluacionParcial2;
}
public double getPromedioDeTrabajo()
{ return promedioDeTrabajo;
}
public void setPromedioDeTrabajo(double promedioDeTrabajo)
{ this.promedioDeTrabajo = promedioDeTrabajo;
}
public double getPromedioFinal()
{ return this.promedioFinal;
}

public void setPromedioFinal()


{ this.promedioFinal=(this.evaluacionParcial1+this.evaluacionParcial2+this.promedioDeTrabajo)/3;
}
}

Ing. Javier Alberto Manrique Quionez

150

Java - Enfoque Prctico

Cree un nuevo paquete.

Asigne como Nombre de Paquete (Package Name) PaqueteBiblioteca, Proyecto (Project)


ProyectoArchivoDeDatos, Localizacin (Location) Source Packages y como Carpeta Creada (Created
Folder) c:\NetBeansProjects\ProyectoArchivoeDatos\src\PaqueteBiblioteca. Luego haga clic en Finalizar
(Finish).

Ing. Javier Alberto Manrique Quionez

151

Java - Enfoque Prctico

Dentro del paquete PaqueteBiblioteca cree la clase denominada ClaseLectura.

Agregue el siguiente cdigo para la clase ClaseLectura. (Cortesa del Ing. J.J. Flores Cueto U.N.J.F.S.C.)
package PaqueteBiblioteca;
import java.io.*;
public class ClaseLectura
{ public static char leerChar()
{ char c=' ';
char [] c1=leerString().toCharArray();
if (c1.length==1)
c=c1[0];
return c;
}
public static double leerDouble()
{ try { return Double.valueOf(leerString()).doubleValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo : ");
return leerDouble();
}
}
public static float leerFloat()
{ try
{ return Float.valueOf(leerString()).floatValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
return leerFloat();
}
}
public static int leerInt()
{ try
{ return Integer.parseInt(leerString());
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
return leerInt();
}
}
Ing. Javier Alberto Manrique Quionez

152

Java - Enfoque Prctico

public static long leerLong()


{ try
{ return Long.valueOf(leerString()).longValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
leerLong();
}
}
public static short leerShort()
{ try
{ return Short.valueOf(leerString()).shortValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
return leerShort();
}
}
public static String leerString()
{ BufferedReader in = new
BufferedReader(new InputStreamReader(System. in));
String cadena ="";
try
{ cadena = in.readLine();
}
catch (IOException e)
{ System.out.println(e); }
return cadena;
}
}

Nota: El cdigo anterior (ClaseLectura.java) puede descargarlo del cd de trabajo proporcionado por el
autor.

Cree una nueva clase denominada AplicacionArchivoDeDatos

Ing. Javier Alberto Manrique Quionez

153

Java - Enfoque Prctico

Agregue el siguiente cdigo para la clase AplicacionArchivoDeDatos


package PaqueteArchivoDeDatos;
import PaqueteBiblioteca.*;
import java.io.*;
public class AplicacinArchivoDeDatos
{
tatic int tamaoDeRegistro=100;
public static void main(String[ ] args)
{ char Opcion;
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 opcin : ");
Opcion=Character.toUpperCase(ClaseLectura.leerChar());
switch (Opcion)
{ case 'I': insertar();
break ;
case 'C': consulta();
break ;
case 'M': modificar();
break ;
case 'E': eliminar();
break ;
case 'L': listar();
break ;
case 'P': procesar();
break;
default:
}
}
while (Opcion!='S');
}

public static void insertar()


{ try
{ Alumno oAlumno=new Alumno();
int busqueda=0;
int posicion=0;
File Fichero=new File("Alumno.dat");
if ( Fichero.exists( ) && ! Fichero.isFile ( ) )
{ throw new IOException (Fichero.getName()+ "No es un Fichero");
}
RandomAccessFile archivo;
archivo=new RandomAccessFile(Fichero, "rw");
System.out.print("Alumno_id : "); busqueda=ClaseLectura.leerInt();
posicion=buscarRegistro(busqueda,archivo);

Ing. Javier Alberto Manrique Quionez

154

Java - Enfoque Prctico

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

155

Java - Enfoque Prctico

if ( Fichero.exists( ) && ! Fichero.isFile ( ) )


{ throw new IOException (Fichero.getName()+ "No es un Fichero");
}
RandomAccessFile archivo;
archivo=new RandomAccessFile(Fichero, "rw");
System.out.print("Alumno_id : ");busqueda=ClaseLectura.leerInt();
posicion=buscarRegistro(busqueda,archivo);
if (posicion!=-99)
{ archivo.seek(posicion*tamaoDeRegistro);
leerRegistro(oAlumno, archivo);
visualizarRegistro(oAlumno);
oAlumno.setAlumno_id(-99);
archivo.seek(posicion*tamaoDeRegistro);
escribirRegistro(archivo, oAlumno);
}
else
{ System.out.println("No se puede encuentra el registro !!!");
}
archivo.close( );
}
catch(IOException e)
{ System.out.println("No se pudo eliminar el registro");
}
}
public static void consulta()
{ try
{ Alumno oAlumno=new Alumno();
int busqueda=0;
int posicion=0;
RandomAccessFile archivo;
archivo=new RandomAccessFile( "alumno.dat", "r");
System.out.print("Alumno_id : ");
busqueda=ClaseLectura.leerInt();
posicion=buscarRegistro(busqueda,archivo);
if (posicion!=-99)
{ archivo.seek(posicion*tamaoDeRegistro);
leerRegistro(oAlumno, archivo);
visualizarRegistro(oAlumno);
}
else
{ System.out.println("No se puede encuentra el registro !!!");
}
}
catch (IOException e)
{ System.out.println("Fallo la operacin de consulta! ! !");
}
}
public static int buscarRegistro(int alumno_id, RandomAccessFile archivo)
{ try {
Alumno oAlumno=new Alumno();
int encontrado=0;
int posicion=0;
int i=(int )Math.ceil((double)archivo.length()/tamaoDeRegistro);
Ing. Javier Alberto Manrique Quionez

156

Java - Enfoque Prctico

while ((posicion<i) && (encontrado==0))


{ archivo.seek ( posicion * tamaoDeRegistro );
leerRegistro(oAlumno,archivo);
if (alumno_id==oAlumno.getAlumno_id())
{ encontrado=1;
}
else
{ posicion++;
}
}
if (encontrado==1)
{ return posicion;
}
else
{ return -99;
}
}
catch(IOException e)
{ return -99;
}
}
public static void listar()
{ try
{ Alumno oAlumno=new Alumno();
int posicion=0;
RandomAccessFile archivo;
archivo=new RandomAccessFile("alumno.dat","r");
int i=(int )Math.ceil((double)archivo.length()/tamaoDeRegistro);
System.out.print("==============================================================\n");
System.out.print("Alumno_id
Apellido y Nombre ");
System.out.print("Ep 1
Ep2 P.deTrab. P.Final\n");
System.out.print("============================================================================\n");
for (posicion=0;posicion<i;posicion=posicion+1)
{ archivo.seek( posicion*tamaoDeRegistro );
leerRegistro(oAlumno, archivo);
System.out.print(oAlumno.getAlumno_id()+"\t\t");
System.out.print(oAlumno.getApellidoNombre()+"\t");
System.out.print(oAlumno.getEvaluacionParcial1()+"\t");
System.out.print(oAlumno.getEvaluacionParcial2()+"\t");
System.out.print(oAlumno.getPromedioDeTrabajo()+"\t");
System.out.print(oAlumno.getPromedioFinal()+"\n");
}
}
catch (IOException e)
{ System.out.println("Fallo la operacin de listado ! ! ! ");//
}
}
public static void procesar()
{ try
{ Alumno oAlumno=new Alumno();
int posicion=0;
RandomAccessFile archivo;
archivo=new RandomAccessFile("alumno.dat","rw");
int i=(int )Math.ceil((double)archivo.length()/tamaoDeRegistro);
Ing. Javier Alberto Manrique Quionez

157

Java - Enfoque Prctico

for (posicion=0;posicion<i;posicion=posicion+1)
{ archivo.seek( posicion*tamaoDeRegistro );
leerRegistro(oAlumno, archivo);
oAlumno.setPromedioFinal();
archivo.seek(posicion*tamaoDeRegistro );
escribirRegistro(archivo, oAlumno);
}
}
catch (IOException e)
{ System.out.println("Fallo la operacin de listado ! ! ! ");//
}
}
public static void visualizarRegistro(Alumno oAlumno)
{ System.out.print("Apellido y Nombre
: "+oAlumno.getApellidoNombre()+"\n");
System.out.print("Evaluacin parcial 1
: "+oAlumno.getEvaluacionParcial1()+"\n");
System.out.print("Evaluacin parcial 2 : "+oAlumno.getEvaluacionParcial2()+"\n");
System.out.print("Promedio de trabajo : "+oAlumno.getPromedioDeTrabajo()+"\n");
System.out.print("Promedio final
: "+oAlumno.getPromedioFinal()+"\n");
}
public static Alumno actualizarRegistro(Alumno oAlumno)
{ System.out.print("Apellido y Nombre : ");
setApellidoNombre(ClaseLectura.leerString());
System.out.print("Evaluacin parcial 1 : ");
oAlumno.setEvaluacionParcial1(ClaseLectura.leerDouble());
System.out.print("Evaluacin parcial 2 : ");
oAlumno.setEvaluacionParcial2(ClaseLectura.leerDouble());
System.out.print("Promedio de trabajo : ");
oAlumno.setPromedioDeTrabajo(ClaseLectura.leerDouble());
return oAlumno;
}
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)
{ System.out.println("Fallo la operacin de escritura !!! ");//
}
}
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;
}
Ing. Javier Alberto Manrique Quionez

158

Java - Enfoque Prctico

catch(IOException e)
{ return null;
}
}
}

La ejecucin de la aplicacin mostrando el men de opciones.

La ejecucin de la aplicacin mostrando la ejecucin de la opcin [L]istar.

Ing. Javier Alberto Manrique Quionez

159

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

160

Java - Enfoque Prctico

SISTEMA DE MEN CON GUI PARA MANIPULAR UN


ARCHIVO DE DATOS
A continuacin se presenta el desarrollo de una aplicacin en la cual se utiliza un archivo de objetos para
almacenar los datos de un alumno, calcular su promedio final y mostrar los datos del alumno con su
promedio final calculado. Se utiliza los atributos cdigo del alumno (alumno_id), sus apellidos y nombres
(apellidoNombre), la evaluacin parcial 1 (evaluacionParcial1), la evaluacin parcial 2 (evaluacionParcial2)
y el promedio de trabajo (promedioDeTrabajo). El promedio final (promedioFinal) se calcula con la
siguiente frmula:
promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo )
La aplicacin desarrollada con GUI presenta el siguiente men de opciones:

Cada opcin se describe a continuacin:


La ejecucin de la opcin Insertar alumnos permite insertar objetos al archivo de datos utilizando
un cuadro de dilogo. Esta opcin solicita los datos del alumno (alumno_id, apellidoNombre,
evaluacionParcial1, evaluacionParcial2 y promedioDeTrabajo).

Ing. Javier Alberto Manrique Quionez

161

Java - Enfoque Prctico

La ejecucin de la opcin 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 opcin Calcular promedio final.

La ejecucin de la opcin Calcular promedio final permite calcular el promedio final de los registros
del archivo de datos. Para ver los cambios realizados se tiene que ejecutar la opcin Listar
registros.

La ejecucin de la opcin Salir del sistema sale de la aplicacin.

Ing. Javier Alberto Manrique Quionez

162

Java - Enfoque Prctico

A continuacin se presenta una prctica para crear un sistema de men con GUI para manipular un archivo
de datos.
Haga clic derecho en File (Archivo) y cree un proyecto vaco de Java.

Seleccione un proyecto de Aplicacin Java (Java Application).

Ing. Javier Alberto Manrique Quionez

163

Java - Enfoque Prctico

Asigne como Nombre de Proyecto (Project Name) ProyectoArchivosConGUI, Localizacin del proyecto
(Project Location) c:\NetBeansProjects y como Carpeta del Proyecto
(Project Folder)
c:\NetBeansProjects\ProyectoArchivosConGUI. Desmarque la casilla de verificacin Cree una clase
Principal (Create Main Class) y luego haga clic en Finalizar (Finish).

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

Ing. Javier Alberto Manrique Quionez

164

Java - Enfoque Prctico

Asigne como Nombre de Paquete (Package Name) PaqueteArchivosConGUI, Proyecto (Project)


ProyectoArchivosConGUI, Localizacin (Location) Source Packages y como Carpeta Creada (Created
Folder) c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI. Luego haga clic en
Finalizar (Finish).

Haga clic derecho en PaqueteArchivosConGUI y cree una clase Java (Java Class).

Ing. Javier Alberto Manrique Quionez

165

Java - Enfoque Prctico


Asigne como Nombre de Clase (Class name) Alumno, Proyecto (Project) ProyectoArchivosConGUI,

localizacin (Location) Source Packages, paquete (Package) PaqueteArchivosConGUI y como Carpeta


Creada (Created Folder) c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI \
Alumno.java. Luego haga clic en Finalizar (Finish).

Agregue el siguiente cdigo para la clase Alumno. Obserse que se ha agregado un nuevo mtodo set
para el atributo promedioFinal.
package PaqueteArchivosConGUI;
public class Alumno
{ private int
alumno_id;
private String apellidoNombre;
private double evaluacionParcial1;
private double evaluacionParcial2;
private double promedioDeTrabajo;
private double promedioFinal;
public Alumno()
{ this.alumno_id=0;
this.apellidoNombre=null;
this.evaluacionParcial1 = 0;
this.evaluacionParcial2 = 0;
this.promedioDeTrabajo = 0;
this. promedioFinal
= 0;
}
public Alumno(int alumno_id, String apellidoNombre, double evaluacionParcial1,
double evaluacionParcial2, double promedioDeTrabajo, double promedioFinal)
{ this.alumno_id
= alumno_id;
this.apellidoNombre
= apellidoNombre;
this.evaluacionParcial1 = evaluacionParcial1;
this.evaluacionParcial2 = evaluacionParcial2;
this.promedioDeTrabajo = promedioDeTrabajo;
this.promedioFinal
= promedioFinal ;
}

Ing. Javier Alberto Manrique Quionez

166

Java - Enfoque Prctico

public int getAlumno_id()


{ return this.alumno_id;
}
public void setAlumno_id(int alumno_id)
{ this.alumno_id = alumno_id;
}
public String getApellidoNombre()
{ return this.apellidoNombre;
}
public void setApellidoNombre(String apellidoNombre)
{ this.apellidoNombre = apellidoNombre;
}
public double getEvaluacionParcial1()
{ return this.evaluacionParcial1;
}
public void setEvaluacionParcial1 (double evaluacionParcial1)
{ this.evaluacionParcial1 = evaluacionParcial1;
}
public double getEvaluacionParcial2()
{ return this.evaluacionParcial2;
}
public void setEvaluacionParcial2 (double evaluacionParcial2)
{ this.evaluacionParcial2 = evaluacionParcial2;
}
public double getPromedioDeTrabajo()
{ return promedioDeTrabajo;
}
public void setPromedioDeTrabajo(double promedioDeTrabajo)
{ this.promedioDeTrabajo = promedioDeTrabajo;
}
public double getPromedioFinal()
{ return this.promedioFinal;
}

public void setPromedioFinal()


{ this.promedioFinal=(this.evaluacionParcial1+this.evaluacionParcial2+this.promedioDeTrabajo)/3;
}
}

Ing. Javier Alberto Manrique Quionez

167

Java - Enfoque Prctico

Haga clic derecho en PaqueteArchivosConGUI y cree una JFrame Form.

Asigne como Nombre de Clase (Class name) JFrameArchivosConGUI, Proyecto (Project)


ProyectoArchivosConGUI, localizacin (Location) Source Packages,
paquete
(Package)
PaqueteArchivosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI\
JFrameArreglosConGUI.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

168

Java - Enfoque Prctico

Verifique que el Proyecto ProyectoAchivosConGUI se presente como en el siguiente grfico.

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

Ing. Javier Alberto Manrique Quionez

169

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) JDialogInsertarAlumno, Proyecto (Project)


ProyectoArchivosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteArchivosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI\
JDialogInsertarAlumno.java. Luego haga clic en Finalizar (Finish).

Haga clic derecho en PaqueteArchivosConGUI y cree un JDialog Form


PaqueteArchivosConGUI.

Ing. Javier Alberto Manrique Quionez

dentro del Paquete

170

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) JDialogListarAlumnos, Proyecto (Project)


ProyectoArchivosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteArchivosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI\ JDialogListarAlumnos.java.
Luego haga clic en Finalizar (Finish).

Verifique que el proyecto se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

171

Java - Enfoque Prctico

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

Asigne como Nombre de Clase (Class name) JDialogCalcularPromedioFinal.java, Proyecto (Project)


ProyectoArreglosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteArreglosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteArreglosConGUI\
JDialogCalcularPromedioFinalFinal.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

172

Java - Enfoque Prctico


Verifique que el proyecto se presente como en el siguiente grfico.

Haga doble clic en cuadro de dilogo JDialogInsertarAlumno. Luego haga clic en la pestaa Diseo
(Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label (06), Text Field (05) y
Button (03), tal como se presenta en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

173

Java - Enfoque Prctico

Haga clic en la Ventana Inspector y verifique la presencia de los objetos que se visualizan en la ventana
Disegn.

Renombre los objetos en la ventana Inspector tal se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

174

Java - Enfoque Prctico

Pulse las teclas Control-Maysculas-7 para visualizar la Ventana de Propiedades. Modifique la


propiedad Text del objeto jLabelTitulo con el texto Insertar alumnos.

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

EvaluacinParcial 1:

jLabelEvaluacionParcial2

EvaluacinParcial 2:

jLabelPromedioDeTrabajo

Promedio de Trabajo:

jButtonAceptar

Aceptar

jButtonReiniciar

Reiniciar

jButtonSalir

Salir

Ing. Javier Alberto Manrique Quionez

175

Java - Enfoque Prctico

Haga clic en alguna parte del Panel de Diseo (Designer) del jDialog JDialogInsertarAlumno.java para
visualizar la ventana de Propiedades (Properties).

Modifique la propiedad defaultCloseOperation y escriba DISPOSE (deshacerse).

Ing. Javier Alberto Manrique Quionez

176

Java - Enfoque Prctico

Haga clic derecho en el objeto jButtonAceptar y seleccione en el men conceptual Event-ActionactionPerformed para programar en evento clic del botn de comando.

Agregue el cdigo del evento clic del objeto jButtonAceptarActionPerformed.


private void jButtonAceptarActionPerformed(java.awt.event.ActionEvent evt){
{ try
{ Alumno oAlumno=new Alumno();
int busqueda=0;
int posicion=0;
File fichero=new File("Alumno.dat");
if ( fichero.exists() && ! fichero.isFile () )
{ throw new IOException (fichero.getName()+ "No es un archivo de datos");
}
RandomAccessFile archivo;
archivo=new RandomAccessFile(fichero,"rw");
busqueda=Integer.parseInt(jTextFieldAlumno_id.getText());
posicion=buscarRegistro(busqueda,archivo);
if (posicion==-99)
{ oAlumno.setAlumno_id(busqueda);
oAlumno.setApellidoNombre(jTextFieldApellidoNombre.getText());
oAlumno.setEvaluacionParcial1(Double.parseDouble(jTextFieldEvaluacionParcial1.getText()));
oAlumno.setEvaluacionParcial2(Double.parseDouble(jTextFieldEvaluacionParcial2.getText()));
oAlumno.setPromedioDeTrabajo(Double.parseDouble(jTextFieldPromedioDeTrabajo. getText()));

posicion=(int )Math.ceil((double)archivo.length()/100);
archivo.seek(posicion*100);
Ing. Javier Alberto Manrique Quionez

177

Java - Enfoque Prctico

escribirRegistro(oAlumno,archivo);
JOptionPane.showMessageDialog(null,"Operacin Exitosa!!!");
}
else
{ JOptionPane.showMessageDialog(null,"Registro encontrado !!!");
}
archivo.close( );
}
catch(IOException e)
{ JOptionPane.showMessageDialog(null,"Error - no se grab el registro!!!");
}
}
}

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

Ing. Javier Alberto Manrique Quionez

178

Java - Enfoque Prctico

En Reparar todas las importaciones (Fix all imports) haga clic en el botn de comando Ok

Verifique las importaciones agregadas.

Ing. Javier Alberto Manrique Quionez

179

Java - Enfoque Prctico

Repita el proceso anterior


jButtonReiniciarActionPerformed.

agregue

el

cdigo

del

evento

clic

del

objeto

private void jButtonReiniciarActionPerformed(java.awt.event.ActionEvent evt)


{ jTextFieldAlumno_id.setText("");
jTextFieldApellidoNombre.setText("");
jTextFieldEvaluacionParcial1.setText("");
jTextFieldEvaluacionParcial2.setText("");
jTextFieldPromedioDeTrabajo.setText("");
}
Repita el proceso anterior y gregue el cdigo del evento clic del objeto jButtonSalirActionPerformed.
private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt)
{ dispose();
}
Haga clic en la pestaa source del cuadro de dilogo JDialogInsertar y agregue los mtodos leerRegistro,
escribir registro y buscarRegistro.
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(Alumno oAlumno, RandomAccessFile archivo)
{ 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,"No se grab el registro !!!");
}
}
public static int buscarRegistro(int busqueda, RandomAccessFile archivo)
{ try
{ Alumno oAlumno=new Alumno();
int encontrado=0;
int posicion=0;
int i=(int )Math.ceil((double)archivo.length()/100);

Ing. Javier Alberto Manrique Quionez

180

Java - Enfoque Prctico

while ((posicion<i) && (encontrado==0))


{ archivo.seek ( posicion * 100 );
oAlumno=leerRegistro(oAlumno,archivo);
if (busqueda==oAlumno.getAlumno_id())
{ encontrado=1;
}
else
{ posicion++;
}
}
if (encontrado==1)
{ return posicion;
}
else
{ return -99;
}
}
catch(IOException e)
{ return -99;
}
}
Haga doble clic en cuadro de dilogo JDialogListarAlumno. Luego haga clic en la pestaa Diseo (Design)
y agregue de la Paleta de Controles (Swing Controls) los objetos Label, jTextArea y Button. Finalmente
en el Inspector cambie los nombres de los controles tal como se presenta en el siguiente grfico.

Agregue el cdigo del evento clic del objeto jButtonListarActionPerformed.


private void jButtonListarActionPerformed(java.awt.event.ActionEvent evt) {
try
{ Alumno oAlumno=new Alumno();
int posicion=0;
RandomAccessFile archivo;
archivo=new RandomAccessFile("alumno.dat","r");
int i=(int )Math.ceil((double)archivo.length()/100);
jTextAreaListado.setText("");
jTextAreaListado.append("Alumno_id"+"\t"+"Apellido y nombre" + "\t" + "Ep1" + "\t"+ "Ep2"
+"\t" + "Pt"+ "\t"+"Pf" + "\n");

Ing. Javier Alberto Manrique Quionez

181

Java - Enfoque Prctico

for (posicion=0;posicion<i;posicion=posicion+1)
{ archivo.seek( posicion*100);
leerRegistro(oAlumno, archivo);
jTextAreaListado.append(oAlumno.getAlumno_id()+"\t");
jTextAreaListado.append(oAlumno.getApellidoNombre()+"\t\t");
jTextAreaListado.append(oAlumno.getEvaluacionParcial1()+"\t");
jTextAreaListado.append(oAlumno.getEvaluacionParcial2()+"\t");
jTextAreaListado.append( oAlumno.getPromedioDeTrabajo()+"\t");
jTextAreaListado.append( oAlumno.getPromedioFinal()+"\n");
}
}
catch (IOException e)
{ JOptionPane.showMessageDialog(null,"Error al listar registros!!!");
}
}
Haga clic en la pestaa source del cuadro de dilogo JDialogListarAlumnos y agregue el mtodo
leerRegistro.
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;
}
}
Haga clic derecho en la palabra RandomAccessFile y seleccione Fix Imports (Refaccionar Importaciones).

Ing. Javier Alberto Manrique Quionez

182

Java - Enfoque Prctico

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

Verifique las importaciones agregadas.

Verifique que el proyecto se presente como en el siguiente grfico. Luego haga clic en el objeto
JDialogCalcularPromedioFinal.java.

Ing. Javier Alberto Manrique Quionez

183

Java - Enfoque Prctico

Haga doble clic en cuadro de dilogo JDialogCalcularPromedioFinal.java. Luego haga clic en la pestaa
Diseo (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 botn de comando por jButtonCalcularPromedioFinal.

Haga clic en la Ventana Inspector para verificar el cuadro de dilogo JDialogCalcularPromedioFinal.

Agregue el cdigo del evento clic del objeto jButtonCalcularPromedioFinalActionPerformed.


private void jButtonCalcularPromedioFinalActionPerformed(java.awt.event.ActionEvent evt) {
int respuesta = JOptionPane.showConfirmDialog(this, "Esta seguro...?", "Dialogo de Confirmacin",
JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
{
Ing. Javier Alberto Manrique Quionez

184

Java - Enfoque Prctico

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 mtodos 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 Quionez

185

Java - Enfoque Prctico

Verificar que se muestran errores por falta de libreras.

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 Quionez

186

Java - Enfoque Prctico

Verifique las importaciones agregadas.

Haga doble clic en el JFrame JFrameArchivosConGUI.java y luego clic en la pestaa 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 Quionez

187

Java - Enfoque Prctico

Verifique que la Barra de Men se presente como en el siguiente grfico.

Haga clic derecho en la opcin 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 Quionez

188

Java - Enfoque Prctico

Verifique que la barra de Men se presente como en el siguiente grfico.

Haga clic derecho en la opcin 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 Quionez

189

Java - Enfoque Prctico

Verifique que la Barra de Men se presente como en el siguiente grfico.

Haga clic derecho sobre la primera opcin File y modifique el texto colocando Alumnos.

Ing. Javier Alberto Manrique Quionez

190

Java - Enfoque Prctico

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, tal como se presenta en el
siguiente grfico.

Haga clic derecho sobre la segunda opcin Edit y seleccione la propiedad Editar Texto. Modifique y
pngale Proceso.

Ing. Javier Alberto Manrique Quionez

191

Java - Enfoque Prctico

Haga clic derecho en la opcin 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 proporcine el texto Calcular promedio
final. Finalmente verifique que la Barra de Men se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

192

Java - Enfoque Prctico

Haga clic derecho en la barra de men y seleccione Agregar men (Add Menu).

Haga clic derecho en la opcin de men jMenu3 y seleccione Editar Texto (Edit Text). Cambie el nombre
de la opcin de men jMenu3 por Salir.

Ing. Javier Alberto Manrique Quionez

193

Java - Enfoque Prctico

Haga clic derecho en la opcin de men Salir y seleccione Agregar Elemento de Men (Menu Item)
desde la paleta (Add From Palette).

Haga clic derecho en la opcin de men jMenuItem4 y seleccione Editar Texto (Edit Text). Cambie el
nombre del elemento de men jMenuItem4 por Salir de la aplicacin.

Ing. Javier Alberto Manrique Quionez

194

Java - Enfoque Prctico

Verifique que la Barra de Men se presente como en el siguiente grfico.

Renombre los objetos de la barra de men en la ventana Inspector del JFrameArchivosConGUI, tal como
se presenta como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

195

Java - Enfoque Prctico

Haga clic en la pestaa Source del frame JFrameArreglosConGUI y cree la variable dialogo de tipo
Javax.Swing.JDialog tal como se presenta en el siguiente grfico.

Haga clic derecho en el primer elemento de men Alumnos (Insertar alumnos) y agregue un EventoAction-ActionPerformed.

Ing. Javier Alberto Manrique Quionez

196

Java - Enfoque Prctico

Agregue el cdigo siguiente.

Haga clic derecho en el segundo elemento de men Alumnos (Listar alumnos) y agregue un EventoAction-ActionPerformed.

Agregue el cdigo siguiente. Debe ser ListarAlumno

Ing. Javier Alberto Manrique Quionez

197

Java - Enfoque Prctico

Haga clic derecho en el primer elemento de men Proceso (Calcular promedio final) y agregue un
Evento-Action-ActionPerformed.

Agregue el cdigo siguiente.

Haga clic derecho en el primer elemento de men Salir (Salir del sistema) y agregue un Evento-ActionActionPerformed.

Ing. Javier Alberto Manrique Quionez

198

Java - Enfoque Prctico

Agregue el cdigo siguiente.

Haga clic en Ok para agregar las importaciones

Verifique las importaciones agregadas.

Ing. Javier Alberto Manrique Quionez

199

Java - Enfoque Prctico

Verifique que el cdigo de todos los elementos de men se presenten como en el siguiente grfico.

Haga clic derecho en PaqueteArchivosConGUI y cree una Clase Principal Java (Java main Class) dentro
del paquete PaqueteArchivosConGUI.

Ing. Javier Alberto Manrique Quionez

200

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) AplicacionArchivosConGUI, Proyecto (Project)


ProyectoArchivosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteArchivosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArchivosConGUI\src\PaqueteArchivosConGUI\
AplicacionArchivosConGUI.java. Luego haga clic en Finalizar (Finish).

Verifique que clase principal AplicacionArchivossConGUI se presente como en el siguiente grfico. Haga
clic en Source.

Ing. Javier Alberto Manrique Quionez

201

Java - Enfoque Prctico

Agregue el cdigo correspondiente a la clase principal AplicacionArreglosConGUI.

Ejecute la aplicacin AplicacionArchivosConGUI

Verifique la ejecucin de la opcin Insertar alumnos.

Ing. Javier Alberto Manrique Quionez

202

Java - Enfoque Prctico

Verifique la ejecucin de la opcin Listar alumnos

Verifique la ejecucin de la opcin Calcular promedio final

Ing. Javier Alberto Manrique Quionez

203

Java - Enfoque Prctico

Verifique la ejecucin de la opcin Salir de la aplicacin

Ing. Javier Alberto Manrique Quionez

204

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

205

Java - Enfoque Prctico

COMANDO BSICOS EN MySQL 5.1


Para cargar el MySQL 5.1 y utilizar los comandos bsicos 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.

En la ventana de Comandos de Lnea de Cliente del MySQL ingrese el password y pulse enter. El
password del cliente es 12345. Luego utilice los conceptos y los ejemplos para trabajar con MySQL
5.1.

CREATE DATABASES
Crea una base de datos. Ejemplo:
create database dbalumno;

Ing. Javier Alberto Manrique Quionez

206

Java - Enfoque Prctico

SHOW DATABASES
Visualiza la relacin de bases de datos. Ejemplo:
show databases;

USE
Indica al MYSQL que use una base de datos especificada. Ejemplo:
use dbalumno;

CREATE TABLE
Crea una tabla. Ejemplo:
create table alumn
(
alumno_id
int,
apellidoNombre
char(31),
evaluacionParcial1 double,
evaluacionParcial2 double,
promedioDeTrabajo double
)
;

Ing. Javier Alberto Manrique Quionez

207

Java - Enfoque Prctico

SHOW TABLES
Visualiza los nombres de las
tablas de la base de datos activa.
Ejemplo:
show tables;

DESC
Visualiza los campos de una tabla. Ejemplo:
desc alumno;

INSERT
Inserta registros. Ejemplo;
insert
into
alumno ( alumno_id, apellidoNombre, evaluacionParcial1, evaluacionParcial2,
promedioDeTrabajo ) values ( 1, Arias, Alex, 11, 11, 11 ) ;

SELECT
Visualiza los registros de una tabla. Ejemplo:
select * from alumno;

Ing. Javier Alberto Manrique Quionez

208

Java - Enfoque Prctico

Puede tambin visualizar solo campos especificados:


select alumno_id, apellidoNombre from alumno;
Para visualizar los campos Codigo y ApeNon de la tabla alumno.

select count (*) from alumno;


Para visualizar el nmero de registros almacenados en la tabla alumno.
UPDATE
Actualiza datos de registros. Ejemplo.
update alumno set evaluacionParcial=10 where alumno_id=1;

La clusula where permite condicionar la actualizacin de un registro especfico. Si no se especifica un


registro determinado, se actualizan todos los registros.
DELETE
Elimina un registro.
delete from alumno where alumno_id=1;

Ing. Javier Alberto Manrique Quionez

209

Java - Enfoque Prctico

ALTER TABLE . . . RENAME TO . . .


Modifica el nombre de una tabla. Ejemplo:
alter table alumno rename to talumno;

ALTER TABLE . . . DROP COLUMN . . .


Elimina una columna de la tabla. Ejemplo:
alter table talumno drop column promedioDeTrabajo;

Ing. Javier Alberto Manrique Quionez

210

Java - Enfoque Prctico

ALTER TABLE . . . ADD COLUMN . . .


Agrega una columna de la tabla. Ejemplo:
alter table talumno add column promedioDeTrabajo int;

ALTER TABLE . . . MODIFY COLUMN . . .


Modifica el tipo de dato de una columna. Ejemplo:
alter table talumno modify column promedioDeTrabajo double;

Ing. Javier Alberto Manrique Quionez

211

Java - Enfoque Prctico

ALTER TABLE . . . CHANGE COLUMN . . .


Modifica el nombre de una columna. Ejemplo:
alter table talumno change column promedioDeTrabajo promedioDeLaboratorio double;

DROP TABLE
Borra una tabla. Ejemplo:
drop table talumno;

Ing. Javier Alberto Manrique Quionez

212

Java - Enfoque Prctico

DROP DATABASE
Borra una base de datos. Ejemplo:
drop database dbalumno;

ALTER TABLE . . . ADD CONSTRAINT . . .


crear un ndice a tabla de datos. Ejemplo:
alter table alumno add constraint pk_alumno primary key alumno(alumno_id);

QUIT
Sale del MySQL. Ejemplo:
quit;

Ing. Javier Alberto Manrique Quionez

213

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

214

Java - Enfoque Prctico

BASE DE DATOS
Una base de datos es una coleccin organizada de datos. Un sistema de gestin de base de datos es un
software que proporciona los mecanismos para almacenar, organizar, obtener y modificar datos, sin la
necesidad de preocuparse de su implementacin interna.
Actualmente, los sistemas de gestin de base de datos ms utilizados son las bases de datos relacionales.
El SQL, es un lenguaje estndar e internacional que se utiliza en casi todas las base de datos relacionales
para realizar consultas y manipular datos en una base de datos.
Los sistemas de gestin de base de datos relacionales ms populares son Microsoft SQL Server, Oracle,
Sybase, DB2, Informix, PostgreSQL y MySQL.
Los programas en Java se comunican con las base de datos y manipulan sus datos utilizando la API JDBC.
Existen controladores JDBC proporcionados por la mayora de sistemas de gestin de base de datos para
conectar Java con una base de datos especial y manipular sus datos almacenadas en ella.

INSTRUCCIONES BSICAS 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. Sabe la forma cmo hablar con la base de datos. Ejemplo:
private static String driver = "com.mysql.jdbc.Driver";

url: Es una cadena de caracteres que nos permite localizar la base de datos. Para Mysql. Ejemplo:
private static String url = "jdbc:mysql://localhost:3306/dbAlumno";

usuario:

Un usuario vlido para la base de datos.


private static String usuario = "root";

password:

Palabra clave del usuario.


private static String password = "12345";

Class.forName(driver):

Carga el driver o conector de base de datos. Ejemplo:


Class.forName(driver);

DriverManager.getConnection(url, usuario, password):

Obtiene una conexin con una

base de datos en particular. Devolviendo un objeto de tipo Connection.


Connection conexion = DriverManager.getConnection(url, usuario, password);
El mtodo getConnection de la clase DriverManager pasa como parmetro un url de conexin a la base
de datos, un parmetro con el nombre del usuario usuario y el password password de dicho usuario.

Ing. Javier Alberto Manrique Quionez

215

Java - Enfoque Prctico

conexion.createStatement()

: Este mtodo crea/devuelve un objeto Statement con el cual


podemos crear sentencias SQL y luego ejecutarlas sobre la base de datos.
Statement sentencia = conexion.createStatement();

sentencia.executeUpdate:

Manipula datos de una base de datos y devuelve un nmero de filas


(registros) afectados, o modificados. Se utiliza para insertar, actualizar y eliminar registros. Ejemplo:
sentencia.executeUpdate("INSERT INTO Alumno VALUES ("+oAlumno.getAlumno_id()+",'"+
oAlumno.getApellidoNombre()+"',"+
oAlumno.getEvaluacionParcial1()+","+
oAlumno.getEvaluacionParcial2()+","+
oAlumno.getPrmedioDeTrabajo()+","+
oAlumno.getPromedioFinal()+")");

resultado=sentencia.executeUpdate("UPDATE Alumno SET"+


apellidoNombre='"+oAlumno.getApellidoNombre()+"', "+
"EvaluacionParcial1="+oAlumno.getEvaluacionParcial1()+","+
"EvaluacionParcial2="+oAlumno.getEvaluacionParcial2()+","+
"PromedioDeTrabajo="+oAlumno.getPromedioDeTrabajo()+","+
"PromedioFinal="+oAlumno.getPromedioFinal()+
" WHERE alumno_ido="+oAlumno.getAlumno_id());

resultado = sentencia.executeUpdate("DELETE FROM Alumno WHERE alumno_id="+


oAlumno.getAlumno_id());

executeQuery(): Ejecuta consultas sobre la base de datos. Recibe como parmetro una sentencia SQL
y devuelve un objeto ResultSet (conjunto de registros) que contendr los datos de la consulta.
resultado=sentencia.executeQuery("SELECT * FROM Alumno WHERE Alumno_id="+
oAlumno.getAlumno_id());

En resumen:
Mtodo

Descripcin

executeUpdate( )

Se utiliza con instrucciones SQL de manipulacin de datos tales como


INSERT, DELETE o UPDATE.

executeQuery( )

Se utiliza en las instrucciones de consulta del tipo SELECT.

resultado.next()):

Las consultas se hacen con el mtodo executeQuery() y este devuelve un ResultSet


(conjunto de registros). Para recorrer los registros del ResultSet se utiliza un puntero de registros, el cual
se manipula a travs del mtodo next(). Para manipular el siguiente registro se utiliza otra vez el mtodo
next() y as sucesivamente hasta que el mtodo next() devuelva el valor falso (false), indicando que ya no
quedan ms registros. El puntero de registros al inicio se encuentra una posicin anterior al primer
registro.

Ing. Javier Alberto Manrique Quionez

216

Java - Enfoque Prctico

ResultSet resultado;
resultado = sentencia.executeQuery("SELECT * FROM Alumno WHERE alumno_id="+
oAlumno.getAlumno_id());
while (resultado.next())
{ alumno_id=resultado.getInt("alumno_id");
apellidoNombre
= resultado.getString(apellidoNombre);
evaluacionParcial1 = resultado.getDouble("evaluacionParcial1");
evaluacionParcial2 = resultado.getDouble("evaluacionParcial2");
promedioDeTrabajo = resultado.getDouble("promedioDeTrabajo");
promedioFinal
= resultado.getDouble("promedioFinal");
System.out.println("ApellidoNombre
: "+ apellidoNombre);
System.out.println("EvaluacionParcial1
: "+ evaluacionParcial1);
System.out.println("EvaluacionParcial2
: "+ evaluacionParcial2);
System.out.println("Promedio de Trabajo
: "+ promedioDeTrabajo);
System.out.println("Promedio Final
: "+ promedio Final);
}
Hemos hecho un SELECT para obtener los registros de la base datos. Luego utilizamos un bucle
while(resultado.next()) para traer los registros mientras que el puntero de registros pueda colocarse en un
registro vlido (no haber llegado al final del ResultSet). Despus hacer next(), los datos del registro est
disponible para ser ledos . La forma de leer los campos de un registro es pedirlos con algn mtodo get().
Las lneas con los mtodos getXXX() permiten tener acceso a las diferentes columnas de los registros. Si
sabemos de qu tipo es el dato de cada campo, podemos pedirlo con getInt(), getString(), etc. Si no lo
sabemos o nos da igual (como en este caso), bastar con un getObject(), capaz de traer cualquier tipo de
dato. En estos mtodos get() podemos pasar como parmetro un entero, empezando en 1, que es el
nmero del campo en el SELECT. Es decir, si hacemos SELECT campo1, campo2, campo3 ..., si pedimos
getObject(1) obtenemos el valor de campo1, para getObject(2) el de campo2, etc. Otra opcin es pasar el
nombre del campo por ejemplo getObject("alumno_id") nos devuelve el valor del campo alumno_id.

resultado.close() , sentencia.close(), conexion.close(): Cierra el objeto ResultSet, el objeto


Statement y el objeto Connection. Ejemplo:
resultado.close();
sentencia.close();
conexion.close();

Ing. Javier Alberto Manrique Quionez

217

Java - Enfoque Prctico

SENTENCIAS PARA ACTUALIZAR LA BASE DE DATOS


DESDE UN RESULTSET
Una consulta se crea mediante un objeto Statement el cual a su vez, es creado utilizando el mtodo
createStatement. Sin embargo este mtodo puede utilizar dos argumentos que permiten indicar el tipo de
ResultSet que obtendra el Statement. Esos dos argumentos son de tipo y de concurrencia y permiten
utilizar estas constantes. A continuacin se presenta un resumen de lo expuesto.
Para el tipo:
ResultSet.TYPE_FORWARD_ONLY

ResultSet.TYPE_SCROLL_INSENSITIVE
ResultSet.TYPE_SCROLL_SENSITIVE.
Para la concurrencia:
ResultSet.CONCUR_READ_ONLY
ResultSet.CONCUR_UPDATABLE

El conjunto de resultados no tendr desplazamiento. Slo se


podr utilizar el mtodo next (este es el nico valor para JDBC
1.0 y es el valor predeterminado si se construye el Statement
sin argumentos).
El conjunto de resultados tendr desplazamiento completo
pero no tendr en cuenta los cambios.
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, la clase ResultSet posee los siguientes mtodos para desplazarse por los
registros:
Mtodo
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 true si existe registro siguiente.
Coloca el puntero de registros en el registro anterior si lo hay, si no lo
hay devuelve false.
Coloca el puntero de registros en la fila indicada. Si esa fila no existe,
devuelve false. Si el nmero de fila se indica con un nmero negativo,
la fila se cuenta desde el final.
Coloca el puntero de registros en la fila indicada a partir de la
posicin actual del puntero. Si esa fila no existe, devuelve false. El
nmero 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 en el primer registro. Si no hay primer registro,
devuelve false
Coloca el puntero en el ltimo registro. Si no hay ltimo registro,
devuelve false
Coloca el puntero delante del primer registro. El mtodo next se
movera al primer registro si se utiliza tras esta orden.
Coloca el puntero detrs del ltimo registro. El mtodo previous se
movera al ltimo registro si se utiliza tras esta orden.
Devuelve true si el puntero est situado en el primer registro.
Devuelve true si el puntero est situado en el ltimo registro.
Devuelve true si el puntero est situado delante del primer registro.
Devuelve true si el puntero est situado detrs del ltimo registro.
Obtiene el nmero de registro actual modificacin de datos

Ing. Javier Alberto Manrique Quionez

218

Java - Enfoque Prctico

Los conjuntos de resultados se pueden utilizar tambin para modificar los datos obtenidos por la consulta
SELECT (siempre y cuando sea posible). Para ello se necesitan utilizar los mtodos update de la clase
ResultSet que permiten modificar el contenido de un campo en la posicin actual del puntero de registros.
Se trata de un conjunto de mtodos que comienzan con la palabra update seguida del tipo de datos Java
del campo y un segundo parmetro que indica el nuevo valor para el campo. Ejemplo:
resultado.updateDouble("promedioFinal",oAlumnoTemporal.getPromedioFinal);
El mtodo updateRow es el que permite actualizar la base de datos con los nuevos cambios. Se debe
utilizar cuando estamos seguros de que los cambios son los correctos. Si queremos anular los cambios se
debe utilizar el mtodo cancelRowUpdates.
resultado.updateRow();

EXCEPCIONES EN LA BASE DE DATOS


SQLException
En el paquete java.sql se encuentra la clase SQLException que captura las excepciones ocurridas en el
manejo de la base de datos. Su uso no difiere del resto de excepciones, pero incorpora nuevos mtodos
interesantes:
getSQLState. Describe el error segn las convenciones XOPEN.
getMessage. El mtodo tpico de excepciones, salvo que ste recoge el texto que enva el controlador JDBC
segn lo informado por el gestor de bases de datos, lo que le hace muy efectivo.
getErrorCode. Devuelve el cdigo de error ocurrido (segn lo informado por el gestor de la base de datos)
getNextException. Que permite ver la siguiente excepcin ocurrida, ya que a veces ocurren varias a la vez
(especialmente en transacciones y operaciones complejas).
Ejemplo:
try { //instrucciones de manejo de la base de datos
}
catch(SQLException sqle)
{ while(e!=null)
{ System.err.println("Estado: "+e.getSQLState());
System.err.println("Cdigo: "+e.getErrorCode());
System.err.println("Mensaje: "+e.getMessage());
e.getNextException();
}
}

SQLWarning
Otras veces, ocurre que la base de datos provoca excepciones, sino advertencias (warnings). Los objetos
que las provocan (sobre todo los ResultSet) las van almacenando en objetos de tipo SQLWarning. Para ver
los errores basta con llamar repetidamente al mtodo getSQLWarning. En cada llamada obtendremos un
nuevo objeto SQLWarning hasta que, finalmente no haya ms (devolver entonces el valor null).
Los mtodos que permiten observar el contenido de la advertencia son los mismos que los de la clase
SQLException, ya que esta clase es heredera suya. Aade el mtodo getNextWarning que funciona de
forma similar a getNextException, pero que en esta clase no se suele utilizar ya que las sucesivas llamadas
al mtodo getSQLWarnings provocan el mismo resultado. El mtodo clearWarnings de la clase ResultSet
permite borrar las advertencias almacenadas hasta ese momento.

Ing. Javier Alberto Manrique Quionez

219

Java - Enfoque Prctico

APLICACIN DE CONSOLA CON ACCESO A BASE DE


DATOS
A continuacin se presenta el desarrollo de una aplicacin en la cual se utiliza tabla de base de datos para
almacenar los datos de un alumno, calcular su promedio final y mostrar los datos del alumno con su
promedio final calculado. Se utiliza los atributos cdigo del alumno (alumno_id), sus apellidos y nombres
(apellidoNombre), la evaluacin parcial 1 (evaluacionParcial1), la evaluacin parcial 2 (evaluacionParcial2)
y el promedio de trabajo (promedioDeTrabajo). El promedio final (promedioFinal) se calcula con la
siguiente frmula:
promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo )
La aplicacin desarrollada para correr en consola presenta el siguiente men de opciones:

Cada opcin se describe a continuacin:


La ejecucin de la opcin I permite insertar objetos la tabla de base de datos. Esta opcin solicita el
cdigo del alumno (alumno_id). Si no lo encuentra en la tabla de base de datos permite ingresar
los otros datos (apellidoNombre, evaluacionParcial1, evaluacionParcial2 y promedioDeTrabajo). Si
lo encuentra presenta el mensaje Registro encontrado !!!

La ejecucin de la opcin C permite consultar un registro almacenado en una tabla de base de


datos. Esta opcin solicita que se ingrese el cdigo del alumno (alumno_id). 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 !!!".

La ejecucin de la opcin M permite modificar un registro almacenado en el arreglo de registros.


Esta opcin solicita que se ingrese el cdigo del alumno (alumno_id). Si lo encuentra en la tabla de
base de datos lo presenta en pantalla y solicita nuevos datos (atributos apellidoNombre,
evaluacionParcial1, evaluacionParcial2 y promedioDeTrabajo) los cuales reemplazan a los
anteriores. Si no lo encuentra presenta el mensaje "No se encuentra el registro !!!".

Ing. Javier Alberto Manrique Quionez

220

Java - Enfoque Prctico

La ejecucin de la opcin E permite eliminar registros al arreglo de registros. Esta opcin solicita
que se ingrese el cdigo del alumno (alumno_id). Si lo encuentra en la tabla de base de datos lo
presenta en pantalla y lo borra inmediatamente. Si no lo encuentra presenta el mensaje "No se
encuentra el registro !!!".

La ejecucin de la opcin L permite listar los registros de la tabla de base de datos. Note que el
promedio final se visualiza con el valor 0. Para visualzar el promedio final calculado tiene que
ejecutar la opcin [P]rocesar notas.

La ejecucin de la opcin P permite calcular el promedio final de los registros de la tabla de base de
datos. Note que el promedio final se visualiza con el valor 0.

Para visualizar el promedio final calculado tiene que ejecutar la opcin [L]istar.

La ejecucin de la opcin S se sale de la aplicacin.

Para el desarrollo de la aplicacin debe realizar las siguientes actividades:

Ing. Javier Alberto Manrique Quionez

221

Java - Enfoque Prctico

En el men de inicio del Windows seleccionar Programas / MySQL / MySQL Command Line Cliente para
levantar el servicio cliente de MySQL.

Tipee el password y pulse enter. El password es 12345.

Cree la base de datos escribiendo create database dbalumno; y luego pulse la tecla enter.

Ing. Javier Alberto Manrique Quionez

222

Java - Enfoque Prctico

Visualice la relacin de bases de datos creadas escribiendo show databases; y luego pulse enter.

Indique la base de datos a usar escribiendo use dbalumno;

Cree la tabla de base de datos alumnos escribiendo:


create table alumno
(
alumno_id
apellidoNombre
evaluacionParcial1
evaluacionParcial2
promedioDeTrabajo
promedioFinal
)
;

Ing. Javier Alberto Manrique Quionez

int,
char(31),
double,
double,
double,
double

223

Java - Enfoque Prctico

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.7.1 y haga clic derecho en File (Archivo) y cree un proyecto vaco de Java

Seleccione un proyecto de Aplicacin Java (Java Application).

Ing. Javier Alberto Manrique Quionez

224

Java - Enfoque Prctico

Asigne como Nombre de Proyecto (Project Name) ProyectoAccesoBaseDeDatosConJava, Localizacin


del proyecto (Project Location) c:\NetBeansProjects y como Carpeta del Proyecto (Project Folder)
c:\NetBeansProjects\ProyectoAccesoBaseDeDatosConJava. Desmarcar la casilla de verificacin Cree
una Clase Principal (Create Main Class) y luego haga clic en Finalizar (Finish).

Haga clic derecho en el Proyecto ProyectoAccesoBaseDeDatosConJava y cree un Paquete.

Ing. Javier Alberto Manrique Quionez

225

Java - Enfoque Prctico

Asigne como Nombre de Paquete (Package Name) PaqueteAccesoBaseDeDatosConJava, Proyecto


(Project) ProyectoAccesoBaseDeDatosConJava, Localizacin (Location) Source Packages y como Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoAccesoBaseDeDatosConJava\src\
PaqueteAccesoBaseDeDatosConJava. Luego haga clic en Finalizar (Finish).

Haga clic derecho en PaqueteAccesoBaseDeDatosConJava y cree una Java Class.

Ing. Javier Alberto Manrique Quionez

226

Java - Enfoque Prctico


Asigne

como
Nombre
de
Clase
(Class
name)
Alumno,
Proyecto
(Project)
ProyectoAccesoBaseDeDatosConJava, localizacin (Location) Source Packages, paquete (Package)
PaqueteAccesoBaseDeDatosConJava
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoAccesoBaseDeDatosConJava\src\PaqueteAccesoBaseDeDatosConJava\
Alumno.java. Luego haga clic en Finalizar (Finish).

Agregue el siguiente cdigo para la clase Alumno.


package PaqueteAccesoBaseDeDatosConJava;
public class Alumno
{ private int
alumno_id;
private String apellidoNombre;
private double evaluacionParcial1;
private double evaluacionParcial2;
private double promedioDeTrabajo;
private double promedioFinal;
public Alumno()
{ this.alumno_id=0;
this.apellidoNombre=null;
this.evaluacionParcial1 = 0;
this.evaluacionParcial2 = 0;
this.promedioDeTrabajo = 0;
this. promedioFinal
= 0;
}
public Alumno(int alumno_id, String apellidoNombre, double evaluacionParcial1,
double evaluacionParcial2, double promedioDeTrabajo, double promedioFinal)
{ this.alumno_id
= alumno_id;
this.apellidoNombre
= apellidoNombre;
this.evaluacionParcial1 = evaluacionParcial1;
this.evaluacionParcial2 = evaluacionParcial2;
this.promedioDeTrabajo = promedioDeTrabajo;
this.promedioFinal
= promedioFinal ;
}

Ing. Javier Alberto Manrique Quionez

227

Java - Enfoque Prctico

public int getAlumno_id()


{ return this.alumno_id;
}
public void setAlumno_id(int alumno_id)
{ this.alumno_id = alumno_id;
}
public String getApellidoNombre()
{ return this.apellidoNombre;
}
public void setApellidoNombre(String apellidoNombre)
{ this.apellidoNombre = apellidoNombre;
}
public double getEvaluacionParcial1()
{ return this.evaluacionParcial1;
}
public void setEvaluacionParcial1 (double evaluacionParcial1)
{ this.evaluacionParcial1 = evaluacionParcial1;
}
public double getEvaluacionParcial2()
{ return this.evaluacionParcial2;
}
public void setEvaluacionParcial2 (double evaluacionParcial2)
{ this.evaluacionParcial2 = evaluacionParcial2;
}
public double getPromedioDeTrabajo()
{ return this.promedioDeTrabajo;
}
public void setPromedioDeTrabajo(double promedioDeTrabajo)
{ this. promedioDeTrabajo = promedioDeTrabajo;
}

public void setPromedioFinal(double promedioFinal)


{ this.promedioFinal=promedioFinal;
}
public void setPromedioFinal()
{ this.promedioFinal=(this.evaluacionParcial1+this.evaluacionParcial2+this.promedioDeTrabajo)/3;
}
public double getPromedioFinal()
{ return this.promedioFinal;
}
}

Ing. Javier Alberto Manrique Quionez

228

Java - Enfoque Prctico

Cree un nuevo paquete.

Asigne como Nombre de Paquete (Package Name) PaquetePaqueteBiblioteca, Proyecto (Project)


ProyectoAccesoBaseDeDatosConJava, Localizacin (Location) Source Packages y como Carpeta Creada
(Created Folder) c:\NetBeansProjects\ProyectoAccesoBaseDeDatosConJava\src\PaqueteBiblioteca.
Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

229

Java - Enfoque Prctico

Dentro del paquete PaqueteBiblioteca cree la clase denominada ClaseLectura.

Agregue el siguiente cdigo para la clase ClaseLectura. (Cortesa del Ing. J.J Flores Cueto U.N.J.F.S.C.)
package PaqueteBiblioteca;
import java.io.*;
public class ClaseLectura
{ public static char leerChar()
{ char c=' ';
char [] c1=leerString().toCharArray();
if (c1.length==1)
c=c1[0];
return c;
}
public static double leerDouble()
{ try { return Double.valueOf(leerString()).doubleValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo : ");
return leerDouble();
}
}
public static float leerFloat()
{ try
{ return Float.valueOf(leerString()).floatValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
return leerFloat();
}
}
public static int leerInt()
{ try
{ return Integer.parseInt(leerString());
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
return leerInt();
}
}
Ing. Javier Alberto Manrique Quionez

230

Java - Enfoque Prctico

public static long leerLong()


{ try
{ return Long.valueOf(leerString()).longValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
leerLong();
}
}
public static short leerShort()
{ try
{ return Short.valueOf(leerString()).shortValue();
}
catch (NumberFormatException e)
{ System.out.print("ERROR... \n Ingrese de nuevo:");
return leerShort();
}
}
public static String leerString()
{ BufferedReader in = new
BufferedReader(new InputStreamReader(System. in));
String cadena ="";
try
{ cadena = in.readLine();
}
catch (IOException e)
{ System.out.println(e); }
return cadena;
}
}
Nota: El cdigo anterior (ClaseLectura.java) puede descargarlo del cd de trabajo proporcionado por el
autor.

Cree una nueva clase denominada AlumnoDAO.

Ing. Javier Alberto Manrique Quionez

231

Java - Enfoque Prctico

Agregue el siguiente cdigo para la clase AlumnoDAO.


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

232

Java - Enfoque Prctico

public Vector<Alumno> obtenerDatosEnVectorAlumno()


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

Ing. Javier Alberto Manrique Quionez

233

Java - Enfoque Prctico

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

234

Java - Enfoque Prctico

catch (Exception e)
{ System.out.print("Error ...."+e);
return false ;
}
}
}
Cree una nueva clase denominada AplicacionConsola.

Agregue el siguiente cdigo para la clase AplicacionConsola.


package PaqueteAccesoBaseDeDatosConJava;
import java.util.Vector;
import PaqueteBiblioteca.ClaseLectura;
public class AplicacionConsola
{ public static void main(String[ ] args)
{ char opcion;
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 opcin : ");
opcion=Character.toUpperCase(ClaseLectura.leerChar());
switch (opcion)
{ case 'I' :
insertar();
break ;
case 'C' :
consulta();
break ;
case 'M':
modificar();
break ;
case 'E' :
eliminar();
break ;
case 'P':
procesarPromedio();
break ;
case 'L':
listar();
break ;
}
}
while (opcion!='S');
}
Ing. Javier Alberto Manrique Quionez

235

Java - Enfoque Prctico

public static void insertar()


{ Alumno oAlumnoBuscar = new Alumno();
AlumnoDAO oAlumnoDAO=new AlumnoDAO();
int mAlumno_id;
System.out.print("Alumno_id :"); mAlumno_id=ClaseLectura.leerInt();
oAlumnoBuscar.setAlumno_id(mAlumno_id);
oAlumnoBuscar=oAlumnoDAO.buscarAlumno(oAlumnoBuscar);
if(oAlumnoBuscar == null)
{ Alumno oAlumno
= new Alumno();
oAlumno.setAlumno_id(mAlumno_id);
oAlumno=actualizarRegistro(oAlumno);
oAlumnoDAO.insertarAlumno(oAlumno);
System.out.println("Se realizo la operacin ...");
}
else
{ System.out.println("No se realiz la operacion ...");
}
}

public static void consulta()


{ Alumno oAlumno = new Alumno();
AlumnoDAO oAlumnoDAO=new AlumnoDAO();
int mAlumno_id;
System.out.print("Alumno_id : "); mAlumno_id=ClaseLectura.leerInt();
oAlumno.setAlumno_id(mAlumno_id);
oAlumno=oAlumnoDAO.buscarAlumno(oAlumno);
if(oAlumno !=null)
{ visualizarRegistro(oAlumno);
}
else
{ System.out.println("No se realiz la operacin ...");
}
}

public static void modificar()


{ Alumno oAlumno = new Alumno();
AlumnoDAO oAlumnoDAO=new AlumnoDAO();
int mAlumno_id;
System.out.print("Alumno_id :"); mAlumno_id=ClaseLectura.leerInt();
oAlumno.setAlumno_id(mAlumno_id);
oAlumno=oAlumnoDAO.buscarAlumno(oAlumno);
if(oAlumno !=null)
{ visualizarRegistro(oAlumno);
oAlumno=actualizarRegistro(oAlumno);
if (oAlumnoDAO.modificarAlumno(oAlumno))
{ System.out.println("Se realiz la operacin ...");
}
else
{ System.out.println("No se realiz la operacin ...");
}
}
}

Ing. Javier Alberto Manrique Quionez

236

Java - Enfoque Prctico

public static void eliminar()


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

237

Java - Enfoque Prctico

System.out.print("Promedio de trabajo : "+oAlumno.getPromedioDeTrabajo()+"\n");


System.out.print("Promedio final
: "+oAlumno.getPromedioFinal()+"\n");
}
public static Alumno actualizarRegistro(Alumno oAlumno)
{ System.out.print("Apellido y Nombre : ");
oAlumno.setApellidoNombre(ClaseLectura.leerString());
System.out.print("Evaluacin parcial 1 : ");
oAlumno.setEvaluacionParcial1(ClaseLectura.leerDouble());
System.out.print("Evaluacin parcial 2 : ");
oAlumno.setEvaluacionParcial2(ClaseLectura.leerDouble ());
System.out.print("Promedio de trabajo : ");
oAlumno.setPromedioDeTrabajo(ClaseLectura.leerDouble ());
return oAlumno;
}
}

Haga clic derecho en Librerias (Libraries) para agregar la librera MySQL JDBC driver.

Ing. Javier Alberto Manrique Quionez

238

Java - Enfoque Prctico

Seleccione la librera MySQL JDBC driver y haga clic en Agregar librera (Add library).

Verifique que la librera MySQL JDBC driver a sido agregada.

Ing. Javier Alberto Manrique Quionez

239

Java - Enfoque Prctico

La ejecucin de la aplicacin mostrando el men de opciones.

La ejecucin de la aplicacin mostrando la ejecucin de la opcin [L]istar.

Ing. Javier Alberto Manrique Quionez

240

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

241

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

242

Java - Enfoque Prctico

ACCESO A BASE DE DATOS CON GUI


A continuacin se presenta el desarrollo de una aplicacin en la cual se utiliza una tabla de base de datos
para almacenar los datos de un alumno, calcular su promedio final y mostrar los datos del alumno con su
promedio final calculado. Se utiliza los atributos cdigo del alumno (alumno_id), sus apellidos y nombres
(apellidoNombre), la evaluacin parcial 1 (evaluacionParcial1), la evaluacin parcial 2 (evaluacionParcial2)
y el promedio de trabajo (promedioDeTrabajo). El promedio final (promedioFinal) se calcula con la
siguiente frmula:
promedioFinal = ( evaluacionParcial1 + evaluacionParcial2 + promedioDeTrabajo )
La aplicacin desarrollada con GUI presenta el siguiente men de opciones:

Cada opcin se describe a continuacin:


La ejecucin de la opcin Insertar alumnos permite insertar registros en una tabla de base de datos
utilizando un cuadro de dilogo. Esta opcin solicita los datos del alumno (alumno_id,
apellidoNombre, evaluacionParcial1, evaluacionParcial2 y promedioDeTrabajo).

Ing. Javier Alberto Manrique Quionez

243

Java - Enfoque Prctico

La ejecucin de la opcin Listar registros permite listar los registros de la tabla de base 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 opcin Calcular promedio final.

La ejecucin de la opcin 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 opcin Listar
registros.

La ejecucin de la opcin Salir del sistema sale de la aplicacin.

Ing. Javier Alberto Manrique Quionez

244

Java - Enfoque Prctico

A continuacin se presenta una prctica 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). En Abrir Proyecto (Open
Project) seleccione ProyectoAccesoBaseDeDatosConJava.

Haga clic derecho en el Proyecto ProyectoAccesoBaseDeDatosConJava y seleccione Copiar (Copy) para


copiar el proyecto en otro.

Ing. Javier Alberto Manrique Quionez

245

Java - Enfoque Prctico

Escriba como nombre de proyecto (Project Name) ProyectoBaseDeDatosConGUI.

Verifique que el proyecto ProyectoBaseDeDatosConGUI se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

246

Java - Enfoque Prctico

Haga clic derecho en AplicacionConsola.java y seleccione Borrar (Delete) para eliminar el archivo.

Haga clic derecho en el paquete PaqueteBiblioteca y seleccione Borrar (Delete) para eliminar el paquete
PaqueteBiblioteca.

Ing. Javier Alberto Manrique Quionez

247

Java - Enfoque Prctico

Verifique que el proyecto ProyectoBaseDeDatosConGUI se presente como en el siguiente grfico.

Haga clic derecho en PaqueteBaseDeDatosConGUI y cree una JFrame Form

Ing. Javier Alberto Manrique Quionez

248

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) JFrameBaseDeDatosConGUI, Proyecto (Project)


ProyectoBaseDeDatosConGUI, localizacin (Location) Source Packages, paquete (Package)
PaqueteBaseDedatosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoArreglosConGUI\src\PaqueteBaseDeDatosConGUI\
JFrameBaseDeDatosConGUI.java. Luego haga clic en Finalizar (Finish).

Verifique que el Proyecto ProyectoBadeDeDatosConGUI se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

249

Java - Enfoque Prctico

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

Asigne como Nombre de Clase (Class name) JDialogInsertarAlumno, Proyecto (Project)


ProyectoBaseDeDatosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteBaseDeDatosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoBaseDeDatosConGUI\src\PaqueteBaseDeDatosConGUI\
JDialogInsertarAlumno.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

250

Java - Enfoque Prctico

Haga clic derecho en PaqueteBaseDeDatosConGUI y cree un JDialog Form


PaqueteBaseDeDatosConGUI.

dentro del Paquete

Asigne como Nombre de Clase (Class name) JDialogListarAlumnos, Proyecto (Project)


ProyectoBaseDeDatosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteBaseDeDatosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoBaseDeDatosConGUI\src\PaqueteBaseDeDatosConGUI\
JDialogListarAlumnos.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

251

Java - Enfoque Prctico

Verifique que el proyecto se presente como en el siguiente grfico.

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

Ing. Javier Alberto Manrique Quionez

252

Java - Enfoque Prctico

Asigne como Nombre de Clase (Class name) JDialogCalcularPromedioFinal.java, Proyecto (Project)


ProyectoBaseDeDatosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteBaseDeDatosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoBaseDeDatosConGUI\src\PaqueteBaseDeDatosConGUI\
JDialogCalcularPromedioFinalFinal.java. Luego haga clic en Finalizar (Finish).

Verifique que el proyecto se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

253

Java - Enfoque Prctico

Haga doble clic en cuadro de dilogo JDialogInsertarAlumno. Luego haga clic en la pestaa Diseo
(Design) y agregue de la Paleta de Controles (Swing Controls) los objetos Label (06), Text Field (05) y
Button (03), tal como se presenta en el siguiente grfico.

Haga clic en la Ventana Inspector y verifique la presencia de los objetos que se visualizan en la ventana
Design.

Ing. Javier Alberto Manrique Quionez

254

Java - Enfoque Prctico

Renombre los objetos en la ventana Inspector tal como se presenta en el siguiente grfico.

Pulse las teclas Control-Maysculas-7 para visualizar la Ventana de Propiedades. Modifique la


propiedad Text del objeto jLabelTitulo con el texto Insertar alumnos.

Ing. Javier Alberto Manrique Quionez

255

Java - Enfoque Prctico

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

EvaluacinParcial 1:

jLabelEvaluacionParcial2

EvaluacinParcial 2:

jLabelPromedioDeTrabajo

Promedio de Trabajo:

jButtonAceptar

Aceptar

jButtonReiniciar

Reiniciar

jButtonSalir

Salir

Haga clic en alguna parte del Panel de Diseo (Designer) del jDialog JDialogInsertarAlumno.java para
visualizar la ventana de Propiedades (Properties).

Ing. Javier Alberto Manrique Quionez

256

Java - Enfoque Prctico

Modifique la propiedad defaultCloseOperation y escriba DISPOSE (deshacerse).

Haga clic derecho en el objeto jButtonAceptar y seleccione en el men conceptual Event-ActionactionPerformed para programar en evento clic del botn de comando.

Ing. Javier Alberto Manrique Quionez

257

Java - Enfoque Prctico

Agregue el cdigo del evento clic del objeto jButtonAceptarActionPerformed.


private void jButtonAceptarActionPerformed(java.awt.event.ActionEvent evt)
{ Alumno oAlumno=new Alumno();
AlumnoDAO oAlumnoDAO=new AlumnoDAO();
oAlumno.setAlumno_id(Integer.parseInt(jTextFieldAlumno_id.getText()));
oAlumno.setApellidoNombre(jTextFieldApellidoNombre.getText());
oAlumno.setEvaluacionParcial1(Double.parseDouble(jTextFieldEvaluacionParcial1.getText()));
oAlumno.setEvaluacionParcial2(Double.parseDouble(jTextFieldEvaluacionParcial2.getText()));
oAlumno.setPromedioDeTrabajo(Double.parseDouble(jTextFieldPromedioDeTrabajo.getText()));
if (oAlumnoDAO.insertarAlumno(oAlumno))
{ JOptionPane.showMessageDialog(null,"Operacin Exitosa");
}
else
{ JOptionPane.showMessageDialog(null,"Operacin Fallida");
}
}

Repita el proceso anterior


jButtonReiniciarActionPerformed.

agregue

el

cdigo

del

evento

clic

del

objeto

private void jButtonReiniciarActionPerformed(java.awt.event.ActionEvent evt)


{ jTextFieldAlumno_id.setText("");
jTextFieldApellidoNombre.setText("");
jTextFieldEvaluacionParcial1.setText("");
jTextFieldEvaluacionParcial2.setText("");
jTextFieldPromedioDeTrabajo.setText("");
}
Repita el proceso anterior y gregue el cdigo del evento clic del objeto jButtonSalirActionPerformed.
private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt)
{ dispose();
}
Haga doble clic en cuadro de dilogo JDialogListarAlumno. Luego haga clic en la pestaa Diseo (Design)
y agregue de la Paleta de Controles (Swing Controls) los objetos Label, jTextArea y Button. Finalmente
en el Inspector cambie los nombres de los controles tal como se presenta en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

258

Java - Enfoque Prctico

Agregue el cdigo del evento clic del objeto jButtonListarActionPerformed.


private void jButtonListarActionPerformed(java.awt.event.ActionEvent evt)
{ jTextAreaListado.setText("");
Vector<Alumno> oVector = new Vector<Alumno>();
AlumnoDAO oAlumnoDAO=new AlumnoDAO();
oVector=oAlumnoDAO.obtenerDatosEnVectorAlumno();
System.out.println(oVector.size());jTextAreaListado.append("Alumno_id"+"\t"+"Apellido y Nombre"+
"\t"+ "Ep1"+ "\t"+ "Ep2"+"\t"+"Pt"+"\t"+"Pf"+"\n");
for (int i=0;i<oVector.size();i=i+1)
{ jTextAreaListado.append(oVector.get(i).getAlumno_id()+"\t");
jTextAreaListado.append(oVector.get(i).getApellidoNombre()+"\t"+"\t");
jTextAreaListado.append(oVector.get(i).getEvaluacionParcial1()+"\t");
jTextAreaListado.append(oVector.get(i).getEvaluacionParcial2()+"\t");
jTextAreaListado.append(oVector.get(i).getPromedioDeTrabajo()+"\t");
jTextAreaListado.append(oVector.get(i).getPromedioFinal()+"\n");
}

Verifique que el proyecto se presente como en el siguiente grfico. Luego haga clic en el objeto
JDialogCalcularPromedioFinal.java.

Haga doble clic en cuadro de dilogo JDialogCalcularPromedioFinal.java. Luego haga clic en la pestaa
Diseo (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 botn de comando por jButtonCalcularPromedioFinal.

Ing. Javier Alberto Manrique Quionez

259

Java - Enfoque Prctico

Haga clic en la Ventana Inspector para verificar el cuadro de dilogo JDialogCalcularPromedioFinal.

Agregue el cdigo del evento clic del objeto jButtonCalcularPromedioFinalActionPerformed.


private void jButtonCalcularPromedioFinalActionPerformed(java.awt.event.ActionEvent evt)
{
int respuesta = JOptionPane.showConfirmDialog(this, "Esta seguro...?", "Dialogo
Confirmacin", OptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
{ AlumnoDAO oAlumnoDAO=new AlumnoDAO();
oAlumnoDAO.procesarPromedioAlumno();
}
dispose();
}

Ing. Javier Alberto Manrique Quionez

de

260

Java - Enfoque Prctico

Haga doble clic en el JFrame JFrameArreglosConGUI.java y luego clic en la pestaa Design del mismo.
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 grfico.

Ing. Javier Alberto Manrique Quionez

261

Java - Enfoque Prctico

Haga clic derecho en la opcin File de la Barra de Men del JFrameBaseDeDatosConGUI y agregue
desde la Paleta (Add From Palette) un Elemento de Men (Menu Item).

Verifique que la barra de Men se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

262

Java - Enfoque Prctico

Haga clic derecho en la opcin File de la Barra de Men y agregue desde la Paleta (Add From Palette) un
Elemento de Men (Menu Item).

Verifique que la Barra de Men se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

263

Java - Enfoque Prctico

Haga clic derecho sobre la primera opcin 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, tal como se presenta en el
siguiente grfico.

Ing. Javier Alberto Manrique Quionez

264

Java - Enfoque Prctico

Haga clic derecho sobre la segunda opcin Edit y seleccione la propiedad Editar Texto. Modifique y
pngale Proceso.

Haga clic derecho en la opcin Proceso de la Barra de Men del JArregloConGUI y agregue desde la
Paleta (Add From Palette) un Elemento de Men (Menu Item).

Ing. Javier Alberto Manrique Quionez

265

Java - Enfoque Prctico

Cambie la propiedad textro del elemento de men creado y proporcine el texto Calcular promedio
final. Finalmente verifique que la Barra de Men se presente como en el siguiente grfico.

Haga clic derecho en la barra de men y seleccione Agregar men (Add Menu).

Ing. Javier Alberto Manrique Quionez

266

Java - Enfoque Prctico

Haga clic derecho en la opcin de men jMenu3 y seleccione Editar Texto (Edit Text). Cambie el nombre
de la opcin de men jMenu3 por Salir.

Haga clic derecho en la opcin de men Salir y seleccione Agregar Elemento de Men (Menu Item)
desde la paleta (Add From Palette).

Ing. Javier Alberto Manrique Quionez

267

Java - Enfoque Prctico

Haga clic derecho en la opcin de men jMenuItem4 y seleccione Editar Texto (Edit Text). Cambie el
nombre del elemento de men jMenuItem4 por Salir de la aplicacin.

Verifique que la Barra de Men se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

268

Java - Enfoque Prctico

Renombre los objetos de la barra de men en la ventana Inspector del JFrameBaseDeDatosConGUI, tal
como se presenta como en el siguiente grfico.

Haga clic en la pestaa Source del frame JFrameBaseDeDatosConGUI y cree la variable dialogo de tipo
Javax.Swing.JDialog tal como se presenta en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

269

Java - Enfoque Prctico

Haga clic derecho en el primer elemento de men Alumnos (Insertar alumnos) y agregue un EventoAction-ActionPerformed.

Agregue el cdigo siguiente.

Ing. Javier Alberto Manrique Quionez

270

Java - Enfoque Prctico

Haga clic derecho en el segundo elemento de men Alumnos (Listar alumnos) y agregue un EventoAction-ActionPerformed.

Agregue el cdigo siguiente. Debe ser ListarAlumno

Ing. Javier Alberto Manrique Quionez

271

Java - Enfoque Prctico

Haga clic derecho en el primer elemento de men Proceso (Calcular promedio final) y agregue un
Evento-Action-ActionPerformed.

Agregue el cdigo siguiente.

Haga clic derecho en el primer elemento de men Salir (Salir del sistema) y agregue un Evento-ActionActionPerformed.

Ing. Javier Alberto Manrique Quionez

272

Java - Enfoque Prctico

Agregue el cdigo siguiente.

Verifique que el cdigo de todos los elementos de men se presenten como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

273

Java - Enfoque Prctico

Haga clic derecho en PaqueteBaseDeDatosConGUI y cree una Clase Principal Java (Java main Class)
dentro del paquete PaqueteBaseDeDatosConGUI.

Asigne como Nombre de Clase (Class name) AplicacionBaseDeDatosConGUI, Proyecto (Project)


ProyectoBaseDeDatosConGUI, Localizacin (Location) Source Packages, Paquete (Package)
PaqueteBaseDeDatosConGUI
y
como
Carpeta
Creada
(Created
Folder)
c:\NetBeansProjects\ProyectoBaseDeDatosConGUI\src\PaqueteBaseDeDatosConGUI\
AplicacionBaseDeDatosConGUI.java. Luego haga clic en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

274

Java - Enfoque Prctico

Verifique que clase principal AplicacionBaseDeDatosConGUI se presente como en el siguiente grfico.


Haga clic en Source.

Agregue el cdigo correspondiente a la clase principal AplicacionBaseDeDatosConGUI.

En el men de inicio del Windows seleccionar Programas / MySQL / MySQL Command Line Cliente para
levantar el servicio cliente de MySQL.

Ing. Javier Alberto Manrique Quionez

275

Java - Enfoque Prctico

Tipee el password y pulse enter. El password es 12345.

Cree la base de datos escribiendo create database dbalumno; y luego pulse la tecla enter.

Visualice la relacin de bases de datos creadas escribiendo show databases; y luego pulse enter.

Indique la base de datos a usar escribiendo use dbalumno;

Ing. Javier Alberto Manrique Quionez

276

Java - Enfoque Prctico

Cree la tabla de base de datos alumnos escribiendo:

create table alumno


(
alumno_id
apellidoNombre
evaluacionParcial1
evaluacionParcial2
promedioDeTrabajo
promedioFinal
)
;

int,
char(31),
double,
double,
double,
double

Cree un ndice a tabla de datos alumno escribiendo:


alter table alumno add constraint pk_alumno primary key alumno(alumno_id)

Ing. Javier Alberto Manrique Quionez

277

Java - Enfoque Prctico

Haga clic derecho en Librerias (Libraries) para agregar la librera MySQL JDBC driver.

Seleccione la librera MySQL JDBC driver y haga clic en Agregar librera (Add library).

Ing. Javier Alberto Manrique Quionez

278

Java - Enfoque Prctico

Verifique que la librera MySQL JDBC driver a sido agregada.

Ejecute la aplicacin AplicacionBaseDeDatosConGUI

Verifique la ejecucin de la opcin Insertar alumnos.

Ing. Javier Alberto Manrique Quionez

279

Java - Enfoque Prctico

Verifique la ejecucin de la opcin Listar alumnos

Verifique la ejecucin de la opcin Calcular promedio final

Ing. Javier Alberto Manrique Quionez

280

Java - Enfoque Prctico

Verifique la ejecucin de la opcin Salir de la aplicacin

Ing. Javier Alberto Manrique Quionez

281

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

282

Java - Enfoque Prctico

REPORTES SIN USO DE PARMETROS


A continuacin se presenta una prctica para crear un reporte utilizando Java e iReport.
En el men de inicio del Windows seleccionar Programas / MySQL / MySQL Command Line Cliente para
levantar el servicio cliente de MySQL.

Tipee el password y pulse enter. El password es 12345.

Cree la base de datos escribiendo create database dbalumno; y luego pulse la tecla enter.

Ing. Javier Alberto Manrique Quionez

283

Java - Enfoque Prctico

Visualice la relacin de bases de datos creadas escribiendo show databases; y luego pulse enter.

Indique la base de datos a usar escribiendo use dbalumno;

Cree la tabla de base de datos alumnos.


create table alumno
( alumno_id
apellidoNombre
evaluacionParcial1
evaluacionParcial2
promedioDeTrabajo
promedioFinal

int,
char(31),
double,
double,
double,
double ) ;

Inserte los siguientes registros.


Insert into alumno(alumno_id,
apellidoNombre,evaluacionParcial1,evalucionParcial2,promedioDeTrabajo) values (1,Arias, Alex, 11,11,11);
Insert into alumno(alumno_id,
apellidoNombre,evaluacionParcial1,evalucionParcial2,promedioDeTrabajo) values (2,Barreto, Byron, 12,12,12);
Insert into alumno(alumno_id,
apellidoNombre,evaluacionParcial1,evalucionParcial2,promedioDeTrabajo) values (3,Cespedes, Cesar, 13,13,13);

Ing. Javier Alberto Manrique Quionez

284

Java - Enfoque Prctico

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.1., haga clic en el botn conexin/origen de datos para
reportes (Report Datasources) cuyo cono es

En Conexiones/origen de Datos (Connections/Datasources) haga clic en Nuevo (new).

Ing. Javier Alberto Manrique Quionez

285

Java - Enfoque Prctico

En Conexin/origen de Datos (Datasources) seleccione Database JDBC connection y luego haga clic en
siguiente.

Configure la Conexin a base de datos JDBC (Database JDBC connection) tal como se presenta en el
siguiente grfico, luego haga clic en Test. El password es el configurado en el MySQL (password: 12345)

Ing. Javier Alberto Manrique Quionez

286

Java - Enfoque Prctico

En Conexin a base de datos con JDBC (Database JDBC connection) active cuadro de texto Salvar
contrasea(Save password) y luego haga clic en el botn grabar (Save) y finalmente cierre la ventana.

En Conexin/origen de Datos (Connections/Datasources) verifique la conexin JDCB creada y luego


cierre la ventana.

Ing. Javier Alberto Manrique Quionez

287

Java - Enfoque Prctico

Haga clic derecho en File (Archivo) y seleccione Abrir Proyecto (Open Project). En Abrir Proyecto (Open
Project) seleccione ProyectoBaseDeDatosConGUIBackup. 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).

Ing. Javier Alberto Manrique Quionez

288

Java - Enfoque Prctico

Escriba como nombre de proyecto (Project Name) ProyectoReportesConJava.

Verifique que el proyecto ProyectoReportesConJava se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

289

Java - Enfoque Prctico

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 botn
Refaccionar (Refactor).

Ing. Javier Alberto Manrique Quionez

290

Java - Enfoque Prctico

Haga clic derecho en la clase AplicacionBaseDeDatosConGUI y seleccione Refaccionar/renombrar


(Refactor/Rename).

Dea como nuevo nombre de clase AplicacionReportesConJava


Refaccionar (Refactor).

Ing. Javier Alberto Manrique Quionez

y luego haga clic en el botn

291

Java - Enfoque Prctico

Repita los procesos anteriores para renombrar a la clase JFrameBaseDeDatosConGUI.java por el nombre
JFrameReportesConJava. Luego verifique que el proyecto se presente como en el siguiente grfico.

Haga clic derecho en el proyecto ProyectoBaseDeDatosConGUIBackup y selecciones close.

Ing. Javier Alberto Manrique Quionez

292

Java - Enfoque Prctico

Haga clic derecho en Libraries y seleccione Agregar Librera (Add Library).

Seleccione JasperReports3.5.3 y luego haga clin el el botn Agregar Librera (Add Library).

Ing. Javier Alberto Manrique Quionez

293

Java - Enfoque Prctico

Verifique que en el explorador del proyecto se han agregado las libreras de JasperReport.

Agregue de la Carpeta F:\ClasesParaReportes (Cd de trabajo proporcionado por el Autor) la clase


ClaseReporteSinParametro.java

Ing. Javier Alberto Manrique Quionez

294

Java - Enfoque Prctico

Verifique el cdigo del la clase ClaseReporteSinParametro.java.


package PaqueteReportesConJava;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Map;
import java.util.HashMap;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.*;
public class ClaseReporteSinParametro
{ private Connection conexion;
private String driver= "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/dbAlumno";
private final String login = "root";
private final String password = "12345";
public ClaseReporteSinParametro()
{ try
{
Class.forName(driver);
conexion = DriverManager.getConnection(url,login,password);
}
catch (ClassNotFoundException ex)
{ System.out.println("Fall carga de driver !!!");
ex.printStackTrace();
}
catch (SQLException ex)
{ System.out.println("Fall la conexin !!!");
ex.printStackTrace();
}
}
public void ejecutarReporte(String reporteURL)
{ try
{ JasperReport masterReport = null;
try
{
masterReport = (JasperReport) JRLoader.loadObject(reporteURL);
}
catch (JRException e)
{
System.out.println("Error cargando el reporte maestro: " + e.getMessage());
System.exit(3);
}
Map parametro = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport,parametro,conexion);
JasperViewer jviewer = new JasperViewer(jasperPrint,false);
jviewer.setTitle("Reporte de alumnos");
jviewer.setVisible(true);
}
catch (Exception j)
{ System.out.println("Mensaje de Error:"+j.getMessage());
}
}

Ing. Javier Alberto Manrique Quionez

295

Java - Enfoque Prctico

public void cerrarReporte()


{ try
{ conexion.close();
}
catch (SQLException ex)
{ ex.printStackTrace();
}
}
}
Haga clic derecho en el Paquete PaqueteReporteConJava y seleccione Nuevo/Otro (New/Other).

Seleccione Reporte Vaco (Empty report).

Ing. Javier Alberto Manrique Quionez

296

Java - Enfoque Prctico

En Nuevo Reporte Vaco (New Empty Report) configure el reporte y localizacin, como se presenta en
el siguiente grfico. Luego haga clic en Finalizar (Finish).

Haga clic en el objeto

Ing. Javier Alberto Manrique Quionez

para crear una consulta SQL de base datos.

297

Java - Enfoque Prctico

Haga clic en el botn de comando Query Designer.

Arrastre el objeto alumno (

Ing. Javier Alberto Manrique Quionez

), seleccione los campos de la consulta y luego haga clic en OK.

298

Java - Enfoque Prctico

Haga clic en la pestaa SQL y finalmente hacer clic en ok.

Haga clic en en el botn ok.

Ing. Javier Alberto Manrique Quionez

299

Java - Enfoque Prctico

Pulse Control-Shift+8 y verifique la visualizacin de la paleta de objetos para reportes.

Verifique la visualizacin de la Ventana Inspector de Reportes (Report Inspector). En caso que no se


visualizar haga clic en la opcin Windows-Reset Windows del men principal del NetBeans 6.7.1.

Ing. Javier Alberto Manrique Quionez

300

Java - Enfoque Prctico

Arrastre las variables alumno_id_alumno_id, alumno_apellidoNombre y alumno_promedioFinal de la


Ventana PaqueteReporteConJava Navegador (Navigator) a la fila Detail del rea de diseo del reporte.

Haga clic en Preview para realizar una vista previa.

Ing. Javier Alberto Manrique Quionez

301

Java - Enfoque Prctico

Haga clic en la pestaa Designer y arrastre el objeto Etiqueta de Texto Esttica (label Static Text) a la
banda Cabecera de Pgina (Page Header) del rea de diseo del reporte.

Repita el proceso anterior y agregue dos objetos Etiqueta de Texto Esttica (label Static Text) ms.
Luego haga doble clic en cada uno de los objetos Etiqueta de Texto Esttica (label Static Text) y cambie
los textos como se visualizan en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

302

Java - Enfoque Prctico

Repita el proceso anterior y agregue un objeto Etiqueta de Texto Esttica (label Static Text) en la banda
Cabecera de Pgina (Page Header). Luego haga doble clic en el objeto agregado y cambie el texto como
se visualizan en el siguiente grfico.

Haga clic en Preview para realizar una vista previa.

Ing. Javier Alberto Manrique Quionez

303

Java - Enfoque Prctico

Haga doble clic en JFrameReportesConJava. Java y agregue la opcin Reportes y el elemento de men
Reporte de alumnos.

En el inspector modifique el nombre de los objetos agregados.

Ing. Javier Alberto Manrique Quionez

304

Java - Enfoque Prctico

Haga clic derecho en el primer elemento de men Reportes (Reportes de alumnos) y agregue un EventoAction-ActionPerformed.

Agregue el cdigo siguiente.


private jMenuItemReporteDeAlumnosActionPerformed (java.awt.event.ActionEvent evt)
{ ClaseReporteSinParametro oClaseReporteSinParametro=new ClaseReporteSinParametro();
String
reporteURL="C:/NetBeansProjects/ProyectoReportesConJava/src/PaqueteReportesConJava/ReporteDeAlumnos.jasper";

oClaseReporteSinParametro.ejecutarReporte(reporteURL);
}
Nota: La variable de tipo String reporteURL contiene la direccin donde se ha grabado el archivo
ReporteDeAlumnos.jasper. El archivo .jasper se crea cuando se hace al reporte vista previa al
reporte.

Ing. Javier Alberto Manrique Quionez

305

Java - Enfoque Prctico

Haga clic derecho a la clase AplicacionReportesConJava.java y seleccione Ejecutar archivo (RunFile) para
ejecutar la aplicacin.

Seleccione el primer elemento de men Reportes (Reportes de alumnos) de la opcin de men


Reportes y visualice el reporte generado.

Ing. Javier Alberto Manrique Quionez

306

Java - Enfoque Prctico

Haga clic en el el botn Imprimir (Imprimir)


impresora instaladae imprimir el reporte el papel.

para imprimir el reporte. Puede seleccionar la

Haga clic en el el botn Grabar (Save)


para grabar el reporte en el formato PDF. Dea el nombre
del archivo PDF y luego haga clic en Grabar (Save).

Ing. Javier Alberto Manrique Quionez

307

Java - Enfoque Prctico

Verifique el funcionamiento de las otras opciones del la barra de herramientas.

Ing. Javier Alberto Manrique Quionez

308

Java - Enfoque Prctico

CREACIN DE UN REPORTE CON USO DE PARMETROS

Seleccione Reporte Vaco (Empty report).

Ing. Javier Alberto Manrique Quionez

309

Java - Enfoque Prctico

En Nuevo Reporte Vaco (New Empty Report) configure el reporte y localizacin, como se presenta en
el siguiente grfico. Luego haga clic en Finalizar (Finish).

Verifique que el archivo ReporteIndividual.jrxml ha sido creado.

Ing. Javier Alberto Manrique Quionez

310

Java - Enfoque Prctico

Agregue de la Carpeta F:\ClasesParaReportes (Cd de trabajo proporcionado por el Autor) la clase


ClaseReporteConParametro.java

Verifique el cdigo agregado de la clase ClaseReporteConParametro.


package PaqueteReportesConJava;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Map;
import java.util.HashMap;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.*;
public class ClaseReporteConParametro
{ private Connection conexion;
private final String driver=com.mysql.jdbc.Driver
private final String login = "root";
private final String password = "12345";
private String url = "jdbc:mysql://localhost/DbAlumno";
public ClaseReporteConParametro()
{ try
{ Class.forName(driver);
conexion = DriverManager.getConnection(url,login,password);
}
catch (ClassNotFoundException ex)
{ System.out.println("Fall carga de driver !!!");
ex.printStackTrace();
}
catch (SQLException ex)
{ System.out.println("Fall la conexin !!!");
ex.printStackTrace();
}
}

Ing. Javier Alberto Manrique Quionez

311

Java - Enfoque Prctico

public void ejecutarReporte(String reporteURL, String pAlumno_id)


{ try
{ if (reporteURL == null)
{ System.out.println("No encuentra el archivo de reporte !!!");
System.exit(2);
}
JasperReport masterReport = null;
try
{ masterReport = (JasperReport) JRLoader.loadObject(reporteURL);
}
catch (JRException e)
{ System.out.println("Error cargando el reporte maestro: " + e.getMessage());
System.exit(3);
}
//Preparacion del reporte (en esta etapa se inserta el valor del query en el reporte)
Map parametro = new HashMap();
parametro.put("pAlumno_id",pAlumno_id);
//Reporte diseado y compilado con iReport
JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport,parametro,conexion);
//Se lanza el Viewer de Jasper, no termina aplicacin al salir
JasperViewer jviewer = new JasperViewer(jasperPrint,false);
jviewer.setTitle("Reporte de alumnos");
jviewer.setVisible(true);
}
catch (Exception j)
{ System.out.println("Mensaje de Error:"+j.getMessage());
}
}
public void cerrarReporte()
{ try
{ conexion.close();
}
catch (SQLException ex)
{ ex.printStackTrace();
}
}
}

Ing. Javier Alberto Manrique Quionez

312

Java - Enfoque Prctico

En la ventana Inspector de Reportes (Report Inspector) haga clic derecho en Parameter y seleccionar
Add Parameter.

Haga clic derecho en parameter 1 y seleccione Rename.

Digite como nuevo nombre pcodigo, luego hacer clic en OK.

Ing. Javier Alberto Manrique Quionez

313

Java - Enfoque Prctico

Haga clic en el objeto

para crear una consulta SQL de datos.

Haga clic en el botn Query Designer.

Ing. Javier Alberto Manrique Quionez

314

Java - Enfoque Prctico

Arrastre el objeto alumno (

), seleccione los campos de la consulta y luego haga clic en OK.

Haga clic en la pestaa SQL y finalmente hacer clic en OK.

Ing. Javier Alberto Manrique Quionez

315

Java - Enfoque Prctico

Haga clic en la sentencia SQL agregada despus de la clusula FROM.

Agregue la seleccin condicional (WHERE) y finalmente haga clic en botn OK.

Ing. Javier Alberto Manrique Quionez

316

Java - Enfoque Prctico

Configure el reporte como se presenta en el siguiente grfico.

Haga clic en Preview para realizar una vista previa. Ingresar el parmetro 1.

Ing. Javier Alberto Manrique Quionez

317

Java - Enfoque Prctico

Cree un nuevo cuadro de dilogo denominado JDialogGenerarReporte.

Configure el cuadro de dilogo JDialogGenerarReporte y agregue los controles que se presentan en el


inspector y con el diseo que se presenta en el grfico siguiente.

Agregue el cdigo al botn Aceptar.


private void jButtonAceptarActionPerformed(java.awt.event.ActionEvent evt)
{ ClaseReporteConParametro oClaseReporteConParametro=new ClaseReporteConParametro();
String
reporteURL=
"C:/NetBeansProjects/ProyectoReportesConJava/src/PaqueteReportesConJava/ReporteIndividual.jasper";

oClaseReporteConParametro.ejecutarReporte(reporteURL,jTextFieldAlumno_id.getText());
}
Ing. Javier Alberto Manrique Quionez

318

Java - Enfoque Prctico

Agregue el cdigo al botn Salir


private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt)
{ dispose();
}
Haga doble clic en JFrameReportesConJava. Java y agregue el elemento de men Reporte de alumnos
individual.

En el inspector modifique el nombre de los objetos agregados.

Ing. Javier Alberto Manrique Quionez

319

Java - Enfoque Prctico

Haga clic derecho en el segundo elemento de men Reportes (Reportes de alumnos) y agregue un
Evento-Action-ActionPerformed.

Cree un nuevo cuadro de dilogo denominado JDialogGenerarReporte.

private void jMenuItemReporteDeAlumnosIndividualActionPerformed(java.awt.event.ActionEvent evt)


{
dialogo=new JDialogGenerarReporte(this,true);
dialogo.setSize(300,100);
dialogo.setLocationRelativeTo(this);
dialogo.setTitle("Reporte individual");
dialogo.setVisible(true);
}

Ing. Javier Alberto Manrique Quionez

320

Java - Enfoque Prctico

Ejecute el reporte recin creado.

Ing. Javier Alberto Manrique Quionez

321

Java - Enfoque Prctico

SISTEMAS CON REPORTES AVANZADOS


A continuacin se presenta la descripcin de la clase Docente, el cual se utilizar en el desarrollo de la
prctica de Sistemas con Reportes Avanzados.
Descripcin

Nombre

Tipo

Cdigo de docente docente_id


Apellido y Nombre
Tipo de docente
Nick (alias)
Horas dictadas
Ao de ingreso
Tarifa por hora
Movildad
Afiliado a AFP
Sueldo bruto

Frmula

int

apellidoNombre
tipoDeDocente_id
nick
horasDictadas
anhoDeIngreso
tarifaPorHora
movilidad
afiliadoAFP
sueldoBruto

String
int
String
double
int
double
double
int
double

Bonificacin
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
bonificacinPorTipoDeDocente = sueldoBruto * porcentaje;
tipoDeDocente =1
tipoDeDocente =2
tipoDeDocente =3
(Eventual)
(Contratado)
(De planta)
porcentaje=0.0
porcentaje=0.10
porcentaje=0.20
sueldoTotal = sueldoBruto + bonificacionPorTipoDeDocente +
movilidad
afiliado_a_AFP = 1
afiliado_a_AFP = 2
descuentoAFP = 0
descuentoAFP = sueldoTotal* 0.13
Si sueldoTotal<2200
Si sueltoTotal>=2200
impuestoALaRenta=0
impuestoALaRenta=sueldoTotal*0.10
descuentoTotal= descuentoAFP + impuestoALaRenta
sueldoNeto = sueldoTotal - descuentoTotal;

Cree la base datos dbDocente y la tabla Docente en MySQL 5.1 utilizando la estructura que se muestra a
continuacin:
create database dbDocente;
use dbDocente;
create table Docente
( docente_id
apellidoNombre
tipoDeDocente_id
nick
anhoDeIngreso
fotografia
horasDictadas
tarifaPorHora
sueldoBruto
movilidad
afiliadoAFP
bonificacionPorTipoDeDocente
sueldoTotal
descuentoAFP
impuestoALaRenta
descuentoTotal
sueldoNeto
);

int,
char(31),
int,
char(31),
int,
char(100),
double,
double,
double,
double,
int,
double,
double,
double,
double,
double,
double

Ing. Javier Alberto Manrique Quionez

322

Java - Enfoque Prctico

Cree un ndice y utilice como campo clave el campo docente_id.


alter table docente add constraint pk_docente primary key docente(docente_id);
Cree la tabla Reporte en MySQL utilizando la estructura que se muestra a continuacin.
create table reporte
( reporte_id
descripcion
url
conCuadroDeDialogo
conParametro
);

int(11),
char(150),
char(200),
int(11),
int(11)

Cree un ndice y utilice como campo clave el campo docente_id.


alter table reporte add constraint pk_reporte primary key reporte(reporte_id);
Haga clic derecho en la Opcin Archivo (File) del men principal para crear un nuevo proyecto.

Ing. Javier Alberto Manrique Quionez

323

Java - Enfoque Prctico

Seleccione un proyecto de Aplicacin Java (Java Application).

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

Ing. Javier Alberto Manrique Quionez

324

Java - Enfoque Prctico

Haga clic derecho en el Proyecto ProyectoReporteAvanzado y cree un Paquete denominado


PaqueteReporteAvanzado.

Asigne como Nombre de Paquete (Package Name) PaqueteReporteAvanzado, Proyecto (Project)


ProyectoReporteAvanzado, Localizacin (Location) Source Packages y como Carpeta Creada (Created
Folder) c:\NetBeansProjects\ProyectoReporteAvanzado\src\PaqueteReporteAvanzado. Luego haga clic
en Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

325

Java - Enfoque Prctico

Copie
las
clases
ConexionBD,
DocenteDAO,
GestionDeReporte,
ModeloDeFiltroDeArchivo, ModeloDeLista, ParametroDeReporte, Reporte
ProyectoReporteAvanzadoBackup
al
paquete
PaqueteReporteAvanzado
ProyectoReporteAvanzado,

ImagePreview,
del proyecto
del
proyecto

Las funciones de las clases copiadas son las siguientes:


CLASE

FUNCIN

ConexionBD
DocenteDAO
GestionDeReporte
ImagePreview
ModeloDeFiltroDeArchivo
ModeloDeLista
ParametroDeReporte
Reporte

Ing. Javier Alberto Manrique Quionez

Retorna una conexin a una base de datos.


Proporciona los mtodos insertar, eliminar, actualizar

326

Java - Enfoque Prctico

Haga clic en el botn

para crear conexin a origen de datos.

En Conexiones / Origen de Datos (Connections/Datasources) haga clic en Nuevo (new).

Ing. Javier Alberto Manrique Quionez

327

Java - Enfoque Prctico

En Conexin a Origen de Datos (Datasources) seleccione Database JDBC connection y haga clic en
siguiente.

Configure la Conexin a Base de Datos JDBC (Database JDBC connection) tal como se presenta en el
siguiente grfico. Luego haga clic en el botn Test parea testear la conexin. El password es el
configurado en el MySQL.

Ing. Javier Alberto Manrique Quionez

328

Java - Enfoque Prctico

En Conexin a base de datos JDBC (Database JDBC connection) haga clic en grabar (Save) y luego
cierre la ventana.

En Conexiones y Origen de Datos (Connections/Datasources) verifique la conexin JDCB creada y


luego cierre la ventana.

Ing. Javier Alberto Manrique Quionez

329

Java - Enfoque Prctico

Haga clic derecho en Libraries del Proyecto ProyectoReportesAvanzados y seleccione Agregar Librera
(Add Library).

Seleccione JasperReport 3.5 y haga clic en Agregar Librera (Add Library).

Ing. Javier Alberto Manrique Quionez

330

Java - Enfoque Prctico

Verifique que en el Explorador del Proyecto se han agregado las libreras de JasperReport3.5 y ya no
aparece error en la clase ClaseReporteSinParametro.java.

Haga clic derecho en el Paquete PaqueteReportesAvanzados y seleccione Nuevo (New) y Reporte


Vacio (Empty Report).

Ing. Javier Alberto Manrique Quionez

331

Java - Enfoque Prctico

En Nuevo Reporte Vaco (New Empty Report) configure el reporte y localizacin, como se presenta en
el siguiente grfico. Luego haga clic en Finalizar (Finish).

Verifique en el Explorador de Proyectos (Projects) que el reporte ReporteAvanzado ha sido creado.

Ing. Javier Alberto Manrique Quionez

332

Java - Enfoque Prctico

Haga clic en el objeto

para crear una consulta SQL de base de datos

Haga clic en el botn Query Designer.

Ing. Javier Alberto Manrique Quionez

333

Java - Enfoque Prctico

Haga doble clic en la tabla graduado y seleccione los campos de la consulta. Finalmente haga clic en
OK.

Haga clic en el botn Leer Campos (Read Fields) y finalmente haga clic en ok.

Ing. Javier Alberto Manrique Quionez

334

Java - Enfoque Prctico

Verifique que el Inspector de Reportes (Report Inspector) presenta los campos seleccionados en el
proceso anterior.

En la Paleta (Palette) de Elementos de Reportes (Report Elements) seleccione Frame (


).

Ing. Javier Alberto Manrique Quionez

335

Java - Enfoque Prctico

Arrastre el Elemento de Reporte Frame (

) al rea de diseo del reporte.

Haga clic derecho en el Frame y seleccione Relleno y Borde (Padding And Border).

Ing. Javier Alberto Manrique Quionez

336

Java - Enfoque Prctico

Configure el borde y relleno como se presenta en el siguiente grfico.

Configure el reporte como se presenta en el siguiente grfico. Arrastre y suelte los campos de la
ventana del Inspector dentro del Frame (
) que se encuentra en detalles (detail) del rea de
diseo del reporte.

Ing. Javier Alberto Manrique Quionez

337

Java - Enfoque Prctico

Reacomode los campos seleccionados que se encuentra en detalles (detail) del rea de diseo del
reporte.

Arrastre el elemento de reporte Imagen (


) al Frame del rea de diseo del reporte. A la
aparicin del cuadro de dilogo Seleccionar archivo de imagen (Select image file), haga clic en el
botn Cancelar para no seleccionar ninguna imagen.

Ing. Javier Alberto Manrique Quionez

338

Java - Enfoque Prctico

En propiedades haga clic en el botn

de la propiedad Expresin de Imagen (Image Expression).

En Expresin de Imagen (Image Expression) agregue la siguiente expresin.

Ing. Javier Alberto Manrique Quionez

339

Java - Enfoque Prctico

Si Ud. ha copiado el proyecto en otra carpeta diferente a la indicada, tiene que colocar la ruta especfica
en expresin de imagen
Arrastre el Elemento de Reporte Barcode (

) al Frame del rea de diseo del reporte.

Seleccione Code39 y haga clic en el botn Use Barcode4J.

Verifique que el Frame del re de diseo de reporte se presenta como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

340

Java - Enfoque Prctico

Verifique que el Frame se presenta como en el siguiente grfico y en propiedades de Code39 haga clic
en el botn

de la propiedad Code Expression.

En Code39 (Component, Barcode4J) - Expresin de Cdigo, agregue la siguiente expresin.

Ing. Javier Alberto Manrique Quionez

341

Java - Enfoque Prctico

Haga clic en la pestaa Vista Previa (Preview) para realizar una vista previa del reporte.

En el Inspector de Reportes haga clic derecho en Styles.

Ing. Javier Alberto Manrique Quionez

342

Java - Enfoque Prctico

Renombre el estilo seleccionado.

En Propiedades del estilo StyleConBandasMulticolor cambie la propiedad Forecolor ([0,0,0])y


Backcolor ([153,153,153]).

Ing. Javier Alberto Manrique Quionez

343

Java - Enfoque Prctico

Haga clic derecho en StyleConBandasMulticolor del Inspector de Reportes y seleccione Agregar Estilo
Condicional (Add Conditional Style).

Verifique que el Inspector de Reportes se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

344

Java - Enfoque Prctico

En propiedades de <No condition set > haga clic en la propiedad Condition Expression.

En el Editor de Expresiones (Expression editor) agregue la siguiente expresin.

Ing. Javier Alberto Manrique Quionez

345

Java - Enfoque Prctico

Cambie la propiedad Forecolor ([0,0,0]) y Backcolor ([204,255,204]) del Condition Expression.

Verifique que el Inspector de Reportes se presente como en el siguiente grfico.

Ing. Javier Alberto Manrique Quionez

346

Java - Enfoque Prctico

Haga clic en el Frame del Diseador de Reportes y modifique las propiedades como se presenta en el
siguiente grfico.

Agregue la fecha, ttulo, paginacin y cabecera del reporte, luego haga una vista previa.

Ing. Javier Alberto Manrique Quionez

347

Java - Enfoque Prctico

Modifique la clase ClaseReporteSinParametro. Agregue a la variable master el String:


C:/NetBeansProjects/ProyectoSistemaDeMenuConReporte/src/PaqueteSistemaDeMenuReporte/Reporte
Avanzado.jasper"

Cuelgue el reporte en el sistema de men.

Ing. Javier Alberto Manrique Quionez

348

Java - Enfoque Prctico

Ing. Javier Alberto Manrique Quionez

349

Java - Enfoque Prctico

PROGRAMACIN CON BASE DE DATOS CONCURRENTE


Instalacin de mysql tools
Para la instalacin 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.exe se
encuentre grabado. Luego haga doble clic en el ejecutable mysql-tools.exe para empezar la instalacin.

En el cuadro de dilogo de Bienvenida de Asistente de Configuracin (Setup Wizard) haga clic en el


botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

350

Java - Enfoque Prctico

En cuadro de dilogo de Acuerdos de Licencia (License Agreement) seleccione Acepto los trminos y
acuerdos de licencia (I accept terms in the license agreement) yluego haga clic en botn de comando
Siguiente (Next).

En el cuadro de dilogo de Carpeta Destino (Destination Folder) haga clic en botn de comando
Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

351

Java - Enfoque Prctico

En el cuadro de dilogo de Tipo de Configuracin (Setup Type) del Asistente de Configuracin (Setup
Wizard) seleccione Completo (Complete) y luego haga clic en botn de comando Siguiente (Next).

En el cuadro de dilogo de Listo para Instalar el Programa (Ready to Install the Program) del Asistente
de Configuracin (Setup Wizard) seleccione Completo (Complete) y luego haga clic en botn de
comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

352

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin (Setup Wizard) verifique el progreso de la


instalacin.

En el cuadro de dilogo MySQL Enterprise haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

353

Java - Enfoque Prctico

En el cuadro de dilogo MySQL Enterprise haga clic en el botn de comando Siguiente (Next).

En el cuadro de dilogo Asistente Completado (Wizard Completed) del Asistente de Configuracin


(Setup Wizard) haga clic en el botn de comando Finalizar (Finish).

Ing. Javier Alberto Manrique Quionez

354

Java - Enfoque Prctico

Configuracin 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.1. / MySQL Server
Instance Config Wizard.

En el cuadro de dilogo de Bienvenida del Asistente de Configuracin de una Instancia de MySQL Server
(MySQL Server Instance Configuration Wizard) haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

355

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) seleccione Reconfiguracin de Instancia (Reconfigure Instance) y
luego haga clic en el botn de comando Siguiente (Next).

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL Server
Instance Configuration Wizard) seleccione Configuracin detallada (Detailed Configuration) y luego
haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

356

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL Server
Instance Configuration Wizard) seleccione Maquina de Desarrollo (Developer Machine) y luego haga clic
en el botn de comando Siguiente (Next).

En el cuadro de dilogo del Asistente de Configuracin 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 botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

357

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) haga clic en el botn de comando Next (Siguiente).

En el cuadro de dilogo del Asistente de Configuracin de Instancia de una MySQL Server (MySQL
Server Instance Configuration Wizard) seleccione Procesamiento de Transacciones en Lnea OLTP
(Online Transacction Processing) y luego haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

358

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL Server
Instance Configuration Wizard) active la casilla de verificacin Permitir Trabajo en Red con TCP/IP
(Enabled CP/IP Networking) y asigne como Nmero de Puerto (Port Number) el valor 3306. Tambin
active la casilla de verificacin Agregar Corta Fuegos excepcionalmente por este puerto (Add firewall
exception for this port). Luego active la casilla de verificacin Activar Modo Estricto (Enable Strict
Mode). Finalmente haga clic en el botn de comando Siguiente (Next).

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL Server
Instance Configuration Wizard) seleccione Conjunto de Caracteres Estndar (Estndar Character Set) y
luego haga clic en el botn de comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

359

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin 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 verificacin Levantar el MySQL Server Automticamente (Launch the
MySQL Server Automatically). Tambin active la casilla de verificacin Inclusin del Directorio de
Binarios en la Ruta de Windows (Include Bin Directory in Windows Path). Finalmente haga clic en el
botn de comando Siguiente (Next).

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL Server
Instance Configuration Wizard) active la casilla de verificacin Modificar Configuracin de Seguridad
(Modify Security Setting). En Nuevo palabra clave de raz (New root password) ingrese 12345 y luego
retipee palabra clave de raz para confirmar (Confirm) 12345. Finalmente hacer clic en el botn de
comando Siguiente (Next).

Ing. Javier Alberto Manrique Quionez

360

Java - Enfoque Prctico

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL Server
Instance Configuration Wizard) verifique que el proceso de instalacin de la instancia ha empezado.

En el cuadro de dilogo del Asistente de Configuracin de una Instancia de MySQL Server (MySQL
Server Instance Configuration Wizard) verifique que el proceso de instalacin de la instancia ha
terminado exitosamente.

Ing. Javier Alberto Manrique Quionez

361

Java - Enfoque Prctico

Configuracin de la Red Windows.


Para configurar la Red Windows realice lo siguiente:
En el men de inicio del Windows seleccione Panel de Control.

En Panel de Control seleccione Conexiones de red.

Ing. Javier Alberto Manrique Quionez

362

Java - Enfoque Prctico

En conexiones de red haga clic en Conexin de rea local

En Conexin de rea local haga clic derecho.

Ing. Javier Alberto Manrique Quionez

363

Java - Enfoque Prctico

Haga doble clic en Protocolo Internet (TCP/IP).

En propiedades de Protocolo Internet (TCP/IP) seleccione el botn de radio Usar la siguiente direccin
IP e ingrese los datos de la Direccin IP 192.168..1.5, Mscara de subred 255.255.255.0 y en puerta de
enlace predeterminada 192.168.1.1. Para conectarse a Internet seleccione los valores de servidor DNS
200.48.225.130 y 200.48.225.146. Luego haga clic en aceptar.

Ing. Javier Alberto Manrique Quionez

364

Java - Enfoque Prctico

En Tareas de red de Conexiones de red haga doble clic en Configurar una red domstica o para pequea
oficina.

En el Asistente para configuracin de red haga clic en Siguiente.

Ing. Javier Alberto Manrique Quionez

365

Java - Enfoque Prctico

En el Asistente para configuracin de red verifique la Lista de comprobacin para crear una red y luego
haga clic en Siguiente.

En Seleccione un mtodo de conexin del Asistente para configuracin de red seleccione Este equipo
se conecta a Internet a travs de una puerta de enlace residencial o de otro equipo de mi red. Luego
haga clic en siguiente.

Ing. Javier Alberto Manrique Quionez

366

Java - Enfoque Prctico

En D a este equipo una descripcin y nombre del Asistente para configuracin de red ingrese la
descripcin del equipo y el nombre del equipo. Luego haga clic en Siguiente.

En D nombre a su red del Asistente para configuracin de red ingrese el Nombre del grupo de trabajo.
En nuestro caso escribimos INICIO. Luego haga clic en siguiente.

Ing. Javier Alberto Manrique Quionez

367

Java - Enfoque Prctico

En Compartir archivos e impresoras del Asistente para configuracin de red seleccione Activar el uso
compartido de archivo e impresoras. Luego haga clic en siguiente

En Listo para aplicar la configuracin de red del Asistente para configuracin de red verifique la
configuracin realizada. Luego haga clic en siguiente

Ing. Javier Alberto Manrique Quionez

368

Java - Enfoque Prctico

En el Asistente para configuracin de red verifique que la red se est configurando.

En el Asistente para configuracin de red seleccione Finalizar el asistente.

Ing. Javier Alberto Manrique Quionez

369

Java - Enfoque Prctico

En Finalizacin del Asistente para configuracin de red del Asistente para configuracin de red haga clic
en Finalizar.

Para cambiar la configuracin del Sistema Windows reinicie el equipo.

Cuando se reinicie la Pc utilice el Explorer para verificar la Red creada.

Ing. Javier Alberto Manrique Quionez

370

Java - Enfoque Prctico

Configuracin del Servidor de MySql para trabajar con base de datos en


forma concurrente.
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.

En el MySQL Administrator 1.2.12 agregue el IP del Servidor Host (Server Host). En este caso es
192.168.1.5. Luego escriba el nombre del usuario (Username) y su clave de acceso (Password).
Finalmente haga clic en siguiente.

Ing. Javier Alberto Manrique Quionez

371

Java - Enfoque Prctico

En el MySQL Administrator 1.2.12 verifique que el Servidor MySQL est corriendo.

En el MySQL Administrator 1.2.12 haga clic en Administracin de Usuarios (User Administration).

Ing. Javier Alberto Manrique Quionez

372

Java - Enfoque Prctico

En cuentas de usuarios haga clic derecho y seleccione Agregar nuevo usuario (Add new user).

Haga clic en la pestaa Informacin de Usuarios (User Information) y agregue los datos del Nuevo
usuario (New User).

Ing. Javier Alberto Manrique Quionez

373

Java - Enfoque Prctico

Haga clic en la pestaa Esquema de Privilegios (Schema Privileges) y seleccione la base de datos
dbContacto.

Asigne los privilegios al Usuario Invitado sobre la tabla dbContacto.

Ing. Javier Alberto Manrique Quionez

374

Java - Enfoque Prctico

Haga clic en la pestaa Recursos (Resources) y modifique los ecursos asignados del usuario Invitado
sobre la base de datos dbContacto.

Ing. Javier Alberto Manrique Quionez

375

Java - Enfoque Prctico

Configuracin 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 seleccin Corta fuego (Firewall).

En Corta fuegos de Windows haga clic en la pestaa excepciones (Excepciones) y luego haga clic en
Agregar Puerto.

Ing. Javier Alberto Manrique Quionez

376

Java - Enfoque Prctico

Agregue un puerto con el nombre de MySQL con el nmero de puerto 3306.

Verifique la creacin del puerto y luego haga clic en Aceptar.

Ing. Javier Alberto Manrique Quionez

377

Java - Enfoque Prctico

PackJacket
Es una interfaz grfica para el proyecto LzPack. Est construido con Java Swing y permite crear instaladores
para sus aplicaciones. Los instaladores creados por este programa son multi-plataforma y multi-idioma.
Tiene las siguientes caractersticas:
Confirmado para trabajar en Windows 7, Windows Vista y Ubuntu
Guardar configuraciones
Crear XML, JAR, instaladores EXE
Licenciado bajo la GPL

INSTALACIN DEL PackJacket


Para la instalacin de Java PackJacket 4.2 debe de realizar lo siguiente:
Ubique el archivo PackJacket_0.4.2_Setup del Cd proporcionado y luego haga doble clic en el mismo
para empezar la instalacin.

Haga clic en botn de comando Ejecutar.

Verifique la extraccin del programa.

Ing. Javier Alberto Manrique Quionez

378

Java - Enfoque Prctico

Seleccione el lenguaje.

Haga clic en siguiente para empezar la instalacin.

Seleccione la ruta para la instalacin del programa PackJacket.

Ing. Javier Alberto Manrique Quionez

379

Java - Enfoque Prctico

Haga clic en Aceptar.

Verifique que se ha iniciado la instalacin del programa PackJacket.

Verifique que la instalacin del programa PackJacket sigue en marcha. Luego haga clic en Siguiente.

Ing. Javier Alberto Manrique Quionez

380

Java - Enfoque Prctico

Verifique que se ha est instalando la conexin con procesos externos del programa PackJacket. Luego
haga clic en Siguiente.

Configure los atajos (Shortcuts) y luego haga clic en siguiente.

Ing. Javier Alberto Manrique Quionez

381

Java - Enfoque Prctico

Verifique que se ha finalizado la instalacin del programa PackJacket. Luego haga clic en Siguiente.

Verifique que en Inicio de Programas se encuentre el programa PackJacket..

Ing. Javier Alberto Manrique Quionez

382