Download Universidad Tecnológica de Querétaro

Document related concepts
no text concepts found
Transcript
Universidad Tecnológica
de Querétaro
Firmado digitalmente por Universidad Tecnológica de Querétaro
Nombre de reconocimiento (DN): cn=Universidad Tecnológica de
Querétaro, o=Universidad Tecnológica de Querétaro, ou,
[email protected], c=MX
Fecha: 2012.05.16 14:34:36 -05'00'
UNIVERSIDAD TECNOLÓGICA DE QUERÉTARO
PROYECTO
DESARROLLO, IMPLEMENTACIÓN Y OPTIMIZACIÓN DE
UN PUNTO DE VENTA
EMPRESA
JBJ BAR
MEMORIA QUE COMO PARTE DE LOS REQUISITOS
PARA OBTENER EL TÍTULO DE
INGENIERO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
PRESENTA
Manuel David Martínez Sánchez
Asesor de la UTEQ
M.M.C. Raúl García Pérez
Asesor de la Empresa
LAE. Eduardo Cruz Jaime
Santiago de Querétaro, Qro. Mayo de 2012
0
RESUMEN
El creciente auge de las tecnologías de la Información; “La llamada era
digital”, está alcanzando todos los rincones del mundo y se ha convertido el uso de
estas tecnologías en un modo de vida indispensable. La industria, el comercio, las
labores cotidianas de los seres humanos dependen del uso de medios digitales.
Hoy en día el brindar un servicio rápido y de calidad es la preocupación de todos
los comercios, en especial para el giro del entretenimiento. La industria turística
representa gran parte del motor económico de países, como el nuestro. El poder
contar con herramientas tecnológicas que brinden apoyo a este sector es
indispensable, es por eso que, Empresas como JBJ Bar, invierten en el desarrollo
de dichas herramientas.
JBJ Bar es una empresa del giro de entretenimiento que busca estar a la
vanguardia y ofrecer servicios de calidad a sus clientes. En el proyecto realizado
se buscó
optimizar el servicio de atención al cliente ya que se propuso un
programa de punto de venta, que será una herramienta indispensable en la
gestión del establecimiento y ayudará al control de la operación de cada uno de
sus trabajadores.
1
En el proyecto TPV para JBJ Bar se utilizaron herramientas de vanguardia y se
echó mano de las mejores prácticas ITIL de estos tiempos como el uso de:
lenguajes de programación JAVA, Herramientas para bases de datos con MySql,
modelados de programación MVC (modelo vista control), programación orientada
a objetos, tecnología Media Flash, modelado de proyectos, prácticas de gestión de
proyectos (extractos de PMBook) y desarrollo de programas entre otras.
2
ABSTRAC
The increasing rise of Information Technology, "The called digital age" being
consumed all over the world and has become, the use of these technologies in an
essential way of life. Industry, trade, most daily humans tasks depend on the use of
digital media.
Today, providing prompt service and quality is the concern of all businesses,
especially at the entertainment business. The tourism industry provides much of
the economic engine of the country, such as ours. The availability of technological
tools that provide support to this sector is necessary, so, that companies like JBJ
Bar, invest in developing such tools.
JBJ Bar is a entertainment company you are looking to stay ahead and provide
quality services to its customers. In the finished project and focused on optimizing
the service of care to their clients developed a POS program, which will be an
indispensable tool in the establishment and management help to control the
operation of each of their workers.
In the draft POS for Bar JBJ, used tools were the best ITIL practice these days
as the use of: programming languages Java, Tools for MySql databases,
programming modeled MVC (Model View Control ), object-oriented programming,
Flash Media technology, modeling projects, project management practices
(PMBook extracts) and software development among others.
3
Índice
Contenido
RESUMEN ......................................................................................................................................... 1
ABSTRAC .......................................................................................................................................... 3
I. INTRODUCCIÓN .......................................................................................................................... 8
II. ANTECEDENTES ...................................................................................................................... 10
III. JUSTIFICACIÓN ....................................................................................................................... 10
IV.OBJETIVOS ............................................................................................................................... 11
V. ALCANCES ................................................................................................................................ 12
VI. JUSTIFICACIÓN TEÓRICA .................................................................................................... 13
Software ........................................................................................................................................... 14
Modular ........................................................................................................................................ 15
Monitor ......................................................................................................................................... 15
Impresora de recibos ................................................................................................................. 16
Punto de venta JBJ .................................................................................................................... 17
VIII. RECURSOS MATERIALES Y HUMANOS ........................................................................ 20
Materiales: ................................................................................................................................... 20
Humanos:..................................................................................................................................... 21
IX. DESARROLLO DEL PROYECTO ......................................................................................... 22
ANALISIS ..................................................................................................................................... 23
Requerimientos del cliente .................................................................................................... 23
Funcionalidad lógica .............................................................................................................. 24
Funcionalidad lógica del sistema ......................................................................................... 24
Requerimientos del software ................................................................................................ 25
DISEÑO ....................................................................................................................................... 26
Diagrama entidad relación .................................................................................................... 26
Modelo Entidad-Relación ...................................................................................................... 26
UML (Lenguaje Unificado de Modelado). ........................................................................... 28
Diagrama de clases................................................................................................................ 28
Diagrama casos de uso. ........................................................................................................ 29
4
Diagrama de secuencia ......................................................................................................... 30
Arquitectura ............................................................................................................................. 31
Arquitectura cliente – servidor .............................................................................................. 31
El Esquema de funcionamiento de un Sistema Cliente/Servidor sería: ........................ 32
Interfaces ..................................................................................................................................... 33
Interfaz Principal. Ver imagen IX.7. ........................................................................................ 33
Interfaz de “Login”. Ver imagen IX.8. ...................................................................................... 33
Interfaz de Menú de opciones. Ver imagen IX.9. .................................................................. 34
Interfaz de Selección de mesa y personas. Ver imagen IX.10. ......................................... 34
Interfaz de Usuarios. Ver imagen IX.11. ................................................................................. 35
Productos. Ver imagen IX.12. ................................................................................................... 36
Proveedores. Ver imagen IX.13. .............................................................................................. 37
Codificación de interfaces ............................................................................................................. 38
Código de creación interfaz Principal ...................................................................................... 38
Código de creación interfaz Login ........................................................................................... 39
Código de creación interfaz menú ........................................................................................... 40
Código de creación interfaz Usuarios ..................................................................................... 41
Código de creación interfaz productos.................................................................................... 43
Código de creación interfaz Proveedores .............................................................................. 45
Código de creación interfaz Mesa ........................................................................................... 46
Codificación de funciones ............................................................................................................. 47
Conexión a base de datos ........................................................................................................ 47
Codificación de botones entrar y salir del interfaz Principal ................................................ 48
Boton Acceder Login .................................................................................................................. 48
Método Validar usuario .............................................................................................................. 49
Botón guardar usuario. .............................................................................................................. 50
Botón Editar (save) usuario ...................................................................................................... 51
Botón Borrar usuario .................................................................................................................. 52
Clase Usuario Bean ................................................................................................................... 53
Interface visual (métodos Insert, update, delete) .................................................................. 54
Clase Usuario Dao (insert, update, delete) ............................................................................ 54
Insert ......................................................................................................................................... 54
5
Update ...................................................................................................................................... 56
Clase Controlador usuario (CtrUsuer) ................................................................................. 57
Botón Examinar File (imagen usuario) ................................................................................ 57
Botón Antes ................................................................................................................................. 58
Botón Siguiente........................................................................................................................... 59
Botón Actualizar llenado de tabla ............................................................................................ 60
Creación de la base de datos ................................................................................................... 61
X. Resultados obtenidos ............................................................................................................... 62
XI. Análisis de riesgos ................................................................................................................... 67
XII. Conclusiones ............................................................................................................................ 68
XIII. Recomendaciones ................................................................................................................. 69
XIV. Referencias bibliográficas .................................................................................................... 71
6
Índice de imágenes
Imagen VII.1 Cronograma de Actividades ......................................................................................... 18
Imagen VII.2 Diagrama de Gantt ....................................................................................................... 19
Imagen IX.1 Diagrama Entidad-Relación ........................................................................................... 27
Imagen IX.2 Diagrama de clases ........................................................................................................ 28
Imagen IX.3 Diagrama de casos de uso ............................................................................................. 29
Imagen IX.4 Diagrama de secuencia de log....................................................................................... 30
Imagen IX.5 Diagrama de secuencia ................................................................................................. 31
Imagen IX.6 Esquema de funcionamiento ........................................................................................ 32
Imagen IX.7 Ventana principal .......................................................................................................... 33
Imagen IX.8 Ventana de loguin ......................................................................................................... 33
Imagen IX.9 Ventana de menú principal ........................................................................................... 34
Imagen IX10. Ventana de selección de mes ...................................................................................... 34
Imagen IX.11 Ventana de alta de usuarios ........................................................................................ 35
Imagen IX.12. Ventana de alta de Productos .................................................................................... 36
Imagen IX.12. Ventana de Proveedores ............................................................................................ 37
Imagen X.1 Pantalla de bienvenida ................................................................................................... 62
Imagen X.2 Formulario de Loguin ..................................................................................................... 63
Imagen X.3 Menú de Opciones ......................................................................................................... 64
Imagen X.4 Administración de Usuarios ........................................................................................... 65
Imagen X.5 Administración de Productos ......................................................................................... 66
7
I. INTRODUCCIÓN
La implementación de sistemas de Puntos de Ventas (TPV), es una tarea
indispensable para que las empresas organicen sus procedimientos de
administración. Entre los procesos a considerar en un proyecto como éste se
encuentran: corte de caja, registro de ventas, generar un reporte con detalle de
forma de pagos, manejo cuantitativo de stock entre otras.
Los sistemas TPV son el corazón de un local comercial, cualquiera que sea su
rubro. Tradicionalmente los sistemas TPV son muy caros, pero necesarios para
ingresar datos y registrar los pagos. Actualmente existen varias alternativas tanto
para software comercial o propietario así como para las compañías
que se
dedican a la investigación, innovación y desarrollo de estos sistemas en la
búsqueda de un mejor rendimiento, llegando a establecer
un equilibrio entre
Software y Hardware.
El sistema punto de venta se compone de dos partes, una es el equipo que se
requiere (hardware), otra es el programa que maneja el control del negocio
(software).
Cabe destacar que para automatizar y agilizar los procesos de emisión y captura
de información de datos también se encuentran disponibles en el mercado
dispositivos como: Lectores de código de barras, impresoras para sistemas TPV,
lectores de bandas magnéticas, liquidadoras entre otros. Entre las empresas que
8
se destacan por tener un completo sistema TPV encontramos, Supermercados,
Ferreterías, Farmacias, Centros Comerciales, Restaurantes, Bares, Hoteles,
Bibliotecas, por la cantidad de transacciones y volumen de información que
manejan, haciendo imposible la administración de estos datos de manera manual.
JBJ Bar desea optimizar su TPV y migrarla al siglo XXI dando la oportunidad a
desarrolladores mexicanos de implementar este proyecto como parte del
desarrollo integral en la formación de los alumnos de la Universidad Tecnológica
de Querétaro. Por lo que este documento refleja el trabajo realizado durante un
lapso de 4 meses de investigación, trabajo y aplicación de diferentes tecnologías
que ayudaron a la optimización de los recursos Informáticos de JBJ bar.
9
II. ANTECEDENTES
Anteriormente la administración del establecimiento (bar) se basaba en atender a
los clientes y generar “comandas” (hojas con la cuenta del cliente) que
posteriormente eran ingresadas a un sistema punto de venta muy obsoleto. El
cual, ahora, ya es un programa que dificulta la operación continua, pues tiene
varios puntos vulnerables que afectan las ventas del establecimiento, la
productividad y confiabilidad. Además de ser un sistema visualmente muy poco
atractivo.
El sistema denominado FrontRest es un sistema enfocado a todo tipo de
establecimientos: Restaurantes, Tiendas, Almacenes, etc. Pero no está enfocado
específicamente al bar. Este, utiliza la configuración para restaurantes.
III. JUSTIFICACIÓN
Debido a lo mencionado anteriormente y basándose en que actualmente en el
mercado existen Programas de punto de venta muy variados desarrollados por
proveedores extranjeros y con licencias muy caras. Se pretende, desarrollar un
sistema punto de venta “Nacional” ágil y enfocado a establecimientos de giros de
entretenimiento (antros y bares) que sea seguro, de mantenimiento accesible
capaz de cumplir con las necesidades del cliente.
El sistema será un apoyo para los trabajadores del establecimiento, se podrá
llevar a cabo las siguientes tareas: reservaciones, cancelaciones, abrir cuentas,
10
mostrar las bebidas disponibles, las especiales de la casa entre otros. Todo esto
en tiempo real.
IV.OBJETIVOS
Desarrollar e implementar un sistema punto de venta para el establecimiento JBJ,
el cual deberá de cumplir con las necesidades del cliente y de la empresa. Este
proyecto debe permitir optimizar el corte de caja, registro de ventas, generar un
reporte con detalle de forma pagos (Efectivo, Visa, American Exprés, cuentas por
cobrar), generar reservaciones y las formas de pago serán el resultado de la venta
total por día de operación. El sistema se desarrollará en un lapso de 4 meses.
Periodo en el que se cumplirán los siguientes objetivos:
1).- Optimizar un Software Punto de venta enfocado a establecimientos de
entretenimiento.
2).- Optimizar los recursos de red del establecimiento.
3).- Mejorar el desempeño de los trabajadores.
4).- Reducir las pérdidas ocasionadas por la vulnerabilidad del sistema actual.
5).- Incrementar la seguridad del sistema.
6).- Mejorar el aspecto visual del software.
7).- Aumentar las funcionalidad del software.
11
V. ALCANCES
Que se optimice la operación del lugar mediante el sistema; Que sea seguro,
estable y fácil de usar para los usuarios. Además de generar un reporte con
detalle legible de operaciones.
Que sea un sistema enfocado para todo tipo de establecimientos de
entretenimientos y que usen requerimientos mínimos de red.
Acercar las Tecnologías de información enfocada a bares y antros para que su
vez se brinde una plataforma innovadora para estos lugares.
12
VI. JUSTIFICACIÓN TEÓRICA
La Administración de bares y restaurantes se debe en parte al desarrollo de los
sistemas de Punto de Venta. TPV es el acrónimo de terminal punto de venta (en
inglés "POS terminal" o "Point of sale terminal"). Este término hace referencia al
dispositivo
y
tecnologías que
ayudan
en
las
tareas
de
gestión
de
un establecimiento comercial de venta al público.
Diferentes negocios pueden contar con sistemas informáticos especializados que
ayudan en las tareas de gestión del punto de venta mediante una interfaz
accesible para los vendedores que se denomina terminal de punto de venta o
TPV.
Los TPV permiten la creación e impresión del ticket de venta mediante las
referencias de productos, realizan diversas operaciones durante todo el proceso
de venta, así como cambios en el inventario. También generan diversos reportes
que ayudan en la gestión del negocio. Los TPV se componen de una
parte hardware (dispositivos
físicos)
y
otra, software (sistema
operativo
y
programa de gestión).
El sistema desarrollado se compone de una parte hardware (dispositivos físicos) y
otra, software (sistema operativo y programa de gestión).
13
Software
El TPV tiene su programa de gestión o software. Que puede estar implementado
bajo las modalidades siguientes:
A medida
Contienen software específico para una única empresa. Suelen ser mucho más
caros y las modificaciones o actualizaciones van siempre ligadas a la
disponibilidad de la empresa que desarrolla ese software.
Comerciales
Dentro de este grupo pueden estar predefinidos para tiendas de ropa, hostelería,
ferretería, farmacia, videoclubes o TPV de carácter general. Suelen estar
diseñados para un establecimiento tipo del sector al que va dirigido y no admite
cambios específicos. Suelen ser mucho más económicos.
Específicos
Algunas empresas fabricantes de TPV desarrollan un software específico para un
tipo de negocio en concreto. Este software puede ir junto con un sistema operativo
propio del fabricante embebido en la propia memoria del terminal (no tienen discos
duros ni trabajan con sistemas operativos como los PC) o bien instalados en el
disco duro del terminal, como cualquier otro PC. Este tipo software cuenta con
múltiples opciones de configuración en función de las necesidades de un cliente
concreto, siempre que trabaje dentro de este sector en concreto.
14
Hardware
Los tipos de TPV actuales son:
Compacto
Se trata de equipos pensados específicamente para trabajar como punto de venta.
Estos equipos pueden integrar los periféricos necesarios como impresoras de
recibos, pantallas para el cliente, y otros. En todo caso, siempre poseen un
conjunto rico de conexiones y puertos para poder utilizar los periféricos más
comunes, necesarios en un punto de venta
Modular
Suelen ser equipos basados en un PC normal con un software instalado sobre un
sistema operativo convencional. Todos los componentes necesarios se deben
cablear y conectar a la CPU a través de sus diferentes puertos e interfaces. Si
bien pueden ejecutar la mayoría de aplicaciones pensadas para punto de venta,
resultan más voluminosos, menos fiables, y requieren más mantenimiento. No hay
que olvidar que los PC no están pensados para estar en un punto de venta, si no
en una oficina o el hogar. No obstante pueden ser una solución mas económica.
Monitor
Puede ser un monitor normal de PC o uno que incorpore un sistema táctil evita la
utilización de ratón y agiliza las labores de gestión de cobro al permitir al usuario
manejar más fácilmente los menús.
15
Impresora de recibos
Sirve para expedir el recibo o resguardo de compra al cliente. Estas pequeñas
impresoras pueden ser matriciales, térmicas y de tinta. Las matriciales son las más
lentas y más económicas; utilizan una cinta de tinta. No obstante permiten obtener
una copia del resguardo mediante calco ya que la impresión se realiza por
impacto.
Otros elementos de que dispone una TPV clásica son:
Lector de código de barras. Dispositivo que interpreta los símbolos del código de
barras (usualmente EAN, UPC, Codabar, Code 39 o GS1-128) que el fabricante
imprime en la etiqueta de los productos. El código de barras suele ser una serie de
dígitos o caracteres que representan unívocamente un producto.
Demás elementos que se pueden encontrar en un sistema TPV:
Lector RFID. El más utilizado en la actualidad.
Lector de tarjetas con chip de contacto. Cada vez más en desuso.
Biometría. Recursos de identificación provenientes del sector de la seguridad.
Impresora de etiquetas. Completa el sistema de almacén imprimiendo códigos
propios.
Impresoras de Etiquetas RFID. Para el grafismo de las tarjetas.
Tele comando. Terminales de mano o Handy´s que permiten el registro a
distancia.
16
Memoria fiscal. Memoria dedicada al almacenamiento de transacciones para el
fisco.
Punto de venta JBJ
Anteriormente se contaba con una máquina registradora que marcaba lo que
pasaba por la caja sin llevar ningún control de cuentas y registro de ventas. A
partir de esto se decidió evaluar el uso de equipos de cómputo personales. El
precio de las computadoras personales ha bajado tanto que es posible incluirlas
en mini supermercados, restaurantes, librerías, boutiques y hasta pequeños
establecimientos. Con ello se inicia el concepto de Punto de Venta en donde se
pueden tener todas las funciones de un negocio grande en una computadora
personal.
El punto de venta se compone de tres partes, una es el equipo que se requiere
(hardware), otra es el programa que maneja el control del negocio (software) y el
tercero es tener un sistema confiable de control basado en la tecnología de lector
de huella digital, esto con la finalidad de que cada usuario se registre sin ingresar
claves que puedan ser usadas por terceros.
A partir de la creación e impresión del ticket de venta mediante las referencias de
productos, se realizan diversas operaciones durante todo el proceso de venta, así
como cambios en el inventario.
También se generan diversos reportes que ayudan en la gestión del negocio.
17
VII.PLAN DE ACTIVIDADES
Las horas de trabajo establecidas para el proyecto serán en un horario de 4 horas
diarias de lunes a viernes a partir de las 17:00 horas. Iniciando el lunes 16 de
enero de 2012 y concluyendo el miércoles 4 de abril de 2012. Ver Cronograma de
actividades imagen VII.1.
1Imagen VII.1 Cronograma de Actividades
18
Diagrama de Gantt de actividades del proyecto ver imagen VII.2.
2Imagen VII.2 Diagrama de Gantt
19
VIII. RECURSOS MATERIALES Y HUMANOS
Materiales:
2 computadoras con los siguientes requerimientos:
Sistema operativo Windows seven o anterior
Procesador Pentium IV con al menos 512 MB de memoria RAM, ideal 1 GB de
memoria RAM
Server Oracle 10g
JDK 6u25 (Java Development Kit)
IDE Eclipse
Enterprise architech (UML)
Navegador de internet
Impresora de papel térmico
Muebles para estación de trabajo
20
Humanos:
Analista desarrollador con las siguientes características:
Conocimientos de programación Orientada a Objetos
Conocimientos del lenguaje Java
Diseño de DB
Conocimientos de UML
Manejo del servidor Oracle 10g
Patrón de diseño MVC (Modelo, Vista Controlador)
Administrador de redes
Conocimiento en diseño de redes
Soporte técnico
Administración de servidores
21
IX. DESARROLLO DEL PROYECTO
A partir de la propuesta generada con anterioridad. El desarrollo de este trabajo
involucra una investigación y dedicación especial dirigida a todos los elementos
involucrados; en donde su correcta aplicación se verá afectada a partir de
continuas modificaciones del modelo original, hasta obtener el resultado esperado
y el logro de los objetivos deseados.
Siguiendo el esquema de tiempos propuestos se pretende desarrollar el sistema
de punto de venta. Investigando, implementando y corrigiendo durante la
programación de cada uno de los módulos del sistema; se tendrá la posibilidad de
ahorrar tiempo y de realizar mejoras al final de cada módulo terminado.
Dentro de marco de crear un programa personalizado para „JBJ BAR‟ se
encuentra también el realizar un programa de soporte y mantenimiento del
software. El cual se documentará al finalizar la conclusión del módulo
correspondiente.
22
ANALISIS
Requerimientos del cliente
El cliente requiere de un sistema POS que permita la operación en el lugar de
diferentes tipos de atención a sus clientes. Optimizar los tiempos de operación
tanto para la caja, meseros, gerencia y administración. A su vez que se agilice la
operación del lugar mediante un sistema, que sea seguro. Y sobre todo de vista
amigable y fácil uso. Además de generar:

