0% encontró este documento útil (0 votos)
22 vistas224 páginas

Perfil de Proyecto: Facultad de Ingeniería en Ciencias de La Computación Y Telecomunicaciones

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 224

FACULTAD DE INGENIERÍA EN CIENCIAS DE LA

COMPUTACIÓN Y TELECOMUNICACIONES
INGENIERIA INFORMATICA
INGENIERIA EN SISTEMAS
2-2013

PERFIL DE PROYECTO
Sistema de información para gestionar las comandas,
reservas y cobranza del servicio del restaurant
“REPUBLICA”
DOCENTE : Ing. Garzón Cuellar Angélica
MATERIA : Sistemas De Información I INF – 342
GRUPO : #2
ESTUDIANTES : Cisneros León Gustavo 210041099
Guadama Luis Gerónimo Martín 210031557
Reyes Fuentes Renato 210022140
Rodríguez Aguilera Luis Gustavo 210048409
Rosales Montaño Paola 210006935
GRUPO : ´SB´
FECHA : 5 de diciembre

Santa Cruz de la Sierra – Bolivia


2013
INDICE
1. Perfil 1
1.1. Introducción 1
1.2. Antecedentes 2
1.3. Estructura Organizacional 3
1.4. Justificación 4
1.5. Descripción del problema 4
1.6. Formulación el problema 8
1.7. Objetivos 9
1.7.1. Objetivo General 9
1.7.2. Objetivo Específico 9
1.8. Alcance 10
1.9. Entrevista 16
2. Marco Teorico 22
2.1. Elementos del Sistema Basado en Computadoras 22
2.1.1. Hardware 22
2.1.1.1. Servidor 22
2.1.1.2. Cliente 22
2.1.1.3. Medios de Comunicación 22
2.1.1.4. Otros Dispositivos 22
2.1.2. Software 22
2.1.2.1. Servidor 22
2.1.2.2. Otro software adicional 23
2.1.3. Datos 23
2.1.4. Procesos 23
2.1.5. Gente/Usuario 23
2.1.6. Documento 23
2.2. Tecnologia para el Desarrollo del Software 24
2.2.1. Estrategia para el desarrollo del software 24
2.3. Metodología para el desarrollo del software 25
2.3.1. Características del PUDS 25
2.3.2. Características de UML 26
2.4. Herramientas de Desarrollo 27
2.4.1. Software 27
2.4.2. Hardware 28
2.5. Posibles Costos 28
2.6. Posibles Beneficios 31
2.6.1. Tiempo 31
2.6.2. Esfuerzo 31
2.6.3. Costos 31
2.7. Posibles Clientes 31
3. Método de Requerimiento 32
ISHIKAWA.- 32
3.1. Identificar la lista de problemas.- 32
3.1.1. Lista de problemas 32
3.1.2. Depurar problemas 33
3.1.3. Lista de problemas finales 33
3.1.4. Indicar propietario de problemas 34
3.1.5. Analizar problemas 35
3.1.6. Diseño grafico 36
3.2. Identificar Categorías 36
3.3. Identificar causa efecto 37
3.4. Analizar y discutir el diagrama 38
3.5. Alternativa de solución.- 38
3.6. Conclusión.- 38
4. Modelo de dominio 39
4.1. Diseño Lógico 40
4.1.1. Diagrama de clases 40
4.1.2. Diagrama Relacional 41
5. Modelo de Negocio 42
Diagrama de Actividades 42
6. Flujo de Trabajo: Requisitos 47
6.1. Identificación de Actores y Casos de Uso 47
6.2. Priorizar Casos de Uso 50
6.3. Detallar Casos de Uso 51
6.4. Prototipo de interfaz 81
6.5. Estructurar Modelo de Casos de Uso 84
7. Flujo de Trabajo: Análisis 85
7.1. Analisis de Arquitectura 85
7.1.1. Identificar paquetes 85
7.1.2. Vista del Paquete 87
7.1.3. Encapsular Casos de Uso 92
7.2. Analizar Casos de Uso 96
7.3. Análisis de Paquetes 125
8. Flujo de Trabajo: Diseño 126
8.1. Diseño de Arquitectura 126
8.1.1. Arquitectura física: Modelo de Despliegue 126
8.1.2. Arquitectura Lógica: Diagrama Organizado en Capas 127
8.2. Diseño de datos 128
8.2.1. Diseño lógico 128
8.2.2. Diseño físico 130
Script 133
Actualización de tuplas 140
8.2.3. Consultas 148
8.2.4. Procedimientos almacenados y triggers 151
8.3. Diseño de la interfaz humana 171
8.3.1. Prototipo principal 171
8.3.2. Formulario 171
8.3.3. Reportes 173
9. Flujo de trabajo: Implementación de Arquitectura 177
9.1. Implementación del Sistema de Información 177
9.1.1. Modelo de Implementación 177
9.1.2. Implementacion de la arquitectura 178
9.2. Implementación de Subsistema 179
9.3. Elección de la plataforma de desarrollo de software 182
9.3.1. Lenguaje de programación 182
9.3.2. Base de datos 182
9.3.3. Sistema operativo 182
9.3.4. Herramientas y otros recursos 182
10. Conclusión 183
11. Recomendación 183
12. Bibliografía 184
13. Anexos 185
1. Perfil
1.1. Introducción
Hoy en día, el uso de la tecnología se ha convertido en una herramienta
primordial para las instituciones públicas y privadas, siendo estos donde se
genera mayor información. Indudablemente, en el mundo gastronómico, la
gran falla que observamos en la mayoría de los restaurantes, es la
atención al cliente. El servicio de atención al cliente es el conjunto de
actividades interrelacionadas que ofrece un suministrador con el fin de que
el cliente obtenga el producto en el momento adecuado.
La documentación es un recurso organizacional, el cual provee información
importante para la institución. La utilización de sistemas automatizados
para el almacenamiento de información nos permite generar el documento
requerido de manera eficaz, el cual mejora el rendimiento en el desempeño
en las actividades de la institución. Es así, que el presente Proyecto es una
herramienta que permite solucionar los problemas que se tiene en el sector
de atención al cliente de la empresa “REPUBLICA”, con un enfoque que
permita controlar y generar documentación para la mejor administración de
la información. Los sistemas de información brindan una infinidad de
utilidades para mejorar todo el proceso de almacenamiento, administración
de datos de cualquier empresa que lo necesite por no decir en realidad
todas las empresas en general sin importar el rubro en el cual se
desempeñan. En la actualidad el restaurante realiza la recepción de forma
manual, es decir que se registra en libretas, y cada pedido es enumerado
para posteriormente sea entregado de manera ordenada. Una vez tomada
la orden, esta es llevada a jefe de cocina, para ser elaborado, y finalmente
entregado. Las reservas se anotan en una agenda, en la cual especificara
la cantidad de mesas, y la hora para la cual será la reserva. El cobro del
servicio se realiza de forma manual por la cajera.

Por esta razón hemos decidido implementar un sistema de información


para subsanar los problemas anteriormente mencionados, con respecto a
los pedidos, reservas y cobro del mismo.

1
1.2. Antecedentes

Este trabajo fue realizado en el restaurant “REPUBLCA”, el cual nació el


12 de octubre de 2012, siendo una empresa en crecimiento. Ubicada en
santa cruz de la sierra, en la calle bolívar Nº 175 al frente de COTAS.

El directorio está compuesto por los siguientes socios: Ronald Martonell,


Fabiola Inchausti, Freddy Diamante, Alfredo Román, Bernardo Rocabado
y Matías Mendoza.

REPUBLICA se dedica a la venta de una variedad de platos, postres y


bebidas, ofreciendo a la población cruceña un lugar agradable, de buen
servicio, y precios accesibles.

Hoy en día REPUBLICA es una empresa que asciende favorablemente,


pues todos los días no les faltan los clientes, además ellos se marchan
satisfechos y dispuestos a volver.

2
1.3. Estructura Organizacional

ORGANIGRAMA: REPUBLICA

1.4. Justificación

3
Los motivos por el cual es necesario que el restaurante cuente con un
sistema de información, son los siguientes:

✔ Las reservas, los pedidos y el cobro del servicio se realiza de

forma manual.

✔ No existe control en la disponibilidad de mesas para el cliente en

el restaurante.

✔ No existe un conocimiento de tiempo aproximado de la entrega

del pedido al cliente.

1.5. Descripción del problema

Es de conocimiento general que cualquier empresa comercial o que se


dedica a la venta de productos o servicios, desea tener un control
exhaustivo de su información, para poder determinar con facilidad si su
negocio es rentable o no.

El restaurant “REPUBLICA” al momento de: recepcionar los pedidos del


cliente, designar ubicación de mesa, realizar reservas, realizar cobranzas,
y su respectiva facturación, se realiza de forma manual proporcionando
información no confiable, inoportuna y lenta, la cual la hace ineficiente,
produciendo pérdidas de tiempo.

4
A continuación describiremos el proceso básico del restaurant
”REPUBLICA”¨:

1) Horarios de atención

Lunes 18:00 a 23:00


Martes a Miércoles 10:00 a 23:00
Jueves 10:00 a 00:30
Viernes y Sábado 10:00 a 01:00
Domingo 10:00 a 23:00

2) Turnos

● 9:00 a 17:00 (turno de la mañana)


● 17:00 a 1:00 (turno de la noche)

3) Encargados de atención al cliente

● 1 encargado de Caja por turno


● 1 encargado de Barra por turno:

✔ De Café

✔ De bebidas

● 8 Meseros

⮚ Turno de la Mañana

● 3 meseros de martes a jueves


● 4 meseros de viernes a domingo

5
⮚ Turno de Noche

● 4 meseros de lunes a domingo

4) Llegada de los clientes

Cuando llega el cliente al lugar es recibido por un garzón, el cual


ubica al cliente a su respectivo lugar. Un problema que sucede es
que, el lugar está lleno, entonces el garzón se ve obligado a hacer
esperar al cliente, o ubicarlo en otro ambiente.

5) Ubicación de cliente

Cuando el cliente llega y ve que hay espacio en el restaurant, el


garzón busca lugar de ubicación para al cliente, muchas veces no
sabe dónde designarlo, porque pude ser que algunas mesas ya
están reservadas, y si el garzón los designa en la mesa reservada
provocaría molestias para el que la reservo.

Esto se debe a la falta de información entre el garzón y el jefe de


garzón.

6) Realización del pedido

Una vez el garzón ubico al cliente en su lugar le entrega la carta


del menú, muchas veces cuando el cliente ve la carta del menú, y
realiza algún pedido, garzón anota el pedido realizado en una
libreta y lo lleva a la cajera para que ella registre el pedido. Y
resulta que ese pedido se terminó, el cliente se ve obligado a pedir
otro o retirarse del lugar.

6
Si el cliente se queda, deberá esperar a que vuelvan a preparar el
pedido, provocando molestias en el cliente, esto se debe a que no
se informa al cliente que pedido hay en ese momento.

7) Preparación del pedido

Una vez realizado el pedido, la cajera le da el aviso a la chef, ella


lo anuncia al jefe de cocina, para que con sus ayudantes de
cocina preparen el pedido.

Cuando el pedido está terminado, el jefe de cocina, llama a la


chef, para que ella anuncie a los garzones, y ellos se encarguen
de la entrega final del pedido al cliente.

8) Manera de atención

El orden de atención al cliente depende del orden de llegada del


mismo, es decir que cuando llegan los clientes son atendidos por
un garzón y este lleva su pedio a la cajera para registrarlo y luego
es entregado.

Un problema se da cuando un cliente realizo un pedido, y otro


cliente que llego después es atendido y entregado su pedido,
provocando molestias en el cliente que llego antes.

Esto se debe a que no todos los pedidos tienen el mismo tiempo


de preparación, además no hay un orden de atención.

9) Reservación de mesas

7
Muchos clientes desean reservar algunas mesas. A la hora de
reservar una mesa, el cliente llama o personalmente se dirige al
restaurant. Se dirige a la cajera, y ella le pide los siguientes datos:
nombre, número de teléfono, hora, el ambiente, la cantidad de
personas.

La cajera anota en una agenda todos estos datos, y da


información a los garzones para que ellos tengan conocimiento de
esto y no suceda problemas posteriores. Esto se realiza hasta las
8:30 pm, y la reserva después de 30 minutos se anula.

Algunas veces el cliente realiza la reserva sin saber en qué lugar


del restaurant está ubicada, y cuando llega resulta que no era la
ubicación deseada.

Este problema se debe a que el restaurant no brinda información


exacta de la ubicación de sus mesas.

10) Facturación

Cuando el cliente termina de consumir, el garzón se dirige a las


mesa del cliente y realiza los respectivos cálculos del total
consumido. Luego que el cliente cancela y el garzón le entrega un
recibo.

1.6. Formulación el problema

● Almacenar los pedidos de los clientes de forma automática.


● Asignación de garzones para cada ambiente, para una rápida
atención.
● Enumeración de mesas.

8
● Almacenamiento de toda la información del menú (precio, tiempo
de entrega aprox.).
● Almacenamiento de las solicitudes de reserva, para conocimiento
del garzón.
● Facturación de la cuenta de cada cliente de forma automática.

1.7. Objetivos

1.7.1. Objetivo General

Desarrollar un Sistema de Información para gestionar las


comandas, reservas y cobranza del servicio del restaurant
“REPUBLICA”.

1.7.2. Objetivo Específico

✔ Recabar información, mediante entrevistas y preguntas

concretas para obtener información acerca de las comandas,


reservas y formas de cobro que realiza el restaurant.

✔ Utilizar el Proceso Unificado de Desarrollo de Software (PUDS)

como paradigma en el desarrollo del sistema.

✔ Utilizar el Lenguaje Unificado de Modelado (UML) para

desarrollar diferentes diagramas en cada flujo de trabajo del


PUDS.

✔ Diseñar la base de datos utilizando SQL Server 2008.

9
✔ Implementar el sistema de información en el lenguaje de

programación JAVA utilizando la plataforma de desarrollo


NetBeans.

1.8. Alcance
El sistema será capaz de realizar lo siguiente:

● GESTIONAR USUARIO del SISTEMA


Gestionar los distintos tipos de usuario que utilizan el sistema

⮚ Id

⮚ Código de Empleado

⮚ Contraseña

● EMITIR RECIBO
Emitir recibo del pedido que realiza el cliente

⮚ Código

⮚ Código del Cliente

⮚ Fecha

⮚ Total

⮚ Código Mesa

⮚ Id Usuario

10
⮚ Estado

● GESTIONAR RESERVAS
Almacenar los datos del cliente, la cantidad de personas, el
ambiente y la hora, para la confirmación de la respectiva reserva de
mesas.

⮚ Código

⮚ Código del cliente

⮚ Número de personas

⮚ Hora de reserva

⮚ Fecha de reserva

⮚ Estado

● GESTIONAR PEDIDO
Llevar a cabo el registro de los respectivos pedidos que realizan los
clientes.

⮚ Código

⮚ Tiempo de entrega

⮚ Código Recibo

● ADMININISTRAR PRODUCTOS

11
Almacenar los distintos tipos de productos que ofrece el restaurant al
cliente y el precio y tiempo de elaboración de estos.

⮚ Código

⮚ Nombre

⮚ Código del Tipo de producto

⮚ Precio

⮚ Tiempo de elaboración

⮚ Estado

Donde se encuentran:

▪ CAFE

⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

▪ TE

⮚ Código

⮚ Nombre

⮚ Precio

12
⮚ Tiempo de elaboración

▪ POSTRE

⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

▪ ENTRADA

⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

▪ SALADO

⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

▪ PIZZA

13
⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

▪ SOPA

⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

▪ ENSALADA

⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

▪ PANINIS TOSTADO

⮚ Código

⮚ Nombre

14
⮚ Precio

⮚ Tiempo de elaboración

▪ PASTA

⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

▪ CARNE

⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

▪ BEBIDA

⮚ Código

⮚ Nombre

⮚ Precio

⮚ Tiempo de elaboración

15
● GESTIONAR MESA
Administrar la cantidad de mesas que dispone el restaurante, en un
respectivo ambiente, teniendo en cuenta el estado de esta pudiendo
se: disponible u ocupado.

⮚ Código

⮚ Capacidad de sillas

⮚ Estado

⮚ Código Ambiente

● GESTIONAR AMBIENTE
Almacenar los datos del ambiente, siendo estos la capacidad de
personas y el estado en que se encuentra, es decir si aún tiene
mesas disponibles.

⮚ Código

⮚ Descripción

⮚ Capacidad

⮚ Estado

