You are on page 1of 116

EMILIANO ZAPATA, MORELOS, MAYO DE 2012

UNIVERSIDAD TECNOLÓGICA
EMILIANO ZAPATA DEL ESTADO DE MORELOS
DIVISIÓN ACADÉMICA DE TECNOLOGÍAS DE LA INFORMACIÓN
Y COMUNICACIÓN
“DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE
INVENTARIOS”
T E S I N A
QUE PARA OBTENER EL GRADO DE:
INGENIERO EN TECNOLOGÍAS DE LA
INFORMACIÓN
PRESENTA:
JESÚS ADRIEL LAZALDE MARTÍNEZ
ASESOR:
L.I. LILIA SÁNCHEZ BILLARES




Página
Contenido
ÍNDICE DE FIGURAS .............................................................................................. I
AGRADECIMIENTOS ............................................................................................. II
RESUMEN ............................................................................................................. III
SUMMARY ............................................................................................................. IV
CAPÍTULO 1 ........................................................................................................... 1
DESCRIPCIÓN DEL PROYECTO .......................................................................... 1
1.2 Planteamiento de la hipótesis ............................................................................ 2
1.3 Objetivos ........................................................................................................... 2
1.3.1 General. .......................................................................................................... 2
1.3.2 Específicos. .................................................................................................... 2
1.4 Justificación ....................................................................................................... 3
1.5 Alcances y limitaciones ..................................................................................... 3
1.5.1 Alcances ......................................................................................................... 3
1.5.2 Limitaciones ................................................................................................... 4
1.6.1 Nombre ........................................................................................................... 5
1.6.2 Logotipo .......................................................................................................... 5
1.6.3 Dirección ........................................................................................................ 5
1.6.4 Giro................................................................................................................. 6
1.6.5 Tamaño .......................................................................................................... 6
1.6.6 Asesor Institucional ........................................................................................ 6
2.1 Revisión Bibliográfica ........................................................................................ 7
2.1 ¿Qué es la tecnología Java? ............................................................................. 7
2.2 Componentes de Java....................................................................................... 7
2.2.1 Java Virtual Machine ...................................................................................... 7
2.2.2 API (Interfaz de Programación Java) ............................................................. 8
2.2.3 Applet ............................................................................................................. 8
2.3 ¿Qué es el JDK (Java Development Kit)? ......................................................... 8
2.4 Plataforma Java 2 Edición Estándar (J2SE) ...................................................... 8
2.5 Conceptos Java ................................................................................................. 9
2.6 Java Swing ...................................................................................................... 13
CONTENIDO




2.6.1 JFrame ......................................................................................................... 14
2.6.2 JPanel .......................................................................................................... 14
3.6.3 JButton ......................................................................................................... 14
2.6.4 JLabel ........................................................................................................... 15
2.6.5 JComboBox ................................................................................................. 15
2.6.6 JTextField ..................................................................................................... 15
2.6.7 JPasswordField ............................................................................................ 15
2.6.8 JTextArea ..................................................................................................... 16
2.6.9 JTable ........................................................................................................... 16
2.7 Eventos ........................................................................................................... 16
2.7.1 ActionListener ............................................................................................... 17
2.7.2 ItemListener .................................................................................................. 17
2.8 Conexión Base de Datos ................................................................................. 17
2.8.1 Base de Datos (BD)...................................................................................... 17
2.8.1.1 Conceptos BD ........................................................................................... 18
2.8.2 Manejador de Base de Datos ....................................................................... 20
2.8.3 MySQL Workbench 5.2 CE .......................................................................... 20
2.8.4 Driver de Conexión ....................................................................................... 21
2.8.4.1 JDBC (Java Database Connectivity) ......................................................... 21
2.8.5.1 Normas y Estándares ................................................................................ 21
2.9 Teoría de Administración de Proyectos ........................................................... 22
2.10 Perspectiva Teórica ....................................................................................... 23
3.1 Procesos de Administración del proyecto........................................................ 25
3.1.1 Iniciación del proyecto .................................................................................. 25
3.1.2 Planeación del proyecto ............................................................................... 26
3.1.3 Control del proyecto ..................................................................................... 27
3.2 Ejecución del proyecto .................................................................................... 27
3.3.1 Desarrollo ..................................................................................................... 27
3.3.1 Netbeans ...................................................................................................... 27
3.3.1.1 Entorno Netbeans ..................................................................................... 28
3.3.2 Patrón de Diseño MVC (Modelo Vista Controlador) ..................................... 28
3.3.2.1 Vista .......................................................................................................... 29
3.3.2.2 Ventana Login ........................................................................................... 30
3.3.2.3 Ventana Menú Principal ............................................................................ 30



3.3.2.4 Ventana Control de Productos .................................................................. 50
3.3.2.5 Controlador ................................................................................................ 52
3.3.2.5.1 Ventana Login ........................................................................................ 52
3.3.2.5.2 Ventana Menú Principal y Control de Productos .................................... 54
3.2.3.2.6 Modelo .................................................................................................... 64
3.3.2.6.1 Modelo – Ventana Control de Productos ................................................ 64
3.3.2.6.2 Modelo – Ventana Menú Principal .......................................................... 65
3.3.2.6.3 Modelo – Ventana Menú Principal – Clase Conexión ............................ 72
3.3.2.6.4 Modelo – Ventana Menú Principal - Creación de Reportes .................... 74
3.4 Entrega ............................................................................................................ 80
4.1 Comprobación de hipótesis ............................................................................. 81
4.2 Cumplimiento de objetivos .............................................................................. 81
4.3 Resultados del proyecto .................................................................................. 81
4.4 Contribuciones ................................................................................................ 82
Anexo I - Project Charter ....................................................................................... 85
Anexo II-Matriz de Interesados .............................................................................. 89
Anexo III-Documento Oficial de Requerimientos ................................................... 92
Anexo IV-Enunciado del alcance del Proyecto. ..................................................... 96
Anexo V-WBS ....................................................................................................... 98
Anexo VI-Diccionario de la WBS ........................................................................... 99
Anexo VII-Plan de Administración del Proyecto .................................................. 103
Anexo VIII- Cronograma de Actividades ............................................................. 104
Anexo X-Reporte de Actividades ......................................................................... 105
Anexo IX- Acta Oficial de Cierre de Proyecto ...................................................... 106


I



Página
Figura 3.2.3.1.1 Interfaz NetBeans 28
Figura 3.2.3.2 MVC 29
Figura 3.2.3.2.2 Ventana Login 30
Figura 3.3.3.2.3 Menú Principal Pestaña Entradas 31
Figura 3.2.3.2.3 Error Valor no válido 32
Figura 3.2.3.2.4 JTextFields 32
Figura 3.2.3.2.5 Error Nuevo 32
Figura 3.2.3.2.6 Rupturas 33
Figura 3.2.3.2.7 Error Existencias 34
Figura 3.2.3.2.8 Error Existencias 35
Figura 3.2.3.2.9 Error Falta un dato 35
Figura 3.2.3.2.10 Consultas - Entradas 36
Figura 3.2.3.2.11 Consultas - Salidas 37
Figura 3.2.3.2.12 Consultas - Rupturas 37
Figura 3.2.3.2.13 Eliminar Registros 39
Figura 3.2.3.2.14 Reporte Existencias 40
Figura 3.2.3.2.14 Reporte Entradas 41
Figura 3.2.3.2.15 Generar Reporte Movimientos 41
Figura 3.2.3.2.16 Reporte Movimientos 42
Figura 3.2.3.2.17 Generar Reporte Piezas por categoría 42
Figura 3.2.3.2.18 Generar Reporte 43
Figura 3.2.3.2.19 Reporte Rupturas

43
Figura 3.2.3.2.20 Generar Reporte Lista de Productos 43
Figura 3.2.3.2.21 Generar Reporte Lista de Precios 44
Figura 3.2.3.2.22 Reporte Lista de Precios 44
ÍNDICE DE FIGURAS


II

Figura 3.2.3.2.23 Generar Reporte diario Salidas 44
Figura 3.2.3.2.24 Reporte diario Salidas 45
Figura 3.2.3.2.25 Generar Reporte Lista de Productos 45
Figura 3.2.3.2.26 Generar Reporte Lista de Precios 45
Figura 3.2.3.2.27 Reporte Lista de Precios 46
Figura 3.2.3.2.28 Reporte diario 46
Figura 3.2.3.2.29 Ejemplo Reporte diario 47
Figura 3.2.3.2.30 Generar Reporte Ventas por Cliente 47
Figura 3.2.3.2.31 Generar Reporte Ventas por Cliente 48
Figura 3.2.3.2.32 Generar Reporte Ventas por Cliente 48
Figura 3.2.3.2.33 Generar Reporte 48
Figura 3.2.3.2.34 Generar Reporte Ventas por Cliente 48
Figura 3.2.3.2.35 Pestaña Reportes 49
Figura 3.2.3.2.36 Guardar Como 49
Figura 3.2.3.2.37 Imprimir 50
Figura 3.2.3.2.4.1 Ventana Control de Productos 50
Figura 3.2.3.2.4.2 Error código no encontrado 52
Figura 3.2.3.2.4.2 Introduzca el código 52
Figura 3.2.3.2.5.1 GetValores 53
Figura 3.2.3.2.5.2.1 import 54
Figura 3.2.3.2.5.2.2 Método Obtener 54
Figura 3.2.3.2.5.2.3 Válida carácter 55
Figura 3.2.3.2.5.2.4 ActionPerformed 55
Figura 3.2.3.2.5.2.5 Botón Nuevo 56
3.2.3.2.5.2.6 Botón Guardar – Método Clase Modelo 57
3.2.3.2.5.2.7 Método ObtenerDatosEntradas 57
3.2.3.2.5.2.8 Botón Guardar – Compara Existencias vs Salidas

58
3.2.3.2.5.2.9 Botón Guardar – Compara Existencias vs Salidas II

58

III

Figura 3.2.3.2.5.2.10 Botón Guardar – Comparaciones 59
Figura 3.2.3.2.5.2.11 Botón Guardar – Error 59
Figura 3.2.3.2.5.2.12 Botón Limpiar 59
Figura 3.2.3.2.5.2.13 Error – Código no encontrado 60
Figura 3.2.3.2.5.2.14 Botón – Buscar Producto 60
Figura 3.2.3.2.5.2.15 Botón – Eliminar Producto 61
Figura 3.2.3.2.5.2.16 Botón – Eliminar Registro 61
Figura 3.2.3.2.5.2.17 ItemStateChanged 62
Figura 3.2.3.2.5.2.18 ItemStateChanged - Combo 62
Figura 3.2.3.2.5.2.19 StateChanged 62
Figura 3.2.3.2.5.2.20 StateChanged métodos 63
Figura 3.2.3.2.6.1 Método Buscar 64
Figura 3.2.3.2.6.2 Método Modificar 64
Figura 3.2.3.2.6.3 Método Eliminar 65
Figura 3.2.3.2.6.2.1 Método Fecha 65
Figura 3.2.3.2.6.2.2 Método Llenar Combos 66
Figura 3.2.3.2.6.2.3 Método Limpiar 66
Figura 3.2.3.2.6.2.4 Método Llenar tablas 67
Figura 3.2.3.2.6.2.5 Cargar Reportes 68
Figura 3.2.3.2.6.2.6 Parámetro Map 68
Figura 3.2.3.2.6.2.7 Master 68
Figura 3.2.3.2.6.2.8 Método Consulta 70
Figura 3.2.3.2.6.2.9 Método Modificar 71
Figura 3.2.3.2.6.2.10 Método Eliminar 72
Figura 3.2.3.2.6.3.1 Clase Conexión 73
Figura 3.2.3.2.6.4.1 iReport-4.5.1 74
Figura 3.2.3.2.6.4.2 Plugins 75
Figura 3.2.3.2.6.4.3 JasperReport en Netbeans 75

IV

Figura 3.2.3.2.6.4.4 Librerías JasperReport 76
Figura 3.2.3.2.6.4.4 Herramienta JasperReport 77
Figura 3.2.3.2.6.4.5 Query 77
Figura 3.2.3.2.6.4.6 Agrupar 78
Figura 3.2.3.2.6.4.7 Editar reporte 78
Figura 3.2.3.2.6.4.8 Parámetro 78
Figura 3.2.3.2.6.4.9 Agregar Parámetro 79



II



Agradezco a:

Primeramente quiero expresar mi agradecimiento hacia Dios, Él ha sido y seguirá
siendo la columna vertebral de todo lo que soy, de todo lo que he logrado
alcanzar, es por su misericordia y su amor que tengo lo que hoy poseo. Gracias a
Dios por darme la vida durante todos estos años que he dedicado al estudio,
porque no solo me dio eso sino que también puso en mi camino todos los medios
necesarios para alcanzar mis sueños. Le doy gracias también a Dios por mi familia
que ha sido fundamental en mi vida, mi madre, la mejor mujer del mundo siempre
despertando en mi el deseo de continuar, las ganas de ser mejor, de llegar más
lejos, mi padre siempre instruyendo con palabras de amor dando dirección a mi
vida, enseñándome a aprender de mis errores, a superar las adversidades,
gracias también porque Dios me concedió tener a mis hermanos que con sus
palabras de apoyo, con una sonrisa, un gesto, un acto o cualquier otra cosa han
cambiado el rumbo de mi vida en los momentos más complicados, me enseñaron
a divertirme cuando las cosas se ponen tensas, me enseñaron a aprender, a vivir,
gracias a Dios por mi familia, sin ellos no hubiese logrado nada. Le doy gracias a
Dios por todos mis amigos que compartieron tiempo conmigo, con quienes me
divertí y le tome el gusto al estudio. Gracias a Dios por todos aquellos maestros
que con profesionalidad imparten sus clases, que se toman el tiempo para dar
más de lo que les corresponde. ¡Gracias a todos!
AGRADECIMIENTOS


III




Este reporte expone la metodología empleada para solucionar los problemas de
administración de la información de la empresa Arteceramic’s específicamente de
su inventario. Algunas de las causas de la mala administración de la información,
se relacionan directamente con los malos hábitos de archivado, provocando una
gran acumulación de datos innecesarios. A través de la investigación se concluyó
que la mejor forma de solucionar este problema era empleando tecnologías de la
información, con la aplicación de un sistema para administrar toda la información
generada a diario en el proceso de almacenaje y que dicho software a través de
medios informáticos aplicará filtros a toda la información, de modo que el dueño de
dicho negocio reciba los datos ya digeridos, de forma ordenada y clara para así
tomar decisiones correctas sobre el rumbo de su negocio.
El presente documento muestra el camino desde el análisis, la planeación del
proyecto “DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS”
hasta la implementación del mismo. La tecnología con la que se construye la
herramienta de control de la información, etc.
Este reporte provee un ejemplo claro de la aplicación de las tecnologías de la
información para solucionar problemas reales de las empresas actuales.











RESUMEN


IV



This report describes the methodology used to solve the problems of information
management of the companies, specifically of Arteceramic’s’ inventory. Some
causes of the poor information management, are directly related to the bad habits
of archiving, causing a large accumulation of unnecessary data. Through the
investigation, concluded that the best way to resolve this problem is using an
information technology system, the implementation of an application to manage all
the information generated daily in the storage process of information, and that the
software apply filters to all information through computer technologies, so that the
owner of the business receives the data already digested, in a clear and orderly
way in order to take good decisions about the management of his business.

This document explains the methodology starting from the analysis, project
planning to the implementation of the project "DESIGN, IMPLEMENTATION OF
AN INVENTORY SYSTEM" besides shows the technology used to built a control
tool to management information.
This report also provides a clear example of the application of the information
technologies to solve a real problem of the today's businesses
SUMMARY



Jesús Adriel Lazalde Martínez |
1





1.1 Planteamiento del Problema

La empresa Arteceramic’s se dedica a la elaboración de arte en cerámica empleando
para ello un proceso de producción que tiene como resultado un gran número de
piezas de cerámica y de otros materiales.

Para lograr la fabricación de las piezas es necesario incluir en dicho proceso ciertas
materias primas: recursos humanos y recursos materiales. El problema de la
empresa Arteceramic’s es que a diario entran y salen productos de su almacén sin
ser registrados en tiempo real. Además la empresa Arteceramic’s considera de
mucha importancia comparar si la materia prima utilizada a diario da como resultado
la cantidad de piezas terminadas que se esperaba con la finalidad de tener la
información necesaria para tomar medias sobre su funcionamiento. Así mismo para
Arteceramic’s es muy valioso saber cuántas piezas no se produjeron exitosamente.
Las actividades mencionadas anteriormente son realizadas a mano sobre una serie
de formatos establecidos por Arteceramic´s, esto, además de ser un trabajo que no
es tomado en serio por los trabajadores, les absorbe mucho tiempo. Asimismo estas
listas son modificadas según la conveniencia de los empleados de dicho negocio.







Véase el Anexo I - Project Charter.

CAPÍTULO 1
DESCRIPCIÓN DEL PROYECTO



Jesús Adriel Lazalde Martínez |
2

1.2 Planteamiento de la hipótesis