Registro de usuario

Control de Efectivo/Boucher/Visa.

Reportes

Forma de pago (Efectivo, Tarjetas, Otras divisas. Con desglose de
comisiones bancarias).

Devoluciones / cortesías

Cuentas por cobrar

Cortes parciales

Cierre total
23
Funcionalidad lógica
Revisando los requerimientos del cliente encontramos el siguiente procedimiento
lógico implementado por el bar en la atención de un cliente:
El gerente en turno asigna a cada mesero una zona de trabajo, cada zona cuenta
con un determinado número de mesas, cada mesero se encarga de atender su
zona generando comandas (pedazos de papel con los artículos que el cliente
solicita), estas, son atendidas por el barman y posteriormente servidas por el
mesero. Para cada mesa se abre una cuenta, que puede estar formada por varias
comandas y al final es cobrada por el cajero. El cual tiene que ingresarlas
manualmente al anterior sistema.
Funcionalidad lógica del sistema
En base a lo mencionado anteriormente. Se pretende seguir un diagrama de
funcionalidad similar al ahora empleado para no complicar la forma de operación
del establecimiento.
El sistema por default tiene una cuenta “SUPER” (súper usuario Administrador) la
cual podrá modificar cosas en todos los módulos del sistema. Mediante el uso de
este modo, Se generarán las cuentas a utilizar por el establecimiento. Al encender
el sistema cada trabajador se logeará en el sistema de seguridad del POS. El
gerente asignará las zonas (precargadas en el sistema) a cada mesero, el mesero
al ingresar al sistema tendrá su zona asignada, al atender su mesa el mesero
abrirá una cuenta, dentro de esta cuenta se encontrará con el catálogo de
productos (cargado en una base de datos) los cuales ingresará en una o varias
24
comandas, al finalizar cada cuenta, esta se cerrará y se mostrará en el menú de la
cuenta del cajero para que este las revise y cobre. Cualquier modificación de
cuentas o productos deberá ser autorizada por la cuenta de administrador o
gerente. Toda esta información se irá a la base de datos del sistema para generar
los reportes correspondientes o solicitados por el usuario.
Requerimientos del software
Los requerimientos son mínimos, no se necesitan grandes procesadores, ni
dispositivos de almacenamiento (discos duros, disquete, CDROM, etc.) siendo
válidos de 486/66 o superiores y 256mb de RAM o superior, aunque las
recomendaciones son partir de Pentium II con 512Mb de RAM. Esto hace posible
reutilizar los antiguos equipos o bien ahorrar en la compra de nuevas
computadoras.