● GESTIONAR TURNO
Almacenar distintos turnos a los que está sujeto a trabajar el
empleado.

⮚ Código

16
⮚ Descripción

⮚ Hora de entrada

⮚ Hora de salida

● GESTIONAR EMPLEADO
Almacenar los datos personales del empleado que corresponden a
toda el área de atención al cliente, en el cual se involucra a: Cajera,
Garzones, Chef, jefe de cocina, otros.

⮚ Código

⮚ Ci

⮚ Nombre

⮚ Apellidos

⮚ Sexo

⮚ Fecha de nacimiento

⮚ Dirección

⮚ Teléfono

⮚ Fecha de ingreso

⮚ Cargo

⮚ Código Turno

17
⮚ Estado

● GESTIONAR CLIENTE
Almacenar los datos personales del cliente para poder estar a su
nombre su reserva y recibo:

⮚ Código

⮚ Nombre

⮚ Teléfono

⮚ Dirección

● GESTIONAR INGREDIENTES
Almacenar los ingredientes para su respectivo producto

⮚ Código

⮚ Nombre

⮚ Precio

● GESTIONAR MODIFICACION
Almacenar la modificación de un pedido realizado

⮚ Código

⮚ Código del Pedido

18
⮚ Código de Producto

1.9. Entrevista

Entrevista # 1

Objetivo: Conocer todo lo referente al proceso de comandas y cobranza con el


propósito de desarrollar un sistema de información que le brinde el apoyo y dar
una solución al tema seleccionado.
Lugar: Restaurant ‘REPÚBLICA’ Duracion: 12 min.
Fecha: 22 de Julio de 2013
DATOS DE LA EMPRESA
Nombre: Restaurant ‘REPÚBLICA’
(X) Privada ( ) Estatal
DATOS DEL ENTREVISTADO
Nombre: Pedro Ariel Andrés Roda Macías
Edad: 21 años
Cargo: Jefe de Cocina
DATOS DEL ENTREVISTADOR
Nombre: - Gustavo Cisneros León
Nombre: - Renato Reyes Fuentes

19
PREGUNTAS
¿Cómo se llama el restaurant?
R.- Se llama ‘República’

¿Dónde queda ubicado el Restaurant?


R.- Está ubicado en la calle Bolívar Nº 175 al frente de Cotas

¿Cuándo se abrió el Restaurant ‘República’?


R.- Se abrió el 12 de Octubre del 2012

¿Cómo se llama el encargado de Administración?


R.- Se llama Rodolfo Bosoe Macías

¿Cuánto tiempo se trabaja por turno?


R.- Se trabaja 8 horas por turno.

¿El área de Atención al Cliente está relacionada con las demás o trabajan
independientemente?
R.- Sí o sí se las áreas están relacionadas entre sí, un área depende de la otra,
en el caso del Área de Atención al Cliente depende del Área de Cocina, sino no
funcionaría ninguno de los dos, entonces sí están relacionadas

¿Cuál es la capacidad máxima de clientes?


R.- Es de 150 personas
¿El pago de la cuenta se hace en caja o los meseros?

20
R.- Los meseros llevan la carta, toman el pedido, lo llevan y ellos son los
encargados de hacer el respectivo cobro de la mesa que están atendiendo.

¿Hay almuerzo ejecutivo?


R.- Si hay, se denomina almuerzo ejecutivo el cual se da una lista de platos, un
‘estándar’, que pueden ser servidos.
¿Cuánto es el tiempo de espera por pedido?
R.- Eso depende del pedido que se haga, en el caso del plato que se demora más
en el preparado, sería un tiempo máximo 40 min de espera.

¿Se puede hacer pedido para llevar?


R.- Si, si se hace

¿Hay alguna promoción?


R.- Si hay, por ejemplo:
- Los jueves todo el día hay cerveza Corsa 2x1
- Martes a Domingo durante el almuerzo no ejecutivo, se puede pedir
cualquier comida de la carta y de regalo dan ya sea un capuchino o un
refresco gratis.
- Cada mes hay un plato especial, se denomina ‘Especial del mes’, son
platos de la carta que se promocionan de manera individual.

¿Hay un lugar donde se hacen reclamos o sugerencias?


R.- Si hay una hoja de sugerencia, y esas hojas que se dan van directamente con
unos de los socios. Cuando se trata de reclamo, uno va directamente con uno de
los socios que siempre está por el restaurant.

21
Entrevista # 2

Objetivo: Conocer los requerimientos de reservas, salida de información y


entrada de datos con el propósito de desarrollar un sistema de información que le
brinde el apoyo y dar una solución al tema seleccionado
Lugar: Restaurant ‘REPÚBLICA’ Duracion: 15 min.
Fecha: 22 de Julio de 2013
DATOS DE LA EMPRESA
Nombre: Restaurant ‘REPÚBLICA’
(X) Privada ( ) Estatal
DATOS DEL ENTREVISTADO
Nombre: Rodolfo Bosoe Macías
Edad: 32 años
Cargo: Administrador General
DATOS DEL ENTREVISTADOR
Nombre: - Guadama Luis Gerónimo Martín
Nombre: - Rodríguez Aguilera Luis Gustavo
Nombre: - Rosales Montaño Paola

22
PREGUNTAS
¿Cuál es el horario de atención al cliente?
R.- Es de:
Lunes 18:00 a 23:00
Martes a Miércoles 10:00 a 23:00
Jueves 10:00 a 00:30
Viernes y Sábado 10:00 a 01:00
Domingo 10:00 a 23:00

¿Cómo se dividen los turnos de trabajo de Atención al Cliente?


R.- Se trabaja de:
- 9:00 a 17:00 (turno de la mañana)
- 17:00 a 1:00 (turno de la noche)

¿Cuántas personas en total están en el área de Atención al Cliente?


R.- Son 18 personas en total que trabajan en esta área.

¿Cuántos son los encargados de atención al cliente?


R.- 1 encargado de Caja por turno
1 encargado de Barra por turno
- De Café
- De bebidas
8 Meseros
Turno de la Mañana
- 3 meseros de martes a jueves

23
- 4 meseros de viernes a domingo
Turno de Noche
- 4 meseros de lunes a domingo

En el caso de Reservas ¿Se puede reservar todo el restaurant?


R.- Sí se puede, no hay límite de Reservas, también se puede hacer reservar
mesas para pocas personas

¿Cuánto es el tiempo de espera para las reservas?


R.- Se espera 30 min, y sólo se hacen reservas hasta las 20:30. Si llegas después
de los 30 min de espera la mesa reservada se pasa a otra persona que están en
espera.

¿Cómo dividen el Restaurant para una mejor Atención al Cliente?


R.- Ellos lo dividen en áreas, pero no están definidas, ya que van dividiendo en
áreas según el flojo de personas que van llegando al restaurant, ellos mismo se
hacen las áreas.

¿Se hace entregas a domicilio?


R.- No se cuenta con un sistema propio de deliver, pero si hay la opción de que
los clientes llamen al Restaurant y hagan su pedido, ya para el envío se manda el
pedido a través de un móvil conocido. Pero sí se puede hacer.

¿Las facturas se escriben manualmente?


R.- Si, se escriben de forma manual.

¿Cómo son anotadas las reservas?


R.- Se anotan de manera manual, y para esto utilizan una agenda.

24
2. Marco Teorico

2.1. Elementos del Sistema Basado en Computadoras

2.1.1. Hardware

2.1.1.1. Servidor
● Procesador CORE I5 2310 OEM 2.96M LGA 1155
● Velocidad de reloj de 3.1 GHz
● Memoria RAM SURE 8 Gb DDR3 1333 MHz
● Grabador DVD/CD Samsung 52X SATA Código VT47573, necesario
para la instalación de aplicaciones
● Tarjeta Madre INTEL DH61WW DDR3 LGA 1155

2.1.1.2. Cliente
El cliente accederá al sistema mediante:
● Computadoras de escritorio

2.1.1.3. Medios de Comunicación


● Monitor SURE 19 pulg. LED SR-LED

2.1.1.4. Otros Dispositivos


● Impresora Canon PIXMA MP250
● Mouse y teclado

25
2.1.2. Software

2.1.2.1. Servidor
● Sistema Operativo Windows Seven
● Gestor de base de datos SQLSERVER 2008
● Java NetBeans IDE 7.3
2.1.2.2. Otro software adicional
Se utilizaran las siguientes herramientas adicionales:
● iReport-4.6.0, permite realizar reportes

2.1.3. Datos
El objetivo principal de un sistema es el manejo de datos, en este caso los
datos a manejar serán:
● Empleados
● Menú
● Mesas
● Ambiente

2.1.4. Procesos
● Gestión de Pedidos
● Gestión de Reservas
● Gestión de Empleado
● Gestión de Reporte

2.1.5. Gente/Usuario
● Cajera
● Administrador
● Chef
● Desarrolladores

2.1.6. Documento
El sistema debe generar documentación física referente a]:

26
● Pedido
● Recibo

2.2. Tecnologia para el Desarrollo del Software

2.2.1. Estrategia para el desarrollo del software


En la estrategia se utilizará el lenguaje de modelado unificado (UML).

MODELOS
● UML es un lenguaje estándar para escribir planos de software.
● UML puede utilizarse para visualizar, especificar, construir y
documentar los artefactos de un sistema y documentar los artefactos de un
sistema.
● UML es solo un lenguaje y por lo tanto es solo una parte de un método
de desarrollo de software.
● UML es independiente de un proceso, aunque para utilizarlo
óptimamente se debería usar en un proceso que fuese dirigido por los casos
de uso, centrado en la arquitectura, iterativo e incremental.

METODOS
El Proceso Unificado "es un proceso de desarrollo de software configurable
que se adapta a través de los proyectos variados en tamaños y complejidad.
El Proceso Unificado guía a los equipos de proyecto en cómo administrar el
desarrollo iterativo de un modo controlado mientras se balancean los
requerimientos del negocio, el tiempo al mercado y los riesgos del proyecto.

El proceso describe los diversos pasos involucrados en la captura de los


requerimientos y en el establecimiento de una guía arquitectónica lo más
pronto, para diseñar y probar el sistema hecho de acuerdo a los

27
requerimientos y a la arquitectura. El proceso describe qué entregables
producir, cómo desarrollarlos y también provee patrones.

2.3. Metodología para el desarrollo del software

2.3.1. Características del PUDS

En el desarrollo del proyecto se empleará el proceso unificado de


desarrollo de software por su naturaleza interactiva e incremental con sus
fases: Inicio, Elaboración, Construcción y Transición del proceso
unificado. El proceso unificado utiliza el lenguaje unificado de modelado
(UML) en cada uno de sus modelos.

● Guiado por lo casos de uso:


o Los casos de uso son el instrumento para validar la arquitectura
del software y extraer los casos de prueba.
o Si tenemos definidos bien nuestros casos de uso el resultado
será un producto correcto.
● Centrado en la arquitectura:
o Define una forma de organizar de las diferentes partes que
tenga el software.
o Lo que se busca es que el software sea flexible(a la hora de
realizar cambios).
o Los modelos son proyecciones del análisis y el diseño constituye
la arquitectura del producto a desarrollar.
● Iterativo e incremental:
o Es Iterativo porque cada fase se repite.

28
o Incremental porque cada ciclo genera una nueva versión que
mejora las funcionalidades del anterior (Hasta llegar al producto
terminado o deseado).

2.3.2. Características de UML

UML es un lenguaje para:


● Visualizar
● Especificar
● Construir
● Documentar

El vocabulario de UML tiene tres clases de bloque de construcción:


● Elementos
● Relaciones
● Diagramas

Los elementos que maneja UML son:


● Elementos estructurales
● Elementos de comportamiento
● Elementos de agrupación
● Elementos de anotación

Las relaciones que tiene UML son:


● Relaciones de Dependencia
● Relaciones de Asociación
● Relaciones de Generalización
● Relaciones de Realización

Maneja dos tipos de diagramas


● Estáticos

29
o Diagramas de Clases
o Diagramas de Objetos
o Diagramas de estructuras compuestas
o Diagrama de componente
o Diagrama de despliegues
o Diagrama de paquete
● Dinámicos
o Diagramas de interacción(Secuencia y colaboración)
o Diagrama de Estados
o Diagrama de Actividad
o Diagrama de Casos de Uso
o Diagrama de Tiempo

2.4. Herramientas de Desarrollo

2.4.1. Software

● Gestor de Bases de Datos.

● SQL server 2008. Este es el Sistema gestor de bases de datos que


usaremos para la implementación de la base de datos para el Sistema
dándole prioridad por ser una de las mejores herramientas en esta
área de desarrollo.

● Lenguajes de Programación.

● JAVA (Con la IDE NetBeans 7.3) ofrece muchas posibilidades para el


desarrollo de software. Usaremos específicamente el entorno Java
para implementar la interfaz del sistema, que es la que se usa para
interactuar con el usuario.

30
● Herramientas UML. Entre las que usaremos esta “Enterprise
Architect” que es una herramienta UML (Lenguaje Unificado de
Modelado) que específicamente nos servirá para implementar los
diferentes Diagramas necesarios para el proceso de desarrollo del
Sistema.

2.4.2. Hardware

Sony Vaio VPCEB4M1E


● Procesador Core i3 CPU M380 a 2.53GHz
● 4 GB de memoria RAM DDR3
● Disco duro de hasta 500 GB

2.5. Posibles Costos

Para determinar los posibles costos para desarrollar el software hemos


utilizado el siguiente método denominado COCOMO (El modelo Constructivo
de Costos), del cual usaremos su primera forma debido a que no se tiene
mucho conocimiento en el desarrollo de este tipo de software.

Las ecuaciones que se utilizan en los 3 modelos son:

● , en persona-mes

● , en meses

● , en personas

Donde:
● E es el esfuerzo requerido por el proyecto, en persona-mes
● Tdev es el tiempo requerido por el proyecto, en meses
● P es el número de personas requerido por el proyecto

31
● a, b, c y d son constantes con valores definidos en una tabla, según
cada submodelo.
● Kl es la cantidad de líneas de código, en miles.
● m(X) Es un multiplicador que depende de 15 atributos.

A la vez, cada submodelo también se divide en modos que representan el tipo


de proyecto, y puede ser:

● modo orgánico: un pequeño grupo de programadores experimentados


que desarrollan software en un entorno familiar. El tamaño del software
varia desde unos pocos miles de línea (tamaño pequeño) a unas
decenas de miles (medio).

● Modo semilibre o semiencajado: corresponde a un esquema


intermedio entre el orgánico y el rígido; el grupo de desarrollo puede
incluir una mezcla de personas experimentadas y no experimentadas.

● Modo rígido o empotrado: el proyecto tiene fuertes restricciones, que


pueden estar relacionadas con la funcionalidad y/o pueden ser técnica.
El problema a resolver es único y es difícil basarse en la experiencia,
puesto que puede no haberla.

Modelo básico

Se utiliza para obtener una primera aproximación rápida de esfuerzo, y hace


uso de la siguiente tabla de constantes para calcular distintos aspectos de
costes:

MODO a b c d

32
2.4 1.0 2.5 0.3
Orgánico
0 5 0 8

Semilibr 3.0 1.1 2.5 0.3


e 0 2 0 5

3.6 1.2 2.5 0.3


Rígido
0 0 0 2

Estos valores son para las fórmulas:


● Personas necesarias por mes para llevar adelante el proyecto
(MM) = a*(Klb)

a=3.00, según la tabla


b=1.12, según la tabla
Kl=2.5, aproximadamente
MM=3.00*(2.51.12)
MM ≈ 8

● Tiempo de desarrollo del proyecto (TDEV) = c*(MMd)


c=2.50
d=0.35
TDEV=2.50*(80.35)
TDEV≈5

Personas necesarias para realizar el proyecto (CosteH) = MM/TDEV


CosteH = 8/5
CosteH ≈ 2

33
● Costo total del proyecto (CosteM) = CosteH * Salario medio entre los
programadores y analistas.
Salario medio aproximado es de 500$
CosteM = 2*500
CosteM=1000$

2.6. Posibles Beneficios

2.6.1. Tiempo
● Evitar pérdida de tiempo en los pedidos recopilando información que
está almacenada en bases de datos.
● Brindar la información en tiempo real de cualquier producto del menú.

2.6.2. Esfuerzo
● Una Interfaz sencilla y de rápido acceso, para el mejor entendimiento
del Usuario.
● La administración utiliza la información gestionada por nuestro sistema
para identificar las diferentes tipos de productos del menú, mejorar la
variedad de productos y eliminar la variedad de productos.

2.6.3. Costos
● Menos costos en requerimientos de personal.

2.7. Posibles Clientes