¿Son las tecnologías de la información la herramienta ideal para la correcta
administración de los datos que son producidos en las empresas, proveyendo de
todo el conjunto de datos la información necesaria para que los administradores
tomen las decisiones correctas sobre el rumbo de sus negocios, otorgándoles una
herramienta de real utilidad que les permita incrementar la productividad de sus
empresas?

1.3 Objetivos
1.3.1 General.
El objetivo general del presente proyecto consiste en proveer al Director General de
Arteceramic’s una herramienta basada en las tecnologías de la información (Sistema
de control de información) que le permita conocer en tiempo real la cantidad de
piezas que han sido producidas exitosamente, las que no se han logrado fabricar
correctamente, las piezas que ha salido del almacén a través de una venta, quién es
el responsable de tal movimiento financiero, qué piezas tardan más en salir, cuáles
son las más vendidas, qué empleado es el que está involucrado en más ocasiones
de rupturas o mermas dentro del área de producción, cual es el valor monetario de la
existencia en inventario, entre otros datos más.

1.3.2 Específicos.


 Proveer una herramienta basada en las tecnologías de la información que
permita registrar los datos generados en cada movimiento del inventario
(Entradas, Salidas, Rupturas o Mermas, Clientes, Empleados, etc.).
 Crear una aplicación que administre los datos registrados en los movimientos
del Inventario.
 Proporcionar al Director General de Arteceramic’s reportes de la información
sobre los recursos, el material, fechas, costos, clientes, ventas por mes, por

Jesús Adriel Lazalde Martínez |
3

día, por año, empleando filtros para lograr agrupar los datos de manera que
los mismo sean de gran utilidad para tomar decisiones acertadas.
 Lograr que el proceso de producción de piezas de cerámica sea eficiente
proveyendo al dueño del negocio los datos necesarios para hacer las
modificaciones pertinentes a su negocio, a través de una herramienta que
pueda ser instalada en computadoras de bajos recursos.

1.4 Justificación


Debido a la importancia y al impacto que tiene la información dentro de una
organización como base sólida para la correcta toma de decisiones es de gran
trascendencia que se administre apropiadamente. Arteceramic’s genera a diario un
gran banco de datos del área de producción sin embargo el conjunto de todos estos
se convierten en un problema. La implementación del presente proyecto proveerá
una herramienta flexible de fácil uso que permita explotar todos esos datos,
recibiendo los mismos a través de interfaces sencillas y dándoles un tratamiento de
tal manera que el Director General obtenga únicamente la información que él desea,
ésta, habiendo ya pasado por diversos filtros. Por otro lado este proyecto permitirá al
estudiante poner en práctica y reforzar los conocimientos y habilidades adquiridas en
el ámbito de la programación (lenguaje JAVA).


1.5 Alcances y limitaciones


1.5.1 Alcances


El proyecto consiste en la creación de una aplicación basada en la tecnología JAVA
(o sobre algún otro lenguaje de programación abierto), que permita controlar la
información generada en el proceso de almacenaje y de salidas de inventario,
etcétera, considerando estrictamente incluir dentro de la misma:

Jesús Adriel Lazalde Martínez |
4


 Control de Productos (Altas, Bajas y Modificaciones de los productos que se
fabrican dentro de dicho taller).
 Control de Entradas (incluir una pantalla de administración de las entradas
donde se encuentre la siguiente información; Código de entrada, Nombre del
producto, categoría, fecha de elaboración, nombre de quién empaquetó,
Piezas por caja, número de cajas, piezas sueltas, status, precio por pieza,
observaciones).
 Control de Salidas(incluir un formulario con los siguientes datos; Código del
salida, nombre del producto, fecha de salida, nombre de quién empaquetó,
Piezas por caja, número de cajas, piezas sueltas usadas, precio por pieza,
precio total, status, nombre del cliente, observaciones).
 Control de Mermas o rupturas (Incluir código, nombre de la pieza, cantidad de
piezas rotas, responsable, precio por pieza, observaciones).
 Consultas (Mostrar todos los registros de las entradas, salidas, rupturas y de
los productos en tablas ordenados por códigos).
 Crear una sección para generar reportes diarios.

Además una vez elaboraba la aplicación se instalará en los ordenadores de
Arteceramic’s S.A. de C.V. Incluyendo las paqueterías necesarias para el correcto
funcionamiento.


1.5.2 Limitaciones


I. La aplicación Arteceramic’s – Inventario V.1.0 no provee un método de
encriptación de los datos.
II. El sistema de administración del inventario no cuenta con un método de
respaldo automático de los datos.
III. El software no presenta los datos en graficas.


Jesús Adriel Lazalde Martínez |
5

Para complementar la información de este apartado revise el Anexo IV-Enunciado
del alcance del Proyecto.

1.6 Datos generales de la empresa

1.6.1 Nombre

Arteceramic’s

1.6.2 Logotipo






1.6.3 Dirección

Primavera No. 44-A, colonia 3 de Mayo, Emiliano Zapata Morelos.
Teléfonos: (01777) 2574912
Nextel 2036082












Jesús Adriel Lazalde Martínez |
6

1.6.4 Giro

Industrial y Comercial

1.6.5 Tamaño

La empresa Arteceramic’s funge como microempresa compuesta por 10 empleados
base y 2 eventuales. En la actualidad el organigrama aquí mostrado no se aplica
sino que se tiene como un modelo a implementar en un futuro.

1.6.6 Asesor Institucional

L.A. José Talavera Tapia
Director General de Arteceramic’s

Jesús Adriel Lazalde Martínez |
7


2.1 Revisión Bibliográfica
2.1 ¿Qué es la tecnología Java?

Java es un lenguaje de programación y la primera plataforma informática creada por
Sun Microsystems en 1995. Es la tecnología subyacente que permite el uso de
programas punteros, como herramientas, juegos y aplicaciones de negocios. Java se
ejecuta en más de 850 millones de ordenadores personales de todo el mundo y en
miles de millones de dispositivos: móviles y aparatos de televisión. [
1
].

2.2 Componentes de Java

El Java se constituye de tres componentes:
 Lenguaje Java
 JVM o Java Virtual Machine
 La API de Java (Interfaz de Programación Java)

El lenguaje Java define fácil de aprender: la sintaxis y la semántica para el lenguaje
de programación Java. Cada programador debe entender estas sintaxis y la
semántica para escribir programas en lenguaje Java [
2
].

2.2.1 Java Virtual Machine

Se define como un conjunto de programas de software que permiten la ejecución de
instrucciones y que normalmente están escritos en código byte de Java. Las
máquinas virtuales de Java están disponibles para las plataformas de hardware y
software de uso más frecuente.

Java Virtual Machine (máquina virtual de Java) es únicamente un aspecto del
software de Java, específicamente utilizado para la interacción en la web. Java

1
http://www.java.com/es/download/faq/whatis_java.xml (Ultima visita 20 de Marzo de 2012)
2
S. Allamaraju, C. Beust, J. Davies, T. Jeweli, R. Johnson, A. Longshaw, R. Nagappa (2002), Programación Java
Server con J2EE. Edición 1.3. Anaya Multimedia, España: Pág. 30.
CAPÍTULO 2
MARCO TEÓRICO



Jesús Adriel Lazalde Martínez |
8

Virtual Machine se incluye en la descarga del software de Java y ayuda a ejecutar las
aplicaciones Java. [
3
].

2.2.2 API (Interfaz de Programación Java)

La API de Java es un conjunto de clases e interfaces que viene con el JDK (Java
Development Kit). La API de Java es en realidad una enorme colección de rutinas de
biblioteca que lleva a cabo tareas básicas de programación como un bucle,
mostrando la forma interfaz gráfica de usuario, etc.

En las clases de Java API y las interfaces se envasan en paquetes. Todas estas
clases están escritas en lenguaje de programación Java y se ejecuta en la JVM.
Clases de Java son independientes de la plataforma, pero JVM no es independiente
de la plataforma. Existen descargas diferentes para cada sistema operativo [
4
].

2.2.3 Applet

En general, un applet es un componente de software que realiza una función
específica en el entorno de otro programa, como, por ejemplo, un navegador web.
Los applets de Java proporcionan funciones interactivas en un navegador web
mediante la Máquina virtual de Java (JVM).

2.3 ¿Qué es el JDK (Java Development Kit)?

JDK es el acrónimo de Java Development Kit es esencialmente una plataforma Java,
que consiste en las clases de la API de Java, un compilador y el intérprete de Java
Virtual Machine. El JDK se utiliza para compilar aplicaciones y applets Java. La
versión más actual es el J2SE [
5
].
2.4 Plataforma Java 2 Edición Estándar (J2SE)


3
http://www.java.com/es/download/faq/helpful_concepts.xml (Ultima visita 20 de Marzo de 2012)
44
http://www.roseindia.net/java/javaapi/java-api.shtml (Ultima visita 20 de Marzo de 2012)
5
http://www.programmersheaven.com/2/FAQ-JAVA-What-Is-JDK (Ultima visita 20 de Marzo de 2012)

Jesús Adriel Lazalde Martínez |
9

La plataforma más utilizada dentro de Java, consiste en un entorno de tiempo de
ejecución y un conjunto de varios API (Interfaz de Programación de Aplicaciones)
para crear una amplia variedad de las aplicaciones que abarca desde las applets,
pasando por aplicaciones independientes ejecutables en distintas plataformas, hasta
aplicaciones de cliente para diversas aplicaciones de empresa[
6
].

2.5 Conceptos Java

I. Problema: Un problema es un determinado asunto o una cuestión que
requiere de una solución.

II. Solución: El término solución, del latín “solutĭo”, tiene dos grandes usos. Por
un lado, se trata de la acción y efecto de resolver una dificultad o una duda.
Por el otro, solución es la acción y efecto de disolver.

III. Métodos: Un método es un conjunto de instrucciones a las que se les da un
determinado nombre de tal manera que sea posible ejecutarlas en cualquier
momento sin tenerlas que rescribir sino usando sólo su nombre. A estas
instrucciones se les denomina cuerpo del método, y a su ejecución a través de
su nombre se le denomina llamada al método.

3.1 Para definir un método hay que indicar tanto cuáles son las instrucciones
que forman su cuerpo como cuál es el nombre que se le dará, cuál es el tipo
de objeto que puede devolver y cuáles son los parámetros que puede tomar.
Esto se indica definiéndolo así:

<tipoRetorno> <nombreMétodo>(<parámetros>)
{
<cuerpo> }


6
Op. Cit. Programación Java Server con J2EE. Edición 1.3. Pág. 41.

Jesús Adriel Lazalde Martínez |
10

En <tipoRetorno> se indica cuál es el tipo de dato del objeto que el método
devuelve, y si no devuelve ninguno se ha de escribir void en su lugar.
Como nombre del método se puede poner en <nombreMétodo> cualquier
identificador válido. Es posible incluir en <nombreMétodo> información de
explicitación de implementación de interfaz, pero por ahora podemos
considerar que siempre será un identificador.
Aunque es posible escribir métodos que no tomen parámetros, si un método
los toma se ha de indicar en <parámetros> cuál es el nombre y tipo de cada
uno, separándolos con comas si son más de uno y siguiendo la sintaxis que
más adelante se explica.
El <cuerpo> del método también es opcional, pero si el método retorna algún
tipo de objeto entonces ha de incluir al menos una instrucción return que
indique cuál objeto.
La sintaxis anteriormente vista no es la que se usa para definir métodos
abstractos. En esos casos lo que se hace es sustituir el cuerpo del método y
las llaves que lo encierran por un simple punto y coma (;) [
7
].

Llamada a un método
La forma en que se puede llamar a un método depende del tipo de método
del que se trate. Si es un método de objeto (método no estático) se ha de usar
la notación.
<objeto>.<nombreMétodo>(<valoresParámetros>)




IV. Parámetro: Valores especiales de los que depende el funcionamiento de
algunos métodos.
4.1 Parámetros de entrada: Un parámetro de entrada recibe una copia del
valor que almacenaría una variable del tipo del objeto que se le pase.

7
http://www.devjoker.com/contenidos/Tutorial-C/149/M%C3%A9todos.aspx (Ultima visita 20 de Marzo
de 2012)

Jesús Adriel Lazalde Martínez |
11

4.2 Parámetros de Salida: Un parámetro de salida se diferencia de uno de
entrada en que todo cambio que se le realice en el código del método al
que pertenece afectará al objeto que se le pase al llamar dicho método
tanto si éste es de un tipo por valor como si es de un tipo referencia.
V. La instanciación de las clases: Los objetos

Los objetos son la clave para entender la tecnología orientada a objetos. Si
mira a su alrededor ahora mismo se encontrará con muchos ejemplos de
objetos del mundo real: su perro, su escritorio, su televisor, su bicicleta.
Los objetos del mundo real comparten dos características: Todos tienen
estado y comportamiento. Los perros tienen estado (nombre, color, raza,
hambriento) y comportamiento (ladrando, buscando, meneando la cola). Las
bicicletas también tienen un estado (marcha actual, cadencia de pedaleo
actual, velocidad actual) y comportamiento (cambio de marcha, cambio de
cadencia de pedaleo, frenar). Identificar el estado y el comportamiento de los
objetos del mundo real es una gran ayuda para empezar a pensar en términos
de programación orientada a objetos.

Tómese un momento ahora mismo para observar los objetos del mundo real
que hay a su alrededor. Para cada uno de los objetos que ve, hágase dos
preguntas: « ¿En qué posibles estados puede estar este objeto?» y «¿Qué
posibles comportamientos puede realizar?»". Asegúrese de escribir sus
observaciones. Mientras lo haga, verá que los objetos del mundo real varían
en complejidad, su lámpara de escritorio puede tener solo dos estados
(encendido y apagado) y dos posibles comportamientos (encender y apagar),
pero su radio tendrá más estados (encendido, apagado, volumen actual,
emisora actual) y comportamientos (encender, apagar, subir volumen, bajar
volumen, buscar y sintonizar). También observará que algunos objetos, a su
vez, también contendrán otros objetos. Todas estas observaciones del mundo
real son reproducibles en el mundo de la programación orientada a objetos [
8
].

8
http://www.codexion.com/tutorialesjava/java/concepts/object.html (Ultima visita 20 de Marzo de 2012)

Jesús Adriel Lazalde Martínez |
12


VI. Clase: Una clase es la definición de las características concretas de un
determinado tipo de objetos. Es decir, de cuáles son los datos y los métodos
de los que van a disponer todos los objetos de ese tipo. Por esta razón, se
suele decir que el tipo de dato de un objeto es la clase que define las
características del mismo [
9
].
VII. Constructor: Constructor es un procedimiento especial de una clase que es
llamado automáticamente siempre que se crea un objeto [
10
].
VIII. Tipos de Datos: Los tipos de datos en Java se clasifican en primitivos y
referenciados.
8.1 Referenciados: Hay 8 tipos de datos que podemos clasificar en: tipo
numéricos y los tipos boolean que solo poseen valores falso y verdadero
(true y false). Los tipos numérico son:
 Byte
 Short
 Int
 Long
 Char
 Float
 Double [
11
].
IX. Variable; Una variable en Java es un identificador que representa una palabra
de memoria que contiene información. El tipo de información almacenado en
una variable sólo puede ser del tipo con que se declaró esa variable.
Tipos:


9
http://www.devjoker.com/contenidos/C/130/Definici%C3%B3n-de-clases.aspx (Ultima visita 20 de Marzo de
2012)
10
Francisco Javier Ceballos (2008), Java 2: Curso de Programación. Editorial RA-MA, México: Pág. 38.
11
Op. Cit. Java 2: Curso de Programación Pág. 55

Jesús Adriel Lazalde Martínez |
13


X. Comentarios: Es un mensaje a cualquiera que lea el código fuente.
Añadiendo comentarios se hace más fácil la comprensión de un programa [
12
].

XI. Palabras reservadas: son aquellas que emplea el lenguaje Java, y que en el
programador no puede utilizar como identificadores.

XII. Programa: Es un conjunto de comandos ejecutados por el ordenador para
cumplir un objetivo definido.




2.6 Java Swing
El kit de herramientas Swing incluye un amplio conjunto de componentes para la
construcción de interfaces gráficas de usuario y añadir interactividad a las

12
Ídem. Pág. 61.

Jesús Adriel Lazalde Martínez |
14

aplicaciones Java. Swing incluye todos los componentes tales como los controles de
tablas, los controles de lista, los controles de los árboles (tree controls), botones y
etiquetas.

Swing lejos de ser un conjunto de herramientas de componentes simples incluye una
rica compatibilidad, un paquete de texto altamente personalizable, integrado a la
internacionalización y accesibilidad. Para aprovechar las capacidades de plataforma
cruzada de Java. Swing soporta numerosas vistas y formas, incluyendo la capacidad
de crear su propia apariencia.

2.6.1 JFrame
La clase JFrame es la extensión de la clase Frame, es también la componente
básica necesaria para implementar una interfaz visual. Esta clase encapsula una
ventana clásica de cualquier sistema operativo con entorno gráfico [
13
].

2.6.2 JPanel
La clase JPanel proporciona contenedores de uso general para los componentes de
peso ligero. De forma predeterminada, los paneles no añaden colores a nada,
excepto a su propio fondo [
14
].