Se desarrollará mediante la programación orientada a objetos

Java plataforma eclipse, J2EE

Patrón de diseño MVC

Base de datos MySql

Se pretende implementar Windows 7

Se sugiere equipos de pantalla táctil

Impresoras de papel térmico
25
DISEÑO
Diagrama entidad relación
Modelado de datos del sistema punto de venta. Este modelo expresa entidades
relevantes para el sistema de información así como sus interrelaciones y
propiedades.
Modelo Entidad-Relación
De acuerdo a la estructura del programa se realizó el siguiente diagrama donde
se muestran la entidades de la base de datos y su relación. Ver imagen IX.1.
26
3Imagen IX.1 Diagrama Entidad-Relación
27
UML (Lenguaje Unificado de Modelado).
Lenguaje gráfico para visualizar, especificar, construir y documentar el sistema
punto de venta, para especificar o para describir métodos o procesos. Se utiliza
para definir el sistema, para detallar los artefactos en el sistema y para
documentar y construir.
Diagrama de clases
class diagrama de clases
Compras
Usuario
+
+
+
+
+
Nombre: char
Apellidos: char
F.Nacimiento: char
Direccion: char
Telefono: int
+
+
+
Insertar() : void
Borrar() : void
Editar() : void
-
usuario: Usuario
Producto: Producto
Fecha: char
TipoPago: char
Subtotal: float
Iva: float
Total: float
+
+
+
Insetar() : void
Editar() : void
Borra() : void
Producto
Prov eedor
+
+
+
+
Tipo: char
Nombre: char
Precio: float
Cantidad: int
+
+
+
+
Nombre: char
Direccion: char
Telefono: int
productos: char
+
+
+
Insertar() : void
Editar() : void
Borrar() : void
+
+
+
Insetar() : void
Editar() : void
Borrar() : void
Acceso
-
User: char
passwd: char
+
+
+
+
Insertar() : void
Borrar() : void
Editar() : void
Validar() : void
Venta
Comanda
-
Usuario: Usuario
Comanda: Comanda
TipoPago: char
Subtotal: float
Total: float
Iva: float
+
+
+
Insertar() : void
Borrar() : void
Editar() : void
-
Mesa: int
Usuario: Usuario
Fecha: char
Producto: Producto
+
+
+
+
Nueva() : void
Cancelar() : void
Insertar() : void
Editar() : void
4Imagen IX.2 Diagrama de clases
El diagrama de clases sirve para visualizar las relaciones entre las clases que
involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de
contenido. Ver imagen IX.2.
28
Diagrama casos de uso.
Descripción de los pasos o las actividades que deberán realizarse para llevar a
cabo los procesos dentro del sistema punto de venta. Los personajes o entidades
que participarán en un caso de uso se denominan actores (Administrador, Mesero,
Capitán, Cajero). Ver imagen IX.3.
uc casos de uso
PuntodeVenta
Ingresar al
sistema
Mesero
Loggearse
Caj ero
Nuev a
Comanda
Cancelar
Comanda
Ingresar
accesos
Borrar
accesos
Consultar
v entas
Capitan
Reporte Ventas
Administrador
Ingresar
Usuarios
Borrar usuario
Editar usuario
ingresar
compra
Ver compras
Ingresar
prov eedores
Borrar
Prov eedor
Ingresar
Producto
Editar Producto
5Imagen IX.3 Diagrama de casos de uso
29
Diagrama de secuencia
El Diagrama nos muestra la interacción de un conjunto de objetos en el sistema
punto de venta (Aplicación) a través del tiempo y se modela para cada caso de
uso.
Loguearse en el sistema (tipo de usuario Administrador), Ver imagen IX.4.
sd loggearse
Usuario
Administrador
Interfaz principal
Acceso
Interfaz Login
DataBase
Intefaz menu
Ingresa al interfaz principal()
Entrada para loggearse()
Pide seleccionar tipo de
usuario()
Selecciona tipo
administrador()
Verifica Usuario()
permite acceso()
solicita datos()
Permite ingresar datos()
Ingresa los datos()
Valida datos()
Verifica datos()
acceso verificado()
Ingresa al manu de opciones()
6Imagen IX.4 Diagrama de secuencia de log
30
Registrar un nuevo usuario (Administrador). Ver imagen IX.5.
sd Registrar usuario
Usuario
Administrador
Intefaz menu
DataBase
selecciona opcion Usuarios()
Selecciona nuevo usuario()
Permite ingresar datos()
Solicita datos()
Ingresa datos()
Valida datos()
Ingresa datos()
7Imagen IX.5 Diagrama de secuencia
Arquitectura
Arquitectura cliente – servidor
Se puede definir la computación Cliente/Servidor como una arquitectura distribuida
que permite a los usuarios finales obtener acceso a la información de forma
transparente aún en entornos multiplataforma. Se trata, de la arquitectura más
extendida en la realización de Sistemas Distribuidos.
31
El Esquema de funcionamiento de un Sistema Cliente/Servidor sería:
o El cliente solicita una información al servidor.
o El servidor recibe la petición del cliente.
o El servidor procesa dicha solicitud.
o El servidor envía el resultado obtenido al cliente.
o El cliente recibe el resultado y lo procesa.
El servidor estará ubicado en la oficina del lugar ya que por la función y operación
del lugar, estará de forma segura y la cual a su vez tendrá conexión con las demás
terminales. Ver imagen IX.6.
APLICACIÓN J2EE
JDBC CONNECTOR
ADMINISTRACIÓN DE ORIGEN DE DATOS
APLICACIÓN JAVA
DB
Modelado en ODBC
PC
Cliente
Modelo
JPA
Controlador
Vista
SPRING
Mecanismo de comunicación entre capas
JSF
Servidor
Base de Datos Servidor
8Imagen IX.6 Esquema de funcionamiento
32
Interfaces
Interfaz Principal. Ver imagen IX.7.
9Imagen IX.7 Ventana principal
Interfaz de “Login”. Ver imagen IX.8.
10Imagen IX.8 Ventana de loguin
33
Interfaz de Menú de opciones. Ver imagen IX.9.
11Imagen IX.9 Ventana de menú principal
Interfaz de Selección de mesa y personas. Ver imagen IX.10.
12Imagen IX10. Ventana de selección de mes
34
Interfaz de Usuarios. Ver imagen IX.11.
13Imagen IX.11 Ventana de alta de usuarios
35
Productos. Ver imagen IX.12.
14Imagen IX.12. Ventana de alta de Productos
36
Proveedores. Ver imagen IX.13.
15Imagen IX.12. Ventana de Proveedores
37
Codificación de interfaces
Código de creación interfaz Principal
package Vista;
import java.awt.*;
import javax.swing.*;
public class Principal {
private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="25,10"
private JPanel jContentPane = null;
private JMenuBar jJMenuBar = null;
private JMenu fileMenu = null;
private JMenu editMenu = null;
private JMenu helpMenu = null;
private JMenuItem exitMenuItem = null;
private JMenuItem aboutMenuItem = null;
private JMenuItem cutMenuItem = null;
private JMenuItem copyMenuItem = null;
private JMenuItem pasteMenuItem = null;
private JMenuItem saveMenuItem = null;
private JDialog aboutDialog = null; // @jve:decl-index=0:visual-constraint="44,558"
private JPanel aboutContentPane = null;
private JLabel aboutVersionLabel = null;
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
private JLabel lblBanner = null;
private JLabel lblwelcom = null;
private JButton btnIngresar = null;
private JButton btnSalir = null;
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setJMenuBar(getJJMenuBar());
jFrame.setSize((int) d.getWidth() , (int) d.getHeight());
jFrame.setContentPane(getJContentPane());
jFrame.setTitle("Punto de Venta"); }
return jFrame;
}
private JPanel getJContentPane() {
if (jContentPane == null) {
lblwelcom = new JLabel();
lblwelcom.setBounds(new Rectangle(490, 3, 349, 100));
lblwelcom.setIcon(new ImageIcon(getClass().getResource("images/welcom.jpg")));
lblBanner = new JLabel();
lblBanner.setBounds(new Rectangle(392, 104, 556, 264));
lblBanner.setIcon(new ImageIcon(getClass().getResource("images/14.jpg")));
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(lblBanner, null);
jContentPane.add(lblwelcom, null);
jContentPane.add(getBtnIngresar(), null);
jContentPane.add(getBtnSalir(), null);
}
return jContentPane;
}
38
Código de creación interfaz Login
package Vista;
import
import
import
import
import
import
public
java.awt.*;
java.io.IOException;
java.sql.ResultSet;
javax.swing.*;
com.mysql.jdbc.Connection;
Modelo.Conexion;
class Login extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JLabel lblbaner = null;
private JLabel lbl = null;
private JTextField txtBus = null;
private JButton antes = null;
private JButton antes1 = null;
private JLabel log = null;
private JLabel user = null;
private JLabel pass = null;
private JTextField txtUser = null;
private JPasswordField txtPass = null;
private JButton btnEntrar = null;
private JButton btnCancelar = null;
public Login() {
super();
this.setVisible(true);
this.setResizable(false);
initialize();
this.setLocationRelativeTo(null)}
private void initialize() {
this.setSize(608, 410);
this.setContentPane(getJContentPane());
this.setTitle("Login")}
private JPanel getJContentPane() {
if (jContentPane == null) {
pass = new JLabel();
pass.setBounds(new Rectangle(303, 225, 61, 16));
pass.setText("Passwd:");
user = new JLabel();
user.setBounds(new Rectangle(302, 186, 53, 16));
user.setText("Usuario:");
log = new JLabel();
log.setBounds(new Rectangle(84, 173, 101, 100));
log.setIcon(new ImageIcon(getClass().getResource("images/foto.png")));
lbl = new JLabel();
lbl.setBounds(new Rectangle(31, 144, 68, 16));
lbl.setText("Busqueda:");
lblbaner = new JLabel();
lblbaner.setBounds(new Rectangle(0, 0, 590, 97));
lblbaner.setText("");
lblbaner.setIcon(new ImageIcon(getClass().getResource("images/login.jpg")));
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.setSize(new Dimension(502, 346));
jContentPane.add(lblbaner, null);
jContentPane.add(lbl, null);
jContentPane.add(getTxtBus(), null);
jContentPane.add(getAntes(), null);
jContentPane.add(getAntes1(), null);
jContentPane.add(log, null);
jContentPane.add(user, null);
jContentPane.add(pass, null);
jContentPane.add(getTxtUser(), null);
jContentPane.add(getTxtPass(), null);
39
jContentPane.add(getbtnEntrar(), null);
jContentPane.add(getBtnCancelar(), null);
Código de creación interfaz menú
package Vista;
import javax.swing.*;
public class Menu extends JFrame {
private JPanel jContentPane = null;
private JButton bbtn1 = null;
private JLabel Menu = null;
private JLabel Comandas = null;
private JButton user = null;
private JLabel usrel = null;
private JButton produ = null;
private JLabel prpoel = null;
private JButton compras = null;
private JLabel jLabel = null;
private JButton jButton = null;
private JLabel ventas = null;
private JButton pro = null;
private JLabel Proeev = null;
public Menu() {
super();
initialize();}
private void initialize() {
this.setSize(499, 367);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setContentPane(getJContentPane());
this.setTitle("Menu");}
private JPanel getJContentPane() {
if (jContentPane == null) {
Proeev = new JLabel();
Proeev.setBounds(new Rectangle(342, 302, 75, 16));
Proeev.setText("Proveedores"); ventas = new JLabel();
ventas.setBounds(new Rectangle(216, 302, 54, 16));
ventas.setText("Ventas"); jLabel = new JLabel();
jLabel.setBounds(new Rectangle(88, 301, 57, 16));
jLabel.setText("Compras"); prpoel = new JLabel();
prpoel.setBounds(new Rectangle(339, 159, 63, 16));
prpoel.setText("Productos" + "");
usrel = new JLabel();
usrel.setBounds(new Rectangle(205, 158, 58, 16));
usrel.setText("Usuarios");
Comandas = new JLabel();
Comandas.setBounds(new Rectangle(75, 158, 67, 16));
Comandas.setText("Comandas");
Menu = new JLabel();
Menu.setBounds(new Rectangle(208, 19, 113, 16));
Menu.setText("Menu de Opciones");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getBbtn1(), null);
jContentPane.add(Menu, null);
jContentPane.add(Comandas, null);
jContentPane.add(getUser(), null);
jContentPane.add(usrel, null);
jContentPane.add(getProdu(), null);
jContentPane.add(prpoel, null);
jContentPane.add(getCompras(), null);
jContentPane.add(jLabel, null);
jContentPane.add(getJButton(), null);
jContentPane.add(ventas, null);
jContentPane.add(getPro(), null);
jContentPane.add(Proeev, null);
}
return jContentPane;
}
40
Código de creación interfaz Usuarios
package Vista;
import
import
import
import
import
import
import
import
import
import
javax.imageio.ImageIO;
javax.*;
java.*;
java.io.File;
java.io.IOException;
java.sql.ResultSet;
com.mysql.jdbc.Connection;
Controlador.CtrUser;
Controlador.UsuarioBean;
Modelo.Conexion;
public class Usuarios extends JFrame{
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
static final long serialVersionUID = 1L;
JPanel jContentPane = null;
JLabel lblbanner = null;
JLabel lblBuscar = null;
JLabel lblNom = null;
JLabel lblPat = null;
JLabel lblMat = null;
JLabel lblDir = null;
JLabel lblTel = null;
JLabel lblTip = null;
JLabel lblCurp = null;
JLabel lblMail = null;
JTextField txtNom = null;
JTextField txtPat = null;
JTextField txtMat = null;
JTextField txtDir = null;
JTextField txtTel = null;
JTextField txtMail = null;
JTextField txtCurp = null;
JLabel lblFoto = null;
JButton btnUrl = null;
JTextField txtUrl = null;
JButton btnNuevo = null;
JButton btnGuardar = null;
JButton btnEditar = null;
JButton btnBorrar = null;
JButton btnSalir = null;
JButton btnAntes = null;
JButton btnDespues = null;
JLabel lblAcceso = null;
JLabel lblUser = null;
JLabel lblpass = null;
JTextField txtUser = null;
JTextField txtPass = null;
public Usuarios() {
super();
initialize();
}
41
private JPanel getJContentPane() {
if (jContentPane == null) {
lblId = new JLabel();
lblId.setBounds(new Rectangle(105, 106, 20, 16));
lblId.setText("ID:"); lblpass = new JLabel();
lblpass.setBounds(new Rectangle(53, 440, 73, 16));
lblpass.setText("Contraseña:"); lblUser = new JLabel();
lblUser.setBounds(new Rectangle(76, 410, 49, 16));
lblUser.setText("Usuario:"); lblAcceso = new JLabel();
lblAcceso.setBounds(new Rectangle(208, 380, 52, 16));
lblAcceso.setText("Acceso"); lblFoto = new JLabel();
lblFoto.setBounds(new Rectangle(327, 103, 104, 118));
lblMail = new JLabel();
lblMail.setBounds(new Rectangle(85, 310, 38, 16));
lblMail.setText("E-Mail:"); lblCurp = new JLabel();
lblCurp.setBounds(new Rectangle(92, 340, 38, 16));
lblCurp.setText("Curp:"); lblTip = new JLabel();
lblTip.setBounds(new Rectangle(94, 130, 38, 16));
lblTip.setText("Tipo:"); lblTel = new JLabel();
lblTel.setBounds(new Rectangle(70, 280, 56, 16));
lblTel.setText("Telefono:"); lblDir = new JLabel();
lblDir.setBounds(new Rectangle(65, 250, 63, 16));
lblDir.setText("Direccion:"); lblMat = new JLabel();
lblMat.setBounds(new Rectangle(51, 220, 79, 16));
lblMat.setText("Ap. Materno:"); lblPat = new JLabel();
lblPat.setBounds(new Rectangle(53, 190, 76, 16));
lblPat.setText("Ap. Paterno:"); lblNom = new JLabel();
lblNom.setBounds(new Rectangle(73, 160, 54, 16));
lblNom.setText("Nombre:"); lblBuscar = new JLabel();
lblBuscar.setBounds(new Rectangle(22, 82, 47, 16));
lblBuscar.setText("Buscar:"); lblbanner = new JLabel();
lblbanner.setIcon(new
ImageIcon(getClass().getResource("images/usuarios.png")));
lblbanner.setBounds(new Rectangle(-123, -12, 619, 68));
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(lblbanner, null);
jContentPane.add(lblBuscar, null);
jContentPane.add(lblNom, null);
jContentPane.add(lblPat, null);
jContentPane.add(lblMat, null);
jContentPane.add(lblDir, null);
jContentPane.add(lblTel, null);
jContentPane.add(lblTip, null);
jContentPane.add(lblCurp, null);
jContentPane.add(lblMail, null);
jContentPane.add(getTxtNom(), null);
jContentPane.add(getTxtPat(), null);
jContentPane.add(getTxtMat(), null);
jContentPane.add(getTxtDir(), null);
jContentPane.add(getTxtTel(), null);
jContentPane.add(getTxtMail(), null);
jContentPane.add(getTxtCurp(), null);
jContentPane.add(lblFoto, null);
jContentPane.add(getBtnUrl(), null);
jContentPane.add(getTxtUrl(), null);
jContentPane.add(getBtnNuevo(), null);
jContentPane.add(getBtnGuardar(), null);
jContentPane.add(getBtnEditar(), null);
jContentPane.add(getBtnBorrar(), null);
jContentPane.add(getBtnSalir(), null);
jContentPane.add(getBtnAntes(), null);
jContentPane.add(getBtnDespues(), null);
jContentPane.add(lblAcceso, null);
jContentPane.add(lblUser, null);
jContentPane.add(lblpass, null);
jContentPane.add(getTxtUser(), null);
jContentPane.add(getTxtPass(), null);
jContentPane.add(getBtnCancel(), null);
jContentPane.add(getTxtid(), null);
jContentPane.add(lblId, null);
jContentPane.add(getTipList(), null);
jContentPane.add(getBtnUpdate(), null);
42
Código de creación interfaz productos
package Vista;
import
import
import
import
import
import
import
import
import
import
java.awt.*;
javax.imageio.ImageIO;
java.io.File;
java.io.IOException;
java.sql.ResultSet;
javax.swing.*;
Controlador.CtrProduc;
Controlador.ProductosBean;
Modelo.Conexion;
com.mysql.jdbc.Connection;
public class Productos extends JFrame {
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
static final long serialVersionUID = 1L;
JPanel jContentPane = null;
JLabel lblBanner = null;
JLabel lblBuscar = null;
JButton btnAntes = null;
JButton btnDespues = null;
JLabel lblTipo = null;
JLabel lblNom = null;
JTextField txtNom = null;
JLabel lblPre = null;
JTextField txtPre = null;
JLabel lblTot = null;
JTextField txtTot = null;
JLabel lblFoto = null;
JLabel lblCant = null;
JTextField txtCant = null;
JButton btnUrl = null;
JTextField txtUrl = null;
JButton btnNuevo = null;
JButton btnSalir = null;
JButton btnEditar = null;
JButton btnGuardar = null;
JLabel lblId = null;
JTextField txtId = null;
public Productos() {
super();
initialize();
}
private void initialize() {
this.setSize(464, 448);
this.setContentPane(getJContentPane());
this.setTitle("Productos");
this.setVisible(true);
this.setResizable(false);
this.setLocationRelativeTo(null);
txtUrl.setVisible(false);
listTipo.setEnabled(false);
txtNom.setEnabled(false);
txtCant.setEnabled(false);
txtCont.setEnabled(false);
txtPre.setEnabled(false);
txtTot.setEnabled(false);
btnEditar.setEnabled(false);
btnGuardar.setEnabled(false);
txtId.setEnabled(false);
btnUrl.setEnabled(false);
btnDespues.setEnabled(false);
btnCancelar.setVisible(false);
btnSave.setVisible(false);
}
43
private JPanel getJContentPane() {
if (jContentPane == null) {
lblCont = new JLabel();
lblCont.setBounds(new Rectangle(40, 190, 93, 16));
lblCont.setText("Contenido Neto:");
lblId = new JLabel();
lblId.setBounds(new Rectangle(110, 100, 19, 16));
lblId.setText("Id:");
lblCant = new JLabel();
lblCant.setBounds(new Rectangle(75, 220, 56, 16));
lblCant.setText("Cantidad:");
lblFoto = new JLabel();
lblFoto.setBounds(new Rectangle(313, 113, 104, 178));
lblTot = new JLabel();
lblTot.setBounds(new Rectangle(62, 280, 75, 16));
lblTot.setText("Precio Total:");
lblPre = new JLabel();
lblPre.setBounds(new Rectangle(43, 250, 92, 16));
lblPre.setText("Precio Unitario:");
lblNom = new JLabel();
lblNom.setBounds(new Rectangle(79, 160, 55, 16));
lblNom.setText("Nombre:");
lblTipo = new JLabel();
lblTipo.setBounds(new Rectangle(94, 130, 38, 16));
lblTipo.setText("Tipo:");
lblBuscar = new JLabel();
lblBuscar.setBounds(new Rectangle(11, 73, 54, 16));
lblBuscar.setText("Buscar:");
lblBanner = new JLabel();
lblBanner.setIcon(new
ImageIcon(getClass().getResource("images/productos.png")));
lblBanner.setBounds(new Rectangle(-125, -13, 624, 64));
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(lblBanner, null);
jContentPane.add(lblBuscar, null);
jContentPane.add(getBtnAntes(), null);
jContentPane.add(getBtnDespues(), null);
jContentPane.add(lblTipo, null);
jContentPane.add(lblNom, null);
jContentPane.add(getTxtNom(), null);
jContentPane.add(lblPre, null);
jContentPane.add(getTxtPre(), null);
jContentPane.add(lblTot, null);
jContentPane.add(getTxtTot(), null);
jContentPane.add(lblFoto, null);
jContentPane.add(lblCant, null);
jContentPane.add(getTxtCant(), null);
jContentPane.add(getBtnUrl(), null);
jContentPane.add(getTxtUrl(), null);
jContentPane.add(getBtnNuevo(), null);
jContentPane.add(getBtnSalir(), null);
jContentPane.add(getBtnEditar(), null);
jContentPane.add(getBtnGuardar(), null);
jContentPane.add(getBtnSave(), null);
jContentPane.add(lblId, null);
jContentPane.add(getTxtId(), null);
jContentPane.add(getBtnCancelar(), null);
jContentPane.add(getListTipo(), null);
jContentPane.add(lblCont, null);
jContentPane.add(getTxtCont(), null);
}
return jContentPane;
}
44
Código de creación interfaz Proveedores
package Vista;
import
import
import
import
import
javax.swing.*;
Modelo.Conexion;
javax.swing.table.DefaultTableModel;
com.mysql.jdbc.Connection;
javax.swing.JScrollPane;
class Proveedor extends JFrame {
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
private
static final long serialVersionUID = 1L;
JPanel jContentPane = null;
JLabel lblBanner = null;
JLabel lblID = null;
JLabel lblComp = null;
JLabel lbltel = null;
JButton btnCancel = null;
JButton btnGuardar = null;
JButton btnNuevo = null;
JButton btnActual = null;
JTextField txtid = null;
JTextField txtComp = null;
JTextField txtTel = null;
JLabel lblimg = null;
JButton btnSalir = null;
JScrollPane jScrollPane1 = null;
JTable jtProvee = null;
public Proveedor() {
super();
initialize();
}
private void initialize() {
this.setSize(464, 470);
this.setContentPane(getJContentPane());
this.setTitle("Proveedores");
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
private JPanel getJContentPane() {
if (jContentPane == null) {
lblimg = new JLabel();
lblimg.setBounds(new Rectangle(344, 79, 101, 106));
lblimg.setIcon(new
ImageIcon(getClass().getResource("images/proveedor.jpg")));
lbltel = new JLabel();
lbltel.setBounds(new Rectangle(72, 160, 61, 16));
lbltel.setText("Telefono:"); lblComp = new JLabel();
lblComp.setBounds(new Rectangle(65, 130, 63, 16));
lblComp.setText("Compañia:"); lblID = new JLabel();
lblID.setBounds(new Rectangle(112, 100, 21, 16));
lblID.setText("Id:"); lblBanner = new JLabel();
lblBanner.setIcon(new
ImageIcon(getClass().getResource("images/Provee.png")));
lblBanner.setBounds(new Rectangle(-155, -13, 664, 90));
jContentPane = new JPanel(); jContentPane.setLayout(null);
jContentPane.add(lblBanner, null); jContentPane.add(lblID, null);
jContentPane.add(lblComp, null); jContentPane.add(lbltel, null);
jContentPane.add(getBtnCancel(), null);
jContentPane.add(getBtnGuardar(), null);
jContentPane.add(getBtnNuevo(), null);
jContentPane.add(getBtnActual(), null);
45
jContentPane.add(getTxtid(), null);
jContentPane.add(getTxtComp(), null);
jContentPane.add(getTxtTel(), null);
ImageIcon(getClass().getResource("images/Provee.png")));
lblBanner.setBounds(new Rectangle(-155, -13, 664, 90));
jContentPane = new JPanel(); jContentPane.setLayout(null);
jContentPane.add(lblBanner, null); jContentPane.add(lblID, null);
jContentPane.add(lblComp, null); jContentPane.add(lbltel, null);
jContentPane.add(getBtnCancel(), null);
jContentPane.add(getBtnGuardar(), null);
jContentPane.add(getBtnNuevo(), null);
jContentPane.add(getBtnActual(), null);
jContentPane.add(getTxtid(), null);
jContentPane.add(getTxtComp(), null);
jContentPane.add(getTxtTel(), null);
jContentPane.add(lblimg, null);
jContentPane.add(getBtnSalir(), null);
jContentPane.add(getJScrollPane1(), null);
}
return jContentPane;
}
Código de creación interfaz Mesa
package Vista;
import java.*;
public class SelcMesa extends JFrame {
private
private
private
private
private
private
private
private
private
private
static final long serialVersionUID = 1L;
JPanel jContentPane = null;
JLabel lblBanner = null;
JLabel lblMesa = null;
JLabel lblPer = null;
JComboBox jcbMesa = null;
JComboBox jcbPersonas = null;
JLabel lblIma = null;
JButton btnCon = null;
JButton btnCancel = null;
public SelcMesa() {
super();
initialize();
}
private void initialize() {
this.setSize(465, 200);
this.setContentPane(getJContentPane());
this.setTitle("Mesa");
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setResizable(false);
} private JPanel getJContentPane() {
if (jContentPane == null) {
lblIma = new JLabel();
lblIma.setBounds(new Rectangle(256, 41, 192, 116));
lblIma.setIcon(new
ImageIcon(getClass().getResource("images/mesa.png")));
lblPer = new JLabel();
lblPer.setBounds(new Rectangle(55, 81, 62, 16));
lblPer.setText("Personas:");
lblMesa = new JLabel();
lblMesa.setBounds(new Rectangle(79, 48, 38, 16));
lblMesa.setText("Mesa:");
lblBanner = new JLabel();
lblBanner.setBounds(new Rectangle(148, 15, 113, 16));
lblBanner.setText("Seleccionar Mesa");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(lblBanner, null);
46
Codificación de funciones
Conexión a base de datos
package Modelo;
import java.sql.*;
public class Conexion {
private Connection MYSQL_Connection = null;
private String MYSQL_USER = "root";
private String MYSQL_PASSWORD="";
private String MYSQL_PUERTO = "3306";
private String MYSQL_SERVER="localhost";
private String MYSQL_INSTANCIA="dbJBJBar";
public Conexion() {
seviceLocator();
}
public void seviceLocator(){
StringBuilder URL= new StringBuilder();
try {
Class.forName("com.mysql.jdbc.Driver");
URL.append("jdbc")
.append(":")
.append("mysql")
.append(":")
.append("//")
.append(this.MYSQL_SERVER)
.append(":")
.append(this.MYSQL_PUERTO)
.append("/")
.append(this.MYSQL_INSTANCIA);
System.out.println("URL------>"+ URL.toString());
this.MYSQL_Connection=DriverManager.getConnection(URL.toString(),
this.MYSQL_USER,this.MYSQL_PASSWORD);
} catch (ClassNotFoundException error) {
error.printStackTrace();
}
catch (SQLException error) {
error.printStackTrace();
}}
public Connection getMYSQL_Connection() throws SQLException{
if(this.MYSQL_Connection!=null){
return MYSQL_Connection;
}
else {
throw new SQLException("Servicio no disponible");}
}
public void CloseConnection(PreparedStatement ps, ResultSet rs,Connection conn) throws Exception{
try {
conn.close();
conn=null;
ps.close();
ps=null;
rs.close();
rs=null;
} catch (Exception error) {
throw new Exception("Error al cerrar SQL");
}
}
47
Codificación de botones entrar y salir del interfaz Principal
private JButton getBtnIngresar() {
if (btnIngresar == null) {
btnIngresar = new JButton();
btnIngresar.setIcon(new
ImageIcon(getClass().getResource("images/ingresar.jpg")));
btnIngresar.setBounds(new Rectangle(567, 442, 242, 66));
btnIngresar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new Login();
}
});
}
return btnIngresar;
}
private JButton getBtnSalir() {
if (btnSalir == null) {
btnSalir = new JButton();
btnSalir.setIcon(new
ImageIcon(getClass().getResource("images/salir.gif")));
btnSalir.setBounds(new Rectangle(1020, 580, 37, 41));
btnSalir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.exit(0);
}
});
}
return btnSalir;
}
Boton Acceder Login
private JButton getbtnEntrar() {
if (btnEntrar == null) {
btnEntrar = new JButton("Entrar");
btnEntrar.setBounds(new Rectangle(311, 276, 83, 25));
btnEntrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
if (txtUser.getText().length() > 0 &&
txtPass.getText().length() > 0){
}
if (validarUsuario(txtUser.getText(),
txtPass.getText())) {
JOptionPane.showMessageDialog(btnCancelar,
"Bienvenido al Sistema");
JFrame frame = new Menu();
frame.setVisible(true);
setVisible(false);
}else{
JOptionPane.showMessageDialog(btnEntrar,
"Verifique Clave o Password");
}
} catch (Exception e2) {
}
}
});
}
48
Método Validar usuario
boolean validarUsuario(String Usr, String psw) throws IOException{
Connection conn = null;
Conexion co = new Conexion();
try {
conn = (Connection) co.getMYSQL_Connection();
java.sql.Statement QuerySql = conn.createStatement();
ResultSet RestQuery = QuerySql.executeQuery("select * from usuario
where" +
" Usuario='"+Usr+"' AND Contraseña='"+psw+"'");
System.out.println("Validacio-->" + RestQuery.toString());
if (RestQuery.first()) {
return true;
}else{
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
49
Botón guardar usuario.
private JButton getBtnGuardar() {
if (btnGuardar == null) {
btnGuardar = new JButton();
btnGuardar.setBounds(new Rectangle(183, 489, 42, 41));
btnGuardar.setIcon(new
ImageIcon(getClass().getResource("images/guardar.png")));
btnGuardar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
CtrUser ctr = new CtrUser();
UsuarioBean bean = new UsuarioBean();
try {
bean.setID(Integer.parseInt(txtid.getText()));
bean.setTipo(TipList.getSelectedItem());
bean.setNombre(txtNom.getText());
bean.setPaterno(txtPat.getText());
bean.setMaterno(txtMat.getText());
bean.setDireccion(txtDir.getText());
bean.setTelefono(Integer.parseInt(txtTel.getText()));
bean.setEmail(txtMail.getText());
bean.setCurp(txtCurp.getText());
bean.setUsuario(txtUser.getText());
bean.setContraseña(txtPass.getText());
bean.setFoto(txtUrl.getText());
ctr.insert(bean);
JOptionPane.showMessageDialog(btnNuevo, "El
Usuario " + txtid.getText() +
" fue dado de alta
satisfactoriamente","",JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {
if(ex.getMessage().indexOf("DuplicateEntrie")!=
1){
JOptionPane.showMessageDialog(btnNuevo,
"El Usuario " + txtid.getText() +
" ya existe", "",
JOptionPane.ERROR_MESSAGE);
}
else{
JOptionPane.showMessageDialog(btnNuevo,
"Se presento un problema al tratar de " +
"acceder a la base de
datos", "BaseData", JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
}
btnBorrar.setEnabled(true);
btnEditar.setEnabled(true);
}
});
}
return btnGuardar;
}
50
Botón Editar (save) usuario
private JButton getBtnUpdate() {
if (btnUpdate == null) {
btnUpdate = new JButton();
btnUpdate.setBounds(new Rectangle(190, 488, 42, 41));
btnUpdate.setIcon(new
ImageIcon(getClass().getResource("images/guardar.png")));
btnUpdate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
bean.setID(Integer.parseInt(txtid.getText()));
bean.setTipo(TipList.getSelectedItem());
bean.setNombre(txtNom.getText());
bean.setPaterno(txtPat.getText());
bean.setMaterno(txtMat.getText());
bean.setDireccion(txtDir.getText());
bean.setTelefono(Integer.parseInt(txtTel.getText()));
bean.setEmail(txtMail.getText());
bean.setCurp(txtCurp.getText());
bean.setUsuario(txtUser.getText());
bean.setContraseña(txtPass.getText());
bean.setFoto(txtUrl.getText());
ctr.update(bean);
JOptionPane.showMessageDialog(btnNuevo, "El Usuario
" + txtid.getText() +
" fue modificado
satisfactoriamente","",JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {
if(ex.getMessage().indexOf("DuplicateEntrie")!= 1){
JOptionPane.showMessageDialog(btnNuevo, "El
Usuario " + txtid.getText() +
" ya existe", "",
JOptionPane.ERROR_MESSAGE);
}
else{
JOptionPane.showMessageDialog(btnNuevo, "Se
presento un problema al tratar de " +
"acceder a la base de datos",
"BaseData", JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
}
}
});
}
return btnUpdate;
}
51
Botón Borrar usuario
private JButton getBtnBorrar() {
if (btnBorrar == null) {
btnBorrar = new JButton();
btnBorrar.setBounds(new Rectangle(331, 489, 42, 41));
btnBorrar.setIcon(new
ImageIcon(getClass().getResource("images/eliminar.jpg")));
btnBorrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
CtrUser ctr = new CtrUser();
UsuarioBean bean = new UsuarioBean();
try {
bean.setID(Integer.parseInt(txtid.getText()));
ctr.delete(bean);
JOptionPane.showMessageDialog(btnNuevo, "El
Usuario " + txtid.getText() +
" fue
Eliminado","",JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {
if(ex.getMessage().indexOf("DuplicateEntrie")!= 1){
JOptionPane.showMessageDialog(btnNuevo, "El Usuario " + txtid.getText() +
" no se puede
eliminar", "", JOptionPane.ERROR_MESSAGE);
}
else{
JOptionPane.showMessageDialog(btnNuevo, "Se presento un problema al tratar de " +
"acceder a la base de
datos", "BaseData", JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
}
}
});
}
return btnBorrar;
}
52
Clase Usuario Bean
package Controlador;
public class UsuarioBean {
private int ID;
private String Tipo;
private String nombre;
private String paterno;
private String materno;
private String direccion;
private int Telefono;
private String email;
private String curp;
private String foto;
private String usuario;
private String contraseña;
public String getTipo() {
return Tipo;
}
public void setTipo(Object object) {
Tipo = (String) object;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getPaterno() {
return paterno;
}
public void setPaterno(String paterno) {
this.paterno = paterno;
}
public String getMaterno() {
return materno;
}
public void setMaterno(String materno) {
this.materno = materno;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public int getTelefono() {
return Telefono;
}
public void setTelefono(int telefono) {
Telefono = telefono;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCurp() {
return curp;
}
public void setCurp(String curp) {
this.curp = curp;
}
public String getFoto() {
return foto;
}
public void setFoto(String foto) {
this.foto = foto;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getContraseña() {
53
Interface visual (métodos Insert, update, delete)
package Modelo;
public interface Interface {
public
public
public
int Insert (Object bean) throws Exception;
int Delete (Object bean) throws Exception;
int Update (Object bean) throws Exception;
}
Clase Usuario Dao (insert, update, delete)
Insert
public int Insert(Object bean) throws Exception {
StringBuffer Query = new StringBuffer();
int result = 0;
Connection CONN;
PreparedStatement ps;
UsuarioBean user = (UsuarioBean) bean;
try {
Query .append("INSERT INTO usuario")
.append("(idusuario, Tipo, Nombre, Paterno, Materno, Direccion,
Telefono, " +
"Email, Curp, Usuario, Contraseña, Foto")
.append(")VALUES(")
.append(user.getID())
.append(", '")
.append(user.getTipo())
.append("', '")
.append(user.getNombre())
.append("', '")
.append(user.getPaterno())
.append("', '")
.append(user.getMaterno())
.append("', '")
.append(user.getDireccion())
.append("', ")
.append(user.getTelefono())
.append(", '")
.append(user.getEmail())
.append("', '")
.append(user.getCurp())
.append("', '")
.append(user.getUsuario())
.append("', '")
.append(user.getContraseña())
.append("', '")
.append(user.getFoto())
.append("')");
System.out.println("Insert-->" + Query.toString());
CONN = (Connection) this.getMYSQL_Connection();
ps= CONN.prepareStatement(Query.toString());
ps.executeUpdate();
Delete
return result;
} catch (Exception e) {
throw e;
}
}
54
public int Delete(Object bean) throws Exception {
int Result=0;
Connection CONN;
StringBuffer query= new StringBuffer();
PreparedStatement ps;
UsuarioBean user = (UsuarioBean) bean;
try {
query .append("delete ")
.append("from ")
.append("usuario ")
.append("where ")
.append("idUsuario = ")
.append(user.getID());
System.out.println("Delete-->" + query.toString());
CONN = (Connection) this.getMYSQL_Connection();
ps= CONN.prepareStatement(query.toString());
ps.executeQuery();
return Result;
} catch (Exception e) {
throw e;
}
}
55
Update
public int Update(Object bean) throws Exception {
StringBuffer Query = new StringBuffer();
int result = 0;
Connection CONN;
PreparedStatement ps;
UsuarioBean user = (UsuarioBean) bean;
try {
Query .append("update usuario set ")
.append("Tipo = ")
.append("'")
.append(user.getTipo())
.append("', Nombre = '")
.append(user.getNombre())
.append("', Paterno = '")
.append(user.getPaterno())
.append("', Materno = '")
.append(user.getMaterno())
.append("', Direccion = '")
.append(user.getDireccion())
.append("', Telefono = ")
.append(user.getTelefono())
.append(", Email = '")
.append(user.getEmail())
.append("', Curp = '")
.append(user.getCurp())
.append("', Usuario = '")
.append(user.getUsuario())
.append("', Contraseña = '")
.append(user.getContraseña())
.append("', Foto = '")
.append(user.getFoto())
.append("'")
.append("Where idUsuario = ")
.append(user.getID());
System.out.println("Insert-->" + Query.toString());
CONN = (Connection) this.getMYSQL_Connection();
ps= CONN.prepareStatement(Query.toString());
ps.executeUpdate();
return result;
} catch (Exception e) {
throw e;
}
}
}
56
Clase Controlador usuario (CtrUsuer)
package Controlador;
import Modelo.UsuarioDao;
public class CtrUser {
public void insert(UsuarioBean bean ) throws Exception{
UsuarioDao user = new UsuarioDao();
user.Insert(bean);
}
public void delete(UsuarioBean bean ) throws Exception{
UsuarioDao user = new UsuarioDao();
user.Delete(bean);
}
public void update(UsuarioBean bean ) throws Exception{
UsuarioDao user = new UsuarioDao();
user.Update(bean);
}
}
Botón Examinar File (imagen usuario)
private JButton getBtnUrl() {
if (btnUrl == null) {
btnUrl = new JButton();
btnUrl.setBounds(new Rectangle(328, 223, 102, 20));
btnUrl.setText("Examinar...");
btnUrl.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
FileNameExtensionFilter filtroImagen=new
FileNameExtensionFilter("JPG, PNG & GIF","jpg","png","gif");
fileChooser.setFileFilter(filtroImagen);
int seleccion =
fileChooser.showSaveDialog(fileChooser);
if (seleccion == JFileChooser.APPROVE_OPTION){
File fichero = fileChooser.getSelectedFile();
adr=fichero.getAbsolutePath();
txtUrl.setText(adr);
try{
File file = new File(adr);
image = ImageIO.read(file);
} catch (IOException ima) {
}}
lblFoto.setIcon(new ImageIcon(image));
}
});
}
return btnUrl;
}
57
Botón Antes
private JButton getBtnAntes() {
if (btnAntes == null) {
btnAntes = new JButton();
btnAntes.setBounds(new Rectangle(80, 82, 43, 15));
btnAntes.setText("<");
btnAntes.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
btnDespues.setEnabled(true);
Connection conn = null;
java.sql.PreparedStatement ps = null;
ResultSet rs = null;
Conexion co = new Conexion();
try {
conn = (Connection)
co.getMYSQL_Connection();
ps = conn.prepareStatement("SELECT * FROM
usuario order by idUsuario limit 0,1");
rs = ps.executeQuery();
if (rs.next()) {
txtid.setText(Integer.toString(rs.getInt("idUsuario")));
TipList.setSelectedItem(rs.getString("Tipo"));
txtNom.setText(rs.getString("Nombre"));
txtPat.setText(rs.getString("Paterno"));
txtMat.setText(rs.getString("Materno"));
txtDir.setText(rs.getString("Direccion"));
txtTel.setText(Integer.toString(rs.getInt("Telefono")));
txtMail.setText(rs.getString("Email"));
txtCurp.setText(rs.getString("Curp"));
txtUser.setText(rs.getString("Usuario"));
txtPass.setText(rs.getString("Contraseña"));
txtUrl.setText(rs.getString("Foto"));
}
btnEditar.setEnabled(true);
btnBorrar.setEnabled(true);
} catch (Exception e2) {
JOptionPane.showMessageDialog(null, "Ocurrio
un error en la BD"+e2.getMessage());
e2.printStackTrace();
}
}
});
}
return btnAntes;
}
58
Botón Siguiente
private JButton getBtnDespues() {
if (btnDespues == null) {
btnDespues = new JButton();
btnDespues.setBounds(new Rectangle(120, 82, 43, 15));
btnDespues.setText(">");
btnDespues.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
Integer actual = Integer.parseInt(txtid.getText());
Connection conn = null;
java.sql.PreparedStatement ps = null;
ResultSet rs = null;
Conexion co = new Conexion();
try {
conn = (Connection)
co.getMYSQL_Connection();
ps = conn.prepareStatement("SELECT * FROM
usuario WHERE idUsuario > "+ actual +
" order by idUsuario ASC limit
0,1");
rs = ps.executeQuery();
if (rs.next()) {
txtid.setText(Integer.toString(rs.getInt("idUsuario")));
TipList.setSelectedItem(rs.getString("Tipo"));
txtNom.setText(rs.getString("Nombre"));
txtPat.setText(rs.getString("Paterno"));
txtMat.setText(rs.getString("Materno"));
txtDir.setText(rs.getString("Direccion"));
txtTel.setText(Integer.toString(rs.getInt("Telefono")));
txtMail.setText(rs.getString("Email"));
txtCurp.setText(rs.getString("Curp"));
txtUser.setText(rs.getString("Usuario"));
txtPass.setText(rs.getString("Contraseña"));
txtUrl.setText(rs.getString("Foto"));
}
} catch (Exception e2) {
JOptionPane.showMessageDialog(null, "Ocurrio
un error en la BD"+e2.getMessage());
e2.printStackTrace();
}
}
});
}
return btnDespues;
}
59
Botón Actualizar llenado de tabla
private JButton getBtnActual() {
if (btnActual == null) {
btnActual = new JButton();
btnActual.setBounds(new Rectangle(177, 218, 96, 20));
btnActual.setText("Actualizar");
btnActual.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
Connection conn = null;
Conexion co = new Conexion();
try {
DefaultTableModel modelo = new
DefaultTableModel();
jtProvee.setModel(modelo);
conn = (Connection) co.getMYSQL_Connection();
java.sql.Statement st =
conn.createStatement();
ResultSet rs = st.executeQuery("Select * from
Proveedores");
java.sql.ResultSetMetaData rsMd =
rs.getMetaData();
int cantidadColumnas = rsMd.getColumnCount();
for (int i = 1; i <= cantidadColumnas; i++) {
modelo.addColumn(rsMd.getColumnLabel(i));
}
while (rs.next()) {
Object[] fila = new
Object[cantidadColumnas];
for (int i = 0; i < cantidadColumnas;
i++) {
fila[i] = rs.getObject(i+1);
}
modelo.addRow(fila);
}
rs.close();
conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
});
}
return btnActual;
}
60
Creación de la base de datos
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `dbJBJBar` DEFAULT CHARACTER SET latin1 COLLATE
latin1_swedish_ci ;
USE `dbJBJBar` ;
-- ------------------------------------------------------ Table `dbJBJBar`.`Zona`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS ` dbJBJBar `.`Zona` (`idZona` INT NOT NULL ,`Nombre`
VARCHAR(45) NULL ,PRIMARY KEY (`idZona`) )
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `dbJBJBar`.`mesas`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS ` dbJBJBar `.`mesas` (`idmesas` INT NOT NULL ,PRIMARY KEY
(`idmesas`) ,INDEX `ID_zona` () ,CONSTRAINT `ID_zona`FOREIGN KEY ()REFERENCES ` dbJBJBar
`.`Zona` ()
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `dbJBJBar`.`Provedores`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS ` dbJBJBar `.`Provedores` (`idProvedores` INT NOT NULL
,`nombre` VARCHAR(45) NULL ,`telefono` VARCHAR(45) NULL ,`direccion` VARCHAR(45) NULL
,`correo` VARCHAR(45) NULL ,PRIMARY KEY (`idProvedores`) )
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `dbJBJBar`.`cliente`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS ` dbJBJBar `.`cliente` (`idcliente` INT NOT NULL ,
`nombre` VARCHAR(45) NULL ,PRIMARY KEY (`idcliente`) )ENGINE = InnoDB;
-- ------------------------------------------------------ Table `dbJBJBar`.`Acceso`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS ` dbJBJBar `.`Acceso` (`idAcceso` INT NOT NULL ,`user`
VARCHAR(45) NULL ,`pass` VARCHAR(45) NULL ,PRIMARY KEY (`idAcceso`) )
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `dbJBJBar`.`Usuarios`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `dbJBJBar`.`Usuarios` (`idUsuarios` INT NOT NULL ,`Nomabre`
VARCHAR(45) NULL ,`Amaterno` VARCHAR(45) NULL ,`Apaterno` VARCHAR(45) NULL `Direccion`
VARCHAR(45) NULL ,`curp` VARCHAR(45) NULL ,`telefono` INT NULL ,`correo` VARCHAR(45) NULL
,`tipo` VARCHAR(45) NULL , PRIMARY KEY (`idUsuarios`) ,INDEX `ID_acceso` () ,CONSTRAINT
`ID_acceso` FOREIGN KEY () REFERENCES `dbJBJBar`.`Acceso` () ON DELETE NO ACTION ON
UPDATE NO ACTION)
ENGINE = InnoDB;
61
X. Resultados obtenidos
Como resultado del trabajo realizado en el proyecto se logró la creación de un
sistema integral, seguro y eficiente. Que permite a los trabajadores de JBJ Bar
atender las necesidades del establecimiento de manera rápida y con calidad. Los
módulos que presenta el programa son los siguientes:
Mejora en la interfaz gráfica de usuario ver imagen X.1.
16Imagen X.1 Pantalla de bienvenida
62
Se incrementó la seguridad con respecto al sistema anterior mediante el módulo
de “login” donde el usuario previamente cargado en el sistema puede acceder al
menú del programa ver imagen X.2..
17Imagen X.2 Formulario de Loguin
63
El programa cuenta con un menú inteligente que habilita cada sub-módulo de esta
pantalla según los privilegios del usuario ver imagen X.3.
18Imagen X.3 Menú de Opciones
64
El dar usuarios de alta se optimizó y es una tarea sencilla a la que sólo los
perfiles con los más altos privilegios tienen acceso. Esto para dar de alta un nuevo
usuario que tendrá (según el criterio del administrador) derechos para manipular el
sistema ver imagen X.4.
19Imagen X.4 Administración de Usuarios
65
También se logró hacer la “alimentación” de la base de datos mediante un módulo
sencillo. Donde los productos serán dados de alta y donde también podrán ser
modificados o eliminados del sistema ver imagen X.5.
20Imagen X.5 Administración de Productos
66
XI. Análisis de riesgos
RIESGO
DESCRIPCIÓN
ACCIÓN DE CONTINGENCIA
Confianza
El abuso de confianza de Alto
un subalterno podría
corromper el sistema de
seguridad y ocasionar
perdidas.
Usar Hardware obsoleto o Alto
de mala calidad.
Es importante contar con un equipo
de confianza responsable del sistema
y
asegurar
su
correcto
funcionamiento.
Mantenimiento
preventivo
Que
no
se
brinde Medio
mantenimiento preventivo
a equipo del lugar.
Programar mantenimientos periódicos
a los equipos y así evitar fallas.
Mantenimiento
SQL
No brindar mantenimiento Alto
a la base de datos.
Dar seguimiento al sistema y elaborar
mantenimientos preventivos a la base
de datos así como al servidor de esta.
Capacitación
No brindar capacitación al Alto
personal.
Proporcionar la información necesaria
para que el trabajador utilice de
manera correcta el sistema.
Innovación
tecnológica
No proyectar a futuro el Medio
cambio en la tecnología.
Dar
seguimiento
al
sistema,
proporcionarle nuevas tecnologías
sobre la marcha.
Equipos
suficiente
Solicitar el equipo adecuado.
67
XII. Conclusiones
La actual perspectiva con respecto al uso de tecnologías de la información que se
adquirió, es sin duda, bastante amplia e implica una nueva visión en cuanto a la
aplicación de las TIC‟s.
Es importante antes de empezar un proyecto saber con cuidado, que es lo que se
desea al final de y sobre todo que beneficios más allá de los esperados se pueden
conseguir.
Es necesario tener una visión de las herramientas que se podrán utilizar en el
proyecto y que provecho pueden sacarse de estas, antes, durante y después de
realizar un sistema como el que se documentó aquí.
Las herramientas como: El modelado de programas y la administración de
proyectos pueden ahorrar mucho tiempo y recursos en la realización de sistemas.
El uso del modelado vista control. Permitirá que la mejora continua del programa
TPV para JBJ Bar sea más práctica y sencilla. Así el sistema será sustentable.
Sin duda la mejora grafica en el sistema y el manejo del programa son muy
amigables en la interfaces de usuario, por lo que lo hace muy intuitivo sin ser un
programa vulnerable, gracias al refuerzo de la seguridad del sistema y la logística
de la programación.
68
XIII. Recomendaciones
Es importante que a partir del término de la instalación del Programa TPV en JBJ
Bar se tomen en cuenta las siguientes recomendaciones y aclaraciones:
Es importante que la adquisición del programa cuente con una licencia de uso
vigente. La adquisición de programas es en realidad la adquisición solamente del
derecho de uso del programa, la licencia, bajo términos definidos por el fabricante.
El uso de software fuera de esos términos constituye delito contra la propiedad
intelectual.
Debe instalarse solamente el software necesario para las funciones esperadas del
equipo. En la mayoría de los casos, eso se limita al software básico, sistema
operativo, aplicaciones de oficina y navegación y el cliente de red. Toda
computadora adquirida para JBJ Bar debe contar con licencias para el software
mencionado. Las licencias deben corresponder a las versiones en uso. No se
puede instalar una versión más reciente con una licencia de versiones anteriores.
Los responsables del equipo deben estar familiarizados con sus máquinas y
revisarlas periódicamente para detectar problemas de software.
Debido a que TPV en JBJ Bar es un sistema exclusivo de la empresa, el soporte
técnico estará a cargo de los creadores del sistema por lo que cualquier anomalía
con el programa debe ser reportada únicamente con los responsables de la
elaboración del sistema.
69
Es importante antes de hacer uso del sistema que; Los usuarios potenciales estén
informados al respecto del uso básico de una computadora o de lo contrario
solicitar una capacitación.
El sistema informático y red del establecimiento está orientado al uso exclusivo
del sistema TPV JBJ Bar. Cualquier otro uso podría causar fallas en el rendimiento
del programa.
Los usuarios cuyo perfil sea de administración deberá ser responsable de la
gestión de las cuentas subordinas.
Cada usuario es responsable del uso correcto de su cuenta de lo contrario se
podría causar un fallo en el rendimiento del sistema.
Cualquier modificación en la funcionalidad o la red del programa debe llevarse a
cabo por el responsable de la elaboración del sistema así como el mantenimiento
de los equipos (si es que se es el proveedor de los mismos).
La asistencia técnica prestada por el servicio del programa TPV JBJ Bar esta
exclusivamente dirigida a aquellos equipos que sean propiedad de JBJ Bar y del
sistema propiamente.
Es muy importante mantener el área de las estaciones en completo orden y en
lugares seguros para evitar accidentes que afecten el desempeño del sistema y de
la productividad del establecimiento.
70
XIV. Referencias bibliográficas
LENGUAJE DE PROGRAMACION JAVA
3era Edición
Ken Arnold, David Holmes
Editorial Addison Wesley
Paginas: 99, 100, 101, 102,103
JAVA 2
3era Edición, Abril 2010
Editorial Alfa – Omega
Prof. Javier Caballo Sierra
Paginas: 12,13,13,14,31,32,33,40,252,259,260
ANALISIS Y DISEÑO DE SISTEMAS
Segunda Edición
Editorial Mc Graw Hill
James A. Senn
Paginas: 11, 12, 122, 123, 124, 125, 380, 381,382
MYSQL
Segunda Edición
Editorial Alfa – Omega
Cesar Pérez López
Paginas: 9, 10, 11, 34, 35, 38, 39,40
71