Con la gran cantidad de empresas del sector productivo que existe hoy en día
este sistema podría ser de gran utilidad en empresas que manejan gran
cantidad de personal como ser Empresas del mismo rubro, patios de comida,
pensiones, etc.
34
3. Método de Requerimiento
ISHIKAWA.-
3.1. Identificar la lista de problemas.-
3.1.1. Lista de problemas
P1: Lentitud de entrega del producto
P2: Deficiencia en la administración de las ventas realizadas
P3: Inadecuada búsqueda de mesas disponibles
P4: Deficiencia en la gestión de los productos (platos, bebidas y postres)
disponibles.
P5: Lentitud en el proceso de pedido
P6: Demora en la elaboración del producto
P7: Deficiencia en la ubicación de los clientes
P8: Retrasos en la asignación de garzones
P9: Retraso al atender al cliente
P10: Deficiencia en la actualización del menú
P11: Insuficiente conocimiento entre los precios de los productos.
P12: Incomodidad en la espera del cliente.
P13: Deficiente procedimiento para el conocimiento de la fecha de
vencimiento de insumos.
P14: Deficiencia en la administración del registro del personal del restaurant
P15: Ineficiente manejo de cambio de moneda.
P16: Ausencia de organización para las reuniones.
P17: Inexistencia del control de stock.

35
P18: Deficiencia en la administración de reservas
P19: Pérdida de tiempo por inexistencia de productos en el stock.
P20: Ineficiencia y pérdida de tiempo en la facturación
P21: Deficiencia en el cumplimiento de las normas de trabajo.
P22: Incumplimiento de orden de atención de los clientes.
P23. Deficiente control de egresos
P24. Deficiente procesamiento de datos (notas de venta, informes).
P25: Perdida de tiempo en cálculo de la cuenta de cliente
3.1.2. Depurar problemas
P1: Lentitud de entrega del producto
P6: Demora en la elaboración del producto
P9: Retraso al atender al cliente
P12: Incomodidad en la espera del cliente.
P13: Deficiente procedimiento para el conocimiento de la fecha de
vencimiento de insumos.
P14: Deficiencia en el control del registro del personal del restaurant
P16: Ausencia de organización para las reuniones.
P17: inexistencia del control de stock.
P19: Pérdida de tiempo por inexistencia de productos en el stock.
P20: Ineficiencia y pérdida de tiempo en la facturación
P21: Deficiencia en el cumplimiento de las normas de trabajo.
P23. Deficiente control de egresos

3.1.3. Lista de problemas finales


P1: Deficiencia en la administración de las ventas realizadas
P2: Inadecuada búsqueda de mesas disponibles
P3: Deficiencia en la gestión de los productos (platos, bebidas y postres)
disponibles
P4: Lentitud en el proceso de pedido
P5: Deficiencia en la ubicación de los clientes
P6: Retrasos en la asignación de garzones

36
P7: Deficiencia en la actualización del menú
P8: Insuficiente conocimiento entre los precios de los productos.
P9: Ineficiente manejo de cambio de moneda.
P10: Deficiencia en la administración de reservas
P11: Incumplimiento de orden de atención de los clientes.
P12. Deficiente procesamiento de datos (notas de venta, informes).
P13: Perdida de tiempo en cálculo de la cuenta de cliente

3.1.4. Indicar propietario de problemas


Las personas involucradas son:
Prop1. Clientes
Prop2. Garzones
Prop3. Jefe de garzón
Prop4. Cajera
Prop5.Cheff
Prop6.Jefe De Cocina
Prop7.Ayudantes de cocina
Prop. De
problema Jefe de Cheff Jefe De Ayudantes
Clientes Garzones Cajera
garzón Cocina de cocina
Problemas

P1 ✔

P2 ✔ ✔ ✔

P3 ✔ ✔

P4 ✔ ✔ ✔ ✔

P5 ✔ ✔ ✔

P6 ✔ ✔

P7 ✔ ✔

P8 ✔ ✔ ✔ ✔

P9 ✔ ✔

37
P10 ✔ ✔ ✔

P11 ✔

P12 ✔ ✔

P13 ✔ ✔

38
3.1.5. Analizar problemas

39
3.1.6. Diseño grafico

3.2. Identificar Categorías

3.3. Identificar causa efecto

40
3.4. Analizar y discutir el diagrama

41
Al haber analizado y discutido los problemas encontrados, se llegó a la
conclusión de que es necesario la implementación de un sistema de
información para la solución de los siguientes problemas:

❖ Garzones.- Los problemas P5, P11 y P13 se pueden resolver

organizándose mejor.

❖ Cajera.- Los problemas P1, P9 y P12 se pueden resolver con la ayuda

del sistema de información que vamos a realizar.

❖ Chef.- Los problemas P4, P3 y P7 se pueden resolver con una mejor

información y organización.

❖ Jefe de garzones.- Los problemas P8, P6 y P10 se pueden resolver

aplicando mayor autoridad, responsabilidad para mayor eficiencia al


momento de dar órdenes.

3.5. Alternativa de solución.-


A1. Mayor organización entre garzones.
A2. Conseguir personal capacitado y con experiencia.
A3. Organizar los pedidos de manera cronológica.
A4. Informándose a menudo de las actualizaciones del servicio.
A5. Mayor organización y comunicación entre todo el personal de atención
al cliente.

3.6. Conclusión.-

En conclusión podemos decir que nuestro sistema podrá mejorar la


atención al cliente, siempre se apliquen las alternativas propuestas.

42
4. Modelo de dominio

43
4.1. Diseño Lógico
4.1.1. Diagrama de clases

44
4.1.2. Diagrama Relacional

45
5. Modelo de Negocio
Diagrama de Actividades

46
PROCESO DE ATENCIÓN

Participantes
- Cliente
- Jefe de Garzón
- Garzón
- Cajera

47
-

48
49
PROCESO DE PAGO

Participantes:
- Cliente
- Garzón
- Cajero

50
6. Flujo de Trabajo: Requisitos

6.1. Identificación de Actores y Casos de Uso

51
Los actores principales del Software de gestión son los siguientes:

ADMINISTRADOR: Es el encargado de manejar el sistema.

CAJERA: Es la persona que se encarga de transcribir el pedido al sistema,


cobrar a los clientes y emitir el recibo.

CHEFF: Es la persona que se encarga de administrar la cocina.

JEFE DE COCINA: Es la persona que se encarga de verificar la eficiencia y


eficacia de los platos preparados.

AYUDANTES: Son los encargados de preparar los pedidos.

JEFE DE GARZÓN: Es la persona que supervisa a los garzones. Se encarga de


designar las mesas que los garzones deben atender.

GARZÓN: Son los encargados de atender al cliente de forma directa.

JEFE DE BARRA: Es el encargado de gestionar las bebidas.

CLIENTES: Son los que adquieren los productos.

52
Casos de Uso

CU1: Iniciar sesión


CU2: Gestionar turno
CU3: Gestionar empleados
CU4: Gestionar usuario
CU5: Gestionar ambiente
CU6: Gestionar mesas
CU7: Gestionar tipo
CU8: Gestionar ingredientes
CU9: Gestionar producto
CU10: Gestionar cliente
CU11: Gestionar asignación de garzones
CU12: Gestionar pedido
CU13: Consultar producto
CU14: Gestionar modificación
CU15: Gestionar recibo
CU16: Consultar recibo
CU17: Imprimir recibo
CU18: Gestionar reservas
CU19: Consultar reserva
CU20: Consultar espacio disponible
CU21: Consultar mesa
CU22: Generar reporte de recibo
CU23: Generar reporte de pedido
CU24: Generar reporte de reserva
CU25: Generar reporte de producto
CU26: Ver bitácora
CU27: Cambiar contraseña
CU28: Cerrar sesión

53
6.2. Priorizar Casos de Uso
Casos de Uso Estado Prioridad Riesgo
CU1: Iniciar sesión Aprobado Normal Normal
CU2: Gestionar turno Aprobado Normal Normal
CU3: Gestionar empleados Aprobado Normal Normal
CU4: Gestionar usuario Aprobado Normal Normal
CU5: Gestionar ambiente Aprobado Normal Normal
CU6: Gestionar mesas Aprobado Normal Normal
CU7: Gestionar tipo Aprobado Normal Normal
CU8: Gestionar ingredientes Aprobado Normal Normal
CU9: Gestionar producto Aprobado Normal Normal
CU10: Gestionar cliente Aprobado Normal Normal
CU11: Gestionar asignación de garzones Normal Critico Critico
CU12: Gestionar pedido Aprobado Critico Critico
CU13: Consultar producto Aprobado Significativo Accesorio
CU14: Gestionar modificación Aprobado Significativo Accesorio
CU15: Gestionar recibo Aprobado Critico Critico
CU16: Consultar recibo Aprobado Significativo Accesorio
CU17: Imprimir recibo Incorporado Significativo Accesorio
CU18: Gestionar reservas Aprobado Normal Normal
CU19: Consultar reserva Aprobado Significativo Accesorio
CU20: Consultar espacio disponible Aprobado Significativo Accesorio
CU21: Consultar mesa Aprobado Significativo Accesorio
CU22: Generar reporte de recibo Incorporado Critico Critico
CU23: Generar reporte de pedido Incorporado Critico Critico
CU24: Generar reporte de reserva Incorporado Critico Critico
CU25: Generar reporte de producto Incorporado Critico Critico
CU26: Ver bitácora Propuesto Normal Normal
CU27: Cambiar contraseña Aprobado Normal Normal
CU28: Cerrar sesión Aprobado Normal Normal

54
6.3. Detallar Casos de Uso
CU1: Iniciar sesión
DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU1: Iniciar sesión
Propósito Ingresar al sistema
Descripción Verifica los datos de inicio del usuario, si son válidos asigna
a sesión el usuario que está ingresando al sistema
Actores Usuario
Actor iniciador Usuario
Pre-Condición
Iniciar Sesión
1. Parámetros de entrada: Id de usuario y contraseña
2. Obtiene el usuario de los datos guardados, por el Id
ingresado
3. Si no se encuentra al usuario muestra un error : Usuario
no existe, de lo contrario continua con el siguiente punto
Flujo de Suceso 4. Compara la contraseña ingresada con la contraseña de
usuario obtenida
5. Si no son iguales las contraseñas muestra un error:
Contraseña incorrecta, de lo contrario continua con el
siguiente punto
6. Si son iguales asigna a la sesión ese usuario
Guarda en bitácora el ingreso de sesión
Post-Condición
Excepción En caso que no se encuentre el Id:

55
Error : Usuario no existe
En caso que no sean iguales las contraseñas
Error: Contraseña incorrecta

CU2: Gestionar turno

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU2: Gestionar turno
Propósito Asignar un horario de trabajo al empleado
Descripción Contiene los diferentes turno de trabajo
Actores Administrador
Actor iniciador Administrador
Pre-Condición
Registrar turno
Se registraran los siguientes campos
1. Descripción
2. Hora de entrada
3. Hora de salida
4. Click en guardar
5. Se verifican los campos ingresados
6. Si están correctos se almacenan los datos
7. Si no están correctos arroja excepción
Flujo de Suceso
Modificar turno
Se modificaran los siguientes campos:
1. Descripción
2. Hora de entrada
3. Hora de salida
4. Click en guardar
5. Se verifican los campos
6. Si están correctos se almacenan
7. Si no están correctos arroja excepción

56
Post-Condición
Excepción Se arroja excepción por datos nulos

CU3: Gestionar empleados

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU3: Gestionar empleados
Este caso de uso permite el registro o modificación del
Propósito
empleado
Administrador
Descripción
Empleado
Actores Administrador
Actor iniciador
1. Registrar empleado
Rellenar los siguientes campos con los datos del
empleado:
1.1. Nombre
1.2. Apellido
1.3. Sexo
1.4. Fecha de nacimiento
1.5. Dirección
Pre-Condición 1.6. Teléfono
1.7. Fecha de ingreso
1.8. Cargo que ocupara
1.9. Turno
1.10. Estado
1.11. Click en el botón guardar
1.12. El sistema verifica los campos
1.13. Si están correctos se almacenan los datos
1.14. Si no están correctos se arroja una excepción

Flujo de Suceso 2. Modificar empleado


2.1. Modificar los campos que sean necesarios

57
2.2. Click en el botón guardar
2.3. Verificar los datos
2.4. Si están correctos se modifican los datos
2.5. Si no están correctos se arroja una excepción
Post-Condición
Excepción de registro:
Excepción por datos nulos
Excepción
Excepción de modificación:
Excepción por datos nulos

58
CU4: Gestionar usuario

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU4: Gestionar usuario
Propósito Administración de usuario
Descripción Permite el registro, modificación y eliminación de usuario
Actores Administrador
Actor iniciador Administrador
Pre-Condición Ninguno

Registrar usuario

Se ingresaran los siguientes campos

1.Id
2.Contraseña
3.Codigo de empleado
4.Click en guardar
Flujo de Suceso
5.Se verifican los campos
6.Si están correctos se almacenan
7.Si no están correctos arroja excepción
S
A
S
Modificar usuario

Se modificaran los siguientes campos

59
1. Id
2. Contraseña
3. Codigo de empleado
4. Click en guardar
5. Se verifican los campos
6. Si están correctos se almacenan
7. Si no están correctos arroja excepción

Eliminar usuario

1. Seleccionar usuario
2. Click en aceptar
3. Se verifican los datos
4. Si están correctos se elimina
5. Si no están correctos arroja excepción

Post-Condición
Registrar usuario arroja excepción por datos nulos
Excepción
Modificar usuario arroja excepción por datos nulos

60
CU5: Gestionar ambiente

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU5: Gestionar ambiente
Propósito Administrar ambiente
Descripción Permite el registro, modificación y eliminación de ambiente
Actores Administrador
Actor iniciador Administrador
Pre-Condición
Registrar ambiente
Se ingresaran los siguientes campos
1. Descripción
2. Capacidad
3. Estado
4. Click en guardar
5. Se verifican los campos
6. Si están correctos se almacenan
7. Si no están correctos arroja excepción
Flujo de Suceso Modificar ambiente
Se modificaran los siguientes campos
1. Descripción
2. Capacidad
3. Estado
4. Click en guardar
5. Se verifican los campos
6. Si están correctos se almacenan
7. Si no están correctos arroja excepción
Eliminar ambiente

61
1. Seleccionar el ambiente
2. Click en aceptar
Post-Condición
Registrar ambiente arroja excepción por datos nulos
Excepción
Modificar ambiente arroja excepción por datos nulos
CU6: Gestionar mesas

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU6: Gestionar mesas
Propósito Administrar mesas
Descripción Este caso de uso permite registrar, modificar y eliminar mesa
Actores Administrador
Actor iniciador Administrador
Pre-Condición
Registrar mesa
Se ingresaran los siguientes campos
1. Capacidad
2. Estado
3. Ambiente
4. Click en guardar
5. Se verifican los campos
6. Si están correctos se almacenan
7. Si no están correctos arroja excepción
Flujo de Suceso Modificar mesa
Se modificaran los siguientes campos
1. Capacidad
2. Estado
3. Ambiente
4. Click en guardar
5. Se verifican los campos
6. Si están correctos se almacenan
7. Si no están correctos arroja excepción
Eliminar mesa
1. Seleccionar mesa

62
2. Click en aceptar
Post-Condición
Registrar mesa arroja excepción por datos nulos
Excepción
Modificar mesa arroja excepción por datos nulos

CU7: Gestionar tipo

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU7: Gestionar tipo
Propósito Administrar tipo
Descripción Este caso de uso permite registrar, modificar y eliminar tipo
Actores Administrador
Actor iniciador Administrador
Pre-Condición
Registrar tipo
Se ingresaran los siguientes campos
1. Nombre
2. Click en guardar
3. Se verifican los campos
4. Si están correctos se almacenan
5. Si no están correctos arroja excepción

Flujo de Suceso Modificar tipo


Se modificaran los siguientes campos
1. Nombre
2. Click en guardar
3. Se verifican los campos
4. Si están correctos se almacenan
5. Si no están correctos arroja excepción

Eliminar tipo
1. Seleccionar tipo

63
2. Click en aceptar
Post-Condición
Registrar tipo arroja excepción por datos nulos
Excepción
Modificar tipo arroja excepción por datos nulos