3.6.3 JButton
La clase JButton es la componente básica necesaria para la creación de un botón.

Los botones se pueden configurar, y hasta cierto punto controlar por Acciones. Usar
una acción en un botón tiene muchos beneficios más allá de la configuración de un
botón directo [
15
].

13
http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html (Última visita 20 de Marzo de 2012)
14
http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/JPanel.html (Ultima visita 20 de Marzo de 2012)
15
http://docs.oracle.com/javase/7/docs/api/javax/swing/JButton.html (Ultima visita 20 de Marzo de
2012)

Jesús Adriel Lazalde Martínez |
15

2.6.4 JLabel
Con la clase JLabel, se pueden mostrar texto no seleccionable e imágenes. Se
emplea para crear un componente que muestre una cadena, una imagen, o ambos.
Un objeto JLabel puede mostrar ya sea texto, una imagen, o ambas cosas. Puede
especificar el lugar en el área de visualización de la etiqueta (alineación vertical y
horizontal). Etiquetas de sólo texto se alinean, por defecto, y sólo la imagen-etiquetas
se centra horizontalmente, de forma predeterminada.

2.6.5 JComboBox
Un JComboBox, permite al usuario elegir una de varias opciones, y puede tener dos
formas muy diferentes. La forma por defecto es el cuadro combinado editable, que
cuenta con un botón y una lista desplegable de valores. La segunda forma, cuenta
con un campo de texto con un pequeño botón que tope. El usuario puede escribir un
valor en el campo de texto o haga clic en el botón para mostrar una lista desplegable
[
16
].

2.6.6 JTextField
Un campo de texto es un control de texto básico que permite que el usuario escriba
una pequeña cantidad de texto. Cuando el usuario indica que se puede escribir texto
completo (generalmente pulsando Enter), el campo de texto dispara un evento action
[
17
].

2.6.7 JPasswordField

La clase JPasswordField, una subclase de JTextField, ofrece especialidades de texto
para introducir la contraseña. Por razones de seguridad, un campo de contraseña no
muestra los caracteres que el usuario escribe. En cambio, el campo muestra un
carácter diferente del escrito, tales como '*' un asterisco uno. Como otra medida de
seguridad, un campo de contraseña almacena su valor como una matriz de

16
http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html (Ultima visita 20 de Marzo
de 2012)
17
http://docs.oracle.com/javase/tutorial/uiswing/components/textfield.html (Ultima visita 20 de Marzo
de 2012)

Jesús Adriel Lazalde Martínez |
16

caracteres, en lugar de como una cadena. Al igual que un campo de texto ordinario,
un campo de contraseña dispara un evento action cuando el usuario indica que la
entrada de texto se ha completado, por ejemplo, pulsando el botón Enter [
18
].

2.6.8 JTextArea
La clase JTextArea proporciona un componente que muestra varias líneas de texto y,
opcionalmente, permite al usuario editar el texto. Si usted necesita para obtener una
sola línea de entrada del usuario, debe utilizar un campo de texto. Si desea que el
área de texto muestre su texto con múltiples fuentes o estilos de otros, usted debe
utilizar un panel de edición o en el panel de texto. Si el texto que se muestra tiene
una duración limitada y nunca editado por el usuario, use una etiqueta [
19
].

2.6.9 JTable
Con la clase JTable puede mostrar tablas de datos, de forma opcional que permite al
usuario editar los datos. JTable no contiene ni datos de la caché, sino que es
simplemente un punto de vista de los datos.

2.7 Eventos
Los eventos se implementan como subclases de java.util.EventObjectObject
getSource() y son todas aquellas acciones disparadas al interactuar con los
componentes. Los eventos se encuentran en los paquetes
Java.awt.event y javax.swing.event.

• Interfaces XxxxxListener
• Evento EventXxxxx
• Todos los métodos de la interface tendrán como argumento Evento EventXxxx
Existen diferentes tipos de eventos, algunos de ellos que ha se emplearán en el
presente proyecto se detallan en el siguiente punto.


18
http://docs.oracle.com/javase/tutorial/uiswing/components/passwordfield.html (Ultima visita 20 de Marzo de
2012)
19
http://docs.oracle.com/javase/tutorial/uiswing/components/textarea.html (Ultima visita 20 de Marzo de 2012)


Jesús Adriel Lazalde Martínez |
17

2.7.1 ActionListener
Se lanza sí:
• Se pulsa un botón de cualquier tipo
• Doble pulsación en un item de una lista
• Selección de una opción de menú
• Pulsar retorno en un campo de texto
• Void actionPerformed(ActionEvent)

2.7.2 ItemListener

Se dispara s se pulsa en:
• JCheckBox
• JCheckBoxMenuItem
• JList (simple pulsación)
• Void itemStateChanged(ItemEvent)
• ItemEvent
• Object getItemSelectable()
• int getStateChanged()
• Puede ser ItemEvent.SELECTED

2.8 Conexión Base de Datos

Para entender la conexión a la Base de Datos, es necesario entender los siguientes
conceptos:


2.8.1 Base de Datos (BD)

Una base de datos es un conjunto de información estructurada en registros y
almacenada en un soporte electrónico legible desde un ordenador. Cada registro
constituye una unidad autónoma de información que puede estar a su vez
estructurada en diferentes campos o tipos de datos que se recogen en dicha base de

Jesús Adriel Lazalde Martínez |
18

datos. Por ejemplo, en un directorio de miembros de una asociación, un registro será
la ficha completa de cada uno de los socios. En cada registro se recogerán
determinados datos, como el nombre, la profesión, la dirección o el teléfono, cada
uno de los cuáles constituye un campo [
20
].

2.8.1.1 Conceptos BD

Entidades

Una entidad es una clase o categoría de objetos que poseen características
diferenciadoras que los distinguen del resto. Ejemplo: Dentro de una empresa que
vende complementos para el automóvil encontraremos las siguientes entidades:
Artículos, Clientes, Proveedores, Pedidos, etc.
Otros ejemplos:
En una biblioteca: Libro, Socio, Autor, etc.
En una academia: Alumno, Profesor, Cursos, Asignaturas, etc.
En concesionario de automóviles: Vendedor, Cliente, Automóvil, Pedido,
etc.
Atributos

Toda entidad contiene un conjunto de datos, a los que llamaremos atributos o
campos, que permiten describir de una manera completa y única a cada elemento de
la entidad.
Ejemplos:

Entidad”Clientes”. Atributos: Código, DNI, Nombre y apellidos, Dirección,
Teléfono, Cuenta bancaria, etc.
Entidad”Productos”. Atributos: Código, Descripción, Fabricante, Color,
Peso, Precio, etc.

20
UNAV / UNAV BASES DE DATOS DOCUMENTALES: ESTRUCTURA Y PRINCIPIOS DE USO,
www.unav.es/dpp/documentacion/proteger/lryunta.pdf (Ultima visita 20 de Marzo de 2012)


Jesús Adriel Lazalde Martínez |
19

Cada atributo se corresponde, en una base de datos relacional, con las columnas o
campos de una tabla.

Data Manipulation Language (DML) Lenguaje de Manipulación de Datos

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.
Cuando se quiere agregar, actualizar o eliminar datos de una base de datos, se
ejecutan sentencias DML. Una colección de sentencias DML que forman una unidad
lógica de trabajo es llamada transacción.
Considere una base de datos de un banco. Cuando un cliente del banco transfiere
dinero de su cuenta de ahorros a su cuenta de cheques, la transacción puede
consistir de tres operaciones separadas:

1. Decrementar la cuenta de ahorros.
2. Incrementar la cuenta de cheques.
3. Registrar la transacción en la bitácora de transacciones.


Jesús Adriel Lazalde Martínez |
20

SENTENCIAS DDL y DML [
21
]
2.8.2 Manejador de Base de Datos

Un gestor de base de datos o sistema de gestión de base de datos (SGBD o DBMS)
es un software que permite introducir, organizar y recuperar la información de las
bases de datos; en definitiva, administrarlas. Existen distintos tipos de gestores de
bases de datos: relacional, jerárquico, red,... El modelo relacional es el utilizado por
casi todos los gestores de bases de datos para PC´s. El modelo relacional (SGBDR)
es un software que almacena los datos en forma de tablas [
22
].

2.8.3 MySQL Workbench 5.2 CE

MySQL Workbench proporciona los DBAs (máximos administradores de las Bases
de Datos) y desarrolladores un entorno integrado de herramientas para:

21
http://cursos.atica.um.es/DBA9i1/sqlplus.html (Ultima visita 20 de Marzo de 2012)
22
http://wwwdi.ujaen.es/~barranco/publico/ofimatica/tema7.pdf (Ultima visita 20 de Marzo de 2012)


Jesús Adriel Lazalde Martínez |
21


• Base de Datos, Diseño y Modelado
• De desarrollo de SQL (en sustitución de MySQL Query Browser)
• Base de datos de administración (en sustitución de MySQL Administrator)

2.8.4 Driver de Conexión

Ese Driver es la clase que, de alguna forma, sabe cómo interactuar con la base de
datos MySQL. Desgraciadamente (y hasta cierto punto es lógico), java no cuenta con
todos los Drivers de todas las posibles bases de datos del mercado. Pero para
obtenerlos es necesario ir a internet y obtener el Driver, normalmente en la página de
la base de datos.

2.8.4.1 JDBC (Java Database Connectivity)

El API JDBC fue diseñado para mantener simples las cosas simples. Esto significa
que el JDBC hace tareas diarias de base de datos fácil. Este camino lo lleva a través
de ejemplos del uso de JDBC para ejecutar sentencias SQL comunes, y llevar a cabo
otros objetivos comunes a las aplicaciones de bases de datos [
23
].

2.8.5.1 Normas y Estándares
La implementación del sistema Arteceramic’s – Inventario V.1.0. Se apega a los
siguientes lineamientos de las siguientes normas.

Norma:
Mandel (1997)
Principios
 Colocar a los usuarios en el control de la interfaz
- Permitir el uso del teclado y el ratón
- Permitir a los usuarios cambiar la atención
- Mostrar mensajes y textos descriptivos

23
http://docs.oracle.com/javase/tutorial/jdbc/index.html (Ultima visita 20 de Marzo de 2012)

Jesús Adriel Lazalde Martínez |
22

- Proporcionar acciones inmediatas, reversibles y realimentación
- Permitir personalizar la interfaz
- Permitir manipular los objetos de la interfaz
- Acomodar a los usuarios con diferentes niveles de habilidad
 Reducir la carga de memoria de los usuarios
 Hacer la interfaz consistente

Estándares asociados a Java Swing
 ISO 9241: requisitos ergonómicos para trabajar con terminales de
presentación visual (VDT)
 ISO/IEC 10741: interacción de diálogos
 ISO/IEC 11581: símbolos y funciones de los iconos
 ISO 11064: diseño ergonómico de centros de control
 ISO 13406: requisitos ergonómicos para trabajar con presentaciones
visuales basadas en paneles planos
 ISO 13407: procesos de diseño centrados en la persona para sistemas
interactivos
2.9 Teoría de Administración de Proyectos
Para llevar a cabo exitosamente el proyecto del presente documento fue necesario
alinearse a las buenas prácticas descritas en los fundamentos del PMBoK. En la
sección ANEXOS se agregan todos los documentos de administración del proyecto.
Cada documento cuenta con una descripción sobre su función y aplicación al
proyecto. Los documentos de administración pertenecientes a las siguientes fases de
la vida del proyecto son los siguientes:

• Inicio
1. Project Charter
2. Registro de Involucrados (Stakeholders) con las respectivas estrategias
para atender a cada uno de ellos.

• Planeación

Jesús Adriel Lazalde Martínez |
23

1. Documento Oficial de Requerimientos (mencionado como DOR (por
sus siglas) a lo largo del reporte).
2. Enunciado del Alcance del proyecto.
3. WBS.
4. Diccionario de la WBS.
5. Plan de Administración del proyecto.

• Monitoreo y control
1. Reporte de actividades

• Cierre
1. Documento de aceptación del proyecto.

Algunos de los documentos de administración del proyecto no son aplicables al
proyecto actual, debido a que dichos documentos se aplican en función de la
magnitud del proyecto. Por ejemplo el documento de control de Recursos humanos
no incluye nada más que el perfil del administrador del proyecto, mismo que fungió
como programador, encargado de comunicaciones y todos los demás roles. De igual
manera el plan de adquisiciones, el plan de gestión de costos, entre otros.

En la sección Anexos se añaden los archivos previamente mencionados.


2.10 Perspectiva Teórica
El fenómeno de la mala administración de los datos en las empresas es producto de
los erróneos hábitos para archivar y/o almacenar empleados para gestionar los
valores que se generan en sus procesos que permiten la existencia de las mismas
empresas. Dicho error se ha manifestado en varias empresas de diferentes giros.
Hace unas décadas este problema ocurría por las grandes cantidades de datos
impresos, que finalmente sin no eran gestionados de forma correcta terminaban
siendo algo sin utilidad para los negocios, siendo que la información misma define en
sí el destino de la empresa. Actualmente muchas empresas se encuentran en el

Jesús Adriel Lazalde Martínez |
24

mismo problema debido a que no emplean las herramientas tecnológicas para
hacerlo, este es el caso de Arteceramic’s, empresa que genera grandes cantidades
de datos de sus procesos de producción, almacenaje, ventas, entre otros. Pero estos
valores no son administrados correctamente, dando como resultado que los datos
sean inútiles para expresar al Director General sobre la realidad de su empresa. Por
lo dicho se concluye que la mejor forma de administrar estos valores y darles un
sentido para convertirlos en información de utilidad sin tener necesidad de usar un
sinfín de hojas y folders y otros accesorios, es a través de un sistema informático
basado en la tecnología Java en la edición estándar, que gestione las entradas,
ventas, rupturas, clientes, empleados y todos los demás datos que se producen
presentando los datos agrupados, con claridad y sentido para darle la importancia
que posee la información en la correcta toma de decisiones. Debido a la solución
elegida en esta teoría se ha presentado en las secciones anteriores todos los
conceptos asociados a la tecnología Java, en especifico sobre el kit de herramientas
llamado Swing.


Jesús Adriel Lazalde Martínez |
25


3.1 Procesos de Administración del proyecto
El presente proyecto fue administrado bajo los lineamientos (buenas prácticas)
declaradas en el PMBOK (Project Management Body of Knowledge) haciendo uso de
la metodología para administrar los recursos, tanto humanos, monetarios, de tiempo,
etc.
El proyecto estuvo conformado por las fases enunciadas en el cuerpo de
conocimientos de administración de proyectos, PMBOK. Mismas que se detallan a
continuación.

3.1.1 Iniciación del proyecto
La fase de inicio tiene el propósito de reunir toda la información necesaria para
declarar que existe un proyecto, permite oficializar el nacimiento o inicio del proyecto,
a través del Project Charter (Acta de nacimiento del proyecto), donde se detallan de
manera puntual lo que definirá al proyecto a tratar. El acta de nacimiento del proyecto
creada para el proyecto “DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE
INVENTARIOS” contiene lo siguiente:
I. Datos del proyecto (Nombre, id de control)
II. Descripción
III. Justificación
IV. Objetivo del proyecto
V. Riesgos
VI. Requerimientos iníciales
VII. Entre otros.
Vea el Anexo I - Project Charter

En esta fase se identifica también a las personas que están interesadas o
Involucradas en el proyecto y que ejercen cierta influencia positiva o negativa para
alcanzar el éxito del proyecto. Además también se clasifican los mismos y se genera
un plan de administración de todos los involucrados o stakeholders.
CAPÍTULO 3
DESARROLLO DEL PROYECTO



Jesús Adriel Lazalde Martínez |
26

La matriz de gestión de los Involucrados se presenta en el Anexo II-Matriz de
Interesados vea el documento correspondiente para entender las necesidades y la
influencia que ejerce cada interesado.
Nota: la documentación generada en esta fase forma parte del repositorio de
administración del presente proyecto, algunos de los mismos son para uso interno
(para el administrador), mientras otros más tienen relación con el cliente.

3.1.2 Planeación del proyecto
La fase de planeación es empleada para elaborar un procedimiento que permita
alcanzar el objetivo establecido en el Project Charter y en el enunciado del alcance,
esta etapa de planeación aterriza todos los puntos que definen el proyecto. Permite
entender la necesidades del cliente a través del documento oficial de requerimientos,
mismo que una vez aprobado no se puede modificar, dando al líder de proyecto el
respaldo para fijar los límites del mismo, dando como resultado el documento de
alcance, mismo que comprende desde donde inicia y hasta dónde llegará el
proyecto, que es lo no se va a hacer y que lo que queda fuera.
Para completar el procedimiento se detallan las actividades que comprenden cada
fase asignando a cada una de ellas una fecha de inicio y fin, los recursos que se
emplearán en esa tarea, etc. La WBS (Work breakdown structure) integra la
estructura desglosada de actividades correspondientes a cada fase, a dicho
documento se le agrega un diccionario que puntualiza los entregables y las
actividades.
Asimismo se crea las siguientes líneas base:
 Línea base de tiempo (Cronograma).
 Línea base de costos.
 Línea base de recursos.
 Plan de recursos humanos.
 Plan de riesgos.
 Plan de adquisiciones.