CU8: Gestionar ingredientes

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU8: Gestionar ingredientes
Propósito Agregar ingredientes para los respectivos productos
Este caso de uso nos permitirá el registro modificación
Descripción
o eliminación de los ingredientes de cierto producto.
Actores Administrador
Actor iniciador Administrador
Pre-Condición Ninguno
1. Administrador inicia sesión
2. Gestionar Ingrediente
2.1. Adicionar Ingrediente
2.1.1. Código Ingrediente
Flujo de Suceso
2.1.2. Nombre
2.1.3. Precio
2.2. Modificar Ingrediente
2.3. Eliminar ingrediente
Post-Condición Ninguno
En caso de que falte uno de los campos
Excepción
Error: Verifique todos los campos necesarios

64
CU9: Gestionar producto

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU9: Gestionar producto
Almacenar en el sistema los distintos tipos de productos
Propósito
que ofrece el restaurant al cliente.
Este caso de uso nos permitirá el registro, modificación
Descripción
de los productos del restaurant.
Actores Administrador
Actor iniciador Administrador
Pre-Condición
1. Administrador inicia sesión
2. Gestionar Producto
2.4. Adicionar Producto
2.4.1. Código Producto(generado)
2.4.2. Nombre
2.4.3. Tipo
2.4.4. Precio
2.4.5. Tiempo de elaboración
Flujo de Suceso
2.4.6. Estado
2.5. Modificar Producto
2.5.1. Seleccionar el producto a modificar
2.5.2. Realizar los cambios
2.5.3. El sistema verifica los datos
2.6. El sistema verifica los datos
2.7. Guardar

65
Post-Condición
Excepción En caso de error : “Error : Datos inválidos”

CU10: Gestionar cliente

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU10: Gestionar cliente
Almacenar información de los clientes
Propósito

Este caso de uso nos permitirá el registro, modificación


Descripción
de los clientes del restaurant
Actores Cajera , Cliente
Actor iniciador Cliente
Pre-Condición CU20: Consultar recibo
1. Cajera inicia sesión
2. Cliente pide la cuenta
2.1. Cajera consulta el recibo
Flujo de Suceso 2.2. nuevo Cliente
2.3. Pide los datos al cliente
2.3.1. nombre
2.3.2. teléfono

66
2.3.3 dirección
4. guardar

Post-Condición
Excepción

CU11: Gestionar asignación de garzones

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU11: Gestionar asignación de garzones
Propósito Asignar garzón a una mesa(cliente )
Este caso de uso permitirá almacenar en cada recibo
Descripción
por cuál de los garzones fue atendido
Actores Cajera
Actor iniciador Cajera
Pre-Condición
1. Cajera inicia sesión
2. Nuevo recibo
Flujo de Suceso 2.1. Introducir Código garzón
3. Crear Recibo

Post-Condición
Excepción Error : Código de garzón Invalido

67
CU12: Gestionar pedido

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU12: Gestionar pedido
Llevar a cabo el registro de los respectivos pedidos que
Propósito
realizan los clientes.
Se tomara todo el pedido del cliente para ser
Descripción
almacenado en la base de datos
Actores Cliente, cajera
Actor iniciador Cliente
Pre-Condición Ninguno
1. Cajera inicia sesión
2. Consultar producto
Flujo de Suceso 3. Nuevo pedido
3.1. Código de pedido
3.2. Tiempo de entrega

68
3.3. Código recibo
4. Agregar pedido
Post-Condición CU14: Gestionar modificación
Excepción

CU13: Consultar producto

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU13: Consultar producto
Realizar consultas los Productos que ofrece el
Propósito
restaurant
Descripción Se podrá ver todos los producto disponibles
Actores CU30: generar reporte de producto
Actor iniciador CU30: generar reporte de producto
Pre-Condición
Flujo de Suceso 1. Establecer criterios de consulta
2. Aceptar
Post-Condición
Excepción

69
CU14: Gestionar modificación

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU14: Gestionar modificación
Propósito Administrar modificación
Este caso de uso permite registrar y modificar una
Descripción
modificación en el pedido
Actores Cajera
Actor iniciador Cliente
Pre-Condición CU12: gestionar pedido
1. Cajera Inicia sesión
2. Gestiona un pedido
Flujo de Suceso 3. Consultar producto
4. Registra modificaciones en los producto
5. Aceptar
Post-Condición
Excepción

70
CU15: Gestionar recibo

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU15: Gestionar recibo
Propósito Controlar los recibos emitidos
Descripción Se gestionara los recibos emitidos de cada pedido
Actores Cajera
Actor iniciador Cajera
Pre-Condición Ninguno
1. La cajera iniciara sesión
2. Ingresara su cuenta de usuario
3. Nuevo
Flujo de Suceso 3.1. Código de recibo
3.2. Fecha
3.3. Código de mesa
3.4. Id de usuario
Post-Condición CU16: Imprimir recibo

71
Excepción El código de recibo es único y solo se repite una sola vez

CU16: Consultar recibo

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU16: Consultar recibo
Propósito Consultar los recibos
Descripción Se consultara todos los recibos emitidos
Actores Ninguno
Actor iniciador Ninguno
Pre-Condición CU15: Gestionar recibo
1. La cajera iniciara sesión
2. Ingresara a su cuenta de usuario
3. Introduce
Flujo de Suceso 1.1. Código de recibo
1.2. Fecha
1.3. Código de mesa
1.4. Id de usuario

72
Post-Condición Ninguno
Excepción Los recibos solo serán emitidos una sola ves

CU17: Imprimir recibo

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU17: Imprimir recibo
Propósito Imprimir recibo
Descripción Se podrá imprimir el recibo de cada pedido
Actores Cajera
Actor iniciador Cajera
Pre-Condición Ninguno
1. La cajera iniciara sesión
2. Ingresara a su cuenta de usuario
3. Atenderá el pedido del cliente
4. Introducirá el pedido al sistema
4.1. Código de producto
Flujo de Suceso 4.2. nombre del producto
4.3. código de tipo
4.4. Precio
4.5. Tiempo de elaboración
5. Validara los datos
6. Si está bien los imprimirá

73
Post-Condición Ninguno
Excepción Un recibo solo se podrá imprimir si se llena todos los datos

CU18: Gestionar reservas

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU18: Gestionar reservas
Propósito Insertar y modifica la reserva del cliente.
Descripción Este caso de uso gestiona la reserva del cliente.
Actores Cliente , Cajera
Actor iniciador Cajera
Pre-Condición CU23:Consultar reserva
Flujo de Suceso
Post-Condición
Excepción

74
CU19: Consultar reserva

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU19: Consultar reserva.
Propósito Consulta la reserva del cliente.
Descripción Este caso de uso verifica el estado de la reserva.
Actores Ninguno
Actor iniciador Ninguno
Pre-Condición Ninguno
1. La cajera inicia sesión.
2. Ingresa a su cuenta de usuario.
Flujo de Suceso 3. Consulta si hay reservas disponibles para el cliente.
4. Se gestiona la reserva por el cliente.

Post-Condición Ninguno
Excepción

75
CU20: Consultar espacio disponible

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU20: Consultar espacio disponible
Propósito Consulta el espacio disponible por el cliente.
Este caso de uso se verifica el estado del espacio disponible
Descripción
solicitado por el cliente.
Actores Cajera
Actor iniciador Cajera
Pre-Condición CU21: Consultar mesa
1. La cajera inicia sesión
Flujo de Suceso 2. Ingresa a su cuenta de usuario
3. Consulta si hay espacio disponible.
4. Consulta si hay mesa disponibles.
Post-Condición Ninguno
Excepción

76
CU21: Consultar mesa

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU21: Consultar mesa
Propósito Consulta la mesa disponible.
Descripción Este caso de uso se verifica el estado de la mesa.
Actores Cajera
Actor iniciador Cajera
Pre-Condición Ninguno
1. La cajera inicia sesión
Flujo de Suceso 2. Ingresa a su cuenta de usuario
3. La Cajera consulta si hay mesas disponibles.
4. Consulta si hay espacio disponible para el cliente.
Post-Condición CU20: Consultar espacio disponible.
Excepción

77
CU22: Generar reporte de recibo

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU22: Generar reporte de recibo
Propósito Genera un reporte de todos los recibos realizados.
Descripción Este caso de uso genera un reporte de recibo.
Actores Administrador
Actor iniciador Administrador
Pre-Condición CU16: Consultar recibo
1. El administrador inicia sesión.
Flujo de Suceso 2. Genera un reporte de recibo de todos los clientes.
3. Consulta todos los recibos cancelados para rendir sus
cuentas del día.
Post-Condición Ninguno
Excepción

78
CU23: Generar reporte de pedido

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU23: Generar reporte de pedido
Propósito Genera un reporte de todos los pedidos.
Descripción Este caso de uso genera un listado de reportes de pedidos.
Actores Administrador
Actor iniciador Administrador
Pre-Condición Ninguno
1. El administrador inicia sesión
Flujo de Suceso 2. El administrador genera reporte de todos los pedidos
de todos los clientes.
Post-Condición Ninguno
Excepción

79
CU24: Generar reporte de reserva

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU24: Generar reporte de reserva
Propósito Genera un reporte de todas las reservas.
Este caso de uso genera un reporte todas las reservas
Descripción
realizadas.
Actores Administrador
Actor iniciador Administrador
Pre-Condición CU19: Consultar reserva
Flujo de Suceso 3. El administrador inicia sesión
4. El administrador genera reporte de todas las reservas.
Post-Condición Ninguno
Excepción

80
CU25: Generar reporte de producto

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU25: Generar reporte de producto
Propósito Genera un reporte de todas las reservas.
En este caso de uso genera un reporte todas de los
Descripción
productos ofrecidos en el restaurant.
Actores Administrador
Actor iniciador Administrador
Pre-Condición CU13: Consultar producto
5. El administrador inicia sesión
Flujo de Suceso 6. El administrador genera reporte de todos los
productos existentes.
Post-Condición Ninguno
Excepción

81
CU26: Ver bitácora

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU26: Ver bitácora
Propósito Mostrar la bitácora de todos los usuarios
Muestra todas las accions realizados por los usuarios en el
Descripción
sistema
Actores Administrador
Actor iniciador Administrador
Pre-Condición Ninguno
Ver Bitácora
1.Obtiene Todos los datos guardados en la bitácora
2.Los muestra en una tabla
Filtrar por Usuario
Flujo de Suceso 1.Parámetro de entrada el código del usuario
2.Busca en la bitácora las acciones realizadas por ese
usuario
3.Los muestra en una tabla
Filtrar por Fecha
1.Parámetro de entrada: Fecha inicio y fecha fin
82
2.Busca en la bitácora las acciones realizadas entre la
fecha inicio y fecha fin
3.Los muestra en una tabla
Filtrar por Usuario y fecha
1.Parámetro de entrada: Código y nombre del usuario
Fecha inicio y fecha fin
2.Busca en la bitácora las acciones realizadas por ese
usuario entre las fecha inicio y fecha fin
3.Los muestra en una tabla
Post-Condición Ninguno
Excepción

CU27: Cambiar contraseña

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU27: Cambiar contraseña
Propósito Cambiar la contraseña de los usuarios del sistema.
Descripción Cambia la contraseña del usuario que ha inicia Sesión
Actores Administrador, Cajera
Actor iniciador Administrador
Pre-Condición Ninguno
Cambiar Contraseña
1. Parámetro de entrada : contraseña nueva
2. Obtiene el usuario que está activo en la sesión
Flujo de Suceso 3. Entripta la contraseña nueva
4. Cambia el campo contraseña por la contraseña
nueva encriptada
5. Guarda la modificación del Usuario

83
Post-Condición Ninguno
Excepción

CU28: Cerrar sesión

DISEÑO DE CASO DE USO

DETALLE DE CASO DE USO


Caso de Uso CU28: Cerrar sesión
Propósito Cerrar sesión de un usuario
Descripción Elimina de la Sesión al usuario que previamente inicio sesión
Actores Administrador, cajera
Actor iniciador Administrador
Pre-Condición CU1: Iniciar sesión

84
Cerrar Sesión
1. Obtiene al Usuario que está activo
Flujo de Suceso
2. Elimina de la Sesión al Usuario
3. Guarda en la bitácora el cierre de sesión
Post-Condición Ninguno
Excepción

6.4. Prototipo de interfaz

85
86
87
6.5. Estructurar Modelo de Casos de Uso

88
7. Flujo de Trabajo: Análisis

7.1. Analisis de Arquitectura

7.1.1. Identificar paquetes

89
Descripción: El paquete "Conexión" agrupara las todas las clases que hagan
la conexión del sistema con la base de datos existente, y también con el
programa para hacer reportes.

Descripción: El paquete "Controlador" es el que agrupara las clases que


controlen las entidades mediante instrucciones SQL y Procesos
Almacenados.

Descripción: El paquete "Vista" es aquel paquete que agrupara las clases


que contengan la interfaz que vera el usuario en todo el recorrido del sistema.

90
Descripción: El paquete " S.I.G.C.R.y.C.S.R. “REPUBLICA” " es aquel que
agrupara las clases entidades de las base de datos y agrupara también los
casos de uso.

7.1.2. Vista del Paquete

91
92
93
94
95
7.1.3. Encapsular Casos de Uso

96
97
98
99
100
7.2. Analizar Casos de Uso

CU1: Iniciar sesión

Al ejecutar el sistema la se llama al método llamado nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controllogin a través del método
introducirDatos(),que recibe como parámetros los datos requeridos del usuario,
mediante un método propio valida los datos que llegaron y si están correctos llama al
método Guardar() de la clase entidad que enviará a la base de datos todos los datos
entrantes.

101
CU2: Gestionar turno

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarTurno a través
del método insertarDatos(),que recibe como parámetros los datos requeridos
del turno, mediante un método propio valida los datos que llegaron, con toda
la información llama al método guardar(), de la clase entidad que enviará a la
base de datos todos los datos entrantes.

2. Al presionar el botón modificar se llama al método modificar(), enviándole


todos los datos del formulario, llamara a la clase control controlGestionarTurno
a través del método insertarDatos(), que recibe como parámetros los datos
requeridos del turno, mediante el método propio valida que llegaron, si esta
correcto llama al método modificarDatos(), de la clase entidad que enviará a la
base de datos todos los datos entrantes.

3. Al presionar el botón eliminar se llama al método eliminar(), enviándole todos


los datos del formulario, llamara a la clase control controlGestionarTurno a
través del método insertarDatos(), que recibe como parámetros los datos
requeridos del turno, mediante el método propio valida que llegaron, si esta
correcto llama al método eliminarDatos(), de la clase entidad que enviará a la
base de datos todos los datos entrantes.

102
CU3: Gestionar empleados

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarEmpleado a
través del método insertarDatos(),que recibe como parámetros los datos
requeridos del empleado, mediante un método propio valida los datos que
llegaron, si esta correcto obtiene el código del cargo y el código del turno, con
toda la información llama al método guardar(), de la clase entidad que enviará
a la base de datos todos los datos entrantes.
2. Al presionar el botón modificar se llama al método modificar(), enviándole
todos los datos del formulario, llamara a la clase control
controlGestionarEmpleado a través del método Buscar(), que recibe como
parámetros los datos requeridos del empleado, mediante el método propio
valida que llegaron, si esta correcto llama al método modificarDatos(), de la
clase entidad que enviará a la base de datos todos los datos entrantes.

103
CU4: Gestionar usuario

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarUsuario a
través del método insertarDatos(),que recibe como parámetros los datos
requeridos del turno, mediante un método propio valida los datos que llegaron,
si esta correcto obtiene el código del empleado, con toda la información llama
al método guardar(), de la clase entidad que enviará a la base de datos todos
los datos entrantes.
2. Al presionar el botón modificar se llama al método modificar(), enviándole
todos los datos del formulario, llamara a la clase control
controlGestionarUsuario a través del método Buscar(), que recibe como
parámetros los datos requeridos del usuario, mediante el método propio valida
que llegaron, si esta correcto llama al método modificarDatos(), de la clase
entidad que enviará a la base de datos todos los datos entrantes.
3. Al presionar el botón eliminar se llama al método eliminar(), enviándole todos
los datos del formulario, llamara a la clase control controlGestionarUsuario a
través del método Buscar(), que recibe como parámetros los datos requeridos

104
del usuario, mediante el método propio valida que llegaron, si esta correcto
llama al método eliminarDatos(), de la clase entidad que enviará a la base de
datos todos los datos entrantes.

CU5: Gestionar ambiente

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarAmbiente a
través del método insertarDatos(),que recibe como parámetros los datos
requeridos del ambiente, mediante un método propio valida los datos que
llegaron, con toda la información llama al método guardar(), de la clase
entidad que enviará a la base de datos todos los datos entrantes.

2. Al presionar el botón modificar se llama al método modificar(), enviándole


todos los datos del formulario, llamara a la clase control
controlGestionarAmbiente a través del método Buscar (), que recibe como
parámetros los datos requeridos del ambiente, mediante el método propio
valida que llegaron, si esta correcto llama al método modificarDatos(), de la
clase entidad que enviará a la base de datos todos los datos entrantes.

105
CU6: Gestionar mesas

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarMesa a través
del método insertarDatos(),que recibe como parámetros los datos requeridos
de la mesa, mediante un método propio valida los datos que llegaron, si esta
correcto obtiene el código del ambiente, con toda la información llama al
método guardar(), de la clase entidad que enviará a la base de datos todos los
datos entrantes.

2. Al presionar el botón modificar se llama al método modificar(), enviándole


todos los datos del formulario, llamara a la clase control controlGestionarMesa
a través del método Buscar (), que recibe como parámetros los datos
requeridos de la mesa, mediante el método propio valida que llegaron, si esta

106
correcto llama al método modificarDatos(), de la clase entidad que enviará a la
base de datos todos los datos entrantes.

3. Al presionar el botón eliminar se llama al método eliminar(), enviándole todos


los datos del formulario, llamara a la clase control controlGestionarMesa a
través del método Buscar (), que recibe como parámetros los datos requeridos
de la mesa, mediante el método propio valida que llegaron, si esta correcto
llama al método eliminarDatos(), de la clase entidad que enviará a la base de
datos todos los datos entrantes.

107
CU7: Gestionar tipo

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarTipo a través
del método insertarDatos(),que recibe como parámetros los datos requeridos
del tipo, mediante un método propio valida los datos que llegaron, con toda la
información llama al método guardar(), de la clase entidad que enviará a la
base de datos todos los datos entrantes.

2. Al presionar el botón modificar se llama al método modificar(), enviándole


todos los datos del formulario, llamara a la clase control controlGestionarTipo
a través del método Buscar (), que recibe como parámetros los datos
requeridos del tipo, mediante el método propio valida que llegaron, si esta
correcto llama al método modificarDatos(), de la clase entidad que enviará a la
base de datos todos los datos entrantes.

108
CU8: Gestionar ingredientes

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarIngrediente a
través del método insertarDatos(),que recibe como parámetros los datos
requeridos del ingrediente, mediante un método propio valida los datos que
llegaron, con toda la información llama al método guardar(), de la clase
entidad que enviará a la base de datos todos los datos entrantes.

2. Al presionar el botón modificar se llama al método modificar(), enviándole


todos los datos del formulario, llamara a la clase control
controlGestionarIngrediente a través del método Buscar(), que recibe como
parámetros los datos requeridos del ingrediente, mediante el método propio
valida que llegaron, si esta correcto llama al método modificarDatos(), de la
clase entidad que enviará a la base de datos todos los datos entrantes.

3. Al presionar el botón eliminar se llama al método eliminar(), enviándole todos


los datos del formulario, llamara a la clase control controlGestionarIngrediente
a través del método Buscar(), que recibe como parámetros los datos

109
requeridos del ingrediente, mediante el método propio valida que llegaron, si
esta correcto llama al método eliminarDatos(), de la clase entidad que enviará
a la base de datos todos los datos entrantes.

CU9: Gestionar producto

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarProducto a
través del método insertarDatos(),que recibe como parámetros los datos
requeridos del producto, mediante un método propio valida los datos que
llegaron, si esta correcto obtiene el código del tipo y el código de los
ingredientes, con toda la información llama al método guardar(), de la clase
entidad que enviará a la base de datos todos los datos entrantes.

110
CU10: Gestionar cliente

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionCliente a través
del método insertarDatos(),que recibe como parámetros los datos requeridos
del cliente, mediante un método propio valida los datos que llegaron, con toda
la información llama al método guardar(), de la clase entidad que enviará a la
base de datos todos los datos entrantes.
2. Al presionar el botón modificar se llama al método modificar(), enviándole
todos los datos del formulario, llamara a la clase control controlGestionCliente
a través del método Buscar (), que recibe como parámetros los datos
requeridos del cliente, mediante el método propio valida que llegaron, si esta
correcto llama al método actualizar(), de la clase entidad que enviará a la base
de datos todos los datos entrantes.

111
3. Al presionar el botón eliminar se llama al método eliminar(), enviándole todos
los datos del formulario, llamara a la clase control controlGestionCliente a
través del método Buscar (), que recibe como parámetros los datos requeridos
del cliente, mediante el método propio valida que llegaron, si esta correcto
llama al método eliminarDatos(), de la clase entidad que enviará a la base de
datos todos los datos entrantes.
CU11: Gestionar asignación de garzones

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control
controIGestionarAsignacionGarzones a través del método insertarDatos(),que
recibe como parámetros los datos requeridos del garzon, mediante un método
propio valida los datos que llegaron, si esta correcto obtiene el código del garzon
y el código de la mesa, con toda la información llama al método guardar(), de la
clase entidad que enviará a la base de datos todos los datos entrantes.
2. Al presionar el botón modificar se llama al método modificar(), enviándole todos
los datos del formulario, llamara a la clase control
controIGestionarAsignacionGarzones a través del método insertarDatos(), que
recibe como parámetros los datos requeridos del recibo, mediante el método
propio valida que llegaron, si esta correcto llama al método actualizar(), de la
clase entidad que enviará a la base de datos todos los datos entrantes.

112
3. Al presionar el botón eliminar se llama al método eliminar(), enviándole todos los
datos del formulario, llamara a la clase control
controIGestionarAsignacionGarzones a través del método insertarDatos(), que
recibe como parámetros los datos requeridos del recibo, mediante el método
propio valida que llegaron, si esta correcto llama al método eliminarDatos(), de la
clase entidad que enviará a la base de datos todos los datos entrantes.

CU12: Gestionar pedido

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarPedido a través
del método insertarDatos(),que recibe como parámetros los datos requeridos
del pedido, mediante un método propio valida los datos que llegaron, si esta
correcto obtiene el código del cliente, código de la mesa, código del recibo y
además el detalle, con toda la información llama al método guardar(), de la
clase entidad que enviará a la base de datos todos los datos entrantes.

113
CU13: Consultar producto

1. Al consultar producto se llama al método buscar(), enviándole todos los


datos del formulario, llamara a la clase control controlConsultarProducto a
través del método introducirDatos(), que recibe como parámetros los datos
requeridos del producto, mediante un método propio valida los datos que
llegaron, si están correctos obtiene el código del producto, con esta
informacion llama al método consultar().

114
CU14: Gestionar modificación

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarModificacion a
través del método insertarDatos(), que recibe como parámetros los datos
requeridos de la modificación, mediante un método propio valida los datos que
llegaron, si esta correcto obtiene el código del producto y código del pedido,
con toda la información llama al método guardar(), de la clase entidad que
enviará a la base de datos todos los datos entrantes.

115
CU15: Gestionar recibo

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarRecibo a través
del método insertarDatos(),que recibe como parámetros los datos requeridos
del recibo, mediante un método propio valida los datos que llegaron, si esta
correcto obtiene el código del pedido, código de la mesa, código del cliente y

116
código del usuario, con toda la información llama al método guardar(), de la
clase entidad que enviará a la base de datos todos los datos entrantes.

CU16: Consultar recibo

1. Al consultar recibo se llama al método buscar(), enviándole todos los datos


del formulario, llamara a la clase control controlConsultarRecibo a través
del método introducirDatos(), que recibe como parámetros los datos
requeridos del recibo, mediante un método propio valida los datos que

117
llegaron, si están correctos obtiene el código del recibo, con esta
informacion llama al método consultar().

CU17: Imprimir recibo

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controImprimirRecibo a través
del método insertarDatos(),que recibe como parámetros los datos requeridos
del recibo, mediante un método propio valida los datos que llegaron, si esta
correcto obtiene el código de la mesa, código del cliente y código del pedido,

118
con toda la información llama al método guardar(), de la clase entidad que
enviará a la base de datos todos los datos entrantes.

CU18: Gestionar reservas

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control controlGestionarReserva a
través del método insertarDatos(),que recibe como parámetros los datos
requeridos de la reserva, mediante un método propio valida los datos que
llegaron, si esta correcto obtiene el código del cliente y el código de la mesa,
con toda la información llama al método guardar(), de la clase entidad que
enviará a la base de datos todos los datos entrantes.

119
2. Al presionar el botón modificar se llama al método modificar(), enviándole
todos los datos del formulario, llamara a la clase control
controlGestionarReserva a través del método insertarDatos(), que recibe como
parámetros los datos requeridos de la reserva, mediante el método propio
valida que llegaron, si esta correcto llama al método modificarDatos(), de la
clase entidad que enviará a la base de datos todos los datos entrantes.
3. Al presionar el botón eliminar se llama al método eliminar(), enviándole todos
los datos del formulario, llamara a la clase control controlGestionarReserva a
través del método insertarDatos(), que recibe como parámetros los datos
requeridos de la reserva, mediante el método propio valida que llegaron, si
esta correcto llama al método eliminarDatos(), de la clase entidad que enviará
a la base de datos todos los datos entrantes.

CU19: Consultar reserva

1. Al consultar reserva se llama al método buscar(), enviándole todos los


datos del formulario, llamara a la clase control controlConsultarReserva a
través del método introducirDatos(), que recibe como parámetros los datos

120
requeridos de la reserva, mediante un método propio valida los datos que
llegaron, si están correctos obtiene el código de la reserva, con esta
informacion llama al método consultar().

CU20: Consultar espacio disponible

1. Al consultar el espacio disponible se llama al método buscar(), enviándole


todos los datos del formulario, llamara a la clase control
controlConsultarEspacio a través del método introducirDatos(), que recibe
como parámetros los datos requeridos del espacio, mediante un método

121
propio valida los datos que llegaron, si están correctos obtiene el código
del espacio, con esta informacion llama al método consultar().

CU21: Consultar mesa

1. Al consultar mesa se llama al método buscar(), enviándole todos los datos


del formulario, llamara a la clase control controlConsultarMesa a través del
122
método introducirDatos(), que recibe como parámetros los datos
requeridos del mesa, mediante un método propio valida los datos que
llegaron, si están correctos obtiene el código del mesa, con esta
informacion llama al método consultar().

CU22: Generar reporte de recibo

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control

123
controIGestionarReporteDeRecibo a través del método insertarDatos(),que
recibe como parámetros los datos requeridos del recibo, mediante un método
propio valida los datos que llegaron, si esta correcto obtiene el código del
recibo, con toda la información llama al método generar(), de la clase entidad
que enviará a la base de datos todos los datos entrantes.

CU23: Generar reporte de pedido

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control

124
controIGestionarReporteDePedido a través del método insertarDatos(),que
recibe como parámetros los datos requeridos del pedido, mediante un método
propio valida los datos que llegaron, si esta correcto obtiene el código del
pedido, con toda la información llama al método generar(), de la clase entidad
que enviará a la base de datos todos los datos entrantes.

CU24: Generar reporte de reserva

1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los


datos del formulario, llamara a la clase control

125
controIGestionarReporteDeReserva a través del método insertarDatos(),que
recibe como parámetros los datos requeridos de la reserva, mediante un
método propio valida los datos que llegaron, si esta correcto obtiene el código
de la reserva, con toda la información llama al método generar(), de la clase
entidad que enviará a la base de datos todos los datos entrantes.

CU25: Generar reporte de producto

126
1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los
datos del formulario, llamara a la clase control
controIGestionarReporteDeProducto a través del método insertarDatos(),que
recibe como parámetros los datos requeridos del producto, mediante un
método propio valida los datos que llegaron, si esta correcto obtiene el código
del producto, con toda la información llama al método generar(), de la clase
entidad que enviará a la base de datos todos los datos entrantes.

CU26: Ver bitácora

127
1. Al presionar el botón GestionarBitacora se llamará a la clase control

ControlarBitacora que obtendrá de la clase entidad GestionarUsuario todos

los movimientos realizados por cierto usuario y generará un reporte.

CU27: Cambiar contraseña

128
1. Al presionar el botón nuevo se llama al método nuevo(), enviándole todos los
datos del formulario, llamara a la clase control controlCambiarContraseña a
través del método insertarDatos(), que recibe como parámetros los datos
requeridos de la contraseña, mediante un método propio valida los datos que
llegaron, si esta correcto obtiene el código del usuario, con toda la
información llama al método guardar(), de la clase entidad que enviará a la
base de datos todos los datos entrantes.

CU28: Cerrar sesión

129
1. Al cerrar sesion el sistema se llama al método llamado cerrar(), enviándole

todos los datos del formulario, llamara a la clase control controllogin, mediante

un método propio valida los datos que llegaron y si están correctos llama al

método Cerrar().

7.3. Análisis de Paquetes

130
8. Flujo de Trabajo: Diseño

8.1. Diseño de Arquitectura

8.1.1. Arquitectura física: Modelo de Despliegue

131
132
8.1.2. Arquitectura Lógica: Diagrama Organizado en Capas

1
8.2. Diseño de datos
8.2.1. Diseño lógico

Mapeo

Cliente
cod_cliente nombre teléfono dirección

Reserva
cod_reserva cod_cliente numero_personas hr_reserva fecha_reserva estado

Ambiente
cod_ambiente Descripción capacidad estado

Mesa
cod_mesa capacidad estado cod_amb

Empleado
cod_empleado ci nombre apellido sexo estado
fecha_nac direccion telefono cod_turno fecha_ingreso cargo

Usuario
Id Contrasenia cod_empl

Recibo
cod_recibo cod_cliente fecha total cod_mesa id_user estado

Pedido
cod_pedido tiempo_entrega cod_rec

Turno

2
cod_turno Descripción hora_entrada hora_salida

Tipo
cod_tipo nombre

Producto
cod_producto nombre cod_tipo precio tiempo_elaboracion estado

Modificacion
Cod_modificacion Cod_ped Cod_prod

Ingrediente
cod_ingrediente Nombre precio

Reservar
cod_reserva cod_mesa

Asignar
cod_mesa cod_empl

Contiene
cod_pedido cod_producto

ModifIngred
cod_modif cod_ing descripcion

IngredienteProducto
Cod_prod Cod_ing

PK Negrita
FK Cursiva

3
8.2.2. Diseño físico
Tabla de volumen

4
Cliente
Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción
Cod_cliente Numérico No Primaria No
nombre Alfabético 50 No No
teléfono Numérico No No No
dirección Alfabético 50 No Si
Reserva

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_reserva Numérico No Primaria No
cod_cliente Numérico No Foránea No
nro_personas Numérico No No No
hr_reserva Tiempo No No No
fecha_reserva Fecha No No No
estado Alfabético 20 No No
Ambiente

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_ambiente Numérico No Primaria No
Descripción Alfabético 50 No No
capacidad Numérico No No No
estado Alfabético 1 No No
Mesa

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_mesa Numérico No Primaria No
capacidad Numérico No No No
estado Alfabético No No No
cod_amb Numérico No Foránea No
Turno

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_turno Numérico No Primaria No
descripcion Alfabético 20 No No

5
hora_entrada Tiempo No No No
hora_salida Tiempo No No No
Empleado

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_empleado Numérico No Primaria No
ci Numérico No No No
nombre Alfabético 50 No No
apellido Alfabético 50 No No
Sexo Alfabético 1 No No
fecha_nac Fecha No No No
dirección Alfabético 100 No No
Teléfono Numérico No No No
Fecha_ingreso Fecha No No No
Cargo Numerico 50 No No
Cod_turno Numérico No Foránea No
Estado Alfabetico 10 No No
Usuario

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


Id Alfabetico 50 Primaria No
Contrasenia Alfabético 15 No No
cod_empl Numérico No No No
Recibo

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_recibo Numérico No Primaria No
cod_cliente Numérico No Foránea No
fecha Fecha No No No
total Numérico No No No
cod_mesa Numérico No Foránea No
id_user Alfabetico 50 Foránea No
estado Alfabetico 30 No No

6
Pedido

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_pedido Numérico No Primaria No
tiempo_entrega Numérico No No No
cod_rec Numérico No Foránea No
Tipo

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_tipo Numérico No Primaria No
nombre Alfabético 20 No No
Producto

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_producto Numérico No Primaria No
nombre Alfabético 50 No No
cod_tipo Numérico No Foránea No
precio Numérico No No No
tmp_elaboracion Numérico No No No
estado Alfabético 20 No No

Modificacion
Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción
cod_modificacion Numérico No Primaria No
cod_ped Numérico No Foránea No
cod_prod Numérico No Foránea No
Ingrediente

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_ingrediente Numérico No Primaria No
nombre Alfabético 50 No No
precio Numérico No No No