Finalmente se integran en un documento llamado plan de administración del
proyecto.

Jesús Adriel Lazalde Martínez |
27

Para conocer la aplicación de la metodología ya explicada, plasmada en los
documentos de gestión, revise los siguientes anexos.
Anexo III-Documento Oficial de Requerimientos
Anexo IV-Enunciado del alcance del Proyecto.
Anexo V-WBS
Anexo VI-Diccionario de la WBS
Anexo VII-Plan de Administración del Proyecto

3.1.3 Control del proyecto
Esta es la fase en la que se pone en práctica el plan de gestión. Es de vital
importancia seguir las líneas base establecidas, porque estas serán las que dirigirán
el desarrollo. A través de Microsoft Project se puede controlar el avance del proyecto
empleando un porcentaje por cada actividad asociada a su vez a una fase, de esta
forma se controla el desarrollo de cada actividad, se verifica que cada recurso esté
dispuesto cuando se requiera y se logra presentar el entregable fijado.
Revise el Anexo X-Reporte de Actividades

3.2 Ejecución del proyecto

3.3.1 Desarrollo

Como parte teórica de este reporte se creó una explicación, sobre el desarrollo del
proyecto, el cual da como resultado la aplicación Arteceramic’s – Inventario V.1.0.
Que corresponde a la fase de implementación. En este reporte se usa el modelo del
PMBOK para explicar el proceso que se usó para cumplir el objetivo del proyecto, sin
embargo las fases reales del proyecto son otras.

Vea el Anexo V-WBS


3.3.1 Netbeans
NetBeans IDE es un entorno de desarrollo, una herramienta para que los
programadores puedan escribir, compilar, depurar y ejecutar programas. Está escrito
en lenguaje Java pero puede servir para cualquier otro lenguaje de programación.

Jesús Adriel Lazalde Martínez |
28

Existe además un número importante de módulos para extender el NetBeans IDE.
NetBeans IDE es un producto libre y gratuito sin restricciones de uso [
24
].


3.3.1.1 Entorno Netbeans






3.3.2 Patrón de Diseño MVC (Modelo Vista Controlador)

Un patrón de diseño describe un problema recurrente que se presenta al construir
algo, en este caso; software. El patrón de Diseño está integrado en sí un por
problema, un contexto y una solución de manera que, cuando el programador

24
http://netbeans.org/index_es.html (Ultima visita 17/04/2012)
Figura 3.2.3.1.1 Interfaz NetBeans

Jesús Adriel Lazalde Martínez |
29

encuentra una situación (contexto), un problema semejante puede aplicar el patrón
para obtener una solución.

MVC (Modelo Vista Controlador)

Es sin duda uno de los patrones más empleados por los programadores de diversos
lenguajes, gracias a su flexibilidad y a su acoplamiento a diversos contextos. Este
modelo de referencia fue utilizado en el presente proyecto porque tanto el contexto,
como el problema se integraban de forma que la solución podría ser alcanzada
empleando el mismo. La lógica del MVC es la siguiente:





El sistema Arteceramic’s – Inventario V.1.0 fue hecho tomando como referencia este
patrón a continuación se explica la distribución de las partes de este modelo
aplicadas a éste proyecto.

3.3.2.1 Vista

Según lo especificado en el apartado 1.5 (Limitaciones y Alcances y también
mencionado en el Anexo III) la vista debería incluir ciertos campos ya mencionados,
Vista
Controlador Modelo
[Escriba una cita del documento o
del resumen de un punto
interesante. Puede situar el
cuadro de texto en cualquier lugar
del documento. Utilice la ficha
Herramientas de cuadro de texto
para cambiar el formato del
cuadro de texto de la cita.]
La interfaz de usuario, la parte de la
aplicación con la que el cliente interactúa
se llama Vista. Esta recibe todas las
entradas, es decir, teclas presionadas,
clics entre otras. Una vez obtenidos dichos
parámetros los envía al Controlador quien
evalúa cada valor e invoca los métodos
para obtener los resultados deseados
según el dato obtenido. El Modelo
concentra toda la lógica de funcionamiento
del sistema o de la aplicación.
Figura 3.2.3.2 MVC

Jesús Adriel Lazalde Martínez |
30

estos integrarían la ventana con la que el usuario final interactuará. Como
requerimiento Oficial el sistema debería ser iniciado a través de un inicio de sesión.

3.3.2.2 Ventana Login

























Al ser correctos los datos introducidos, después de llamar a los métodos del
controlador, la ventana Login Invoca el JFrame Menú Principal, en el cuál se
concentra el principal medio de interacción con el cliente. La Figura 3.2.3.2.2 muestra
el contenido que se mostrará por default cada vez que se inicie el sistema.
3.3.2.3 Ventana Menú Principal
La actual ventana está conformada principalmente por un JTabbedPane, que es un
contenedor de componentes de Java Swing (Botones, Áreas de texto, Etiquetas,
etc.). El JTabbedPane o panel de pestañas cuenta con cuatro secciones:

I. Entradas:
Figura 3.2.3.2.2 Ventana Login
La Ventana Login recibe dos
cadenas tipo String; el nombre de
usuario y la contraseña
empleando el método getText ().
El JTextField Contraseña posee
una propiedad que no cambia los
caracteres introducidos por
puntos. Al presionar los botones
Entrar y Cancelar el JFrame
también toma 2 valores que son
enviados al controlador para
realizar las operaciones
necesarias con el objetivo de
conceder o negar el acceso a
quién desea usar el sistema.

Jesús Adriel Lazalde Martínez |
31


El apartado seleccionado en la Figura 3.2.3.2.3 permite que el empleado introduzca
todos los datos involucrados cada vez que un producto terminado (Resultado del
proceso de Producción) o productos defectuoso (Rupturas) entra a almacén y/o a
inventario.


Los campos que integran esta pestaña comparan cada valor introducido, por
ejemplo;
Los JTextFields tipo numéricos (Piezas por Caja, Número de Cajas, Piezas
Sueltas, etc.) no deben permitir que se inserte letras (Para evitar que el usuario
introduzca caracteres no validos para cuadros de texto de tipo numérico), por lo tanto
empleando métodos pertenecientes al controlador ejecutan dicha validación
generando el siguiente error.

Figura 3.2.3.2.3 Ventana Menú Principal Pestaña Entradas


Jesús Adriel Lazalde Martínez |
32

Esta comparación se añadió a cada
JTextField tipo numérico de cada pestaña.
Con la finalidad de que la aplicación sea
funcional y limite al usuario a usar los datos
propios para realizar los cálculos solicitados.


Se puede observar que algunos campos del
grupo Entradas se encuentran activos para
que se inserte datos sobre ellos. Sin
embargo otros más se encuentran
bloqueados (Propiedad Editable de los
JTextFields), debido a que los valores que
toman son generados a partir de algún botón
o desde la Base de Datos. La siguiente
Figura expone la diferencia entre cada uno
de los campos. Los campos (Código de
Entrada, Status, Total de piezas) no están
habilitados para la escritura. Código de
entrada recibe su valor presionando el botón
Nuevo, si no se presionará al guardar
generará un error, indicando también la
solución al mismo.


Figura 3.2.3.2.3 Error Valor no válido

Figura 3.2.3.2.4 JTextFields


Figura 3.2.3.2.5 Error Nuevo



Jesús Adriel Lazalde Martínez |
33

El JTextField Nombre del Producto recibe su nombre al seleccionar un código del
JComboBox Código del Producto si el valor que posee este componente es nulo
provocará un error de la misma naturaleza del perteneciente al botón Nuevo.
Asimismo cada campo habilitado solicitará tener algún valor válido antes de guardar
los datos en la Base de Datos. El componente de texto Status posee el valor En
Almacén cuando el producto entró a inventario y Vendido cuando salió del mismo,
debido a que ningún producto puede salir sin ser previamente vendido. El dato que
se asigna a Total de piezas es el producto de la multiplicación de los valores de los
campos Piezas por Caja y Número de Cajas sumándole además el número de
piezas sueltas (no empaquetadas)
obtenido al presionar el botón
Guardar, de ahí la importancia que
cada JTextField tenga los datos
propios para realizar los cálculos
mencionados.

El grupo Rupturas tiene como
finalidad tener un control sobre las
mermas o rupturas
Que se generan al finalizar el
proceso de producción. Según el
director de Arteceramic’s S.A. de
C.V. las mermas deben ser
contadas como entradas al
inventario, a pesar de ser piezas no
productivas, el hecho de conocer
que piezas no se fabrican
exitosamente, quien es el empleado que más reincide en las rupturas, el costo de las
mismas, la fecha, etc. Serán datos de suma importancia para el Gerente para tomar
decisiones sobre el rumbo de su negocio.

Figura 3.2.3.2.6 Rupturas



Jesús Adriel Lazalde Martínez |
34

En este grupo solo el Código no se encuentra habilitado para la escritura mientras los
demás registros se encuentran asociados a las validaciones anteriormente
expuestas (Validación de caracteres) estos valores no se asocian directamente a
alguna tabla en la Base de Datos (BD) si no que son guardados independientemente
en una tabla de a la cual se le aplican ciertos filtros para conseguir la información
requerida por el cliente. Todos y cada uno de los grupos que vacían datos en la BD
tiene los botones Nuevo, Limpiar, Guardar.

II. Salidas

La pestaña Salida permite guardar todos los datos que se generan cada vez que un
producto es vendido. También realiza todos los cálculos en tiempo real para restar
los artículos que salen del inventario a los artículos en existencia, asimismo compara
que las cantidades de salida no excedan a las existencias.














La pestaña seleccionada está completamente asociada a la anterior (Entradas), dado
que ningún producto puede salir de inventario sin haber previamente entrado.


Figura 4.2.8 Salidas



Figura 3.2.3.2.7 Salidas



Figura 3.2.3.2.7 Error Existencias




Jesús Adriel Lazalde Martínez |
35

Por esta razón el JComboBox Código se llena de la tabla de entradas, es decir,
asocia los códigos de entrada a los códigos de salida para así ir restando pieza por
pieza. De la misma forma el cuadro desplegable (JComboBox) Empaquetado por,
esta enlazado con las personas que empaquetan los productos que entran al
almacén. Los campos numéricos comprueban que el valor entrante sea un número y
que el mismo sea menor o igual a los registros de existencia. En caso de recibir un
valor mayor al que se encuentra en la BD se desplegará el siguiente error, mostrando
además su solución.
El mensaje de error
informa al usuario la
cantidad de piezas,
número de Cajas,
Piezas sueltas, etc.

Si se ha excedido al momento de retirar del
inventario. De igual forma que en la pestaña de
Entradas si se presiona el botón guardar y algún
valor falta en el formulario se enviará un mensaje
solicitando el dato que falta.
Para este apartado es necesario asociar cada salida del almacén a algún medio
comprobante, en este caso un número de nota de venta o un folio de factura, de esta
forma se crea un candado evitando salidas sin pago. El JTextArea o Área de texto
ofrece al usuario la oportunidad de agregar alguna anotación extra sobre la venta.
Otros detalles de esta sección es el cálculo del costo del producto. Si se cuenta con
un precio unitario y un número de piezas vendidas estos valores se pueden
multiplicar y obtener el valor total. El botón calcular total obtiene los valores de la
vista y los envía controlador, éste a su vez invoca los métodos necesarios para hacer
los cálculos matemáticos necesarios. Los botones de esta pestaña tienen la siguiente
función:

Figura 3.2.3.2.9 Error Falta un dato



Figura 3.2.3.2.8 Error Existencias




Jesús Adriel Lazalde Martínez |
36

.


Generar un nuevo
código
Borrar el texto de los
JTextFields
Guardar los datos en la
BD.
Obtener el
resultado.

III. Consultas
La importancia de los datos es administrarlos de manera que se obtenga información
útil para tomar decisiones asertivas. En la aplicación era necesario tener también un
apartado donde se pueda ver reflejado cada cambio. Por lo tanto se agregó una
sección llamada consultas. Esta área está compuesta por un JTable que carga datos
desde la base de Datos, específicamente de la tabla de: Entradas, Salidas y
Rupturas, así que cada salida, entrada o Ruptura registrada se ve reflejada en
tiempo real en las consultas. Esto permite que el usuario que está usando la
aplicación verifique si los cambios fueron correctos.
La Figura 3.2.3.2.10 Muestra la pantalla de Consultas. (Los datos mostrados en la
imagen no son productos, nombres, cantidades que la empresa use, dado a que por
seguridad de la misma esos datos no pueden ser publicados).


















Figura 3.2.3.2.10 Consultas - Entradas




Jesús Adriel Lazalde Martínez |
37

En contenedor Consultas tiene un controlador; JComboBox este componente nos
permite navegar entre las tablas de la base de Datos. Al seleccionar el valor Salidas
se obtendrá el siguiente resultado.












La funcionalidad de la Vista es únicamente enviar el parámetro que recibe de la lista
desplegable este valor es evaluado y según sea el valor hace un llamado a un
método que carga los valores de la base de datos. Sin embargo todos los valores
que se muestran en las tablas no son todos los que incluye la tabla de cada grupo
(Entradas, Rupturas, Salidas). Teniendo en cuenta que los otros datos no
presentados son para administrar la tabla y no son de relevancia para el usuario por
lo tanto se omiten en la consulta. Finalmente una vez seleccionado el tercer valor
(Rupturas) se mostrará lo siguiente:












Figura 3.2.3.2.11 Consultas - Salidas



Figura 3.2.3.2.12 Consultas - Rupturas




Jesús Adriel Lazalde Martínez |
38

Una vez presentadas las tres tablas se concluye que esta pestaña es de gran utilidad
para el usuario ya que muestra todo el contenido de la Base de Datos de manera
organizada sin aplicar ningún filtro, dicho de otra forma puede revisar cada valor
correspondiente a cada venta. Por ejemplo que código de control físico tiene la
entrada (Impreso en la caja del producto), por quién fue empaquetado, cuantas
piezas contenía la salida o la entrada seleccionada, que precio unitario y las
observaciones. Dicho de otra forma si se ve la siguiente situación se entenderá
mejor.

Se hace una venta de X producto y por una u otra razón cuando el cliente revisa su
producto (ya comprado) encuentra una pieza dañada. Al presentar su reclamo el
Gerente sabrá con solo unos clics qué persona dentro de su taller empaquetó y
tomará las decisiones necesarias de manera acertada, empleando correctamente su
tiempo.

IV. Eliminar Registros

Cuando se habla de Bases de Datos y valores, es necesario tener presente que debe
haber una forma de Eliminar estos datos en caso de que algún registro se haya
introducido de forma incorrecta. Para ello después de ser aprobada la versión 1.0 de
la aplicación se agregó una nueva pestaña con el nombre de Eliminar Registros. En
dicho apartado se colocaron tres JComboBoxes (Correspondiente a Entradas,
Salidas y Rupturas) mismos que cargan los códigos de cada uno de los grupos.

Las listas desplegables permitirán seleccionar el código del Registro que se desea
eliminar y al presionar el botón correspondiente a dicha acción se ejecutará el
método que borra de la tabla de la BD el registro seleccionado en el JComboBox. De
igual forma posee seguros; en caso de no seleccionarse ningún código y presionar el
botón solicitara que primero se elija el registro que se desea borrar.
A continuación se presenta la pestaña Eliminar Registro.



Jesús Adriel Lazalde Martínez |
39



V. Reportes

Como se ha expresado a lo largo de este reporte la finalidad de este proyecto
consiste en presentar la información generada en los movimientos de inventario de
una forma clara, ordenada, precisa y digerida, con la finalidad de que el Gerente de
esta institución conozca en tiempo real la situación de su empresa y que la misma
información le sirva como una base solida para tomar decisiones exitosas.
Teniendo en cuenta lo anterior tenemos que: Los apartados I y II son las fuentes de
información, es decir, son las pestañas de la vista donde se introducirá la información
a la que se le aplicará los filtros para clasificarla y presentarla en reportes tabulados,
que contengan los datos relacionados para tener un panorama completo de los
responsables en las entradas, los movimientos en inventario, los productos más
vendidos, los clientes más frecuentes, las cantidades que representan las mermas o
rupturas, en qué fechas se vende cada tipo de pieza, que categoría de productos
produce más ganancias, que piezas no se fabrican exitosamente y quien reincide
Figura 3.2.3.2.13 Eliminar Registros




Jesús Adriel Lazalde Martínez |
40

mas en las mermas de las mismas, etc. Mientras que el apartado III es el
concentrado de la información ya guardada en la Base de Datos, sirviendo
únicamente para que el usuario de la aplicación vea que cada cambio hay sido
guardado correctamente, en caso de que la aplicación se cierre, se apague la
computadora por algún fallo, etcétera al reiniciar el programa podrá darse cuenta si
los datos fueron guardados correctamente. Sin embargo la pestaña que contiene los
datos que son útiles para el cliente es la pestaña de reportes, dado que a él no le
interesa en lo más mínimo el proceso de cálculos y guardado de los datos lo que el
realmente desea son los reportes, por tal motivo el sistema genera 12 reportes
diferentes, a continuación se explica el contenido y la importancia de cada uno de
ellos.
 Existencias
El almacén de Arteceramic’s recibe a diario un
número de entradas de diferentes productos (Como
se explicó en el apartado Pestaña entradas).


Cada uno genera un registro único que se asocia a un conjunto de datos
pertenecientes a la misma entrada; código de producto (que entró a inventario),
categoría, empaquetador, cantidad de piezas, etc. Una vez que han sido
almacenados los datos en la Base de Datos se invocan y se plasman en un reporte
de manera ordenada y clasificada, en este caso el parámetro que independiza la
información es la fecha. De esta forma a cualquier hora del día el cliente podrá
obtener un reporte de las entradas efectuadas en dicho día y aun de días anteriores
dando clic sobre la lista desplegable que contiene las fechas de las entradas.
Nota: Si no ha sido seleccionada ninguna fecha y se presiona el botón Reporte
diario, enseguida se presentará un mensaje solicitando dicha acción. La siguiente
figura (3.2.3.2.14) muestra el reporte que se ha generado a partir de una fecha. [
25
]

25
Los datos mostrados son datos ficticios y que no tienen relación con la empresa Arteceramic’s.
Figura 3.2.3.2.14 Reporte Existencias




Jesús Adriel Lazalde Martínez |
41




La barra de titulo del reportador tiene el siguiente titulo “Reporte Entradas día:
13/04/2012” la fecha cambiará según la fecha seleccionada.
El reporte agrupa la información por código de entradas para dividir la información de
una entrada con otra, también tiene como pie de página la fecha y la hora a la que se
ha generado el reporte y el número de páginas.
 Movimientos
Para el Director General de Arteceramic’s es de suma
importancia saber cuánto tiempo tarda un producto en ser
vendido, si él tiene este dato puede conocer que producto va a
descontinuar.
Por la situación anterior se solicitó un reporte que contuviera lo siguiente:

1. Código de Entrada: Indicador impreso en las cajas almacenadas.
2. Nombre del Producto
3. Código de Salida: Con que identificador salió de inventario.
Figura 3.2.3.2.15 Reporte Entradas



Figura 3.2.3.2.15 Generar Reporte
Movimientos





Jesús Adriel Lazalde Martínez |
42

4. Fecha de Entrada: fecha de creación del producto.
5. Fecha de Salida: fecha en que fue vendido el producto.
6. Numero de factura.
La figura 3.2.3.2.16 es un ejemplo del tipo de reporte expuesto.



















Figura 3.2.3.2.16 Reporte Movimientos

En la imagen se puede ver que algunos registros tienen valor null debido a que los
valores mostrados en este reporte son únicamente valores de prueba.
Por lo tanto algunos datos no se introdujeron en la BD por lo cual el generador de
los reportes lo indica con la palabra null.

 Piezas por Categoría
Este tipo de reporte aplica un filtro a las piezas en
existencia clasificándolas por categoría y
proporcionando también la cantidad de piezas de cada
categoría.




Figura 3.2.3.2.17 Generar Reporte
Piezas por categoría






Jesús Adriel Lazalde Martínez |
43

 Reporte de Rupturas
De la misma manera en que se reportan las entradas
se genera también un reporte de las rupturas diarias a
partir de un fecha, esta fecha obedece al sistema.


Es decir, si el sistema operativo tiene la fecha mal el Sistema de control de Inventario
tendrá la fecha incorrecta.

Observe la siguiente imagen donde se muestra el contenido de dicho reporte.
 Lista de Productos
El reporte Lista de productos genera un archivo que
muestra una tabla con los códigos de control de cada
producto (No se confunda con Código de entrada o
salida) y su nombre.

Figura 3.2.3.2.18 Generar Reporte Rupturas





Figura 3.2.3.2.19 Reporte Rupturas





Figura 3.2.3.2.20 Generar Reporte Lista de Productos



Jesús Adriel Lazalde Martínez |
44

Este reporte se carga desde la tabla Control de Productos de la Base de Datos,
misma que, es el punto inicial de la aplicación porque sin ningún producto registrado
para venta el sistema no tendría fin de ser.
 Lista de Precios
También era necesario mostrar una relación de todos los
productos fabricados en el taller de Arteceramic’s con su
respectivo precio.

Esto se Logra solicitando el reporte de Lista de precios, el cual está conformado por
tres columna (Código de control, Nombre y precio).

 Salidas
Del grupo Salidas el primer reporte que observamos en la
pestaña correspondiente es Salida.



Figura 3.2.3.2.21 Generar
Reporte Lista de Precios


Figura 3.2.3.2.22 Reporte Lista de Precios


Figura 3.2.3.2.23 Generar Reporte diario Salidas



Jesús Adriel Lazalde Martínez |
45

Éste reporte al igual que el de Entradas y Rupturas recibe parámetro de la vista.
En este informe se presenta la misma estructura empleada en los reportes
principales (Entradas, Rupturas y Salidas). La siguiente Figura (3.2.3.2.24) es un
ejemplo de dicho reporte.

Observe la siguiente imagen donde se muestra el contenido de dicho reporte.
 Lista de Productos
El reporte Lista de productos genera un archivo que
muestra una tabla con los códigos de control de cada
producto (No se confunda con Código de entrada o
salida) y su nombre.

Este reporte se carga desde la tabla Control de Productos de la Base de Datos,
misma que, es el punto inicial de la aplicación porque sin ningún producto registrado
para venta el sistema no tendría fin de ser.

Figura 3.2.3.2.24 Reporte diario Salidas


Figura 3.2.3.2.25 Generar
Reporte Lista de Productos



Jesús Adriel Lazalde Martínez |
46

 Lista de Precios
También era necesario mostrar una relación de todos los
productos fabricados en el taller de Arteceramic’s con su
respectivo precio.

Esto se Logra solicitando el reporte de Lista de precios, el cual está conformado por
tres columna (Código de control, Nombre y precio).

 Salidas
Del grupo Salidas el primer reporte que se observa en la
pestaña correspondiente es Salida.



Éste reporte al igual que el de Entradas y Rupturas recibe parámetro de la vista.


Figura 3.2.3.2.26 Generar
Reporte Lista de Precios


Figura 3.2.3.2.27 Reporte Lista de Precios


Figura 3.2.3.2.28 Reporte
diario
Salidas



Jesús Adriel Lazalde Martínez |
47

En este informe se presenta la misma estructura empleada en los reportes
principales (Entradas, Rupturas y Salidas). La siguiente Figura (3.2.3.2.29) es un
ejemplo de dicho reporte.


Se puede apreciar en este reporte la fecha en el titulo del informe, las agrupaciones
de la informacion y los datos pertenecientes a cada una de las mismas (Nombre del
Producto, empaquetador, fecha, numero de piezas por caja, numero de cajas, total
de piezas, numero de nota o factura y observaciones).
 Ventas por cliente
Para los negocios es muy importante conocer a sus
cliente, cuáles son sus necesidades, qué productos
compran mas, cuáles son sus expectativas, etc.


Figura 3.2.3.2.29 Ejemplo
Reporte diario
Salidas


Figura 3.2.3.2.30 Generar
Reporte Ventas por Cliente



Jesús Adriel Lazalde Martínez |
48

Por esta razón se agregó a los informes uno que permitiera al usuario conocer las
ventas que hacen los clientes, que piezas compran cada uno de ellos, que cantidad
compra de cada producto y cuanto significa monetariamente.
 Piezas Vendidas
Muestra un informe ordenado alfabéticamente de las
ventas diarias por producto.



 Ventas por Fecha
Este reporte presenta una tabla con las siguientes
columnas: Código de Salida, Nombre del producto,
Fecha de Salida.


Este informe permite conocer en que fechas en que se venden los productos.
 Empaquetadores
En esta opción se presenta la relación entre el nombre
de las piezas que han sido vendidas y quien fue el
responsable por empaquetar las mismas.

Facilitando al dueño del negocio saber con quién tomar acciones correctivas o dar
una felicitación según sea el caso.

 Venta de piezas por cliente
A diferencia del reporte Ventas por Cliente éste
reporte muestra la cantidad de piezas que compra por
entrada cada cliente mientras la anterior mostraba la
cantidad monetaria.

Figura 3.2.3.2.31 Generar
Reporte Ventas por Cliente


Figura 3.2.3.2.32 Generar
Reporte Ventas por Cliente


Figura 3.2.3.2.33 Generar
Reporte Empaquetadores


Figura 3.2.3.2.34 Generar
Reporte Ventas por Cliente



Jesús Adriel Lazalde Martínez |
49

De esta forma se agrupa la información para que sea útil al cliente. Observe la
siguiente pantalla donde se presenta la pestaña Reportes.


Los reportes son presentados en un reportador de Jaspersoft es la ventana mostrada
en las Figuras anteriores. Esta aplicación construye cada reporte y permite guardar el
archivo en diferentes formatos. Observe la siguiente:









Figura 3.2.3.2.35 Pestaña Reportes


Figura 3.2.3.2.36 Guardar Como




Jesús Adriel Lazalde Martínez |
50

Formatos:
 PDF
 RTF
 DOCX
 HTML
 Y otros.
Dicho reportador también permite el llamado al método de impresión del sistema
operativo.








3.3.2.4 Ventana Control de Productos
La ultima ventana perteneciente a la vista según el modelo MVC es la llamada
Control de producto, esta es utilizada para dar de alta los artículos que fabrica la
empresa Arteceramic’s.












Figura 3.2.3.2.37 Imprimir



Figura 3.2.3.2.4.1 Ventana Control de Productos



Jesús Adriel Lazalde Martínez |
51

Esta interfaz recibe dos valores desde introducidos desde teclado; El código de
control del producto, que es la combinación de letras y números que diferencian un
producto de otro y el nombre del producto. Esta lista de artículos es utilizada por el
JComboBox de la ventana Menú Principal pestaña entradas donde despliega todos
los códigos en existencia, esa lista pertenece a la mercancía dada de alta en esta
sección. Los controles de esta interfaz de usuario son los siguientes:

 Buscar: una vez introducido el código del producto hace una búsqueda y si el
resultado es positivo imprime el nombre del artículo con ese identificador en el
JTextField nombre de la pieza listo para ser modificado o eliminado.
Nota: Ningún producto se puede eliminar o modificar sin ser previamente
buscado.
 Agregar: Compara que los campos Código y Nombre del producto tengan
valores válidos y los guarda en la base de datos. En caso de faltar algún valor
enviará un error.
 Modificar: Después de haber encontrado un articulo correspondiente a un
código buscado permite que sea modificado el nombre del mismo.
 Eliminar: Una vez seleccionado un producto se elimina al presionar este
botón.
 Menú principal: Cierra la ventana Control de productos y muestra el JFrame
Menú Principal.

Esta ventana también cuenta con un área de consulta como las demás ventanas
(Entradas, Rupturas y Salidas) dicha tabla de consultas presenta cada cambio
que se efectúa, Agregar, Modificar y/o Eliminar algún registro.
Cabe también mencionar que los JTextFields están enlazados a métodos de
validación que comparan los valores introducidos.


Jesús Adriel Lazalde Martínez |
52
















3.3.2.5 Controlador

Se define como la parte de la aplicación que recibe los valores desde la vista,
aquellos que ha sido introducido desde teclado o han sido pulsado con el ratón.


3.3.2.5.1 Ventana Login

Cada interfaz de usuario recibe ciertos valores con los que se realizan los cálculos.
En el caso exclusivo de la ventana de Inicio de sesión únicamente recibe 2 valores;
usuario y contraseña (Valores tipo String) estos valores los toma el controlador y con
una condición If valida si accede al menú principal o si niega el acceso. El
controlador también ejecuta medidas de seguridad para evitar Excepciones en la
aplicación por ejemplo valida que haya texto para comparar. El siguiente método
muestra la forma en la que se reciben los valores.

Figura 3.2.3.2.4.2 Error código no encontrado


Figura 3.2.3.2.4.2 Introduzca el código



Jesús Adriel Lazalde Martínez |
53



Como se aprecia en el código Java SE (3.2.3.2.5.1) los valores son obtenidos con el
método GetText () propiedad misma de los JTextFields y en este caso el método de
comparación es empleado en la misma clase. El comparador If o Si compara el texto
ya adquirido con el método Java Equals (Parámetro) en palabras más simples
compara lo siguiente; si el cuadro de texto esta vacio (Representado por “”) envía un
mensaje a través de la clase JOptionPane mostrando un cuadro de dialogo
(showMessegeDialog). Si la comparación anterior es falsa (los cuadros de texto
JTextField tienen texto para comparar) entra a una nueva comparación. Las
variables username y password (tipo String) son comparadas con la misma clase
Java; Equals en este caso el parámetro a compara es “Admin” y la contraseña [
26
] si
los valores comparados coinciden con el usuario y la contraseña se crea un objeto
de la clase Menú Principal e invoca a un método llamado arranque (Muestra el
siguiente JFrame) y al actual JFrame le aplica la propiedad setVisible(false), es decir,
cierra la interfaz Login. Si los datos son incorrectos se muestra un mensaje de error.


26
Los valores mostrados son únicamente para dar el ejemplo.
Figura 3.2.3.2.5.1 GetValores



Jesús Adriel Lazalde Martínez |
54

3.3.2.5.2 Ventana Menú Principal y Control de Productos

En esta interfaz se emplean varios métodos de las clases Java, sin embargo para
hacer uso de las mismas es necesario usar una declaración import y enseguida
agregar el nombre del paquete
que contiene dicha clase y
emplear un punto para
seleccionar la deseada. En la
clase JFrame Menú Principal se
importan los siguientes paquetes.




De la figura 3.2.3.2.5.2.1 las líneas import subrayadas son clases pertenecientes al
mismo proyecto, el resto pertenecen a paquetes Java.

Los métodos para obtener los valores de los JTextFields son llamados GET, palabra
que en español significa obtener, pertenecientes a clases de Java e invocados
colocando un punto después del nombre de cualquier cuadro de texto. Los valores
son almacenados en variables globales mismas que son utilizadas a lo largo de todo
el proyecto. La siguiente figura 4.2.3.2.2 muestra un método GET.









Figura 4.2.3.2.1 import


Figura 3.2.3.2.5.2.1 import


Figura 3.2.3.2.5.2.2 Método Obtener Datos



Jesús Adriel Lazalde Martínez |
55

Estas acciones pueden ser ejecutadas en el momento que se requiera (Métodos del
Modelo), sin embargo se considera buenas prácticas aislar los métodos y mandarlos
a llamar cuando se necesite. Pero son invocados en base a los valores obtenidos.
Por ejemplo: Los JTextFields que reciben únicamente valores numéricos emplea el
siguiente método.

La parte solida del trabajo del Controlador se encuentra en la clase Menú Principal, la
interfaz mencionada recibe todas las pulsaciones (clics) de los objetos Java Swing y
da tratamiento a cada evento generado por los JButtons o por los JComboBoxes, o
por los JTables, etc. A continuación se describe los tres eventos más usados en
este proyecto:
Para entender esta sección véase lo siguiente:

Evento: “Constituye un método para que una clase notifique a los usuarios de un
objeto que algo interesante sucede al objeto, como, por ejemplo, que se ha hecho
clic en un control de una interfaz gráfica de usuario. Esta notificación se denomina
provocar un evento. El objeto que provoca un evento se conoce como el origen o
remitente del evento” [
27
].
 Evento usado en los JButtons
ActionPerformed
El evento que se genera cuando se da un clic
sobre algún componente Java Swing (Botón,
tabla, lista desplegable, cuadro de texto, etc.)
hace referencia a un ActionEvent
perteneciente a una subclase de la biblioteca
de interfaz gráfica (Swing).

27
http://msdn.microsoft.com/es-es/library/ms228499%28v=vs.90%29.aspx (Ultima visita 23/04/2012)
Figura 3.2.3.2.5.2.3 Válida carácter


Figura 3.2.3.2.5.2.4 ActionPerformed



Jesús Adriel Lazalde Martínez |
56


Y atiende al método al que se le asocie. En el caso de este proyecto todos los
botones utilizan este ActionEvent para responder a las peticiones hechas por el
usuario a través de la vista por ejemplo: los botones Nuevo, encargados de generar
un nuevo código conformado por la fecha, la sección (Entradas o Rupturas) y un
número de control, responden al siguiente método para lograr su objetivo.




Como se aprecia en la Figura 3.2.3.2.5.2.5 dicho evento emplea una serie de
variables a las cuales les asigna un valor y finalmente las reúne para generar un
código que contiene; Fecha, Tipo de transacción (Entrada o salida) y un
Identificador. El evento ActionPerformed se emplea en los siguientes botones donde
se clarifica el funcionamiento de la clase que funge como controlador.

a. Botón Guardar

La acción de Guardar es solicitada con la finalidad de almacenar los datos
introducidos en los cuadros de texto (JTextFields) en la Base de Datos. Para ello se
ejecutan las sentencias que evalúan que los cuadros de texto tengan algo que
guardar, que los valores, sean los correctos, enseguida se llama los métodos de la
clase Modelo (Permiten guardar los datos en la BD) y si el resultado de dichos
métodos fue exitoso se envía una notificación en caso contrario se envía un mensaje
de Error. De forma general de esta forma trabajan los botones Guardar, sin embargo
tienen ciertas diferencias que se presentan en seguida.


Figura 3.2.3.2.5.2.5 Botón Nuevo



Jesús Adriel Lazalde Martínez |
57










Los botones encargados de guardar realizan una verificación, la cual, consiste en
revisar que todos los campos tengan datos para almacenar en la BD. La Figura
3.2.3.2.5.2.6 muestra dicha comparación de botón guardar donde se ejecuta un IF
que compara el contenido de cada JTextField empleando el método Equals con el
parámetro (“”), es decir, en otras palabras las sentencias hacen lo siguiente. Si el
cuadro de texto esta vacio (IF (Cuadro de texto. Equals (“”))) entonces envía un
mensaje a través de la clase JOptionPane (Envía un todo tipo de mensajes a
pantalla) JOptionPane.showMessageDialog (null, "Indique la categoría del producto",
"ERROR", JOptionPane.ERROR_MESSAGE); mostrando el texto según
corresponda. Ya comprobado que hay texto en cada JTextField llama al método
Obtener Datos (Entrada Salida o Rupturas, según sea el botón.) posteriormente
asigna un valor al cuadro de texto Total (Contiene el producto del número de piezas
por caja y la cantidad de piezas que salen o entran a inventario) después crea un
objeto de la clase Modelo y ejecuta el método de Guardar enviándole los parámetros
obtenidos de la vista.
De la Figura 3.2.3.2.5.2.7
la variable
InsertarDatosEn usa el
método que inserta los
valores en la tabla
Entradas de la BD.
Figura 3.2.3.2.5.2.6 Botón Guardar - Validar


3.2.3.2.5.2.7 Método ObtenerDatosEntradas


3.2.3.2.5.2.6 Botón Guardar – Método Clase Modelo



Jesús Adriel Lazalde Martínez |
58

Después de ejecutar la inserción en la Base de Datos muestra en pantalla en
mensaje que anuncia que la acción se realizo exitosamente. La misma metodología
explicada es llevada a cabo por los botones Guardar de Rupturas, y de Salidas
ambos repitiendo cada comprobación, llamado de métodos, etc. Exceptuando que el
botón de Salidas realiza una verificación, misma que revisa que los valores que se
solicitan para retirar de almacén no sean mayores a los que están en existencia. Por
ello tiene las siguientes líneas de código.
Se crean 3 variables
que obtiene los datos
de existencia por los
métodos Obtener Datos
y el valor solicitado (Obtener Datos Piezas por Caja) pasando un valor a la clase
Modelo (Código de la Salida “codigoS”).
Que permitirá buscar entre los registros de la Base de datos a través de un código.
Una vez que los datos son traídos de la BD se comparan con los datos obtenidos de
la vista (número de piezas y cajas que desea retirar de almacén) de la siguiente
forma.
Si los valores en
existencias (piezas por
caja, número de cajas y
piezas sueltas) son
mayores o iguales que
los que se desean
retirar se accede a los

Métodos que restan los valores de salida a las existencias (ModificaDatos) dándole al
procedimiento el valor a restar y el código del registro que actualizará. Si la
comparación arroja un valor falso evalúa cada cuadro de texto uno por uno y si es
afirmativo (El valor solicitado es mayor a las existencias) envía un aviso donde se le
recuerda al usuario las piezas de las que dispone.
3.2.3.2.5.2.8 Botón Guardar – Compara Existencias vs Salidas


3.2.3.2.5.2.9 Botón Guardar – Compara Existencias vs Salidas II



Jesús Adriel Lazalde Martínez |
59



Empleando la clase JOptionPane para desplegar el mensaje que contiene lo
siguiente: “Verifique lo siguiente: Solo hay en existencia; producto solicitado + (valor
traído desde la BD) + titulo del cuadro de mensaje “ERROR” mostrando como
imagen el icono de error (JOptionPane. ERROR)”.





b. Botón Limpiar

Como se mencionó en el apartado Menú Principal el botón limpiar elimina el texto de
todos los JTextFields de cada grupo. Botón útil si en caso de que el cliente se
equivoque al introducir los datos. Para lograr lo ya dicho, se invoca los
procedimientos llamados Limpiar Entradas, Salidas y Rupturas. En los que se le
asigna a cada cuadro de texto el valor de “” mismo que en lenguaje Java significa
vacío a través del método SetText (parámetro). Donde el parámetro que se provee al
método es vacio, es decir, coloca vacío en cada cuadro de texto.







Figura 3.2.3.2.5.2.10 Botón Guardar – Comparaciones


Figura 3.2.3.2.5.2.11 Botón Guardar – Error


Figura 3.2.3.2.5.2.12 Botón Limpiar



Jesús Adriel Lazalde Martínez |
60

c. Recargar valores / Reiniciar Contador
En la primer versión de la aplicación Arteceramic’s – Inventario el programa no
contaba con esta opción, no obstante, fue necesario añadir un control que permitiera
reiniciar el contador de cada grupo y recargar el contenido de los JComboBoxes y
JTables de cada sección. Al igual se cumple este objetivo haciendo uso del
ActionPerformed del botón recargar.

d. Menú Control Productos y Menú Principal
Los eventos que son desatados por estos botones ocultan el formulario actual y
habilitan el JFrame con la opción set Visible (parámetro) donde el parámetro es igual
a true.

e. Buscar
El botón buscar forma parte de la pantalla Control de Productos, y verifica que el
código de control del artículo que se busca este registrado.
Si es correcta tal cuestión lo muestra en pantalla en caso contrario envía el siguiente
mensaje.
El evento Java que se ejecuta presionando el
botón buscar, este controlador verifica el
contenido del JTextField, lo válida e invoca el
procedimiento BuscarP.


Y ejecuta un ciclo que estará repitiendo dicha acción hasta recibir un código correcto.







Figura 3.2.3.2.5.2.13 Error – Código no encontrado


Figura 3.2.3.2.5.2.14 Botón – Buscar Producto




Jesús Adriel Lazalde Martínez |
61

f. Eliminar
El evento generado al presionar el botón Eliminar usa los procedimientos de la clase
Modelo, estas acciones son solicitadas en la ventana Control de Productos y Menú
Principal en la pestaña Eliminar Registros. A continuación se muestra las sentencias
que hacen funcionar el componente Swing Eliminar.















g. Calcular total

El componente Java Swing que multiplica los valores cantidad de piezas por caja y el
número de las cajas para obtener el total sumándole también las piezas sueltas.
Ejecuta el método Calcular Total cuando se da clic sobre el botón que lleva el mismo
nombre de la acción requerida.

h. Salir

Para cerrar la aplicación el evento ActionPerformed del botón Salir efectúa la
instrucción: System.exit (1).
Figura 3.2.3.2.5.2.15 Botón – Eliminar Producto



Figura 3.2.3.2.5.2.16 Botón – Eliminar Registro




Jesús Adriel Lazalde Martínez |
62


 Evento usado en los JComboBoxes
ItemStateChanged
Se le nombra de esta
forma al evento que se
genera al seleccionar una
opción de una lista
desplegable, de una lista
de radio, etc.

El evento que se trata en este punto al igual que el presentado en el punto anterior
(ActionPerformed) se genera automáticamente con el IDE Netbeans posicionándote
sobre el componente gráfico Java, presionando clic secundario y eligiendo el evento
seleccionado en la figura 3.2.3.2.5.2.17. Se hace uso del evento ItemStateChanged
en los JComboBoxes mencionados a continuación.

 JComboBox Código del producto de la pestaña entradas del menú principal.
 JComboBox Código de la salida.
 JComboBox Empaquetado por que carga el nombre de los encargados de
empaquetar los artículos de Arteceramic’s registrados en la tabla Entradas de
la BD.
 JComboBox Consultas
 JComboBox Eliminar Registros de Entradas, Rupturas y Salidas.
El procedimiento que se realiza al seleccionar alguna opción de las listas
desplegables es ejecutado con la intención de guardar la elección seleccionada a
través de un clic. Observe la figura 3.2.3.2.5.2.18 donde se muestra las
sentencias de los JComboBoxes.




Figura 3.2.3.2.5.2.17 ItemStateChanged



Figura 3.2.3.2.5.2.18 ItemStateChanged




Jesús Adriel Lazalde Martínez |
63

Las instrucciones mostradas en la imagen anterior realizan lo siguiente si el evento
de la lista desplegable (JComboBox) contiene alguna opción, entonces guarda dicha
selección en una variable tipo String (puede ser de cualquier tipo) por medio del
procedimiento de Java .getSelectedItem (). Todos los Combos usan esta sintaxis
únicamente cambia el nombre del componente y la variable que almacena el
resultado.
 Evento usado en los JTabbedPane

StateChanged
Los eventos Change ocurren
cuando el estado de un componente
cambia de estado.

Este evento es de gran utilidad si se desea cargar datos cada vez que un
componente cambie de estado, por ejemplo el componente JTabbedPane. De esta
forma se cargaran los métodos que se necesiten en cada pestaña. Este evento
asociado al JTabbedPane de la pantalla principal del sistema carga los siguientes
métodos.









En conclusión el controlador obtiene los valores de la vista (Tipo String, double, int,
etc.) y ejecuta comparaciones para invocar los métodos necesarios (cálculos
matemáticos, acciones con la base de datos, acciones con las interfaces, etc.), en la
mayoría de los casos empleando la sentencia if y/o empleando ciclos do while y
Figura 3.2.3.2.5.2.19 stateChanged



Figura 3.2.3.2.5.2.20 stateChanged métodos




Jesús Adriel Lazalde Martínez |
64

while. El controlador recibe también todas las interacciones de usuario con la interfaz
gráfica; clics, teclas presionadas, etc. Para dar seguimiento a cada una de ellas.

3.2.3.2.6 Modelo

La última parte por explicar de este patrón de diseño aplicado al proyecto DISEÑO,
IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS, es la que contiene toda la
lógica del proyecto, todos los métodos que hacen posible el funcionamiento del
sistema Arteceramic’s Inventario V.1.0. Para hacer más entendible la explicación de
la estructura del Modelo se presentaran los métodos que conforman esta clase en
función a su relación con las interfaces finales.

3.3.2.6.1 Modelo – Ventana Control de Productos

Los procedimientos que son invocados desde esta clase que pertenecen a la clase
Modelo son los siguientes:

El procedimiento mostrado en la
figura 3.2.3.2.6.1 emplea
sentencias SQL en este caso
con la finalidad de buscar en la
Base de Datos la existencia de
algún producto (Select * from).
Utiliza el botón Buscar de la
pantalla control de productos y
el botón eliminar de la misma
interfaz.


Modifica el registro
seleccionado (JTextField
código) y cambia el nombre
del producto por uno nuevo
Figura 3.2.3.2.6.2 Método Modificar



Figura 3.2.3.2.6.1 Método Buscar




Jesús Adriel Lazalde Martínez |
65

recibido por la vista a través del cuadro de texto JTfNomP.

El método Eliminar Producto es
utilizado en el botón Eliminar y
emplea también el método Buscar
Producto. Al igual que la mayoría de
todos los métodos de este apartado
utilizan sentencias SQL en este
caso delete a partir de un código.


3.3.2.6.2 Modelo – Ventana Menú Principal

Los botones de la pantalla principal del proyecto emplean los siguientes métodos de
la clase Modelo:
Nota: La mayoría de ellos a su vez hacen uso de sentencias SQL.

 Para el sistema
Arteceramic’s – Inventario
era de suma importancia
tener un método que
asigne la fecha a cada
reporte por lo tanto se generó este procedimiento que llama a la clase Java
Date. Y a partir de la sintaxis de la figura 3.2.3.2.6.2.1 asigna la fecha a un
cuadro de texto.

 El elemento JTabbedPane se sirve de los procedimientos que cargan los
valores de cierta columna de las tablas de la BD en un JComboBox, en las
JTables, en los JTextFields, etc. A continuación se presenta la sentencia
general empleada para cargar los valores en las listas desplegables y en las
tablas de la pestaña consultas.
En orden descendente de la figura 3.2.3.2.6.2.2:
Figura 3.2.3.2.6.3 Método Eliminar



Figura 3.2.3.2.6.2.1 Método Fecha




Jesús Adriel Lazalde Martínez |
66





1) Usar la conexión a la BD de la clase Conexión llamando el método
getConnection ().
2) Usar la variable que almacena la sintaxis (select).
3) Ejecutar la instrucción.
4) Agregar el contenido de cada registro a través de un ciclo while hasta que no
haya más registros por añadir.
5) Encerrar la sentencia en un Try catch para capturar las excepciones.
 Los métodos que asignan un valor “” (vacío) a cada JTextField y que son
destinados para ir en los botones Limpiar cuentan con el siguiente código.






 Las Tablas de las consultas cargan sus datos por el método Llenar Tabla.

Donde se primero se crea un objeto tipo DefaultTableModel (permite explotar toda
la funcionalidad de una tabla Swing), a la tabla se le asigna el modelo, en otras
palabras se crea una variable y se asigna a una tabla de la que se desea explotar su
funcionalidad.
Figura 3.2.3.2.6.2.2 Método Llenar Combos



Figura 3.2.3.2.6.2.3 Método Limpiar




Jesús Adriel Lazalde Martínez |
67















Se agrega cada columna en función a los resultados que se deseen mostrar. Se
instancia la clase conexión y se obtiene la misma a la BD, empleando un ciclo while
que compara el objeto.
Tipo ResultSet (contiene el resultado de las transacciones con la BD) y mientras
haya un registro mas agregara el valor a cada columna. Finalmente se cierra la
conexión a la BD y se envía un mensaje a consola (Consulta correcta o no exitosa).

 Métodos para cargar los Reportes.

Nota: la clase Reportes también forma parte del modelo del patrón de diseño MVC
sin embargo es una clase externa a la clase con el mismo nombre. Con el motivo de
mantener un orden entre el código y separar métodos por funcionalidad y en caso de
presentarse un error poder localizarlo rápidamente. A continuación se muestra el
código para cargar cada reporte.
Figura 4.2.4.6 Método Llenar tablas



Figura 3.2.3.2.6.2.4 Método Llenar tablas




Jesús Adriel Lazalde Martínez |
68






















Lo único que cambia en el método para cargar cada reporte es que en el caso de los
reportes que reciben algún parámetro para filtrar la información el método recibe un
parámetro. Y emplea el mismo por la variable tipo Map.



También la variable tipo String que contiene la dirección del reporte cambia.



Nota: Las instrucciones de esta clase lo único que logran es llamar el reporte, darle
un parámetro y un asignarle un titulo al reporte pero no lo crea, para crearlo se sigue
el procedimiento que se detalla en el siguiente apartado.

 Métodos de Inserción
La clase Modelo concentra en su mayoría los procedimientos que guardan, eliminan
y consultan datos desde la BD.
Figura 3.2.3.2.6.2.5 Cargar Reportes



Figura 3.2.3.2.6.2.6 Parámetro Map



Figura 3.2.3.2.6.2.7 Master




Jesús Adriel Lazalde Martínez |
69















Los métodos de inserción reciben los valores desde la clase controladora y a través
de una variable tipo PreparedStatement (ps) misma que emplea una variable tipo
String (En este caso insertaEn) la cual contiene la sentencia SQL y es enviada
como parámetro de la clase PreparedStatement. El objeto creado a partir de la clase
previamente mencionada emplea el método setString, setInt, setDouble, para
asignar los valores recibidos a cada columna de la tabla, es por eso que en la Figura
3.2.3.2.6.2.8 la variable ps al invocar el método que asigna el valor pasa dos
parámetros; el primero representa el numero de la columna y el segundo es el valor
que recibirá la tabla en el índice señalado. Después de cargar los datos se ejecuta el
Query guardando el valor obtenido (falso o verdadero, en otras palabras Query
exitoso o fallido) mismo que será útil para imprimir el mensaje; “Datos Guardados
Correctamente” o para comunicar el motivo del error.

 Métodos de Consulta
Los métodos con sentencias SQL son muy semejantes entre sí, la mayoría de las
veces lo que cambia es la instrucción (Select, delete, update, insert, etc.).
Figura 3.2.3.2.6.2.8 Método Inserta



Figura 4.2.4.8 Master




Jesús Adriel Lazalde Martínez |
70

Por ejemplo los procedimientos que consultan los datos para compararlos, para
imprimirlos en un JComboBox, en una JTable lo hacen de la siguiente manera.

Con respecto a la Figura
3.2.3.2.6.2.9 en orden
descendente.

1. El método recibe una
variable (cod) tipo String
para efectuar la consulta
de un registro en
específico.
2. Se crea una variable tipo ResultSet, y se hará uso de la misma para ejecutar
el Query y obtener el valor que se desea consultar.
3. La variable tipo Connection llama el procedimiento para obtener la conexión
(getConnection ()) de la clase Conexión.
4. Se prepara la instrucción SQL para obtener un campo de la columna noCajas
donde el código de ese registro sea igual al que recibe el método
ConsultaDatos.
5. Se realiza la consulta y por medio de un ciclo while se le pasa el valor de
dicho campo a la variable valorMod.
6. Una vez terminado el ciclo se cierra la conexión y se cerrará también el uso de
la variable de de la sentencia SQL.
7. Por último ya logrado el acometido se regresará el valor obtenido (valorMod)
para hacer uso del mismo en otra clase del mismo proyecto.

 Métodos Modificar

Los métodos Modificar son los encargados de restar los valores de cada salida a los
correspondientes de cada entrada.
Figura 3.2.3.2.6.2.8 Método Consulta



Figura 4.2.4.8 Master




Jesús Adriel Lazalde Martínez |
71








En todos los procedimientos de este tipo se reciben dos variables la primera es tipo
String e indica el código de control de la entrada a la que se le van a restar los
valores; que son el producto de la cantidad de cajas que salen del inventario por el
número de piezas por caja, dando como resultado el total de piezas que se van a
restar de las existencias. Para realizar el procedimiento previamente enunciado se
ejecutan las posteriores instrucciones:
1. Recibe uno o dos parámetro según corresponda (Entradas o Rupturas).
2. Se crea una variable tipo boolean misma que informará a la vista el resultado
de la ejecución del método (exitoso o fallido).
3. Se crea una variable tipo conexión misma que empleará el método
getConnection () de la clase Conexión (establece la comunicación con la
Base de Datos).
4. Empleando la sentencia PreparedStatement se almacena una instrucción
SQL, en el caso exclusivo de este método, se utiliza la cláusula update y
where para restar el valor que proviene de la vista y pasa por el controlador a
un registro señalado por un código (en la figura 3.2.3.2.6.2.9 la variable cod).
 Métodos Eliminar
Para finalizar la exposición de los métodos con sentencias SQL correspondientes a
la clase Modelo, se encuentran los procedimientos que permiten al usuario final
elegir un registro de las tablas Entradas, Rupturas y Salidas y eliminarlo. Este
método a diferencia de los anteriores es un método genérico, dicho en otras
palabras, no tiene una aplicación exclusiva para cierta tabla o registro, sino que
Figura 3.2.3.2.6.2.9 Método Modificar



Figura 4.2.4.8 Master




Jesús Adriel Lazalde Martínez |
72

gracias a que recibe dos parámetros de los cuales uno especifica el nombre de la
tabla y el otro el código del registro que se eliminará.









De la misma manera que todos los métodos que se relacionan con la Base de Datos
es necesario emplear una variable que retorne un mensaje a la vista. Asimismo estas
instrucciones siempre estarán envueltas entre un try y un catch para capturar todo
tipo de error que esta fuera del alcance del programador. También siempre será
necesario invocar el método que obtiene la conexión a la BD y almacenar la
sentencia SQL en el PreparedStatement y dependiendo de la funcionalidad de cada
método esta instrucción va a cambiar (update, select, delete, etc.). Enseguida se
ejecuta dicha línea de código y según sea el resultado (falso o verdadero) se retorna
a la variable que es evaluada por el controlador para enviar a la vista el mensaje
pertinente. Finalmente se cierra la clausula SQL y la conexión a la BD. En la imagen
mostrada (Figura 3.2.3.2.6.2.10) el código SQL emplea la clausula delete para
eliminar un registro de cualquier tabla, a partir de un identificador dado (cod).
3.3.2.6.3 Modelo – Ventana Menú Principal – Clase Conexión

Como se menciono anteriormente los métodos que se relacionan con la Base de
Datos no podrían ser usados sin haber antes una conexión a la misma. Hay quienes
consideran más cómodo o más seguro utilizar las líneas de código que inician la
conexión en cada método que se requiera extraer algún dato de la BD, sin embargo y
gracias a lo práctico del lenguaje Java es mucho mejor establecer una clase que
realice tal función y mandar a llamar el método que obtiene la conexión.
Figura 3.2.3.2.6.2.10 Método Eliminar




Jesús Adriel Lazalde Martínez |
73

En esta clase se importaron los paquetes Java: Connection, Driver Manager,
SQLException, y de igual forma el paquete Modelo perteneciente al mismo proyecto.

Para lograr la conexión a la BD es necesario cargar un driver que empleará Java
para comunicarse con la BD MySQL, mismo que será diferente dependiendo el
manejador de Base de Datos que se use. Para capturar toda clase de excepciones
se rodea las instrucciones para cargar el driver con un try y un catch, si el resultado
de la carga del controlador que inicia, mantiene y cierra la comunicación con MySQL
es fallida enviará un mensaje enunciado el error, en caso contrario establece la
conexión enviando los siguientes datos:








a. Dirección física del servidor de BD.
b. Puerto.
c. Nombre de la Base de Datos.
d. Usuario y contraseña.

Figura 3.2.3.2.6.3.1 Clase Conexión




Jesús Adriel Lazalde Martínez |
74


3.3.2.6.4 Modelo – Ventana Menú Principal - Creación de Reportes

Existen dos formas de crear reportes. El software libre iReport-4.5.1 el cual se puede
obtener en la siguiente dirección: http://jasperforge.org/projects/ireport solo es
necesario registrarse y en seguida se habilitan los enlaces para descargar la
aplicación. Agregándole a su ventaja (software libre) los creadores de esta magnífica
herramienta le dieron una interfaz muy intuitiva y fácil para trabajar, a continuación se
muestra el área de trabajo de iReport-4.5.1.


Por medio de esta herramienta se pueden generar los reportes. No obstante para
muchos programadores les es más cómodo, agregar un plugin (Complemento
externo) al IDE Netbeans y de esta forma generar los reportes en la misma interfaz
del IDE. Los plugins que modifican la interfaz de la aplicación para generar el sistema
son formato .nbm.
Figura 3.2.3.2.6.4.1 iReport-4.5.1




Jesús Adriel Lazalde Martínez |
75





Nota: El reporte de este proyecto no contiene las instrucciones para agregar los
componentes a Netbeans 7.1.
Ya finalizada la instalación de los componentes el IDE deberá mostrar las siguientes
modificaciones en su interfaz (señaladas con una línea).


A continuación se mostrará el proceso para crear los reportes, mismo que forman
parte del Modelo. También será necesario agregar las siguientes librerías
JasperReport (Figura 3.2.3.2.6.4.3).

Figura 3.2.3.2.6.4.2 Plugins



Figura 3.2.3.2.6.4.3 JasperReport en Netbeans




Jesús Adriel Lazalde Martínez |
76

Para crear un reporte en Netbeans y JasperReport se sigue los pasos enumerados a
continuación:

1. Seleccionar el paquete
principal del proyecto y presionar
clic secundario, elegir la opción
Report Wizard.
2. Se iniciará el Asistente
para la creación del reporte. El
primer paso es colocar un
nombre para el reporte. Es
necesario mencionar que no se
debe borrar la extensión que por
default asigna el asistente (jrxml).
3. En seguida localizaremos
la conexión a la base de datos, si
ya había sido creada previamente
solo bastará con seleccionarla, si
no fuese así será necesario
realizar una. En la cual se
determinan los siguientes parámetros:
A. Dirección de la base de datos
B. Usuario
C. Contraseña
D. Nombre de la base de Datos
E. Puerto
Mismo que se mencionaron en el apartado anterior.
4. El siguiente punto consiste en Diseñar el Query, que gracias a la herramienta
gráfica del reportador permite realizar select, update, delete, empleando
where, order by, asociando tablas, etc.

Figura 3.2.3.2.6.4.4 Librerías JasperReport



Jesús Adriel Lazalde Martínez |
77















5. Al presionar OK en la pantalla para diseñar las instrucciones SQL nos
generará el código correspondiente a los elementos que hayan sido
seleccionados. También se puede modificar el código generado según se
requiera.













Figura 3.2.3.2.6.4.4 Herramienta JasperReport


Figura 3.2.3.2.6.4.5 Query



Jesús Adriel Lazalde Martínez |
78

También es posible cargar un Query previamente diseñado y/o guardarlo.
6. La siguiente pantalla
del asistente ofrece la
posibilidad de agrupar
los datos que se
cargaran. En otras
palabras si la
información que se
mostrará debe ser
presentada por
código, por nombre u
otro campo.


Esta sección provee las opciones para que permitan mostrar la información
por grupos.
7. Finalmente el asistente nos muestra un mensaje notificando que se ha
generado el reporte exitosamente. Enseguida la se cargará el Reporte pero
será necesario darle un poco de diseño si así se desea. Debido a que los
nombres de cada columna que se mostrará tiene un nombre así: campo.tabla,
por ejemplo; código. Entradas.


Figura 3.2.3.2.6.4.6 Agrupar


Figura 3.2.3.2.6.4.7 Editar Reporte



Jesús Adriel Lazalde Martínez |
79

Gracias a lo amigable del editor aún sin tener profundos conocimientos sobre
JasperReport se le puede dar el diseño que se desee.
Inclusive agregar alguna imagen, cambiar la orientación de la página, el tipo de
fuente, etc.

8. Para los reportes que reciben un parámetro será necesario añadir una
comparación en el diseñador de sentencias SQL (Señalado con una línea).


Además de esto también se deberá agregar un parámetro en las propiedades del
reporte. Presionando clic secundario sobre la categoría con el mismo nombre y
seleccionando Add Parameter y asignándole el nombre que
se coloco en el Query.

Para pre visualizar el reporte se presiona el botón Preview de
esa forma se irá editando el reporte hasta quedar listo.
Figura 3.2.3.2.6.4.8 Parámetro


Figura 3.2.3.2.6.4.9 Agregar Parámetro



Jesús Adriel Lazalde Martínez |
80



De esta forma se cierra el flujo del patrón de Diseño MVC, cubriendo todos los
aspectos más sobresalientes de la vista; ventanas, mensajes, botones, campos,
acciones, etc. De el controlador, métodos para obtener el texto de cada campo,
comparaciones If para decidir cómo tratar cada dato, validaciones para cada campo
de texto, o área de texto, eventos de botones, paneles, JTextFields. Del Modelo
conexión a la base de datos, método de inserción, consulta, actualización, y
eliminación de registros, métodos para cargar reportes, cómo se crearon los mismos,
librerías, drivers, etc. Aunque hay muchos datos que no se mencionan en este
reporte se presenta la parte principal que hace funcionar la aplicación Arteceramic’s
– Inventario V.1.0.

Las fases del proyecto desde su planeación se detallan en la sección Anexos,
misma en la que se muestran todos documentos de administración del proyecto.

Es de suma utilidad para el lector revisar dicha sección para entender porque se hizo
uso de la metodología empleada, los estándares a los que se alineo el proyecto, las
fechas, los entregables, el alcance, etc.

3.4 Entrega

La fase ante final del procedimiento de administración del proyecto comprende la
entrega del producto terminado. Una vez realizadas las pruebas pertinentes, el
software es liberado, es decir, está listo para ser instalado en los ordenadores del
cliente. El Director General de Arteceramic’s revisó que el sistema entregado
cumpliera con los criterios de aceptación (ver Anexo IV-Enunciado del alcance del
Proyecto.) para poder de esta forma oficializar el cierre del proyecto. Para ello el
Administrador del proyecto solicita la firma del cliente en el documento de aceptación
(ver Anexo XI- Documento de Aceptación). Ya obtenida la aprobación se reúnen las
lecciones aprendidas y se hace cierre oficial del proyecto.

Jesús Adriel Lazalde Martínez |
81





4.1 Comprobación de hipótesis

Gracias a la gran cantidad de datos que se pueden administrar en función a las
necesidades y a la forma tan flexible para presentar la información al usuario, las
tecnologías de la información (en las siguientes categorías: almacenaje,
procesamiento, presentación, captura, entre otras.) han venido a superar toda
herramienta y técnica para administrar los datos generados en los procesos de las
empresas. De esta manera podemos concluir que se responde a la hipótesis
mencionada en el apartado 1.2 de manera afirmativa.

4.2 Cumplimiento de objetivos

Al concluir el presente proyecto se logró proveer al Director General de Arteceramic’s
una herramienta flexible, fácil de usar, que puede ser instalada en equipos con bajos
recursos, que le permitirá capturar y almacenar de forma correcta los datos que se
generan por los movimientos del inventario y que le presentará los mismos de forma
clara y ordenada en reportes en los formatos más utilizados, agrupando los valores
en diferentes categorías para darles un sentido y que sirvan como sustento para
tomar correctamente las decisiones que determinen el rumbo del negocio.

4.3 Resultados del proyecto

La aplicación de este proyecto en la empresa Arteceramic’s S.A. de C.V. generará
los siguientes resultados:

 Correcta administración de la información de la organización, almacenada en
electrónico, agrupada por categorías y fechas.
 Toma asertiva de decisiones.
CAPÍTULO 4
CONCLUSIONES






Jesús Adriel Lazalde Martínez |
82

 Orden en la información impresa, misma que podrá ser organizada por fechas,
por responsables, por hora, etc. Permitiendo al Director General de
Arteceramic’s corregir la mala administración de la información impresa.
 Presentación de la información en forma clara y concisa.
 Presentación de la información en base a lo que el usuario final desea ver,
debido a que la información que el recibía antes de emplear el software era de
poca utilidad para él y muchos de los campos impresos en los reportes que
estudiaba no permitían tomar ninguna decisión sustentada.
 El sistema permitirá al Gerente de dicha institución conocer el desempeño de
sus trabajadores, quien reincide en fallas, quien trabaja más, etc.
 La aplicación proveerá al usuario conocer cuánto tiempo tarda un producto en
ser vendido, quien compra más dicho artículo, la ganancia que representa en
moneda nacional.
 Gracias a lo robusto del lenguaje Java la aplicación protege los datos de la
empresa.
 El manejador de base de datos permitirá presentar la información como la
requiera el cliente.
 El dueño del negocio podrá tomar una decisión correcta sobre sus productos,
cuando descontinuarlos, a quien ofrecérselos, cuantos producir, etc.

Las pantallas de la aplicación Arteceramic’s – Inventario V.1.0. Se presentan a lo
largo de todo el apartado 3.2.3, mismas que se muestran como evidencia del
resultado de la metodología, los mecanismos y herramientas empleadas en el
proyecto “DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS”.

4.4 Contribuciones

Gracias a lo útil que fue el proyecto desarrollado se planea las siguientes fases: del
proyecto “Sistema de Control Arteceramic’s”, el cual tiene como objetivo usar las
tecnologías de la información para incrementar la administración del negocio e
incrementar el rendimiento económico del mismo. Se definió que el siguiente modulo
consistirá en desarrollar una aplicación de escritorio basada en la tecnología JSE

Jesús Adriel Lazalde Martínez |
83

(Java Starndar Edition) para controlar el proceso de producción y concluyendo dicho
módulo se procederá a crear un punto de venta para la tienda del mismo negocio.
Se recomienda instalar CCleaner o Tune UP para mantener dar mantenimiento al
sistema operativo y así garantizar un correcto funcionamiento de Arteceramic’s –
Inventario V1.0. Además se recomienda también mantener actualizada la Maquina
virtual de Java.




Jesús Adriel Lazalde Martínez |
84


S. Allamaraju; C. Beust; J. Davies; T. Jeweli, R. Johnson; A. Longshaw; R. Nagappa;
(2002) Programación Java Server con J2EE. España. Anaya Multimedia.

Francisco Javier Ceballos, (2008) Java 2: Curso de Programación. México. Editorial
RA-MA.

UNAV / UNAV BASES DE DATOS DOCUMENTALES: ESTRUCTURA Y
PRINCIPIOS DE USO, www.unav.es/dpp/documentacion/proteger/lryunta.pdf (Última
visita 20 de Marzo de 2012)

GESTORES DE BASES DE DATOS
http://wwwdi.ujaen.es/~barranco/publico/ofimatica/tema7.pdf (Última visita 20 de
Marzo

ORACLE
http://docs.oracle.com/javase/tutorial/jdbc/index.html (Última visita 20 de Marzo de
2012)
http://docs.oracle.com/javase/tutorial/uiswing/components/textfield.html
http://www.codexion.com/tutorialesjava/java/concepts/object.html (Última visita 20 de
Marzo de 2012)

DEFINICIÓN DE CLASES
José Antonio González Seco
http://www.devjoker.com/contenidos/C/130/Definici%C3%B3n-de-clases.aspx (Última
visita 20 de Marzo de 2012)



BIBLIOGRAFÍA






Jesús Adriel Lazalde Martínez |
85


Anexo I - Project Charter
Project Charter
Datos del proyecto.
Nombre: DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS.
Id: 001-JLM
Descripción.
Construir un sistema informático de escritorio, basado en la tecnología JSE (Java
Standar Edition) que permita al Director General de la empresa Arteceramic’s S.A. de
C.V. administrar toda la información generada en el proceso de almacenaje de
productos de su negocio, así como la presentación de la misma de forma clara y
concisa a través de filtros que provean las bases para tomar decisiones exitosas
Justificación.
La información dentro de una organización, negocio o asociación es algo de vital
importancia para definir el rumbo de la misma, con la información sabremos en qué
momento cambiar las estrategias, que parte modificar, a quién contratar, que
productos vender, precios, etc. Por lo tanto es indispensable tener una metodología
para administrar la información de la empresa, y que mejor que las tecnologías de la
información, mismas que pueden procesar enormes cantidades de datos y dar como
resultado información útil para el dueño, encargado o director del negocio.