7
Reservar

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_reserva Numérico No P/F No
cod_mesa Numérico No P/F No
Asignar

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_mesa Numérico No P/F No
cod_empl Numérico No P/F No
Contiene

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_pedido Numérico No P/F No
cod_producto Numérico No P/F No
ModifIngred

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_modif Numérico No P/F No
cod_ing Numérico No P/F No
descripcion Alfabético 20 No No
IngredienteProducto

Atributo Tipo Dato Amplitud Llave Permite Nulo Descripción


cod_prod Numérico No P/F No
cod_ing Numérico No P/F No

8
Script
create database prueba_sistinf1;
use prueba_sistinf1;
go
create table Cliente(
cod_cliente int not null,
nombre varchar(50) not null,
telefono int ,
Direccion varchar(50),
primary key (cod_cliente)
);
go
create table Reserva(
cod_reserva int not null,
cod_cliente int not null,
numero_personas int not null,
hora_reserva time not null,
9
fecha_reserva date not null,
estado varchar(20)not null,
primary key(cod_reserva),
foreign key(cod_cliente) references Cliente(cod_cliente)
on update cascade on delete cascade
);
go
create table Ambiente(
cod_ambiente int not null,
descripcion varchar (50) not null,
capacidad int not null,
estado char not null, -- Estado: Disponible = D , Ocupado = O
primary key (cod_ambiente)
);
go

create table Mesa(


cod_mesa int not null,
capacidad int not null,
estado char not null,
cod_amb int not null,
primary key (cod_mesa),

10
foreign key(cod_amb) references Ambiente(cod_ambiente)
on delete cascade on update cascade
);
go
create table Turno(
cod_turno int not null,
descripcion varchar(20),
hora_entrada time not null,
hora_salida time not null,
primary key(cod_turno)
);
go
create table Cargo(
cod_cargo bigint identity(1,1) not null,
Descripcion varchar(50) not null,
primary key(cod_cargo)
);
go
create table Empleado(
cod_empleado int not null,
ci int not null,
nombre varchar(50) not null,

11
apellido varchar(50) not null,
sexo char not null,
fecha_nac date not null,
direccion varchar(100) not null,
telefono int not null,
fecha_ingreso date not null,
cod_cargo bigint not null,
cod_turno int not null,
estado varchar(10)not null,
primary key(cod_empleado),
foreign key(cod_cargo) references Cargo(cod_cargo)
on delete cascade on update cascade,
foreign key(cod_turno) references Turno(cod_turno)
on delete cascade on update cascade
);
go

create table Usuario(


id varchar(50) not null,
contrasenia varchar(15)not null,
cod_empl int not null,
primary key(id),

12
foreign key(cod_empl) references Empleado(cod_empleado)
on delete cascade on update cascade
);
go

create table Privilegio(


nro_Privilegio int not null,
descripcion varchar(30) not null,
primary key(nro_Privilegio)
);
go

create table UsuarioPrivilegio(


id_Usuario varchar(50) not null,
nro_Privilegio int not null,
primary key(id_Usuario,nro_Privilegio),
foreign key(id_Usuario) references Usuario(id)
on delete cascade on update cascade,
foreign key(nro_Privilegio) references Privilegio(nro_Privilegio)
on delete cascade on update cascade
);
go

13
create table Recibo(
cod_recibo int not null,
cod_cliente int not null,
fecha date not null,
total float not null,
cod_mesa int not null,
id_user varchar(50) not null,
estado varchar(30) not null,
primary key(cod_recibo),
foreign key (cod_mesa) references Mesa(cod_mesa)
on delete cascade on update cascade,
foreign key(id_user) references Usuario(id)
on delete cascade on update cascade,
foreign key(cod_cliente) references Cliente(cod_cliente)
on update cascade on delete cascade
);
go
create table Pedido(
cod_pedido int not null,
tiempo_entrega int not null,
cod_rec int not null,
primary key(cod_pedido),

14
foreign key(cod_rec) references Recibo(cod_recibo)
on delete cascade on update cascade
);
go
create table Tipo(
cod_tipo int not null,
nombre varchar(20) not null,
primary key(cod_tipo)
);
go
create table Producto(
cod_producto int not null,
nombre varchar(50) not null,
cod_tipo int not null,
precio float not null,
tiempo_elaboracion int not null,
estado varchar(20) not null,
primary key(cod_producto),
foreign key(cod_tipo) references Tipo(cod_tipo)
on delete cascade on update cascade
);
go

15
create table Ingrediente(
cod_ingrediente int not null,
nombre varchar(50) not null,
precio float not null,
primary key(cod_ingrediente)
);
go

create table Modificacion(


cod_modificacion int not null,
cod_ped int not null,
cod_prod int not null,
primary key(cod_modificacion),
foreign key(cod_ped) references Pedido(cod_pedido)
on delete cascade on update cascade,
foreign key(cod_prod) references Producto(cod_producto)
on delete cascade on update cascade
);
go
create table IngredienteProducto(
cod_prod int not null,
cod_ing int not null,
primary key(cod_prod,cod_ing),
16
foreign key(cod_prod) references Producto(cod_producto)
on delete cascade on update cascade,
foreign key(cod_ing) references Ingrediente(cod_ingrediente)
on delete cascade on update cascade
);
go
create table ModifIngred(
cod_modif int not null,
cod_ing int not null,
descripcion varchar(20) not null,
primary key(cod_modif,cod_ing),
foreign key(cod_modif)references Modificacion(cod_modificacion)
on delete cascade on update cascade,
foreign key(cod_ing)references Ingrediente(cod_ingrediente)
on delete cascade on update cascade
);
Go

create table Reservar(


cod_reserva int not null,
cod_mesa int not null,
primary key(cod_reserva,cod_mesa),
foreign key(cod_reserva) references Reserva(cod_reserva)
17
on delete cascade on update cascade,
foreign key(cod_mesa) references Mesa(cod_mesa)
on delete cascade on update cascade
);
go
create table Asignar(
cod_mesa int not null,
cod_empl int not null,
primary key ( cod_mesa, cod_empl),
foreign key(cod_mesa) references Mesa(cod_mesa)
on delete cascade on update cascade,
foreign key(cod_empl) references Empleado(cod_empleado)
on delete cascade on update cascade
);
go
create table Contiene(
cod_pedido int not null,
cod_producto int not null,
cantidad int not null,
primary key(cod_pedido,cod_producto),
foreign key(cod_pedido) references Pedido(cod_pedido)
on delete cascade on update cascade,

18
foreign key(cod_producto) references Producto(cod_producto)
on delete cascade on update cascade
);
go
create table Bitacora(
codigo bigint identity (1,1)not null,
id_usuario varchar(50) not null,
fecha date not null,
hora time not null,
accion varchar(40) not null
primary key (codigo),
foreign key(id_usuario) references Usuario(id)
on delete cascade on update cascade
);
go
Actualización de tuplas
● Insert ()
----------------------Insertar Tuplas------------
------------Cliente--------------------------
insert into Cliente values(1,'Nicolas Coronado',3425463,'Zona Villa Union');
insert into Cliente values(2,'Hubert Sologuren',78195145,'Zona Parque Industrial');
insert into Cliente values(3,'Daniel Toledo',3645900,'Zona Banzer');

19
------------Tipo-----------------
insert into Tipo values(1,'Cafe');
insert into Tipo values(2,'Te');
insert into Tipo values(3,'Postre');
insert into Tipo values(4,'Entrada');
insert into Tipo values(5,'Salado');
insert into Tipo values(6,'Pizza');
insert into Tipo values(7,'Sopa');
insert into Tipo values(8,'Ensalada');
insert into Tipo values(9,'Paninis Tostado');
insert into Tipo values(10,'Pasta');
insert into Tipo values(11,'Carne');
insert into Tipo values(12,'Bebida');
------Cafe - 1
insert into Producto values(1,'Espresso',1,9,5,'Disponible');
insert into Producto values(2,'Espresso doble',1,11,5,'Disponible');
insert into Producto values(3,'Espresso cortado',1,10,5,'Disponible');
insert into Producto values(4,'Americano',1,11,5,'Disponible');
insert into Producto values(5,'Americano cortado',1,12,5,'Disponible');
insert into Producto values(6,'Capuccino',1,12,5,'Disponible');
insert into Producto values(7,'Capuccino Republica',1,15,5,'Disponible');
insert into Producto values(8,'Cafe latte',1,12,5,'Disponible');

20
insert into Producto values(9,'Cafe latte con escencia',1,15,5,'Disponible');
insert into Producto values(10,'Cafe bombon',1,15,5,'Disponible');
insert into Producto values(11,'Mocaccino',1,12,5,'Disponible');
insert into Producto values(12,'Frapuccino',1,18,5,'Disponible');
insert into Producto values(13,'Cafe Irlandes',1,30,5,'Disponible');

------Te - 2
insert into Producto values(14,'Te clasico',2,8,5,'Disponible');
insert into Producto values(15,'Te clasico helado',2,10,5,'Disponible');
insert into Producto values(16,'Lady Grey Tea',2,10,5,'Disponible');
insert into Producto values(17,'Irish Beakfast Tea',2,10,5,'Disponible');
insert into Producto values(18,'English Breakfast Tea',2,10,5,'Disponible');
insert into Producto values(19,'Earl Grey Tea',2,10,5,'Disponible');
insert into Producto values(20,'Naranja y Canela Picante',2,10,5,'Disponible');
insert into Producto values(21,'Caballero Ingles',2,15,5,'Disponible');
insert into Producto values(22,'Pocioin Silvestre',2,15,5,'Disponible');
insert into Producto values(23,'Brisas del Mar',2,15,5,'Disponible');
insert into Producto values(24,'Frutos Rojos',2,15,5,'Disponible');
insert into Producto values(25,'Citrus',2,15,5,'Disponible');
insert into Producto values(26,'Frutos del Bosque',2,15,5,'Disponible');

------Postres - 3
insert into Producto values(27,'Brownie super humedo dechocolate negro',3,20,5,'Disponible');

21
insert into Producto values(28,'Brownie super humedo dechocolate negro con helado',3,25,5,'Disponible');
insert into Producto values(29,'Tarta de manzana',3,10,5,'Disponible');
insert into Producto values(30,'Verrine delirio de chocolate',3,25,5,'Disponible');
insert into Producto values(31,'Verrine pasion de fruts rojos',3,25,5,'Disponible');
insert into Producto values(32,'Tiramisu',3,25,5,'Disponible');
insert into Producto values(33,'Budin de zanahoria',3,15,5,'Disponible');

------Entradas - 4
insert into Producto values(34,'Empanada de carne',4,7,5,'Disponible');
insert into Producto values(35,'Empanada de pollo',4,7,5,'Disponible');
insert into Producto values(36,'Empanada de espinaca',4,7,5,'Disponible');
insert into Producto values(37,'Empanada de queseo',4,7,5,'Disponible');
insert into Producto values(38,'Tequeños',4,25,5,'Disponible');
insert into Producto values(39,'Langostinos rebozados',4,55,5,'Disponible');

------Salados - 5
insert into Producto values(40,'Cunape clasico',5,3,5,'Disponible');
insert into Producto values(41,'Cunape rosquitas,',5,3.5,5,'Disponible');
insert into Producto values(42,'Cunape tocino',5,3.5,5,'Disponible');
insert into Producto values(43,'Sonso',5,7,5,'Disponible');
insert into Producto values(44,'Sandwich miga de jamon y queso',5,10,5,'Disponible');

------Pizzas - 6

22
insert into Producto values(45,'Fugazzeta',6,40,15,'Disponible');
insert into Producto values(46,'Cuatro quesos',6,49,15,'Disponible');
insert into Producto values(47,'Americana',6,49,15,'Disponible');
insert into Producto values(48,'Pepperoni',6,49,15,'Disponible');
insert into Producto values(49,'Caprese',6,40,15,'Disponible');
insert into Producto values(50,'Clasica de anchoas',6,49,15,'Disponible');

------Sopas - 7
insert into Producto values(51,'Crema de zapallo',7,25,10,'Disponible');
insert into Producto values(52,'Sopa de cebolla',7,30,10,'Disponible');
insert into Producto values(53,'Crema de hongos',7,30,10,'Disponible');

------Ensalada - 8
insert into Producto values(54,'Ensalada cesar',8,30,10,'Disponible');
insert into Producto values(55,'Ensalada mar y tierra',8,40,10,'Disponible');
insert into Producto values(56,'Ensalada asiatica',8,30,10,'Disponible');
insert into Producto values(57,'Ensalada de quinoa',8,39,10,'Disponible');

------Paninis tostados - 9
insert into Producto values(58,'Caprese',9,30,15,'Disponible');
insert into Producto values(59,'De la huerta',9,30,15,'Disponible');

23
insert into Producto values(60,'Lomito de res',9,30,15,'Disponible');
insert into Producto values(61,'Pollo',9,35,15,'Disponible');
insert into Producto values(62,'Atun',9,35,15,'Disponible');
insert into Producto values(63,'Jamon y queso',9,25,10,'Disponible');

------Pasta - 10
insert into Producto values(64,'SorrentinosCapreseensalsadepicantede hongos',10,55,20,'Disponible');
insert into Producto values(65,'Tagliatelle cremoso de mar',10,55,15,'Disponible');
insert into Producto values(66,'Spaghetti al pesto',10,35,15,'Disponible');
insert into Producto values(67,'Spaghetti a la boloñesa',10,35,15,'Disponible');
insert into Producto values(68,'Feticcini Alfredo',10,35,15,'Disponible');

------Carne - 11
insert into Producto values(69,'Lomito de res albardado',11,50,20,'Disponible');
insert into Producto values(70,'Lomito a la pimienta',11,50,20,'Disponible');
insert into Producto values(71,'Lomito saltado',11,39,20,'Disponible');
insert into Producto values(72,'Arroz chaufa de carne',11,39,20,'Disponible');
insert into Producto values(73,'Filete de pollo rebozado',11,39,20,'Disponible');
insert into Producto values(74,'Filete de pollo a la plancha',11,39,20,'Disponible');
insert into Producto values(75,'Filete de pescado rebozado / paiche o surubi',11,59,20,'Disponible');
insert into Producto values(76,'Trucha Grillada con salsa de queso azul',11,59,20,'Disponible');

------Bebida - 12
insert into Producto values(77,'Copa de vino',12,20,5,'Disponible');

24
insert into Producto values(78,'Vino Tinto Campos de la Solana',12,70,5,'Disponible');
insert into Producto values(79,'Vino Blanco Camposde la solana',12,70,5,'Disponible');
insert into Producto values(80,'Vino Tinto La chamiza polo profesional',12,100,5,'Disponible');
insert into Producto values(81,'Vino Blanco Cousino Macul Don Luis',12,90,5,'Disponible');
insert into Producto values(82,'Vino Tinto Cousino Macul',12,160,5,'Disponible');
insert into Producto values(83,'Vino Rosado de Solana Rose',12,70,5,'Disponible');

---------Turno
insert into Turno values(1,'Mañana','09:00','17:00');
insert into Turno values(2,'Noche','17:00','01:00');
insert into Turno values(3,'Mañana - Noche','09:00','01:00');

---------Ambiente
insert into Ambiente values(1,'Abierto',100,'D');
insert into Ambiente values(2,'Cerrado',50,'D');

---------Mesa
insert into Mesa values(1,4,'D',1);
insert into Mesa values(2,4,'D',2);
insert into Mesa values(3,4,'D',1);
insert into Mesa values(4,4,'O',1);
insert into Mesa values(5,4,'D',2);
insert into Mesa values(6,4,'D',2);
insert into Mesa values(7,4,'D',1);

25
insert into Mesa values(8,4,'O',2);
insert into Mesa values(9,5,'O',1);
insert into Mesa values(10,5,'D',2);

---------Reserva
insert into Reserva values(1,1,4,'10:15','02/10/2013','Activo');
insert into Reserva values(2,2,2,'11:15','01/10/2013','Activo');
insert into Reserva values(3,2,3,'20:15','03/10/2013','Activo');

--------Reservar
insert into Reservar values(1,1);
insert into Reservar values(2,3);
insert into Reservar values(3,5);