ANEXOS






Jesús Adriel Lazalde Martínez |
86

Objetivo del proyecto.
El objetivo general del presente proyecto consiste en proveer al Director General de
Arteceramic’s una herramienta basada en las tecnologías de la información (Sistema
de control de información) que le permita conocer en tiempo real la cantidad de
piezas que han sido producidas exitosamente, las que no se han logrado fabricar
correctamente, las piezas que ha salido a través de una venta, quién es el
responsable de tal movimiento financiero, qué piezas tardan más en salir, cuáles son
las más vendidas, que empleado es él que está involucrado en más ocasiones con
rupturas o mermas dentro del área de producción, cual es el valor monetario de la
existencia en inventario, entre otros datos más.
Una vez creado el software de administración del Inventario, el proyecto reside
también en la implementación del mismo en uno o varios ordenadores según se
indique por el Director General.
Para ello será necesario instalar paquetería que permita el correcto funcionamiento
del Sistema, lo mismo para aplicaciones de mantenimiento a la computadora con el
objetivo de garantizar un rendimiento óptimo del sistema.
Riesgos.
- Exceder el tiempo de desarrollo.
- Falta de capacidad para la implantación del sistema.
- Falta de conocimiento de las técnicas de desarrollo.
- Falta de claridad en los requerimientos por parte del cliente.
Requerimientos iníciales.
- La información procesada debe ser presentada en reportes formato PDF.
- Los reportes deberán contener la información correspondiente de cada
entrada, salida y rupturas (Los campos de cada reporte se definen en el
documento de Requerimientos.).

Jesús Adriel Lazalde Martínez |
87

- La aplicación deberá ser desarrolla en Software libre.
- El programa debe ser sencillo y fácil de usar.
- El sistema deberá ser apto para instalar en ordenadores con bajos recursos
de hardware.
Administrador del proyecto.
T.S.U. Jesús Adriel Lazalde Martínez
Recursos Pre asignados.
No se asignó ningún recurso de ninguna clase para iniciar, implementar o finalizar el
actual proyecto.
Stakeholders (Involucrados).
Administrador del proyecto: T.S.U. Jesús Adriel Lazalde Martínez.
Sponsor: L.A. JOSÉ TALAVERA TAPIA
Clientes: L.A. JOSÉ TALAVERA TAPIA (Director General de Arteceramic’s S.A.
de C.V.).
Asesora Académica: L.I. LILIA SÁNCHEZ BILLARES.
Trabajadores de la empresa (Encargado de almacén).

L.A. JOSÉ TALAVERA TAPIA
Puesto: Sponsor
Empresa: Arteceramic’s S.A. de C.V.


T.S.U. en R.T. Jesús Adriel Lazalde
Martínez
Puesto: Administrador de Proyecto


Jesús Adriel Lazalde Martínez | 89

Anexo II-Matriz de Interesados
Matriz de Interesados


Datos del proyecto.
Nombre: DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS
Id: 001-JLM
Introducción
Este documento tiene la finalidad de describir los diferentes tipos o/y grupos de interesados y que tienen algún impacto
para la ejecución del proyecto.


Tabulador de participación.

Término Descripción
SI Persona que interviene directamente en el proyecto
NO Persona que no interviene directamente en el proyecto




Jesús Adriel Lazalde Martínez |
90

Tabulador de posturas.

Término Descripción
Apoya Persona que está a favor del proyecto
Neutro Persona que no está ni a favor ni en contra del proyecto
Bloquea Persona que está en contra del proyecto

Tabulador de influencias.

Término Descripción
Alta Persona que influye mucho en el proyecto
Moderada Persona que influye un poco en el proyecto
Baja Persona que influye muy poco en el proyecto



Jesús Adriel Lazalde Martínez |
91

MATRIZ DE IDENTIFICACIÓN DE INTERESADOS
Interesados. Participa Postura Influencia Expectativas Estrategia a seguir
Internos
Sponsor. Si Apoya. Alta.
Realizar el proyecto
exitosamente.
Revisar que todo se
entregue a tiempo.
Líder de proyecto Si Apoya. Alta.
Realizar el proyecto
exitosamente.
Apegarse a todos los
lineamientos que marca el
PMBOK
Clientes
Cliente No Apoya. Alta.
Concluir con éxito el proyecto y
que el producto cumpla el
objetivo requerido.
Verificar que el producto
cubra todos los
requerimientos
planteados.
Competencia
Otras empresas
diseñadoras de
software
No Bloquea. Baja. Obtener el proyecto para ellos.
Mantenernos cercanos al
cliente para monitorear su
entusiasmo y percepción
del proyecto
Externos
Clientes del
cliente
No Neutro Moderada Tener un mejor servicio
Diseñar un sistema fácil
de usar.


Jesús Adriel Lazalde Martínez | 92

Anexo III-Documento Oficial de Requerimientos
Documento Oficial de
Requerimientos

Datos del proyecto.

Nombre: DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS
Id: 001-JLM
Introducción
Este documento tiene la finalidad de describir detalladamente los requerimientos
para el producto de software que se desarrollará en este proyecto.


No. Descripción Prioridad
R1.1 Ventana Login

Para acceder al sistema de Inventarios será necesario
emplear un usuario y una contraseña previamente
establecida por el cliente y el programador. De esta
forma nadie podrá acceder al menú principal del
programa sin un usuario y una contraseña.
Nota: Solo se definirá el usuario administrador y su
respectiva contraseña. Los demás usuarios a dar de
alta no corresponderán a la primera versión de esta
aplicación.
Alta
R1.2 Ventana Login

La ventana de inicio de sesión deberá validar los datos
y enviar los mensajes siguientes:
Datos Incorrectos (Sí el usuario o la contraseña son
erróneas)
Introduzca contraseña (Sí el campo contraseña se
encuentra vacio).
Introduzca usuario (Sí el campo usuario se encuentra
vacio.)

Alta
R 2.1 Ventana Menú Principal

El sistema debe estar integrado por una pantalla
Alta

Jesús Adriel Lazalde Martínez |
93

principal que contenga las siguientes secciones con los
campos enunciados a continuación:



1. Entradas:
a) Código de entrada.
b) Código del producto (relacionado con la
lista de control de productos).
c) Nombre del producto.
d) Categoría.
e) Fecha de Elaboración.
f) Empaquetado por.
g) Piezas por caja.
h) Número de cajas.
i) Piezas sueltas.
j) Status.
k) Total de piezas.
l) Precio por pieza.
m) Observaciones.

2. Rupturas o mermas.
a) Código
b) Nombre de la pieza
c) Cantidad
d) Responsable
e) Precio por pieza.
f) Observaciones.

3. Salidas
a) Código de Entrada (Correspondiente a los
productos en existencia (Entradas)).
b) Nombre del producto.

Jesús Adriel Lazalde Martínez |
94

c) Fecha de salida.
d) Empaquetado por.
e) Número de piezas.
f) Número de cajas.
g) Precio por pieza.
h) Piezas totales.
i) Piezas sueltas utilizadas.
j) Precio total.
k) Status.
l) Cliente.
m) Número de factura o nota.
n) Observaciones.
4. Consultas
 Esta sección debe tener control que
permita elegir entre las tres tablas de
datos principales. Y al seleccionar cada
opción desplegar los datos almacenados
en la base de datos de cada tabla.
5. Eliminar Registros
 Este apartado debe permitir al usuario
seleccionar el código de control de
cualquier entrada, salida, o ruptura u
eliminarla.
6. Reportes
 La aplicación deberá generar los
siguientes reportes agrupado la
información que se solicita enseguida:
o Reporte de existencias (Entradas).
o Movimientos en inventario
(entradas y salidas por fechas).
o Piezas por categoría

Jesús Adriel Lazalde Martínez |
95

o Rupturas por fecha.
o Lista de productos.
o Salidas por fecha.
o Ventas por clientes.
o Piezas vendidas
o Ventas por fechas
o Empaquetadores
o Venta de piezas por clientes.

R 2.2 Ventana Menú Principal

Los campos tipo numéricos, deberán realizar una
validación de caracteres y únicamente permitir números.
Medio
R 2.3 Ventana Menú Principal

La ventana actual deberá contener los siguiente
botones en cada uno de los grupos previamente
mencionados:
 Nuevo (deberá generar un código de control
diferente para cada nuevo registro).
 Limpiar (se empleará para borrar el contenido de
cada cuadro de texto).
 Guardar (validará los datos introducidos y
enseguida los guardará en la Base de Datos.)

Alto
R 3.1 Ventana Control de Productos

La ventana mencionada servirá como medio para
registrar todos los productos existentes.
Alto
R 3.2 Ventana Control de Productos

Esta ventana deberá realizar validaciones del texto
introducido.
Medio
R 3.3 Ventana Control de Productos

No se podrá agregar algún producto sí éste no tiene un
código de control.
Alto


Jesús Adriel Lazalde Martínez |
96

Anexo IV-Enunciado del alcance del Proyecto.

Enunciado del Alcance del
Proyecto
Datos del proyecto.

Nombre: DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS
Id: 001-JLM
Introducción

Este documento tiene la finalidad de describir y especificar a detalle el alcance del
proyecto.
Descripción del Alcance del Producto.

Optimizar el proceso de administración de la información que se genera en el área de
almacén; entradas, salidas, productos vendidos, productos rotos, responsables, etc.
A través de un sistema informático basado en cualquier lenguaje libre,
específicamente para escritorio. Mismo que deberá ser implementado en los
ordenadores indicados.

Criterios de Aceptación.

 El sistema Arteceramic’s – Inventario V.1.0 debe ser fácil de usar para
cualquiera que acceda a él.
 El sistema debe funcionar en cualquier PC del negocio.
 El sistema se debe realizar con software que no implique el pago de licencias.




Jesús Adriel Lazalde Martínez |
97

Exclusiones del Proyecto.
 No se realizará capacitación sobre el uso del sistema.
Restricciones del Proyecto.
- El proyecto no tendrá costo para el cliente.
- Las modificaciones que se deseen agregar a la versión 1.0 tendrán un costo.
Supuestos del Proyecto.

- El cliente proporcionará un catálogo de productos.
- El cliente facilitará la información al equipo de desarrollo.

Jesús Adriel Lazalde Martínez | 98

Anexo V-WBS

WBS (Work Break Structure)

Datos del proyecto.

Nombre: DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS
Id: 001-JLM

Introducción: Presenta la estructura jerárquica de cada fase del proyecto con sus respectivos entregables.



Jesús Adriel Lazalde Martínez |
99

Anexo VI-Diccionario de la WBS
Diccionario WBS

Datos del proyecto.

Nombre: DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS
Id: 001-JLM
Introducción
Este documento expone una descripción más detallada de los componentes de la
WBS.

Fase de Inicio

 Definir el Proyecto
o Realizar el Proyect Charter (PCh)
o Validar el PCh
 Definir el Alcance
o Crear el Enunciado del Alcance
o Corregir el enunciado del alcance
o Validar el Alcance
 Estimación del Proyecto
o Realizar la estimación
o Aprobar la estimación
 Aprobar el proyecto
o Validar las líneas base de alcance y estimación.
Fase de requerimientos

 Levantamiento de requerimientos
o Reunir al cliente con el programador
o Llevar a cabo la entrevista
o Generar el DOR (Documento Oficial de Requerimientos)
o Corregir el DOR

Jesús Adriel Lazalde Martínez |
100

 Aprobación del DOR

o Validar el Documento Oficial de Requerimientos con firma de todos
los involucrados en el proyecto.

Fase de Análisis y Diseño

 Diseño de la Arquitectura general
o Elegir modelo de Diseño
o Diseñar la vista (pantalla Entradas, Salidas, Consultas, Eliminar
Registros, Reportes, Control de productos, Vista Inicio de sesión)
o Diseñar la funcionalidad de cada controlador según la función que va
a realizar
o Validar el modelo y los diseños creados
o Hacer las modificaciones pertinentes
o Aprobar el Diseño del sistema

 Diseño de la Base de Datos
o Elegir el manejador de Base de Datos
o Diseñar las tablas, campos y relaciones
Fase de Implementación

 Codificación
o Vista
 Codificar la ventanas (JFrames) Menú Principal, Control de
Productos, login.
 Crear el componente principal (JPanel)
 Crear las pestañas Entradas, salidas, Consultas, Eliminar
Registros y Generar Reportes.
 Crear los métodos de validación de caracteres
 Crear las JTables de la pestaña consultas
 Agregar los controladores JButton
 Agregar los componentes JLabel

Jesús Adriel Lazalde Martínez |
101

o Controlador
 Codificar los métodos Get y Set
 Agregar funcionalidad a los botones, cuadros de texto, tablas,
etc. Para enviar los datos a la clase Modelo de las ventanas
Menú principal en las pestañas Entradas, salidas, Consultas,
Eliminar Registros y Generar Reportes.
 Crear los métodos para encapsular los valores.
 Definir el flujo de los datos.
o Modelo
 Crear los métodos de inserción
 Crear los métodos de consultas
 Crear los métodos eliminación de datos
 Crear los métodos actualización
 Generar los métodos para realizar los reportes
 Generar los métodos para cargar los reportes
 Realizar los métodos para tratar los datos (cálculos
matemáticos)
 Generar los métodos de mensajes que se mostrarán en
pantalla
 Enlazar la aplicación con la Base de Datos
 Cargar los drivers para la conexión
 Crear la clase conexión
 Cargar los drivers para crear los reportes
 Instalar plugins JasperReport
 Generar los scripts para instalar la Base de Datos
 Generar el ejecutable del sistema
Fase de Pruebas

 Pruebas
o Aplicar el plan de pruebas a interfaces
o Aplicar pruebas con diferentes datos
o Generar reportes

Jesús Adriel Lazalde Martínez |
102

o Probar la aplicación en computadoras de bajos recursos en hardware
Fase de Cierre


 Liberar el Software
o Instalar el sistema en los ordenadores de Arteceramic’s
 Aprobar el Sistema

o El director general deberá aprobar el funcionamiento del sistema.
 Cierre Oficial del Proyecto

o Generar el documento oficial de cierre del proyecto donde el Gerente
General queda conforme del producto que se le ha entregado.





























Jesús Adriel Lazalde Martínez |
103

Anexo VII-Plan de Administración del Proyecto

Plan de Administración del
Proyecto

Datos del proyecto.
Nombre: DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS
Id: 001-JLM

Introducción: Este documento integra todas las líneas base del proceso de
consolidación.

Línea base Alcance:

Optimizar el proceso de administración de la información que se genera en el área
de almacén; entradas, salidas, productos vendidos, productos rotos, responsables,
etc. A través de un sistema informático basado en cualquier lenguaje libre,
específicamente para escritorio. Mismo que deberá ser implementado en los
ordenadores indicados.

Línea base de tiempo.

Esta línea determina el tiempo que se tardará en completar cada fase del
proyecto, dado como resultado un cronograma de actividades, correspondientes a
cada fase del proyecto.


Línea base de Recursos

El presente proyecto no emplea recursos pre-asignados o asignados durante el la
planeación y desarrollo del mismo. El único recurso humano presente en la
realización del proyecto, es el mismo administrador, y por ser un proyecto de
carácter académico no se empleo otro tipo de recurso por tal motivo, únicamente
se hizo uso de un recurso humano, quién fungió también como administrador del
proyecto.
De misma forma el proyecto no hace uso de un plan de adquisiciones, recursos
humanos, etc.

Jesús Adriel Lazalde Martínez |
104

Anexo VIII- Cronograma de Actividades












Jesús Adriel Lazalde Martínez | 105

Anexo X-Reporte de Actividades
Reporte de Actividades
Realizadas

Datos del proyecto.

Nombre: DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS
Id: 001-JLM


Introducción: Este documento muestra el progreso de cada actividad y fase según se
han completado las tareas correspondientes.


El anterior cronograma presenta el progreso con el que se ha completado cada
actividad de cada fase permitiendo conocer de manera visual el avance actual del
proyecto.




Jesús Adriel Lazalde Martínez. | 106

Emiliano Zapata, Morelos, México, 24 de Abril de 2012






A quién corresponda:





Por este medio hago constar que se han cumplido satisfactoriamente los objetivos
del proyecto “DISEÑO, IMPLEMENTACIÓN DE UN SISTEMA DE INVENTARIOS”
dando como resultado la primer versión de la aplicación Java (JSE) Arteceramic’s
– Inventario V.1.0 cumpliendo con todos los parámetros de calidad, seguridad y
funcionalidad, enunciados en el Documento Oficial de Requerimientos. Elaborada
por el T.S.U. Jesús Adriel Lazalde Martínez.











Atentamente
L.A. José Talavera Tapia.


Anexo IX- Acta Oficial de Cierre de Proyecto

El repositorio con los archivos originales se encuentra en el CD que contiene el
presente reporte.