---------Empleado
insert into empleado values(001,5012369,'Rodolfo','Bossoe Macias','m','22/07/1968','Zona
Norte',75027015,'12/09/2012','Administrador',3,'Activo');
insert into empleado values(002,9623145,'Rosario','Aguirrez Ferreira','f','04/03/1985','Zona
Arenales',77098311,'12/09/2012','Cajera',2,'Activo');
insert into empleado values(003,7125626,'Jessica','Melgar Flores','f','22/07/1980','Zona Los
Mangales',3649502,'29/09/2012','Cajera',2,'Activo');
insert into empleado values(004,6485912,'Esthepheanie','Fernandez Moreno','f','8/08/1980','Zona Villa 1er
Mayo',3817503,'12/09/2012','Cheff',3,'Activo');

26
insert into empleado values(005,9512341,'Pedro Ariel','Rodas Macias','m','21/09/91','Zona Los
Penocos',78522790,'10/02/2013','Jefe de cocina',1,'Activo');
insert into empleado values(006,5648973,'Celim','Fulguera Rios','m','27/05/1982','Zona Estacion
Argentina',3496570,'12/09/2012','Jefe de cocina',2,'Activo');
insert into empleado values(007,6123487,'Wilber','Crespo Velasquez','m','29/04/1990','Zona Plan
3000',76611157,'12/09/2012','Ayudante',1,'Activo');
insert into empleado values(008,6848935,'Bladimir','Lopez Condorena','m','20/07/1992','Zona La
Ramada',3647894,'06/01/2013','Ayudante',2,'Activo');
insert into empleado values(009,7648213,'Joel','Arauz Otterburg','m','9/07/1991','Zona San
Aurelio',77046852,'06/01/2013','Ayudante',1,'Activo');
insert into empleado values(010,5145677,'Tania','Rodriguez Cruz','f','9/09/1990','Zona El
Trompillo',76075141,'07/03/2013','Ayudante',2,'Activo');
insert into empleado values(011,5069321,'Cinthia', 'Avalos Vaca','f','29/06/1985','Zona Barrio
Primavera',3957412,'12/09/2012','Jefe de Garzon',1,'Activo');
insert into empleado values(012,8789517,'Javier', 'Laime Zambrana','m','06/04/1987','Zona 24
Septiembre',708596032,'17/10/2012','Jefe de Garzon',2,'Activo');
insert into empleado values(013,9745633,'Jorge', 'Alvarez Mendoza','m','01/05/1990','Zona Plan
3000',3945863,'10/02/2013','Garzon',1,'Activo');
insert into empleado values(014,7998054,'Eduardo', 'Claros Segovia','m','21/06/1991','Zona
Norte',3695895,'06/01/2013','Garzon',1,'Activo');
insert into empleado values(015,5089047,'Paul', 'Villagomes Inturias','m','14/11/1991','Zona 25
Diciembre',70895833,'07/03/2013','Garzon',1,'Activo');

27
insert into empleado values(016,5934897,'Diego','Blanco Gutierrez','m','17/06/1990','Zona 1er
Mayo',77036925,'25/10/2013','Garzon',2,'Activo');
insert into empleado values(017,8745691,'Marcelo', 'Frias Vargas','m','6/12/1991','Zona Villa
Olimpica',76389456,'06/01/2013','Garzon',2,'Activo');
insert into empleado values(018,6678548,'Ruddy', 'Paniagua Avendaño','m','13/03/1992','Zona
Banzer',60969523,'05/02/2013','Garzon',2,'Activo');
---------Asignar
insert into Asignar values(1,013);
insert into Asignar values(2,013);
insert into Asignar values(3,014);
insert into Asignar values(4,014);
insert into Asignar values(5,015);
insert into Asignar values(6,015);
insert into Asignar values(7,016);
insert into Asignar values(8,016);
insert into Asignar values(9,017);
insert into Asignar values(10,017);

---------Usuario
insert into Usuario values('Administrador General','admin123',001);
insert into Usuario values('Cajera 01','contra456',002);
insert into Usuario values('Cajera 02','contra789',003);

28
---------Recibo
insert into Recibo values(1,1,'01/08/2013',0,2,'Cajera 01','Sin Pagar');
insert into Recibo values(2,2,'01/08/2013',0,4,'Cajera 01','Sin Pagar');
insert into Recibo values(3,3,'01/08/2013',0,6,'Cajera 01','Sin Pagar');
insert into Recibo values(4,3,'02/08/2013',0,7,'Cajera 01','Sin Pagar');
insert into Recibo values(5,2,'02/08/2013',0,8,'Cajera 02','Sin Pagar');
insert into Recibo values(6,1,'03/08/2013',0,9,'Cajera 02','Sin Pagar');
insert into Recibo values(7,3,'04/08/2013',0,10,'Cajera 02','Sin Pagar');

---------Pedido
insert into Pedido values(1,0,1);
insert into Pedido values(2,0,2);
insert into Pedido values(3,0,3);
insert into Pedido values(4,0,4);
insert into Pedido values(5,0,5);
insert into Pedido values(6,0,6);
insert into Pedido values(7,0,7);
---------Contiene
insert into Contiene values(1,67);
insert into Contiene values(1,68);
insert into Contiene values(1,50);
insert into Contiene values(2,66);
insert into Contiene values(2,67);

29
insert into Contiene values(3,12);
insert into Contiene values(3,11);
insert into Contiene values(4,2);
insert into Contiene values(4,3);
insert into Contiene values(5,3);
insert into Contiene values(6,57);
insert into Contiene values(7,55);
insert into Contiene values(7,65);
insert into Contiene values(7,57);

8.2.3. Consultas
-------------------------------CONSULTAS-----------------------------------------------

-- 1.- Mostrar la lista de productos de Postres que se encuentran en el menu

select cod_producto,Producto.nombre
from Producto,Tipo
where Producto.cod_tipo=Tipo.cod_tipo and Tipo.cod_tipo=3;

-- 2.- Mostrar la lista del personal de restaurant que se encuentren activos

select *
from Empleado
where Empleado.estado='Activo';

-- 3.- Mostrar la lista de mesas disponibles

30
select*
from Mesa
where Mesa.estado='D';

-- 4.- Mostrar la lista de empleados del turno mañana

select *
from Empleado
where Empleado.cod_turno =1

-- 5.- Mostrar la lista de mesas reservadas

select Mesa.cod_mesa,Mesa.cod_amb
from Mesa,Reservar,Reserva
where Mesa.cod_mesa=Reservar.cod_mesa and Reservar.cod_reserva=Reserva.cod_reserva;

-- 6.- Mostrar la lista de empleados asignados de las mesa 5

select Empleado.cod_empleado,Empleado.nombre,Empleado.apellido,Empleado.cargo
from Empleado,Asignar,Mesa
where Empleado.cod_empleado=Asignar.cod_empl and Asignar.cod_mesa=Mesa.cod_mesa and
Mesa.cod_mesa=5;

-- 7.- Mostrar el recibo de la mesa nro 6

select *
from Recibo
where Recibo.cod_mesa in (select Mesa.cod_mesa
from Mesa
where Mesa.cod_mesa=6)

31
-- 8.- Mostrar todos recibos de la 'cajera 01'

select *
from Recibo
where Recibo.id_user in (select Usuario.id
from Usuario
where Usuario.id='Cajera 01');

-- 9.- Mostrar la lista de productos de la mesa nro 6

select Producto.cod_producto,Producto.nombre
from Producto
where Producto.cod_producto in(select Contiene.cod_producto

from Contiene
where Contiene.cod_pedido in a
(select Pedido.cod_pedido
from Pedido
where Pedido.cod_rec in (select sssxxfcc
Recibo.cod_recibo
from Recibo
where Recibo.cod_mesa in (select wqqq
Mesa.cod_mesa
from Mesa
where Mesa.cod_mesa=4))))

-- 10 .- Mostrar la lista de mesas que hayan ordenado producto tipo de ensaladas

select Mesa.cod_mesa
from Mesa
where Mesa.cod_mesa in (select Recibo.cod_mesa
32
from Recibo
where Recibo.cod_recibo in
(select Pedido.cod_rec
from Pedido
where Pedido.cod_pedido in
(select Contiene.cod_pedido
from Contiene
where Contiene.cod_producto in
(select Producto.cod_producto
from Producto
where Producto.cod_tipo in
(select Tipo.cod_tipo
from Tipo where
d Tipo.cod_tipo=8)))))

-- 11.- Mostrar el nombre de los productos de tipo carne que tenga un precio menor a 50 bs

select pr.nombre
from Producto pr
where pr.cod_tipo = 11 and pr.precio < 50

-- 12.- Mostrar la cantidad de mesas disponibles que se encuentran en el ambiente 'Abierto'

select COUNT (m.cod_mesa) as Cantidad


from Mesa m, Ambiente a
where m.cod_amb = a.cod_ambiente and a.descripcion = 'Abierto' and m.estado = 'D'

-- 13.- Mostrar la capacidad de personas que hay en el ambiente 'Cerrado'

33
select SUM (m.capacidad) as Capacidad_Total
from Mesa m, Ambiente a
where m.cod_amb = a.cod_ambiente and a.descripcion = 'Cerrado'

-- 14.- Mostrar el nombre completo de los empleados que ingresaron en el año -- 2012
select e.nombre, e.apellido
from Empleado e
where e.fecha_ingreso Between '2012/01/01' and '2012/12/31'

-- 15 .- Mostrar el nombre del cliente de la mesa reservada nro 3

select Reserva.cod_reserva,Reserva.nombre_cliente
from Reserva
where Reserva.cod_reserva in (select Reservar.cod_reserva
from Reservar
where Reservar.cod_mesa in
(select Mesa.cod_mesa
from Mesa
where Mesa.cod_mesa = 3))

8.2.4. Procedimientos almacenados y triggers

------------------------------------PROCEDIMIENTOS ALMACENADOS--------------------------
use prueba_sistinf1
-- Cliente

create proc Add_Cliente


@cod int, @nombre varchar(50),
@telefono int , @direccion varchar(50)
as begin

34
insert into Cliente values(@cod,@nombre,@telefono, @direccion)
end
go
create proc Upd_Cliente
@cod int, @nombre varchar(50),
@telefono int , @direccion varchar(50)
as begin
update Cliente set nombre=@nombre , telefono =@telefono , direccion = @direccion
where cod_cliente=@cod
end
go

create proc Del_Cliente


@cod int
as begin
delete from Cliente where cod_cliente=@cod
end
go

create proc most_Cliente


as begin
select * from Cliente
end
go
-- Turno
create proc Add_Turno
@cod_turno int,@descripcion varchar(50),
@hora_entrada time,@hora_salida time
as begin
insert into Turno values(@cod_turno,@descripcion,@hora_entrada,@hora_salida)
end
go

35
create proc Upd_Turno
@cod_turno int,@descripcion varchar(50),
@hora_entrada time,@hora_salida time
as begin
update Turno set descripcion=@descripcion, hora_entrada=@hora_entrada,
hora_salida=@hora_salida where cod_turno=@cod_turno
end
go
create proc Del_Turno
@cod_turno int
as begin
delete from Turno where cod_turno=@cod_turno;
end
go
create proc most_Turno
as begin
select * from Turno
end
go

-- Empleado
create proc Add_Empleado
@cod_empleado int,
@ci int, @nombre varchar(50),
@apellido varchar(50), @sexo char,
@fecha_nac date, @direccion varchar(100),
@telefono int, @fecha_ingreso date,
@cargo int, @cod_turno int,
@estado varchar(10)
as begin
insert into Empleado
values(@cod_empleado,@ci,@nombre,@apellido,@sexo,@fecha_nac,@direccion,@telefono,@fecha_ingreso,@cargo,
@cod_turno,@estado)
36
end
go

create proc Upd_Empleado


@cod_empleado int,
@ci int, @nombre varchar(50),
@apellido varchar(50), @sexo char,
@fecha_nac date, @direccion varchar(100),
@telefono int, @fecha_ingreso date,
@cargo int, @cod_turno int,
@estado varchar(10)
as begin
update Empleado set ci=@ci,nombre=@nombre, apellido=@apellido, sexo=@sexo,
fecha_nac=@fecha_nac,
direccion=@direccion,
telefono=@telefono,fecha_ingreso=@fecha_ingreso,
cod_cargo=@cargo,cod_turno=@cod_turno,estado=@estado
where cod_empleado=@cod_empleado
end
go
create proc Del_Empleado
@cod_empleado int
as begin
delete from Empleado where cod_empleado=@cod_empleado
end
go
create proc most_Empleado
as begin
select e.cod_empleado,e.ci,e.nombre,e.apellido,e.sexo,e.fecha_nac,
e.direccion,e.telefono,e.fecha_ingreso,c.Descripcion,t.descripcion,e.estado
from Empleado e,Cargo c,Turno t
where e.cod_cargo=c.cod_cargo and e.cod_turno=t.cod_turno
end
37
go

create proc most_EmpleadoUsuario


as begin
select Empleado.cod_empleado, Empleado.nombre, Empleado.apellido, Cargo.Descripcion
from Empleado,Cargo
where Empleado.cod_cargo=Cargo.cod_cargo
end
go

-- Usuario

create proc Add_Usuario


@id varchar(50),
@contrasenia varchar(15),
@cod_empl int
as begin
insert into Usuario values(@id,@contrasenia,@cod_empl)
end
go

create proc Upd_Usuario


@id varchar(50),
@contrasenia varchar(15),
@cod_empl int
as begin
update Usuario set contrasenia=@contrasenia, cod_empl=@cod_empl where id=@id
end
go
create proc Del_Usuario
@id varchar(50)
as begin
delete from Usuario
38
where id=@id
end
go

create proc most_Usuario


as begin
select usuario.id,Empleado.cod_empleado,Empleado.nombre,Empleado.apellido,Cargo.cod_cargo
from usuario,Empleado,Cargo
where Usuario.cod_empl=Empleado.cod_empleado and Empleado.cod_cargo=Cargo.cod_cargo
end
go

create proc most_Contrasenia


@id varchar(50)
as begin
select contrasenia,cod_empl
from Usuario
where @id = id
end
go

-- Ambiente
create proc Add_Ambiente
@cod int,@descripcion varchar(50),@capacidad int,
@estado char
as begin
insert into Ambiente values(@cod,@descripcion,@capacidad,@estado)
end
go

create proc Upd_Ambiente


@cod int,@descripcion varchar(50),@capacidad int,
@estado char
39
as begin
update Ambiente set descripcion=@descripcion, capacidad=@capacidad,estado=@estado
where cod_ambiente=@cod
end
go
create proc Del_Ambiente
@cod int
as begin
delete from Ambiente
where cod_ambiente=@cod
end
go

create proc most_Ambiente


as begin
select * from Ambiente
end
go

create proc most_NombreAmbiente


as begin
select descripcion from Ambiente
end
go

-- Mesa
create proc Add_Mesa
@cod int,@capacidad int,@estado char,@cod_amb int
as begin
insert into Mesa values(@cod,@capacidad,@estado,@cod_amb)
end
go

40
create proc Upd_Mesa
@cod int,@capacidad int,@estado char,@cod_amb int
as begin
update Mesa set capacidad=@capacidad,estado=@estado,cod_amb=@cod_amb where
cod_mesa=@cod
end
go

create proc Del_Mesa


@cod int
as begin
delete from Mesa
where cod_mesa=@cod
end
go

create proc most_Mesa


as begin
select * from Mesa
end
go

create proc most_Mesa_Ambiente


as begin
select Ambiente.descripcion from Mesa,Ambiente where Mesa.cod_amb=Ambiente.cod_ambiente
end
go
-- Asignar

create proc Add_Asignar


@cod_mesa int,@cod_empl int
as begin
insert into Asignar values(@cod_mesa,@cod_empl)
41
end
go

create proc Del_Asignar


@cod_mesa int
as begin
delete from Asignar
where cod_mesa=@cod_mesa
end
go
-- Reserva

create proc Add_Reserva


@cod int,@cod_cliente int,
@num_personas int,@hora time,@fecha date,@estado varchar(20)
as begin
insert into Reserva values(@cod,@cod_cliente,@num_personas,@hora, @fecha,@estado)
end
go

create proc Upd_Reserva


@cod int,@cod_cliente int,
@num_personas int,@hora time,@fecha date,@estado varchar(20)
as begin
Update Reserva set cod_cliente=@cod_cliente,
numero_personas=@num_personas,hora_reserva=@hora,fecha_reserva=@fecha,estado=@estado
where cod_reserva=@cod
end
go

create proc Del_Reserva


@cod int
as begin
42
delete from Reserva
where cod_reserva=@cod
end
go
create proc most_Reserva
as begin
select * from Reserva
end
go

create proc most_ReservaMesaDisponibles


as begin
select
Reserva.cod_reserva,Reserva.cod_cliente,Reserva.numero_personas,Reserva.hora_reserva,Reserva.fecha_reserva,Res
erva.estado,Reservar.cod_mesa
from Reserva,Reservar,Mesa
where Reserva.cod_reserva=Reservar.cod_reserva and Reservar.cod_mesa=Mesa.cod_mesa
end
go

-- Reservar
create proc Add_Reservar
@cod_reserva int,@cod_mesa int
as begin
insert into Reservar values(@cod_reserva,@cod_mesa)
end
go
create proc Upd_Reservar
@cod_reserva int,@cod_mesa int
as begin
update Reservar set @cod_mesa=cod_mesa where @cod_reserva=cod_reserva
end
go
43
create proc Del_Reservar
@cod_reserva int
as begin
delete from Reservar
where cod_reserva=@cod_reserva
end
go

-- Tipo
create proc Add_Tipo
@cod int,@nombre varchar(20)
as begin
insert into Tipo values(@cod,@nombre)
end
go
create proc Upd_Tipo
@cod int,@nombre varchar(20)
as begin
update Tipo set nombre=@nombre where cod_tipo=@cod
end
go

create proc Del_Tipo


@cod int
as begin
delete from Tipo
where cod_tipo=@cod
end
go

create proc most_Tipo


as begin
44
select * from Tipo
end
go
create proc most_NombreTipo
as begin
select tipo.nombre from Tipo
end
go

create proc most_TipoProducto


as begin
select *
from Producto
where Producto.cod_tipo in (select Tipo.cod_tipo
from Tipo
where Tipo.cod_tipo=1)
end
go

-- Producto
create proc Add_Producto
@cod int,@nombre varchar,
@cod_tipo int,@precio float,
@tiempo int,@estado varchar(20)
as begin
insert into Producto values(@cod,@nombre,@cod_tipo,@precio,@tiempo,@estado)
end
go

create proc Upd_Producto


@cod int,@nombre varchar(50),
@cod_tipo int,@precio float,
@tiempo int,@estado varchar(20)
45
as begin
update Producto set nombre=@nombre, cod_tipo=@cod_tipo, precio=@precio,
tiempo_elaboracion=@tiempo,
estado = @estado where cod_producto=@cod
end
go

create proc Del_Producto


@cod int
as begin
delete from Producto
where cod_producto=@cod
end
create proc most_Producto
as begin
select * from Producto
end
go

create proc most_Menu


as begin
select Producto.cod_producto,
Tipo.nombre,Producto.nombre,Producto.precio,Producto.tiempo_elaboracion
from Producto,Tipo
where Producto.cod_tipo = Tipo.cod_tipo
end
go

-- Recibo

create proc Add_Recibo


@cod int,@cod_cliente int,@fecha date,@total float,
@cod_mesa int,@id_usuario varchar(50),@estado varchar(30)
46
as begin
insert into Recibo values(@cod,@cod_cliente,@fecha,@total,@cod_mesa,@id_usuario,@estado)
end
go

create proc Upd_Recibo


@cod int,@cod_cliente int,@total float,@estado varchar(30)
as begin
update Recibo set cod_cliente=@cod_cliente,total=@total,estado=@estado
where cod_recibo=@cod
end
go

create proc Del_Recibo


@cod int
as begin
delete from Recibo
where cod_recibo=@cod
end
go

-- Pedido
create proc Add_Pedido
@cod int,@tiempo int,@cod_recibo int
as begin
insert into Pedido values(@cod,@tiempo,@cod_recibo)
end
go

create proc Upd_Pedido


@cod int,@tiempo int,@cod_recibo int
as begin
47
update Pedido set cod_pedido=@cod, tiempo_entrega=@tiempo, cod_rec=@cod_recibo
end
go

create proc Del_Pedido


@cod int
as begin
delete from Pedido
where cod_pedido=@cod
end
go

create proc most_pedidoMenu


@codRecibo int , @codPedido int , @codMesa int
as begin
select distinct Tipo.nombre,Producto.nombre
from Mesa,Recibo, Pedido, Contiene , Producto , tipo
where @codMesa=Recibo.cod_mesa and
@codRecibo=Pedido.cod_rec and
@codPedido=Contiene.cod_pedido and
Contiene.cod_producto=Producto.cod_producto and
Producto.cod_tipo=Tipo.cod_tipo
end
go

-- Contiene
create proc Add_Contiene
@cod_pedido int,@cod_producto int,@cantidad int
as begin
insert into Contiene values(@cod_pedido,@cod_producto,@cantidad)
end
go

48
create proc Upd_Contiene

@cod_pedido int,@cod_producto int


as begin
update Contiene set cod_pedido=@cod_pedido, cod_producto=@cod_producto
end
go

create proc Del_Contiene


@cod_pedido int
as begin
delete from Contiene
where cod_pedido=@cod_pedido
end
go

-- Ingrediente
create proc Add_Ingrediente
@cod_ingre int, @nombre varChar(50), @precio int
as begin
insert into Ingrediente values(@cod_ingre,@nombre,@precio)
end
go

create proc Upd_Ingrediente


@cod_ingre int, @nombre varChar(50), @precio float
as begin
update Ingrediente set nombre=@nombre, precio=@precio where cod_ingrediente=@cod_ingre
end
go
create proc Del_Ingrediente
@cod_ingre int, @nombre varChar(50), @precio int
as begin
49
delete from Ingrediente where cod_ingrediente=@cod_ingre
end
go

create proc most_Ingrediente


as begin
select * from Ingrediente
end
go

-- IngredienteProducto
create proc Add_IngredienteProducto
@cod_Prod int , @cod_ingr int
as begin
insert into IngredienteProducto values(@cod_Prod,@cod_ingr)
end
go
-- Modificacion
create proc Add_Modificacion
@cod_Modif int , @cod_pedi int , @cod_prod int
as begin
insert into Modificacion values(@cod_Modif,@cod_pedi,@cod_prod)
end
go
-- ModifIngred
create proc Add_ModifIngred
@cod_Modif int , @cod_ing int , @descripc varchar(20)
as begin
insert into ModifIngred values(@cod_Modif,@cod_ing,@descripc)
end
go

----------- ----------------------
50
create proc cajeroForm
as begin
select cod_mesa,Mesa.capacidad,Mesa.estado,descripcion from Mesa,Ambiente
where cod_amb=cod_ambiente --and Mesa.estado<>'R'
end
go

-----------mostrar detalle del recibo


create proc detalleRecibo
@codR int
as begin
select pro.cod_producto,t.nombre as Categoria,pro.nombre,pro.precio,c.cantidad ,(c.cantidad*pro.precio) as
SubTotal
from Recibo r,Pedido p,Producto pro,Tipo t, Contiene c
where cod_recibo=@codR and r.cod_recibo=p.cod_rec and
p.cod_pedido=c.cod_pedido and c.cod_producto=pro.cod_producto and
pro.cod_tipo=t.cod_tipo
group by pro.cod_producto,t.nombre,pro.nombre,pro.precio,c.cantidad
end
go

-------------Registrar Bitacora
create proc Add_Bitacora
@usuar varchar(30),@accion varchar(40)
as begin
insert into Bitacora values(@usuar,GETDATE(),GETDATE(),@accion)
end
go

-----------Mostrar lista de privilegios existentes


create proc most_Privilegio
as begin
51
select * from Privilegio
end
go

------------Mostrar lista de privilegios que tiene un usuario


create proc priv_User
@id varchar(50)
as begin
select nro_Privilegio from UsuarioPrivilegio
where id_Usuario=@id;
end
go

--------Insertar usuarioPrivilegio
create proc Ins_UserPriv
@id varchar(50),@priv int
as begin
insert into UsuarioPrivilegio values(@id,@priv);
end
go

---------------TRIGGERS------------------------
use prueba_sistinf1
go

--Triggers Contiene
/* Actualiza el total del recibo despues de
insertar en la tabla contiene
*/
create trigger tcontiene_total_recibo_ins
on Contiene
for insert
as begin
52
declare @ped int, @rec int,@tiempo int;

select @ped=cod_pedido
from inserted

select @rec=cod_rec from pedido where cod_pedido=@ped

exec Upd_Total @rec


exec Upd_TiempoE @ped
end
go

/* Actualiza el total del recibo despues de


eliminar en la tabla contiene
*/
create trigger tcontiene_total_recibo_del
on Contiene
for delete
as begin
declare @ped int, @rec int,@tiempo int;

select @ped=cod_pedido
from inserted

select @rec=cod_rec from pedido where cod_pedido=@ped

exec Upd_Total @rec


exec Upd_TiempoE @ped
end
go

53
------ .. ------

--Triggers Producto

--se tiene que actualizar Recibo,Pedido

/* Actualiza el total del recibo y tiempo de entrega delpedido


despues de actualizar en la tabla producto
*/
create trigger tproducto_total_recibo_upd
on Producto
for update
as begin
declare @prod int, @ped int, @rec int;
declare pedc cursor
for select cod_pedido from Contiene where cod_producto=@prod
open pedc
fetch next from pedc
while(@@fetch_status = 0)
begin
fetch next from pedc into @ped
select @rec=cod_rec from pedido where cod_pedido=@ped
exec Upd_Total @rec
exec Upd_TiempoE @ped
end
close pedc
deallocate pedc
end
go

------

create trigger no_eliminar_producto


54
on producto
for delete
as begin
begin transaction
rollback
end
go

------ .. ------

--- Triggers Recibo


create trigger tr_recibo_ins
on Recibo
for insert
as begin
declare @cod_mesa int
select @cod_mesa=cod_mesa from inserted
update Mesa set Mesa.estado='O' where Mesa.cod_mesa=@cod_mesa
end
go
create trigger tr_recibo_upd
on Recibo
after update
as begin
declare @cod_mesa int,@cod_rec int, @estado varchar(30)

select @cod_mesa=cod_mesa,@cod_rec=cod_recibo,@estado=estado from inserted

if(@estado = 'Pagado')
begin
update Mesa set estado='D' where cod_mesa=@cod_mesa

update Recibo set estado='Pagado' where cod_recibo=@cod_rec


55
end
end
go
create trigger tr_recibo_del
on Recibo
for delete
as begin
begin transaction
rollback
--declare @cod_mesa int
--select @cod_mesa=cod_mesa from deleted
--update Mesa set estado='D' where cod_mesa=@cod_mesa
end
go

--------------.--------------
------------------ Triggers ModifIngred
create trigger tr_ModifIngred_Ins
on ModifIngred
for insert
as begin
declare @mod int,@totalMod float,@totalRec float,@ped int,@rec int,
@SumaMod float, @RestaMod float

select @mod=cod_modif from inserted


select @ped=cod_ped from Modificacion
where cod_modificacion=@mod
select @rec=cod_rec from Pedido
where cod_pedido=@ped
select @totalRec=total from Recibo
where cod_recibo=@rec
select @SumaMod=sum(precio) from Ingrediente
where cod_ingrediente in(select cod_ing from ModifIngred
56
where cod_modif=@mod and descripcion='Agregar')
select @RestaMod=sum(precio) from Ingrediente
where cod_ingrediente in(select cod_ing from ModifIngred
where cod_modif=@mod and descripcion='Quitar')
if(@RestaMod is null)begin
set @RestaMod=0;
end
select @totalRec=(@SumaMod+@totalRec-@RestaMod)
update Recibo set total=@totalRec where cod_recibo=@rec
end
go

create trigger tr_ModifIngred_Del


on ModifIngred
for delete
as begin
begin transaction
rollback
--declare @mod int,@totalMod float,@totalRec float,@ped int,@rec int,
-- @SumaMod float, @RestaMod float

--select @mod=cod_modif from deleted

--select @ped=cod_ped from Modificacion


-- where cod_modificacion=@mod

--select @rec=cod_rec from Pedido


-- where cod_pedido=@ped

--select @totalRec=total from Recibo


-- where cod_recibo=@rec

--select @SumaMod=sum(precio) from Ingrediente


57
-- where cod_ingrediente in(select cod_ing from ModifIngred
-- where cod_modif=@mod and descripcion='Agregar')

--select @RestaMod=sum(precio) from Ingrediente


-- where cod_ingrediente in(select cod_ing from ModifIngred
-- where cod_modif=@mod and descripcion='Quitar')

--if(@RestaMod is null)begin
-- select @RestaMod=0;
--end

--select @totalRec=(@SumaMod+@totalRec-@RestaMod)

--update Recibo set total=@totalRec where cod_recibo=@rec


end
go

--------------.--------------
----------- Triggers Reservar
create trigger tr_Reservar_Ins
on Reservar
for insert
as begin
declare @mesa int
select @mesa=cod_mesa from Inserted
update Mesa set estado='R' where cod_mesa=@mesa
end
go
----
create trigger tr_Reservar_Del
on Reservar
for delete
as begin
58
begin transaction
--declare @mesa int
--select @mesa=cod_mesa from deleted
--update Mesa set estado='D' where cod_mesa=@mesa
rollback
end
go
--------------.--------------

-------------Triggers Bitacora
create trigger no_eliminar_bitacora
on Bitacora
for delete
as begin
begin transaction
rollback
end
go
-------------.--------------
create trigger no_del_cliente
on Cliente
for delete
as begin
begin transaction
rollback
end
go

-- activa trigger enable/disable


enable trigger tr_recibo_del on Recibo

-- activa todos los trigger de la tabla *


alter table Contiene enable trigger all
59
alter table Producto enable trigger all
alter table Recibo enable trigger all
alter table ModifIngred enable trigger all
alter table Reservar enable trigger all
alter table Bitacora enable trigger all
alter table Cliente enable trigger all
-- desactiva todos los trigger de la tabla *
alter table Contiene disable trigger all
alter table Producto disable trigger all
alter table Recibo disable trigger all
alter table ModifIngred disable trigger all
alter table Reservar disable trigger all
alter table Bitacora disable trigger all
alter table Cliente disable trigger all
go
----------Eliminacion de triggers

--drop trigger tcontiene_total_recibo_ins


--drop trigger tcontiene_total_recibo_del
--drop trigger tproducto_total_recibo_upd
--drop trigger no_eliminar_producto
--drop trigger tr_recibo_ins
--drop trigger tr_recibo_upd
--drop trigger tr_recibo_del
--drop trigger tr_ModifIngred_Ins
--drop trigger tr_ModifIngred_Del
--drop trigger tr_Reservar_Ins
--drop trigger tr_Reservar_Del
--drop trigger no_eliminar_bitacora
--drop trigger no_del_cliente

60
8.3. Diseño de la interfaz humana
8.3.1. Prototipo principal

61
8.3.2. Formulario

62
63
64
8.3.3. Reportes

65
66
67
68
69
70
9. Flujo de trabajo: Implementación de Arquitectura
9.1. Implementación del Sistema de Información
9.1.1. Modelo de Implementación

71
72
9.1.2. Implementacion de la arquitectura

73
9.2. Implementación de Subsistema

74
75
76
9.3. Elección de la plataforma de desarrollo de software

9.3.1. Lenguaje de programación


JAVA (Con la IDE NetBeans 7.3) ofrece muchas posibilidades para el desarrollo de software. Usaremos
específicamente el entorno Java para implementar la interfaz del sistema, que es la que se usa para
interactuar con el usuario.

9.3.2. Base de datos


SQL server 2008. Este es el Sistema gestor de bases de datos que usaremos para la implementación de
la base de datos para el Sistema dándole prioridad por ser una de las mejores herramientas en esta área
de desarrollo.

9.3.3. Sistema operativo


Windows 7 Home Premium

9.3.4. Herramientas y otros recursos


Herramientas UML. Entre las que usaremos esta “Enterprise Architect” que es una herramienta UML
(Lenguaje Unificado de Modelado) que específicamente nos servirá para implementar los diferentes
Diagramas necesarios para el proceso de desarrollo del Sistema.

77
10. Conclusión
En conclusión el SISTEMA DE INFORMACION realizado para la el restaurant “REPUBLICA” se lograra ayudar a
mejorar la atención al cliente, para optimizar las ganancias.
También servirá para facilitar el trabajo de los empleados, la información estará más organizada y habrá mejor
documentación.

11. Recomendación
A medida que la empresa vaya ascendiendo en el campo laboral el sistema también debe evolucionar de acuerdo
a las especificaciones requeridas.

78
12. Bibliografía

- JACOBSON, Ivar; BOOCH, Grady; RUMBAUGH, James. El Proceso Unificado de Desarrollo de Software.
Pearson Addisson-Wesley. Año 2000.
- "Unified Modeling Language Version 2.0: UML 2.0 Infraestructure Specification and UML 2.0 Superestructure
Specification", 2005.
- http://www.youtube.com/watch?v=9-dxumamwrg
- http://www.youtube.com/watch?v=UpX8um_GwCA

79
13. Anexos

80
Ubicación del lugar

81
Menú y Especial del Mes
Factura
Restaurant

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy