Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Título
Autor/es
Director/es
Departamento
Matemáticas y Computación
Curso Académico
2012-2013
Aplicación web para la gestión de un hostal-restaurante, proyecto fin de carrera
de Pablo Cacho Zueco, dirigido por Laureano Lambán Pardo (publicado por la Universidad
de La Rioja), se difunde bajo una Licencia
Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported.
Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los
titulares del copyright.
© El autor
© Universidad de La Rioja, Servicio de Publicaciones, 2013
publicaciones.unirioja.es
E-mail: publicaciones@unirioja.es
UNIVERSIDAD DE LA RIOJA
Este sistema permitirá a los clientes realizar pedidos online o reservar una habitación para
unas fechas concretas. Se le podrá pedir también a la aplicación que muestre una serie de
gráficas de estadísticas con datos relacionados con el negocio.
Esta aplicación no está destinada a un cliente concreto pero puede ser fácilmente
adaptable a multitud de pequeños y medianos hostales que buscan mostrarse en Internet.
ÍNDICE DE CONTENIDO
TABLA DE CONTENIDO
1 Introducción..........................................................................................................................1
1.1 Tema tratado ................................................................................................................ 1
1.2 Motivo de la elección .................................................................................................... 1
1.3 Límites ........................................................................................................................... 1
2 Documento de Objetivos.......................................................................................................2
2.1 Objeto ........................................................................................................................... 2
2.2 Antecedentes ................................................................................................................ 2
2.3 Alcance .......................................................................................................................... 2
2.4 Entregables ................................................................................................................... 3
2.5 Metodología de desarrollo ........................................................................................... 3
2.6 Tecnologías y herramientas a usar ............................................................................... 3
2.7 Recursos humanos y comunicaciones .......................................................................... 4
2.8 Riesgos y planes de acción ............................................................................................ 4
2.8.1 Posibles riesgos ..................................................................................................... 4
2.8.2 Planes de acción ................................................................................................... 4
2.9 Tareas ............................................................................................................................ 5
2.10 Plan de trabajo y temporización ............................................................................... 10
2.10.1 Calendario de trabajo ....................................................................................... 10
2.10.2 Estimación temporal ......................................................................................... 10
2.11 Diagrama Gantt ......................................................................................................... 13
3 Gestión de proyecto............................................................................................................15
3.1 Introducción ................................................................................................................ 15
3.2 Factores de retraso ..................................................................................................... 15
3.3 Primera replanificación ............................................................................................... 15
3.4 Segunda replanificación .............................................................................................. 16
3.5 Comparación estimado con resultados finales .......................................................... 16
3.5.1 Comparación fechas ........................................................................................... 16
3.5.2 Comparación horas ............................................................................................. 16
4 Análisis de requisitos...........................................................................................................18
4.1 Introducción ................................................................................................................ 18
I
4.1.1 Objetivo ................................................................................................................. 18
4.1.2 Ámbito ................................................................................................................... 18
4.1.3 Referencias ............................................................................................................ 18
4.1.4 Visión general del documento............................................................................... 18
4.2 Descripción general ....................................................................................................... 19
4.2.1 Perspectiva del producto ...................................................................................... 19
4.2.2 Funciones del producto ......................................................................................... 19
4.2.3 Características de los usuarios .............................................................................. 19
4.2.4 Restricciones.......................................................................................................... 19
4.3 Requisitos específicos .................................................................................................... 20
4.3.1 Requisitos funcionales ........................................................................................... 20
4.3.2 Requisitos de interfaz gráfica ................................................................................ 25
4.3.3 Requisitos de seguridad ........................................................................................ 26
4.3.4 Interfaces Externas ................................................................................................ 26
4.4 Casos de Uso Generales ................................................................................................ 27
5 Struts......................................................................................................................................29
5.1 Introducción .................................................................................................................. 29
5.2 Arquitectura MVC .......................................................................................................... 29
5.2.1 Introducción .......................................................................................................... 29
5.2.2 Vista ....................................................................................................................... 29
5.2.3 Modelo .................................................................................................................. 29
5.2.4 Controlador ........................................................................................................... 29
5.3 Componentes Struts ...................................................................................................... 30
5.3.1 API.......................................................................................................................... 30
5.3.2 Archivos de configuración ..................................................................................... 31
5.3.3 Etiquetas JSP .......................................................................................................... 32
5.4 Funcionamiento Struts .................................................................................................. 32
6 Ciclo 1..................................................................................................................................35
6.1 Análisis Ciclo 1................................................................................................................35
6.1.1 Análisis de requisitos ........................................................................................... ..35
6.1.1.1 Introducción .................................................................................................. 35
6.1.1.2 Usuarios involucrados ................................................................................... 35
6.1.1.3 Requisitos involucrados ................................................................................ 35
6.1.1.4 Casos de Uso ................................................................................................. 37
II
6.2 Diseño Ciclo 2..............................................................................................................42
6.2.1 Diseño de la arquitectura ................................................................................... 42
6.2.1.1 Introducción................................................................................................ 42
6.2.1.2 Arquitectura aplicada a nuestro sistema .................................................... 42
6.2.2 Clases de negocio................................................................................................ 43
6.2.2.1 Introducción................................................................................................ 43
6.2.2.2 Objetos de negocio ..................................................................................... 43
6.2.2.3 Clase de persistencia .................................................................................. 45
6.2.2.4 ActionForms................................................................................................ 46
6.2.2.5 Actions ........................................................................................................ 47
6.2.3 Diseño de la base de datos ................................................................................. 48
6.2.3.1 Introducción................................................................................................ 48
6.2.3.2 Requisitos de la base de datos ................................................................... 48
6.2.3.3 Diagrama de entidad-relación .................................................................... 48
6.2.3.4 Conversión a modelo relacional ................................................................. 49
6.2.3.5 Diagrama de tablas final ............................................................................. 50
6.2.4 Interfaces gráficas definitivas ............................................................................. 51
6.2.4.1 Login de usuario.......................................................................................... 51
6.2.4.2 Registro de usuario ..................................................................................... 52
6.2.4.3 Búsqueda de Usuario .................................................................................. 53
6.2.4.4 Administración Usuario .............................................................................. 55
6.2.4.5 Perfil de usuario .......................................................................................... 55
6.3 Implementación Ciclo 1...............................................................................................57
6.3.1 Tecnologías empleadas ....................................................................................... 57
6.3.2 Estructura de carpetas ........................................................................................ 57
6.3.3 Seguridad ............................................................................................................ 58
6.3.4 Código destacable ............................................................................................... 58
6.4 Pruebas Ciclo 1............................................................................................................64
6.4.1 Introducción ........................................................................................................ 64
6.4.2 Validación de formularios ................................................................................... 64
6.4.3 Pruebas Unitarias ................................................................................................ 66
6.4.3.1 Clases de equivalencia ................................................................................ 66
6.4.3.2 Casos de prueba ......................................................................................... 66
6.4.3.3 Resultado de pruebas ................................................................................. 69
III
7 Ciclo 2..................................................................................................................................70
7.1 Análisis Ciclo 2.............................................................................................................70
7.1.1 Análisis de requisitos .......................................................................................... 70
7.1.1.1 Introducción................................................................................................ 70
7.1.1.2 Usuarios involucrados................................................................................. 70
7.1.1.3 Requisitos involucrados .............................................................................. 70
7.1.1.4 Casos de Uso ............................................................................................... 73
7.2 Diseño Ciclo 2..............................................................................................................81
7.2.1 Diseño de la arquitectura .......................................................................... .........81
7.2.1.1 Introducción................................................................................................ 81
7.2.2 Clases de negocio................................................................................................ 81
7.2.2.1 Introducción................................................................................................ 81
7.2.2.2 Objetos de negocio ..................................................................................... 81
7.2.2.3 Clases de Persistencia ................................................................................. 82
7.2.2.4 ActionForms................................................................................................ 83
7.2.2.5 Actions ........................................................................................................ 84
7.2.3 Diseño de la base de datos ................................................................................. 86
7.2.3.1 Introducción................................................................................................ 86
7.2.3.2 Requisitos de la base de datos ................................................................... 86
7.2.3.3 Diagrama de entidad-relación .................................................................... 86
7.2.3.4 Conversión a modelo relacional ................................................................. 88
7.2.3.5 Diagrama de tablas final ............................................................................. 89
7.2.4 Interfaces gráficas definitivas ............................................................................. 90
7.3 Implementación Ciclo 2...............................................................................................94
7.3.1 Tecnologías empleadas ....................................................................................... 94
7.3.2 Estructura de carpetas ....................................................................................... .94
7.3.3 Código destacable .............................................................................................. .94
7.4 Pruebas Ciclo 2............................................................................................................96
7.4.1 Introducción ........................................................................................................ 96
7.4.2 Validación de formularios ................................................................................... 96
7.4.3 Pruebas Unitarias ................................................................................................ 96
7.4.3.1 Clases de equivalencia ................................................................................ 97
7.4.3.2 Casos de prueba ......................................................................................... 98
7.4.4 Resultado de las pruebas ................................................................................. .100
8 Ciclo 3.................................................................................................................................101
IV
8.1 Análisis Ciclo 3...........................................................................................................101
8.1.1 Análisis de requisitos ........................................................................................ 101
8.1.1.1 Introducción.............................................................................................. 101
8.1.1.2 Usuarios involucrados............................................................................... 101
8.1.1.3 Requisitos involucrados ............................................................................ 101
8.1.1.4 Casos de Uso ............................................................................................. 105
8.2 Diseño Ciclo 3............................................................................................................118
8.2.1 Diseño de la arquitectura ................................................................................. 118
8.2.1.1 Introducción.............................................................................................. 118
8.2.2 Clases de negocio.............................................................................................. 118
8.2.2.1 Introducción.............................................................................................. 118
8.2.2.2 Objetos de negocio ................................................................................... 118
8.2.2.3 Clases de Persistencia ............................................................................... 119
8.2.2.4 ActionForms.............................................................................................. 120
8.2.2.5 Actions ...................................................................................................... 121
8.2.3 Diseño de la base de datos ............................................................................... 124
8.2.3.1 Introducción.............................................................................................. 124
8.2.3.2 Requisitos de la base de datos relativos al ciclo3 ..................................... 124
8.2.3.3 Diagrama de entidad-relación .................................................................. 124
8.2.3.4 Conversión a modelo relacional ............................................................... 125
8.2.3.5 Diagrama de tablas final ........................................................................... 127
8.2.4 Interfaces gráficas ............................................................................................. 127
8.2.4.1 Gráfica representativa de ocupación del hostal un determinado año ..... 127
8.2.4.2 Gráfica representativa de ocupación del hostal un determinado día ...... 128
8.2.4.3 Menú principal de la gestión de habitaciones y comedor........................ 129
8.2.4.4 Página de selección de fechas para una reserva de habitación ............... 129
8.2.4.5 Parte de la página de creación de gráficas estadísticas........................... 130
8.3 Implementación Ciclo 3............................................................................................132
8.3.1 Tecnologías empleadas ..................................................................................... 132
8.3.2 Estructura de carpetas ...................................................................................... 132
8.3.3 Código destacable ............................................................................................. 133
8.4 Pruebas Ciclo 3...........................................................................................................137
8.4.1 Introducción ...................................................................................................... 137
8.4.2 Validación de formularios ................................................................................. 137
8.4.3 Pruebas Unitarias ............................................................................................. .137
V
8.4.3.1 Clases de equivalencia .............................................................................. 137
8.4.3.2 Casos de prueba ....................................................................................... 137
8.4.4 Resultado pruebas ............................................................................................ 140
9 Pruebas finales..................................................................................................................141
9.1 Pruebas de integración ............................................................................................. 141
9.2 Pruebas de sistema ................................................................................................... 142
10 Conclusiones....................................................................................................................143
10.1 Comparativa entre objetivos y resultados obtenidos ............................................. 143
10.2 Posibles mejoras y ampliaciones ............................................................................ 144
10.3 Visión personal ........................................................................................................ 144
11 Glosario de términos.......................................................................................................145
12 Bibliografía......................................................................................................................146
13 Anexos.............................................................................................................................147
13.1 Diseño Web ............................................................................................................ .147
13.1.1 Introducción ................................................................................................... .147
13.1.2 Proceso ........................................................................................................... 147
13.1.3 Imágenes......................................................................................................... 147
13.2 Ley orgánica de protección de datos ...................................................................... 147
13.3 Manual de instalación y despliegue ........................................................................ 148
13.3.1 Introducción .................................................................................................... 148
13.3.2 Requisitos........................................................................................................ 148
13.3.3 Base de datos, mysql y apache ....................................................................... 148
13.3.4 Instalación de servidor de aplicaciones web y despliegue ............................. 150
13.4 Manual de administrador y usuario ........................................................................ 151
13.4.1 Introducción .................................................................................................... 151
13.4.2 Visitante .......................................................................................................... 151
13.4.3 Usuario ............................................................................................................ 152
13.4.4 admingeneral .................................................................................................. 157
13.4.5 admincocina .................................................................................................... 161
13.4.6 adminrecepción .............................................................................................. 165
VI
ÍNDICE DE ILUSTRACIONES
Ilustración 1: Esquema división de tareas................................................................................ 9
Ilustración 2: Esquema división de tareas por ciclo ............................................................... 10
Ilustración 3: Tabla de duraciones estimadas ........................................................................ 13
Ilustración 4: Diagrama Gantt Inicial ...................................................................................... 13
Ilustración 5 : Diagrama de Gantt Ciclo 1............................................................................... 13
Ilustración 6: Diagrama Gantt Ciclo 2 .................................................................................... 14
Ilustración 7: Diagrama Gantt Ciclo 3 .................................................................................... 14
Ilustración 8: Diagrama Gant Replanificación 1 ..................................................................... 15
Ilustración 9: Diagrama Gantt Replanificación 2 .................................................................... 16
Ilustración 10: Tabla Comparativa de fechas ......................................................................... 16
Ilustración 11: Tabla Comparativa de horas .......................................................................... 17
Ilustración 12: Gráfica comparación horas ............................................................................ 17
Ilustración 13: Diagrama Casos de Uso General .................................................................... 27
Ilustración 14: Esquema MVC ................................................................................................ 30
Ilustración 15: Estructura XML form-bean ............................................................................. 32
Ilustración 16: Esquema estructural Struts ............................................................................ 34
Ilustración 17: Diagrama Casos Uso Ciclo 1 ........................................................................... 37
Ilustración 18: Diagrama Actividad Modificar usuario ........................................................... 40
Ilustración 19: Diagrama Clases Usuarios Ciclo 1................................................................... 44
Ilustración 20: Diagrama Clases 2 Ciclo 1 ............................................................................... 44
Ilustración 21: Diagrama Clase LoginBD................................................................................. 45
Ilustración 22: Diagrama Clase UsuariosBD ........................................................................... 46
Ilustración 23: Esquema FormBeans Ciclo 1 .......................................................................... 47
Ilustración 24: Tabla Actions Ciclo 1 ...................................................................................... 47
Ilustración 25: Esquema EER Ciclo 1 ...................................................................................... 49
Ilustración 26: Diagrama Tablas Ciclo 1 ................................................................................. 51
Ilustración 27: Interfaz login de usuario ................................................................................ 52
Ilustración 28: Interfaz registro de usuario ............................................................................ 53
Ilustración 29:Interfaz Búsqueda de usuarios ........................................................................ 54
Ilustración 30: Interfaz administración de usuarios............................................................... 55
Ilustración 31:Interfaz datos de usuario ................................................................................ 56
Ilustración 32: Código Hibernate Filtrar Usuarios .................................................................. 60
Ilustración 33: Código Login Usuario Action .......................................................................... 61
Ilustración 34: Código Login Usuario BD ................................................................................ 62
Ilustración 35: Código Javascript confirmación borrado de usuario...................................... 62
Ilustración 36: Código html confirmación borrado de usuario .............................................. 63
Ilustración 37: Interfaz validación login ................................................................................. 64
Ilustración 38: Interfaz validación captcha ............................................................................ 65
Ilustración 39: Diagrama Casos Uso Ciclo 2 ........................................................................... 73
Ilustración 40: Diagrama Secuencia Realizar Pedido ............................................................. 76
VII
Ilustración 41: Diagrama clases ciclo 2 .................................................................................. 82
Ilustración 42: Diagrama Clases BD Ciclo 2 ............................................................................ 82
Ilustración 43:Diagrama FormBeans Ciclo 2 .......................................................................... 83
Ilustración 44: Esquema EER Ciclo 2 ...................................................................................... 87
Ilustración 45: Esquema Tablas Ciclo 2 .................................................................................. 89
Ilustración 46: Interfaz Carta productos ................................................................................ 90
Ilustración 47:Interfaz carro pedido ...................................................................................... 91
Ilustración 48: Interfaz Resumen confirmación pedido ......................................................... 92
Ilustración 49: Interfaz Configuración pedidos ...................................................................... 93
Ilustración 50: Código carro html........................................................................................... 94
Ilustración 51: Código DisplayTag .......................................................................................... 95
Ilustración 52: Interfaz validación formulario alta producto ................................................. 96
Ilustración 53: Diagrama Casos Uso Ciclo 3 ......................................................................... 105
Ilustración 54:Diagrama Secuencia Reserva Habitación ...................................................... 108
Ilustración 55: Diagrama secuencia Reserva sitio restaurante ............................................ 112
Ilustración 56: Diagrama Casos Uso Estadísticas ................................................................. 114
Ilustración 57: Diagrama Clases Ciclo 3................................................................................ 119
Ilustración 58: Diagrama Clases BD Ciclo 3 .......................................................................... 120
Ilustración 59: Tabla Actions Habitaciones .......................................................................... 121
Ilustración 60: Tabla Actions Reservas Habitaciones ........................................................... 122
Ilustración 61: Tabla Actions Reservas Comedor ................................................................. 123
Ilustración 62: Tabla Actions Estadísticas ............................................................................ 123
Ilustración 63: Esquema EER Ciclo 3 .................................................................................... 125
Ilustración 64: Diagrama Tablas Ciclo 3 ............................................................................... 127
Ilustración 65: Interfaz Gráfica Tipo Ocupación hostal ........................................................ 128
Ilustración 66: Interfaz Gráfica % Ocupación Hostal ............................................................ 128
Ilustración 67: Interfaz Administración hostal ..................................................................... 129
Ilustración 68: Interfaz Elección Fechas Reserva Habitación ............................................... 130
Ilustración 69: Interfaz Generación Gráficas........................................................................ 131
Ilustración 70: Código Action Gráfica ................................................................................... 134
Ilustración 71: Interfaz Calendario ....................................................................................... 135
Ilustración 72: Código envío email ....................................................................................... 136
Ilustración 73: Recorte de pantalla de Xampp ..................................................................... 149
Ilustración 74: Recorte de myphpadmin.............................................................................. 149
Ilustración 75 : Pantalla del servidor GlassFish .................................................................... 150
Ilustración 76: Pantalla de información del hostal .............................................................. 151
Ilustración 77: Pantalla de registro de usuario .................................................................... 152
Ilustración 78: Perfil de usuario ........................................................................................... 152
Ilustración 79: Listado de productos a la venta ................................................................... 153
Ilustración 80: Resumen del pedido..................................................................................... 153
Ilustración 81: Elección de fechas de reserva de habitación ............................................... 154
Ilustración 82: Habitaciones libres para unas fechas ........................................................... 154
Ilustración 83: Resumen de reserva de habitación .............................................................. 155
Ilustración 84: Elección de datos para reserva de comedor. ............................................... 155
VIII
Ilustración 85: Confirmación de reserva de comedor.......................................................... 156
Ilustración 86: Pantalla de listados de pedidos .................................................................... 156
Ilustración 87: Pantalla de listados de reservas. .................................................................. 157
Ilustración 88: Pantalla de administración de usuarios ....................................................... 157
Ilustración 89: Pantalla de listado de usuarios .................................................................... 158
Ilustración 90: Pantalla de administración del hostal .......................................................... 159
Ilustración 91: Página de generación de gráficas ................................................................. 160
Ilustración 92: Menú administración cocina ........................................................................ 161
Ilustración 93: Pantalla administración de pedidos ............................................................. 162
Ilustración 94: Pantalla de finalización de pedido ............................................................... 162
Ilustración 95: Configuración de sistema de pedidos .......................................................... 163
Ilustración 96: Pantalla de administración de comedor ...................................................... 163
Ilustración 97: Listado de reservas de comedor .................................................................. 164
Ilustración 98: Finalización de reserva de comedor. ........................................................... 164
Ilustración 99: Menú administración de la recepción.......................................................... 165
Ilustración 100: Listado de reservas de habitación abiertas ................................................ 165
Ilustración 101: Resumen de reserva de habitación a finalizar ........................................... 166
IX
1. INTRODUCCIÓN
1.1 TEMA TRATADO
Este proyecto pretende abordar el desarrollo de una aplicación web que sirva de ayuda en
la gestión de un hostal restaurante. La aplicación ofertará unos servicios a los clientes
interesados en hacer un pedido de restaurante, reservar una habitación o una mesa. También
mostrará una serie de gráficas estadísticas y unos historiales de reservas o pedidos.
El motivo de elegir este proyecto fue debido a que prefería terminar la carrera haciendo
algo relacionado con la programación web. La elección del tema de hostal-restaurante no tiene
una causa concreta, simplemente me pareció un tema interesante al haber miles de pequeños
hostales con servicio de restaurante a los que podría ser útil una aplicación de este estilo.
Asimismo me resultaría útil ya que la programación web está muy demandada y tiene
bastantes salidas en la actualidad. Esto es debido al aumento del acceso y uso de internet que
ha hecho que multitud de empresas quieran hacer negocio mediante un portal web.
1.3 LÍMITES
Los límites de este proyecto serán puestos por nosotros mismos al no tener un cliente
concreto que nos marque las directrices.
El problema estará tanto en no quedarse corto en los requisitos del sistema ni tampoco
pasarse a la hora de fijar los objetivos. Se buscará un término medio dictando unos mínimos
aceptables que debe tener todo proyecto fin de carrera y que den lugar a una aplicación
bastante completa.
1
2. DOCUMENTO DE OBJETIVOS
2.1 OBJETO
Esta aplicación contará con diferentes secciones dirigidas a distintos tipos de usuario según
el uso que le vayan a dar, desde los administradores del hostal hasta internautas que se
registran en la web para poder acceder a diferentes servicios que ofrece el hostal-restaurante.
2.2 ANTECEDENTES
Con el boom de Internet se han extendido de manera muy rápida multitud de negocios que
tratan de ganar mercado ofertándose en la web. Entre ellos en España destacan los
relacionados con el turismo y la gastronomía. Así que no es difícil encontrarse con varias
soluciones en el mercado parecidas a lo que se quiere hacer en este proyecto.
Por ejemplo, en el ámbito de sistemas para gestionar hostales u hoteles podemos ver:
http://www.themovie.org/es/15/30/motor-de-reservas-on-line-para-hoteles.html
http://www.turisoft.com/
Páginas con buscadores tipo http://www.hostels.com/es/
No se pretende hacer nada revolucionario sino que la motivación reside en ser capaz de
plantear y finalizar algo parecido. Como novedad podemos decir que así como hay multitud de
webs de reservas de hostal, no es tan fácil encontrar webs que combinen la reserva de
habitaciones junto con un servicio de restaurante y pedidos. Esto unido a la personalización
con información general de un hostal nos hace creer que puede resultar interesante continuar
con la idea de la creación del proyecto a pesar de las alternativas disponibles.
2.3 ALCANCE
2
Gestión de usuarios: registro obligatorio de clientes para reservas y pedidos, diferentes
permisos para el personal y administradores del hostal.
Historiales: historial de pedidos, reservas de habitaciones y reservas de mesas del
comedor.
Estadísticas: diferentes gráficas con estadísticas del hostal-restaurante.
No se abordarán temas como las transacciones económicas con los clientes, ni la gestión de
stock y productos usados en el hostal.
La aplicación contará con una base de datos donde se guardarán todos los registros
necesarios para el correcto funcionamiento del servicio.
2.4 ENTREGABLES
3
la carrera se incide en una programación más pura y vendrá bien aprender algo más
práctico como es el uso de Frameworks.
Poseidon -> Potente software para generar diagramas UML
Durante el periodo que dure el proyecto, alumno y tutor se comunicaran mediante email y
podrán concertar diferentes reuniones en el despacho del profesor para comprobar el avance
del proyecto o resolver dudas.
Se van a tratar de identificar los factores que puedan suponer retrasos y demoras en el
desarrollo del proyecto. Además de clasificar estos riesgos se propondrán unos planes de
acción con las medidas a tomar para contrarrestarlos.
4
A continuación se van a exponer los planes de acción resultantes a los riesgos planteados
en el apartado anterior:
2.9 TAREAS
Se ha dividido en 6 subtareas:
Creación DOP: El Documento de objetivos del proyecto es uno de los más importantes,
por esto ha sido incluido como una subtarea a destacar.
Ciclo 1, Ciclo 2 y Ciclo 3: Partes de la memoria referidas a cada ciclo.
Redacción resto memoria: Partes de la memoria no contenidas en las anteriores. Por
ejemplo posibles anexos, introducción, conclusiones…
5
Revisión memoria: En esta subtarea se revisará toda la memoria para detectar
posibles errores antes de la entrega.
La tercera tarea que se ha identificado es la preparación previa. Esta tarea está sobretodo
enfocada al estudio previo de las herramientas no vistas hasta ahora.
Se estudiará que sistema se quiere crear, qué herramientas se pueden usar para llevar a
cabo con éxito el proyecto. Y se comprobará la viabilidad viendo si es posible hacer el proyecto
con las herramientas encontradas.
Está separada en 3 subtareas:
Estudio del sistema: Se mirará que tipo de sistema se desea crear y que herramientas
hay disponibles para realizarlo.
Estudio de herramientas: Se estudiarán las herramientas que se han considerado
idóneas para el desarrollo del proyecto si no se han utilizado nunca antes.
Estudio viabilidad: Se comprueba que el proyecto se puede realizar con las
herramientas estudiadas.
Esta cuarta tarea es la creación del documento de requisitos. Se extraen en él todos los
requisitos fundamentales que debe cumplir el sistema. Se enumerarán y describirán
correctamente para identificarlos a medida que vayamos avanzando en el proyecto.
Las tareas 5, 6 y 7 se agrupan debido a las similitudes entre las tres. Representan a cada
uno de las iteraciones del proyecto. Al final de cada ciclo se tendrá una aplicación parcial pero
funcional.
La tarea de pruebas finales es la que se realizará una vez que los 3 ciclos estén concluidos.
Tiene como misión detectar fallos que se hayan pasado por alto y hacer nuevas pruebas al
ejecutar los 3 ciclos conjuntamente.
6
Además servirá para dar por finalizada toda la implementación y para poder afirmar que el
sistema cumple todos los requisitos planteados al comienzo del proyecto.
La última tarea será la relacionada con la defensa del proyecto del alumno. Se creará una
presentación para mostrar el resumen de todo el proceso de creación del proyecto.
7
Ilustración 1: Esquema división de tareas
9
Ilustración 2: Esquema división de tareas por ciclo
9
2.10 PLAN DE TRABAJO Y TEMPORIZACIÓN
Se pondrá un horario de trabajo de varias horas al día dedicadas al mismo. Si hubiera algún
cambio en el transcurso del proyecto se indicaría en el apartado de replanificación en gestión
de proyecto.
En la siguiente tabla se observan las diferentes tareas y unas fechas y horas aproximadas
para su realización, en la parte de arriba de cada sección se muestran las horas acumuladas y
abajo las horas desglosadas:
DURACIÓN
INICIO FIN
TAREAS ESTIMADA
PREVISTO PREVISTO
(horas)
Seguimiento del proyecto 16 16/02/12 07/06/12
Reuniones 7 16/02/12 07/06/12
Planificación 9 16/02/12 07/06/12
Generación memoria 107 16/02/12 07/06/12
Creación DOP 14 16/02/12 20/02/12
Ciclo 1 20 29/02/12 23/03/12
Ciclo 2 25 26/03/12 23/04/12
Ciclo 3 32 24/04/12 03/06/12
Redacción resto memoria 10 03/06/12 05/06/12
Revisión memoria 6 05/06/12 07/06/12
Preparación previa 29 21/02/12 27/02/12
Estudio del sistema 3 21/02/12 21/02/12
10
Ciclo 1 142 29/02/12 23/03/12
Análisis 7 29/02/12 01/03/12
Casos de uso 2 29/02/12 29/02/12
Actividad y secuencia 5 01/03/12 01/03/12
Diseño 35 02/03/12 10/03/12
Diseño clases de negocio 8 02/03/12 05/03/12
Identificar clases y métodos 4 02/03/12 02/03/12
Diagrama de clases 4 05/03/12 05/03/12
Diseño BD 4 06/03/12 06/03/12
Creación diagrama ER 4 06/03/12 06/03/12
Diseño Web 23 07/03/12 10/03/12
Identificar páginas 3 07/03/12 07/03/12
Diseñar páginas 20 08/03/12 10/03/12
Implementación 95 12/03/12 22/03/12
Implementar código 90 12/03/12 22/03/12
Implementar BD 3 12/03/12 22/03/12
Documentar código y BD 2 12/03/12 22/03/12
Pruebas 5 23/03/12 24/03/12
Pruebas unitarias 5 23/03/12 24/03/12
Ciclo 2 169 26/03/12 23/04/12
Análisis 11 26/03/12 27/03/12
Casos de uso 4 26/03/12 26/03/12
Actividad y secuencia 7 27/03/12 27/03/12
Diseño 30 28/03/12 04/04/12
Diseño clases de negocio 12 28/03/12 29/03/12
Identificar clases y métodos 7 28/03/12 28/03/12
Diagrama de clases 5 29/03/12 29/03/12
Diseño BD 5 30/03/12 30/03/12
Creación diagrama ER 5 30/03/12 30/03/12
Diseño Web 13 02/04/12 04/04/12
Identificar páginas 3 02/04/12 02/04/12
Diseñar páginas 10 02/04/12 04/04/12
11
Implementación 121 05/04/12 20/04/12
Implementar código 115 05/04/12 20/04/12
Implementar BD 3 05/04/12 20/04/12
Documentar código y BD 3 05/04/12 20/04/12
Pruebas 7 23/04/12 23/04/12
Pruebas unitarias 5 23/04/12 23/04/12
Pruebas integración 2 23/04/12 23/04/12
Ciclo 3 217 24/04/12 03/06/12
Análisis 19 24/04/12 26/04/12
Casos de uso 7 24/04/12 24/04/12
Actividad y secuencia 12 24/04/12 26/04/12
Diseño 33 27/04/12 03/05/12
Diseño clases de negocio 12 27/04/12 28/04/12
Identificar clases y métodos 7 27/04/12 27/04/12
Diagrama de clases 5 28/04/12 28/04/12
Diseño BD 6 30/04/12 30/04/12
Creación diagrama ER 6 30/04/12 30/04/12
Diseño Web 15 01/05/12 02/05/12
Identificar páginas 3 01/05/12 01/05/12
Diseñar páginas 12 01/05/12 02/05/12
Implementación 158 03/05/12 01/06/12
Implementar código 150 03/05/12 01/06/12
Implementar BD 3 03/05/12 01/06/12
Documentar código y BD 5 03/05/12 01/06/12
Pruebas 7 02/06/12 03/06/12
Pruebas unitarias 5 02/06/12 02/06/12
Pruebas integración 2 03/06/12 03/06/12
Pruebas finales 3 04/06/12 04/06/12
Pruebas de aceptación 3 04/06/12 04/06/12
Documentación final 4 04/06/12 06/06/12
Crear manual instalación 4 04/06/12 06/06/12
Defensa del proyecto 11 06/06/12 xx/06/12
12
Preparación 10 06/06/12 xx-6-12
Defensa 1 xx-6-12 xx-6-12
TOTAL 704 16/02/12 xx-6-12
Ilustración 3: Tabla de duraciones estimadas
13
Ilustración 6: Diagrama Gantt Ciclo 2
14
3. GESTIÓN DE PROYECTO
3.1 INTRODUCCIÓN
El desarrollo del proyecto ha sido afectado por diversos factores que han condicionado mi
dedicación al mismo.
Debido a que no se han podido cumplir con las horas planificadas para la realización del
proyecto se ha tenido que realizar unas replanificaciones ajustando nuevas fechas para la
finalización de las tareas.
El motivo del retraso han sido tanto factores personales como de trabajo, que han hecho
que no se pudieran dedicar en el proyecto las horas necesarias para su desarrollo. No he
podido llevar un ritmo adecuado de horas diarias, lo que ha provocado un abandono del
proyecto durante unos meses.
Se ha producido también una lectura demasiado optimista de trabajo diario y no han sido
cumplidas por mi parte las horas dedicadas.
El proyecto estaba planificado para ser entregado en el curso pasado apurando la fecha
límite de depósito, sin embargo, al no dedicar las horas diarias necesarias las fechas de
finalización de las tareas se iban retrasando. Esto provocó que para la fecha final estimada en
Junio, solo estuvieran finalizados los ciclos 1 y 2.
15
3.4 SEGUNDA REPLANIFICACIÓN
16
Requisitos 6 12
Ciclo 1 142 130
Ciclo 2 169 140
Ciclo 3 217 200
Pruebas finales 3 4
Manual 4 3
TOTAL 693 656
Ilustración 11: Tabla Comparativa de horas
17
2. ANÁLISIS DE REQUISITOS
4.1 INTRODUCCIÓN
4.1.1 OBJETIVO
Asimismo servirá para gestionar y llevar un mejor control del hostal guardando información
sobre los hospedados y gestionando nuevos pedidos o reservas.
4.1.2 ÁMBITO
4.1.3 REFERENCIAS
Se ha seguido la norma IEEE STD 830 1998 para la elaboración de esta especificación de
requisitos.
En este documento se recogerán los requisitos que deberá satisfacer la aplicación una vez
esté terminada.
Debido a que es un proyecto de varios ciclos e incrementos aquí se van a citar unos
requisitos generales que podrían ser retocados o depurados en cada una de las iteraciones del
proyecto.
18
4.2 DESCRIPCIÓN GENERAL
El sistema no formará parte de ningún otro mayor, solo interaccionará con una base de
datos MySQL para almacenar la información de los usuarios y el hostal.
Los usuarios que utilizarán el sistema podrán ser internautas que quieran hacer pedidos o
reservas, adaptados ya a las nuevas tecnologías del comercio por Internet. Los otros usuarios
serán los administradores del hostal, a los que la aplicación no les causará ninguna dificultad
debido a su simplicidad.
AdminGeneral: representaría al “dueño” del hostal, podrá ver estadísticas del mismo,
así como controlar con la aplicación las habitaciones, los usuarios o el comedor del
restaurante.
AdminRecepción: estaría en la entrada del hostal, por lo que se ocuparía de la entrada
y salida de clientes con reserva de habitación.
AdminCocina: sería el encargado de gestionar los pedidos online y los productos
ofertados para la compra. El control de las reservas del comedor también estaría en
sus cometidos.
4.2.4 RESTRICCIONES
Las restricciones serán el uso de contraseña para el acceso a la aplicación y el uso de roles
como medio para mostrar a cada tipo de usuario unos menús distintos.
19
4.3 REQUISITOS ESPECÍFICOS
La aplicación deberá ser capaz de poder efectuar las tareas de los siguientes requisitos:
RF1
RF2
RF3
RF4
20
Precondición: El usuario debe de estar dado de alta.
Entradas: El usuario desea conseguir una nueva contraseña.
Procedimiento: El usuario pide a la aplicación obtener una nueva contraseña.
Salidas: Se cambiará la contraseña y se le enviará al usuario.
RF5
RF6
RF7
RF8
21
Procedimiento: El usuario va a la sección dedicada a sus pedidos donde verá la lista.
Salidas: Se mostrará la lista.
RF9
RF10
RF11
RF12
Introducción: Un adminCocina podrá establecer unos códigos postales a los que se podrán
hacer entregas de pedidos a domicilio.
Precondición: El adminCocina debe de estar registrado y con la sesión iniciada.
Entradas: El administrador quiere añadir o eliminar códigos postales.
Procedimiento: El administrador va a la sección de cocina donde añadirá o eliminará los
códigos.
Salidas: Se avisará del cambio y la aplicación permitirá realizar pedidos a domicilio a las
direcciones con esos códigos postales.
RF13
22
Introducción: Un adminGeneral podrá gestionar las habitaciones del hostal.
Precondición: El adminGeneral debe de estar dado de alta y con sesión iniciada.
Entradas: El administrador quiere añadir/modificar/ver una habitación.
Procedimiento: El administrador va a la sección de gestión del hostal donde elige y realiza la
operación de actualización deseada.
Salidas: Se hará la gestión y se confirmará la operación o simplemente se mostrará
información.
RF14
RF15
RF16
RF17
23
Precondición: El AdminRecepción debe de estar dado de alta, se debe haber logueado
correctamente y deben existir reservas de habitación.
Entradas: El administrador quiere ver el listado de reservas.
Procedimiento: El administrador va a una sección de reservas donde estará el listado con
todas.
Salidas: Se mostrará la lista de reservas de habitación.
RF18
RF19
RF20
RF21
24
Entradas: El administrador quiere gestionar una reserva de restaurante.
Procedimiento: El administrador va a la sección de reservas de restaurante donde elige la
reserva para procesarla, finalizándola como exitosa o cancelándola.
Salidas: Se gestionará la reserva y se mostrará la confirmación de la acción.
RF22
RF23
RI1
En la interfaz se mostrará información relativa al hostal como medio para atraer clientes y
darlo a conocer.
RI2
Se mostrará en todo momento en pantalla un enlace para que los usuarios puedan hacer
desloguearse si han iniciado sesión.
25
4.3.3 REQUISITOS DE SEGURIDAD
RS1
RS2
Los usuarios de la aplicación interactuarán con la interfaz por medio de un navegador web.
26
4.4 CASOS DE USO GENERALES
A continuación se muestra el esquema general de casos de uso del sistema, sirve para
hacerse una idea del alcance del mismo y de qué acciones puede realizar cada usuario.
Usuario:
Gestionar sus datos -> Cada usuario de la aplicación podrá tener acceso a sus datos y
modificarlos o borrar su cuenta.
Reservar habitación -> Los usuarios podrán reservar una habitación si hay disponibles.
Reservar mesa -> Los usuarios podrán hacer una reserva en el comedor del hostal
siempre que haya sitio.
Realizar pedido -> Asimismo podrán hacer un pedido con los productos ofertados en la
web.
Listar pedidos -> Se recupera un listado de pedidos del usuario y se pueden ver los
detalles de cada pedido.
Listar reservas habitación-> Se muestra un listado de reservas del usuario y sus
detalles.
27
Listar reservas comedor -> Se muestran las reservas de comedor realizadas por el
usuario.
Visitante:
adminGeneral:
Gestionar habitaciones -> Aquí estarán todas las operaciones relativas a las
habitaciones que el hostal pone a disposición en las reservas.
Modificar comedor -> Aumentar o disminuir el tamaño del comedor.
Gestionar usuarios -> Acciones sobre los datos de los usuarios registrados.
Visualizar estadísticas -> Ver gráficos con estadísticas del hostal.
adminCocina:
Gestionar productos -> Acciones sobre los productos que se ofertarán en la web.
Procesar pedido -> Operaciones sobre los pedidos que han hecho los usuarios.
Gestionar sistema pedidos -> Activar o desactivar el sistema de pedidos de la web para
permitir realizar pedidos o no en un momento dado.
Gestionar reservas de comedor -> Refleja las acciones para la administración de las
reservas de sitio en el comedor.
adminRecepción:
Gestionar reservas de habitación-> Representa las acciones sobre las reservas de los
usuarios.
28
5. FRAMEWORK: STRUTS
5.1 INTRODUCCIÓN
Struts provee un entorno que nos permitirá reducir el tiempo de desarrollo y nos brindará
una correcta separación entre las distintas capas de la arquitectura MVC.
5.2.1 INTRODUCCIÓN
5.2.2 VISTA
5.2.3 MODELO
5.2.4 CONTROLADOR
29
Ilustración 14: Esquema MVC
API de Struts.
Archivos de configuración.
Etiquetas JSP
5.3.1 API
El API de Struts está formado por las distintas clases de apoyo que el framework pone a
disposición de los programadores y diseñadores para facilitar el desarrollo y estructurar la
aplicación. La clases a utilizar se encuentran en los paquetes: org.apache.struts.action y
org.apache.struts.actions.
30
todas las instrucciones necesarias para que las peticiones se lleven a cabo
correctamente. La acción actúa como un adaptador entre el contenido de una solicitud
http y la lógica de negocio correspondiente.
ActionForm: Los objetos ActionForm son un tipo JavaBean usados para transportar
datos entre las distintas capas de la aplicación. Son usados por el ActionServlet para
capturar los datos procedentes de un formulario y enviárselos al objeto Action que le
corresponda. Los ActionForm constarán de los métodos get/set para poder y acceder
y tratar la información que se obtienen de ellos.
ActionMapping: Un objeto de este tipo representa una asociación entre una petición
de usuario y el objeto Action que la tiene que procesar. Contiene la URL que provoca la
ejecución de la acción y las posibles redirecciones a las distintas vistas a mostrar según
le indique el Action.
ActionForward: La clase ActionForward representa el destino al que el controlador
debe enviar el control una vez que el Action se ha completado. De esta manera, cada
vez que se quiera redirigir al usuario a una determinada página se hará usando un
ActionForward.
31
Ilustración 15: Estructura XML form-bean
Struts también ofrece una serie de etiquetas para facilitar el tratamiento de la información
en las páginas JSP. El framework da recursos para evitar el uso de scriptlet (fragmentos Java
dentro de JSP) y mejorar la compresión y mantenibilidad de las vistas.
Una vez explicados de forma general los componentes de Struts se pasa a comentar el
funcionamiento y las relaciones entre ellos. Cada vez que se hace una petición a la aplicación
de Struts tiene lugar el siguiente proceso:
1. Analizar la URL: Se pasa la petición al objeto ActionServlet, éste analiza la URL para
poder así determinar la acción a realizar. Normalmente se asigna al servlet que se
ocupe de todas urls cuya terminación sea *.do. Cualquier URL que proceda del cliente
y termine en .do provocará que la petición sea capturada por el servlet.
32
operación y la clase Action que debe ser instanciada. Tras obtener los datos del archivo
el ActionServlet:
1. Crea la instancia del objeto ActionForm y lo rellena con los datos obtenidos
con el formulario que ha pulsado el usuario.
2. Crea una instancia del objeto Action requerido pasando como referencia el
objeto ActionForm creado en el punto 1.
3. Procesar la petición: Dentro del método execute() del Action instanciado estará el
código implementado con las operaciones a ejecutar, desde llamadas a métodos,
almacenamiento de variables o todo aquello necesario para la correcta generación de las
vistas (JSPs).
Captura con los parámetros del método execute de una clase Action
33
Ilustración 16: Esquema estructural Struts
34
6. CICLO 1
6.1 ANÁLISIS CICLO 1
6.1.1 ANÁLISIS DE REQUISITOS
6.1.1.1 INTRODUCCIÓN
El primer ciclo del sistema va enfocado al tratamiento de datos de los usuarios registrados.
Las altas, bajas, modificaciones o listados de los usuarios que más adelante harán uso de la
aplicación.
El adminGeneral será el administrador que pueda modificar o borrar a los usuarios del
sistema, dar de alta nuevos usuarios y administradores y listar usuarios con distintos filtros.
RF2.1
Introducción: Un usuario podrá ver sus datos.
Precondición: El usuario debe estar dado de alta y debe haber iniciado sesión.
Entradas: El usuario quiere ver sus datos de la cuenta.
Procedimiento: El usuario va al apartado de la web donde se encuentran sus datos.
Salidas: Se mostrarán los datos.
35
RF2.2
Introducción: Un usuario podrá modificar sus datos.
Precondición: El usuario debe estar registrado y debe haber iniciado sesión.
Entradas: El usuario quiere modificar sus datos de la cuenta.
Procedimiento: El usuario va a la sección donde se encuentren los datos y modificará lo que
desee.
Salidas: Se modificarán los datos y se le indicará al usuario el éxito de los cambios.
RF2.3
Introducción: Un usuario podrá borrar su cuenta.
Precondición: El usuario debe estar dado de alta y debe haberse identificado
correctamente.
Entradas: El usuario desea borrar su cuenta.
Procedimiento: El usuario va a la sección del portal donde confirmará que desea borrar su
cuenta.
Salidas: Será borrado el usuario y así se indicará.
RF3.1
Introducción: Un administrador podrá crear usuarios.
Precondición: El administrador debe estar dado de alta y debe haber hecho login.
Entradas: El administrador quiere crear un nuevo usuario.
Procedimiento: El administrador va a una sección donde rellenará los datos del usuario a
crear.
Salidas: Se creará el usuario y se informará.
RF3.2
Introducción: Un administrador podrá modificar usuarios.
Precondición: El administrador debe estar registrado y debe haber iniciado sesión.
Entradas: El administrador quiere modificar a un usuario.
Procedimiento: El administrador va a un apartado donde elegirá al usuario que quiere
modificar, cambiará sus datos y los guardará.
Salidas: Se realizarán las modificaciones y así se mostrará.
RF3.3
Introducción: Un administrador podrá borrar usuarios.
Precondición: El administrador debe estar registrado y debe haber iniciado sesión.
Entradas: El administrador desea borrar a un usuario.
Procedimiento: El administrador va al apartado de la web donde seleccionará al usuario que
será borrado.
Salidas: Se eliminará y se informará de que se ha borrado.
36
6.1.1.4 CASOS DE USO
A continuación se van a enumerar y describir los distintos casos de uso de este primer ciclo:
DARSE DE ALTA
37
Escenario 1. Visitante introduce sus datos en un formulario.
Principal: 2. Sistema registra esos datos y confirma el alta.
3. Termina caso de uso.
Excepciones: Error en los datos introducidos en el formulario.
DARSE DE BAJA
38
RECUPERAR CONTRASEÑA
LISTAR USUARIOS
Excepciones:
39
MODIFICAR DATOS USUARIO
40
DAR DE ALTA USUARIO
41
6.2 DISEÑO CICLO 1
6.2.1 DISEÑO DE LA ARQUITECTURA
6.2.1.1 INTRODUCCIÓN
El diseño está claramente influenciado por el uso de Struts que implementa el patrón MVC.
Este patrón proporciona una clara separación en distintas capas de los componentes de la
aplicación.
MODELO
En el modelo se tiene toda la lógica de negocio y los objetos de los que se compone la
aplicación. También está incluida la persistencia que se compondrá de varias clases Java
encargadas de conectar con la base de datos.
VISTA
La vista se compondrá de páginas JSP (Java Server Pages). En estas páginas se mostrarán las
salidas a las peticiones realizadas por los usuarios. Se intentará en medida de lo posible evitar
el uso de fragmentos de código Java (Scriptlets) ya que sería código poco reutilizable y difícil de
mantener.
CONTROLADOR
El controlador es la unión entre el modelo, que es donde se encuentran los datos, y la vista,
que será donde serán mostrados esos datos. Se encargará de controlar el flujo de
peticiones/respuestas entre el usuario y la aplicación.
Para esta labor Struts cuenta con ActionServlet junto al archivo struts-config.xml
42
6.2.2 CLASES DE NEGOCIO
6.2.2.1 INTRODUCCIÓN
Los objetos de negocio serán las clases generales que representarán la información con la
cual es sistema opera. Las clases de persistencia serán aquellas encargadas en conectar e
interactuar con la base de datos.
Los ActionForm son clases que actúan como un almacén y guardan la información recogida
en los campos de los formularios de la web. Esta información será tratada posteriormente en
los Action.
Los Action serán aquellas clases que servirán para realizar todas las operaciones de lo que
sería la lógica de negocio.
Se tendrá la clase Usuario con todos los datos de los usuarios registrados en la web, y las
clases de tipos de administrador que heredan los métodos de la superclase. No se necesita
ninguna información adicional de los administradores sobre los usuarios. Un Usuario podrá ser
cualquier tipo de administrador a la vez o ninguno.
Habrá también una clase TipoUsuario. Ésta es necesaria en la aplicación durante la muestra
de los distintos tipos de usuario en algunas páginas con filtros por tipo de usuario.
43
Ilustración 19: Diagrama Clases Usuarios Ciclo 1
Están también las clases Email y EncriptadorSHA1. La primera clase se empleará para la
creación y el envío de emails a los usuarios, y el encriptador para convertir las contraseñas en
una cadena SHA1 como medio de seguridad.
44
6.2.2.3 CLASE DE PERSISTENCIA
Para poder efectuar cambios y operaciones con los datos almacenados en la base de datos,
se necesitarán unas clases con acceso y privilegios suficientes.
En este primer ciclo se utilizarán las clases UsuariosBD para todas las operaciones relativas
a la gestión de los datos de los usuarios, LoginBD para la identificación de los usuarios y la
clase ConexionBD para conectar con la base de datos.
En las siguientes figuras se muestran los métodos que serán empleados para interactuar
con ella.
45
Ilustración 22: Diagrama Clase UsuariosBD
6.2.2.4 ACTIONFORMS
46
Ilustración 23: Esquema FormBeans Ciclo 1
6.2.2.5 ACTIONS
En la tabla siguiente se enumerarán los Action creados para este ciclo junto a una breve
descripción de cada uno.
Action Descripción
LoginAction Action usado durante el inicio de sesión de un usuario.
ModificarUsuarioAction Action empleado cuando un usuario modifica sus datos.
GetUsuariosAction Action empleado para listar todos los usuarios
registrados.
FiltrarUsuariosAction Action empleado para listar a los usuarios registrados
según un filtro.
RegistroWebAction Action utilizado en el registro de un nuevo usuario en la
web.
BajaUsuarioAction Action que se encarga de dar de baja a un usuario que
borra su cuenta.
DisplayDatosUsuarioAction Action que recupera los datos de un usuario elegido por
el administrador y los muestra.
BorrarUsuarioAction Action empleado para el borrado de un usuario por
parte de un administrador.
GetDatosUsuarioAction Action para mostrar a un usuario sus datos.
AltaUsuarioAction Action usado para realizar el alta de un usuario creado
por un administrador.
ModificarUsuarioAdminAction Action utilizado para ejecutar una modificación de
usuario por parte del administrador.
RecuperarPassAction Action a usar durante el proceso de recuperación de
contraseña.
Ilustración 24: Tabla Actions Ciclo 1
47
6.2.3 DISEÑO DE LA BASE DE DATOS
6.2.3.1 INTRODUCCIÓN
Se han elegido los nombres de las tablas y campos de forma bastante identificativa
respecto a lo que representan. Las entidades creadas serán:
48
Ilustración 25: Esquema EER Ciclo 1
TABLAS RESULTANTES
Durante la conversión a tablas han surgido algunas dudas pero al final se ha decidido
apostar por el modelo mostrado en la figura de abajo.
Se podía haber utilizado una sola tabla de usuario eliminando las de los administradores
utilizando unos nuevos campos booleanos (esAdminGeneral, esAdminCocina,
esAdminRecepción).
La razón por la que se ha decidido dejar las tablas separadas es pensando en una futura
expansión de la aplicación donde se podría guardar más información de los administradores y
habría que separar las tablas igualmente.
49
NORMALIZACIÓN
Las tablas también se encuentran en la 2FN al depender sus atributos no primos de la clave
totalmente y cumplir la 1FN.
Igualmente también cumplen la 3FN ya que los atributos primos dependen de forma no
transitiva de la clave.
Claves candidatas
50
Ilustración 26: Diagrama Tablas Ciclo 1
Pantalla de login, el usuario deberá identificarse con su teléfono y contraseña para poder
acceder a algunas secciones de la web.
Tendrá la opción de conseguir una contraseña nueva en el caso de que la haya olvidado
facilitando correctamente su email y teléfono.
51
Ilustración 27: Interfaz login de usuario
La pantalla de registro muestra los datos requeridos para registrarse, el captcha a rellenar y
las condiciones ficticias de uso de la web. En el caso de que los datos introducidos sean
erróneos se indicará en rojo el error del campo a corregir.
52
Ilustración 28: Interfaz registro de usuario
53
Ilustración 29:Interfaz Búsqueda de usuarios
54
6.2.4.4 ADMINISTRACIÓN USUARIO
55
Ilustración 31:Interfaz datos de usuario
56
6.3 IMPLEMENTACIÓN CICLO 1
6.3.1 TECNOLOGÍAS EMPLEADAS
Para la conexión la base de datos se ha utilizado JDBC con la excepción de un método que
ha sido implementado mediante Hibernate, que es otro framework, desarrollado para la
persistencia. El método concreto es uno que se necesitaban hacer consultas con filtros, para
los que la tecnología JDBC debía usar muchísimas consultas distintas. Así que se usó como
alternativa la opción de CRITERIA QUERIES de Hibernate que facilitaba mucho la tarea de
añadir criterios de filtro en unas consultas SQL.
El desarrollo ha tenido lugar con el IDE Netbeans debido a su potencia y a sus ayudas para
facilitar la generación de código y marcación de errores.
En este primer ciclo la estructura de carpetas será muy simple. Por un lado estarán las
carpetas que contendrán los archivos .java y en otro las carpetas con los .jsp
57
actions.usuarios- Carpeta que contendrá los actions del primer ciclo enumerados en la
tabla de la ilustración 24.
Config- Carpeta donde estarán los archivos de configuración de la BD.
Actions- Carpeta donde se ubicará la acción común de redirigir.
Web/WEB-INF/Usuarios- Directorio con todas las páginas JSP referidas a este ciclo,
con acceso restringido.
Web- Carpeta con acceso público.
6.3.3 SEGURIDAD
Otra medida de seguridad de cara al usuario es que una vez logueado, al pasar 10 minutos
inactivo se le cierra la sesión y se le manda a la página de login.
Se ha implementado también unos accesos y vistas según el rol del usuario (usuario,
administradores). Cada persona tendrá unas vistas en su web y no podrá acceder a donde no
esté autorizado a entrar.
Debido a que el alcance del proyecto no llega a los pagos por internet de los pedidos y
reservas no se ha incidido mucho más en el tema de seguridad en la conexión.
En esta sección se expondrá parte de código fuente que se considera interesante destacar.
De esta forma se ahorra mucho trabajo a la hora de fijar filtros, simplemente añadiendo
unos criterios a una variable de Criteria.
58
Como se puede ver en el código de abajo, para listar primero se comprueban los datos
recogidos en el formulario (nombre, apellidos, email, teléfono) y si no son nulos se añaden
como restricciones que se deben cumplir. Tras esto se fija el tipo de usuario también
seleccionado en el formulario de filtrado de la aplicación. Los usuarios que cumplen todas las
restricciones se añaden a una lista que será la mostrada en la página.
59
Ilustración 32: Código Hibernate Filtrar Usuarios
LOGIN DE USUARIO
Básicamente lo que hace el código es recuperar los datos que ha captado el formulario de
login y comprueba si esos datos encajan con los almacenados en la base de datos de la web.
Hay que señalar que la contraseña está codificada en SHA1 y por lo tanto antes de comparar
con la BD se debe encriptar esa clave.
Si los datos coinciden se comprueba que rol de usuario posee el dueño de ese teléfono. Se
guarda en la sesión el rol o roles que posee para mostrar unas partes de la web solo accesibles
a administradores.
60
Ilustración 33: Código Login Usuario Action
61
Ilustración 34: Código Login Usuario BD
El código correspondiente a este apartado sirve para pedir una segunda confirmación de
que un usuario debe ser borrado por parte del administrador.
Cuando se pulsa el botón para eliminarlo, se lanza el javascript que pregunta si está seguro.
62
Ilustración 36: Código html confirmación borrado de usuario
63
6.4 PRUEBAS CICLO 1
6.4.1 INTRODUCCIÓN
Antes de dar por finalizado cada ciclo se deberá comprobar su correcto funcionamiento.
Se probarán los formularios para evitar que ocurran fallos provocados por la unicidad de
algún elemento de la base de datos o para comprobar bien los datos antes de que vayan a ser
utilizados por los Action. Como es lógico también se testeará la aplicación para que se realicen
correctamente las operaciones marcadas en los requisitos.
Los datos de los formularios se validarán mostrando los errores que se hayan producido en
la introducción de datos.
64
Ejemplo de validación con captcha del formulario de registro:
65
6.4.3 PRUEBAS UNITARIAS
A continuación se van a probar aquellos casos en los que puede haber conflicto en la
inserción de datos en la BD al existir restricciones de unicidad. Se contará con las siguientes
clases de equivalencia y los correspondientes casos de prueba.
ALTA USUARIO
MODIFICACIÓN DE USUARIO
Email
Unicidad Email no existe (MU3) Email existe (MU4)
ALTA USUARIO
Caso válido
Prueba Unitaria 1
Descripción Alta de un nuevo usuario
Entradas Nombre: “Federico”
Apellidos: “Lopera García”
Dirección: “Gran Vía nº 7 26004 Logroño”
CP:"26006"
Teléfono : “622622622”
Teléfono repetido: “622622622”
Email: “Federico@gmail.com”
66
Contraseña: ”1234”
Contraseña repetida: ”1234”
Captcha: CORRECTO
Clases de (AU1)(AU3)
equivalencia
Resultado Operación exitosa
esperado
Casos no válidos
Prueba Unitaria 2
Descripción Alta de un nuevo usuario
Entradas Nombre: “Pedro”
Apellidos: “Lopera García”
Dirección: “Gran Vía nº 7 26004 Logroño”
CP:"26006"
Teléfono : “622622622” (existiendo)
Teléfono repetido: “622622622”
Email: “pedro@gmail.com”
Contraseña: ”1234”
Contraseña repetida: ”1234”
Captcha: CORRECTO
Clases de (AU2)
equivalencia
Resultado Error, otro usuario tiene ese teléfono.
esperado
Prueba Unitaria 3
Descripción Alta de un nuevo usuario
Entradas Nombre: “Jaime”
Apellidos: “Lopera García”
Dirección: “Gran Vía nº 7 26004 Logroño”
CP:"26006"
Teléfono : “633633633”
Teléfono repetido: “633633633”
Email: Federico@gmail.com (existiendo)
Contraseña: ”1234”
Contraseña repetida: ”1234”
Captcha: CORRECTO
Clases de (AU4)
equivalencia
Resultado Error, otro usuario tiene ese email.
esperado
67
MODIFICAR USUARIO
Caso válido
Prueba Unitaria 4
Descripción Modificación de usuario
Entradas Nombre: “Jaime”
Apellidos: “Lopera García”
Dirección: “Gran Vía nº 7 26004 Logroño”
CP:"26006"
Teléfono : “644644644”
Teléfono repetido: “644644644”
Email: “Federico@gmail.com”
Contraseña: ”1234”
Contraseña repetida: ”1234”
Clases de (MU1)(MU3)
equivalencia
Resultado Operación exitosa
esperado
Casos no válidos
Prueba Unitaria 8
Descripción Modificación de usuario
Entradas Nombre: “Jaime”
Apellidos: “Lopera Bona”
Dirección: “Gran Vía nº 7 26004 Logroño”
CP:"26006"
Teléfono : “622622622” (existiendo)
Teléfono repetido: “622622622” (existiendo)
Email: “Federico@gmail.com”
Contraseña: ”1234”
Contraseña repetida: ”1234”
Clases de (MU2)
equivalencia
Resultado Error, otro usuario tiene ese teléfono.
esperado
Prueba Unitaria 9
Descripción Modificación de usuario
Entradas Nombre: “Jaime”
Apellidos: “Lopera Bona”
68
Dirección: “Gran Vía nº 7 26004 Logroño”
CP:"26006"
Teléfono : “622622622”
Teléfono repetido: “622622622”
Email: pedro@gmail.com (existiendo)
Contraseña: ”1234”
Contraseña repetida: ”1234”
Clases de (MU3)
equivalencia
Resultado Error, otro usuario tiene ese email.
esperado
Tras ejecutar las pruebas unitarias, junto a pruebas relativas a la concordancia de los datos
según cada campo del formulario y pruebas del captcha se ha probado la integridad y el buen
funcionamiento de los formularios.
69
7. CICLO 2
7.1 ANÁLISIS CICLO 2
7.1.1 ANÁLISIS DE REQUISITOS
7.1.1.1 INTRODUCCIÓN
El segundo ciclo del sistema está enfocado al tratamiento de los productos del restaurante.
Estos productos serán ofrecidos para la venta online. Se tratará toda la gestión de este sistema
de pedidos, tanto lo referente a la parte de los encargos realizados por los usuarios cómo la de
administración.
Usuario podrá realizar pedidos online así como acceder a listados de sus pedidos y detalles
de los mismos.
Se satisfacen los requisitos RF5, RF7, RF8, RF9, RF10, RF11 y RF12 en el ciclo 2 del proyecto.
RF5.1
70
RF5.2
RF5.3
RF7.1
RF7.2
RF10.1
71
Precondición: El adminCocina debe estar registrado y con la sesión iniciada.
Entradas: El administrador quiere activar el sistema de pedidos.
Procedimiento: El administrador va a la sección de cocina donde activará los pedidos.
Salidas: La web permitirá hacer pedidos.
RF10.2
RF12.1
RF12.2
72
7.1.1.4 CASOS DE USO
El siguiente esquema es el diagrama de casos de uso relativo a este segundo ciclo del
proyecto.
CREAR PRODUCTO
73
MODIFICAR PRODUCTO
ELIMINAR PRODUCTO
VER PRODUCTO
74
4. Sistema muestra datos del producto.
5. Termina caso de uso.
Excepciones:
LISTAR PRODUCTOS
HACER PEDIDO
75
Ilustración 40: Diagrama Secuencia Realizar Pedido
VER SU PEDIDO
76
LISTAR SUS PEDIDOS
FINALIZAR PEDIDO
CANCELAR PEDIDO
77
Excepciones:
VER PEDIDO
LISTAR PEDIDOS
78
DESACTIVAR SISTEMA D E PEDIDOS
79
ELIMINAR CÓDIGO POSTAL
80
7.2 DISEÑO CICLO 2
7.2.1 DISEÑO DE LA ARQUITECTURA
7.2.1.1 INTRODUCCIÓN
7.2.2.1 INTRODUCCIÓN
Ahora se mostrará el diseño de las clases de negocio del ciclo2 de la aplicación. Se seguirá
un estilo similar al del ciclo1 dividiendo las clases según su utilización y tipo.
Cabe destacar también que la clase ProductoEnPedido describe a los productos dentro de
un pedido con una cantidad y un precio. La clase Pedido representa, como su nombre indica, a
un pedido de productos que un usuario ha hecho en el portal web.
81
Ilustración 41: Diagrama clases ciclo 2
En este segundo ciclo se utilizarán las clases ProductosBD y PedidosBD para realizar todas
las operaciones relativas a la gestión de productos y gestión de pedidos en las que se necesite
acceder o modificar la base de datos.
82
7.2.2.4 ACTIONFORMS
ProductoActionForm
ObtenerProductosActionForm
PedidoActionForm
ObtenerPedidosActionForm
RedirigirActionForm
ConfiguracionHostalActionForm
83
7.2.2.5 ACTIONS
Action Descripción
AltaProductoAction Acción empleada para dar de alta un producto con
los datos recogidos del formulario.
ObtenerProductosAction Acción empleada para cargar un listado de
productos.
DisplayDatosProductoAction Acción que muestra los datos de un producto.
ModificarProductosAction Acción que modifica los datos de un producto.
DisplayDatosTipoProductoAction Acción que muestra los datos de un tipo de
producto.
FiltrarProductosAction Acción que carga una lista de productos según un
filtro.
AltaTipoProductoAction Acción usada para crear un nuevo tipo de producto.
ObtenerTiposProductoAction Acción que carga los distintos tipos de producto que
existen.
BorrarProductoAction Acción que borra un producto.
BorrarTipoProductoAction Acción empleada para borrado un tipo de producto.
ModificarTipoProductoAction Acción empleada para modificar un tipo de
producto.
Action Descripción
ActualizarPedidoAction Acción empleada para actualizar las cantidades de
los productos de un pedido
DisplayDatosPedidoAction Acción usada para mostrar los datos de un pedido
abierto.
DisplayDatosPedidoCerradoAction Acción usada para mostrar los datos de un pedido
cerrado.
EliminarProductoPedidoAction Acción que se usa para eliminar un producto de un
pedido que un usuario está haciendo.
AddProductoPedidoAction Acción que añade un producto a un pedido que
está realizando un usuario.
FiltrarPedidosAbiertosAction Acción que carga un listado de pedidos abiertos
según un filtro establecido.
FiltrarPedidosAction Acción que filtra pedidos finalizados.
FinalizarPedidoAction Acción usada para finalizar un pedido una vez se
84
han seleccionado todos los productos.
MostrarCarroAction Acción a usar para ver los elementos del carro de
la compra, es decir, los productos seleccionados para
el pedido.
GetPedidosAbiertosAction Acción que carga todos los pedidos que hay
abiertos.
GetPedidosAbiertosUsuarioAction Acción que carga los pedidos abiertos de un
usuario.
GetPedidosAction Acción que carga en un listado todos los pedidos.
GetPedidosUsuarioAction Acción que carga en un listado todos los pedidos
de un usuario.
SellarPedidoAction Acción que finaliza definitivamente un pedido,
marcando como pagado o como cancelado.
SeleccionarProductoAction Acción que carga los productos que serán
mostrados para venderse en la web si está operativa
la venta online.
ActivacionPedidosAction Acción utilizada para activar y desactivar el sistema
de pedidos online.
ModificarEstadoPedidosOnline Acción empleada para modificar el horario de
atención de pedidos online.
85
7.2.3 DISEÑO DE LA BASE DE DATOS
7.2.3.1 INTRODUCCIÓN
El diseño que se mostrará a continuación será una ampliación del visto en el ciclo1
añadiendo a los esquemas y tablas la información referida a la actividad de este segundo ciclo.
Para los productos ofertados por el restaurante se quiere guardar su nombre, una breve
descripción, el precio, la última fecha de actualización y a su vez tener almacenados los
diferentes tipos de productos con un nombre para que se pueda tenerlos categorizados en la
web.
De los pedidos se necesita guardar el precio total, la fecha del pedido y el usuario que ha
realizado ese pedido, asimismo también se recuperará que productos han sido comprados en
el pedido junto la cantidad de ellos.
Se necesita almacenar los códigos postales a los cuales se pueden hacer envíos online. Y
también se desea almacenar una serie de parámetros, como si los envíos están activos y un
horario de atención de esos pedidos .
Se han elegido los nombres de las entidades y campos de forma bastante identificativa. A
continuación se pasa a enumerar y describir las nuevas entidades:
Producto: Representa a un producto ofrecido por el hostal para la venta, cada uno su
identificador. Consta también de una fecha de actualización, de un precio y una descripción.
TipoProducto: Son las categorías de los distintos tipos de productos que oferta el
restaurante.
Pedido: Representa el historial de pedidos realizados por los usuarios, con su identificar
único y los identificadores de los productos encargados, así como el precio total del pedido y la
fecha de cuando se realizó.
CódigoPostal: Almacena todos los CP a los que se pueden realizar entregas a domicilio.
ConfigPedidos: Se trata de una forma de almacenar determinados datos de configuración,
tales como el horario de atención de pedidos, si estos están activos o el horario de atención.
86
DIAGRAMA EER
87
7.2.3.4 CONVERSIÓN A MODELO RELACIONAL
TABLAS RESULTANTES
En la conversión a tablas se ha decidido crear una tabla para almacenar los pedidos que se
han cancelado y para comprobar si está finalizado se usará un booleano en la tabla Pedido.
Aparece también la tabla ProductoEnPedido. Esta tabla almacena y relaciona cada producto
dentro de un pedido y su cantidad.
NORMALIZACIÓN
El esquema de abajo muestra las tablas normalizadas, solamente está incluidas las añadidas
en el ciclo 2.
Las nuevas tablas cumplen: 1FN, 2FN y 3FN Aunque el caso de ConfigPedidos es especial ya
que es una tabla de configuración y no es preciso que haya claves ni relaciones.
Claves candidatas
88
7.2.3.5 DIAGRAMA DE TABLAS FINAL
89
7.2.4 INTERFACES GRÁFICAS DEFINITIVAS
Pantalla pública de pedidos, los internautas tendrán una visión de los productos
gastronómicos que ofrece el restaurante en su carta y un enlace para comenzar un pedido
online.
90
Ilustración 47:Interfaz carro pedido
91
Ilustración 48: Interfaz Resumen confirmación pedido
92
Vista configuración de pedidos
93
7.3 IMPLEMENTACIÓN CICLO 2
7.3.1 TECNOLOGÍAS EMPLEADAS
La implementación del segundo ciclo ha sido realizada con las mismas tecnologías
explicadas en el correspondiente apartado del ciclo 1. Se sigue utilizando NetBeans, Struts y
JDBC como principales herramientas y de nuevo se cuenta con DisplayTag como medio para
presentar listados.
En esta sección se expondrá parte de código fuente que se considera interesante destacar.
CARRO
En el siguiente código del carro de productos en un pedido se ve el bucle que carga la lista
de productos seleccionados. Se destaca la etiqueta logic:iterate que como su nombre indica,
sirve para iterar en una lista y obtener los elementos que se encuentran en ella.
En este caso se tiene una lista de ProductosEnPedido y se muestran en una tabla junto a un
icono que permite eliminarlos de la lista. Posee también un textbox para cambiar la cantidad
de ellos actualizando el pedido.
94
DISPLAYTAG
Displaytag provee una herramienta para mostrar tablas con datos almacenados en una
lista. Permite ordenar esa tabla por la columna que se le marque mediante la propiedad
sortable=”true” y a su vez permite exportar esos datos con export=”true”
Se ha usado una columna con un icono que al pulsarse permite la edición del elemento
mostrado en esa fila. Para ello se ha empleado un campo oculto que almacena el identificador
del elemento de esa fila.
value='<%= ((Producto)pageContext.getAttribute("productos")).getNombre()%>'
95
7.4 PRUEBAS CICLO 2
7.4.1 INTRODUCCIÓN
Las pruebas a realizar en este ciclo van a centrarse en garantizar el correcto funcionamiento
de todo el proceso de creación, modificación y eliminación de productos. Además se probará
la realización de pedidos incluyendo los productos previamente creados, la finalización de esos
pedidos y la muestra de listados tanto de productos como de pedidos.
Como medida de integración de los 2 ciclos se probará también a crear nuevos usuarios y
administradores que realicen y gestionen pedidos respectivamente.
A continuación se van a probar aquellos casos en los que puede haber conflicto al existir
restricciones en la base de datos de unicidad.
96
7.4.3.1 CLASES DE EQUIVALENCIA
ALTA DE PRODUCTO
MODIFICACIÓN DE PRODUCTO
97
7.4.3.2 CASOS DE PRUEBA
ALTA DE PRODUCTO
Caso válido
Prueba Unitaria 10
Descripción Alta de un nuevo producto
Entradas Nombre: Mickey
Descripción: Bacon, queso
Precio: 4
Categoría: Bocadillos
Clases de (AP1)
equivalencia
Resultado Operación exitosa
esperado
Caso no válido
Prueba Unitaria 11
Descripción Alta de un nuevo producto
Entradas Nombre: Mickey (existiendo)
Descripción: Bacon, queso
Precio: 4
Categoría: Bocadillos
Clases de (AP2)
equivalencia
Resultado Ya existe un producto con ese nombre.
esperado
MODIFICACIÓN DE PRODUCTO
Caso válido
Prueba Unitaria 12
Descripción Modificación de un producto
Entradas Nombre: Mickey (cambiado a Goofy)
Descripción: Bacon, queso
Precio: 4
Categoría: Bocadillos
Clases de (MP1)
equivalencia
98
Resultado Operación exitosa
esperado
Caso no válido
Prueba Unitaria 13
Descripción Modificación de un producto
Entradas Nombre: Mickey (cambiado a Aladdin existiendo)
Descripción: Bacon, queso
Precio: 4
Categoría: Bocadillos
Clases de (MP2)
equivalencia
Resultado Ya existe un producto con ese nombre.
esperado
Caso válido
Prueba Unitaria 14
Descripción Alta de un nuevo tipo de producto
Entradas Nombre: Hamburguesas
Clases de (ATP1)
equivalencia
Resultado Operación exitosa
esperado
Caso no válido
Prueba Unitaria 15
Descripción Alta de un nuevo tipo de producto
Entradas Nombre: Hamburguesas (existiendo)
Clases de (ATP2)
equivalencia
Resultado Ya existe un tipo de producto con ese nombre.
esperado
99
MODIFICACIÓN DE TIPO DE PRODUCTO
Caso válido
Prueba Unitaria 16
Descripción Modificación de un producto
Entradas Nombre: Hamburguesas (cambiado a bebidas)
Clases de (MTP1)
equivalencia
Resultado Operación exitosa
esperado
Caso no válido
Prueba Unitaria 17
Descripción Modificación de un producto
Entradas Nombre: Hamburguesas (cambiado a bocadillos existiendo)
Clases de (MTP2)
equivalencia
Resultado Ya existe un tipo de producto con ese nombre.
esperado
100
8. CICLO 3
8.1 ANALISIS CICLO 3
8.1.1 ANÁLISIS DE REQUISITOS
8.1.1.1 INTRODUCCIÓN
Este tercer ciclo será el último y más extenso. Engloba todo lo relacionado con las reservas
de habitaciones en el hostal, desde la creación de nuevas habitaciones y tipos de habitación
hasta la muestra de habitaciones libres para unas determinadas fechas y su posterior elección
por un usuario registrado.
Se atenderán los requisitos RF13, RF14, RF15, RF16, RF17, RF18, RF19, RF20, RF21, RF22,
RF23. (ver página 19)
101
Se refinan y detallan RF13, RF15, RF21 y RF23:
RF13.1
RF13.2
RF13.3
RF15.1
RF15.2
102
Entradas: El administrador quiere cancelar una reserva.
Procedimiento: El administrador va a la sección relativa a reservas donde elige la reserva
para cancelarla.
Salidas: Se cancelará la reserva y se mostrará que se ha hecho con éxito.
RF21.1
RF21.2
RF23.1
RF23.2
103
Procedimiento: El administrador va a la sección de estadísticas, donde selecciona la
estadística a visualizar eligiendo un año.
Salidas: Se mostrará la gráfica.
RF23.3
Introducción: Un adminGeneral podrá ver una gráfica del % del tipo de pensión elegida por
los clientes en un año.
Precondición: El AdminGeneral debe estar registrado y con la sesión iniciada.
Entradas: El administrador quiere ver la gráfica descrita arriba.
Procedimiento: El administrador va a la sección de estadísticas, donde selecciona la
estadística a visualizar eligiendo un año.
Salidas: Se mostrará la gráfica.
RF23.4
RF23.5
Introducción: Un adminGeneral podrá ver una gráfica del número de pedidos durante un
año agrupados trimestralmente.
Precondición: El AdminGeneral debe estar registrado y con la sesión iniciada.
Entradas: El administrador quiere ver la gráfica.
Procedimiento: El administrador va a la sección de estadísticas, donde selecciona la
estadística a visualizar eligiendo un año.
Salidas: Se mostrará la gráfica.
RF23.6
Introducción: Un adminGeneral podrá ver una gráfica del % de ocupación del comedor
durante un año representado trimestralmente.
Precondición: El AdminGeneral debe estar registrado y con la sesión iniciada.
Entradas: El administrador quiere ver la gráfica.
104
Procedimiento: El administrador va a la sección de estadísticas, donde selecciona la
estadística a visualizar eligiendo un año.
Salidas: Se mostrará la gráfica.
RF23.7
Introducción: Un adminGeneral podrá ver una gráfica del número de registros en la web de
nuevos usuarios agrupados mensualmente.
Precondición: El AdminGeneral debe estar registrado y con la sesión iniciada.
Entradas: El administrador quiere ver la gráfica.
Procedimiento: El administrador va a la sección de estadísticas, donde selecciona la
estadística a visualizar eligiendo un año.
Salidas: Se mostrará la gráfica.
El siguiente esquema muestra una representación de las funciones que pueda hacer cada
usuario:
105
CASOS DE USO DE LA GESTIÓN DE HABITACIONES
CREAR HABITACIÓN
MODIFICAR HABITACIÓN
ELIMINAR HABITACIÓN
106
6. Sistema borra la habitación.
7. Termina caso de uso.
Excepciones:
VER HABITACIÓN
LISTAR HABITACIONES
107
3. Usuario elige habitación y tipo de pensión.
4. Sistema registra reserva.
5. Sistema envía confirmación.
6. Termina caso de uso.
Excepciones: Error en las fechas.
Error porque otro usuario ha reservado antes.
108
VER SU RESERVA DE HABITACIÓ N
109
Excepciones:
110
Excepciones:
111
Ilustración 55: Diagrama secuencia Reserva sitio restaurante
112
LISTAR SUS RESERVAS DE COMEDOR
113
7. Termina caso de uso.
Excepciones:
114
GENERAR GRÁFICA DE OCUPACIÓN DE HABITACIONES POR DÍA
115
GENERAR GRÁFICA DE RESERVA DE COMEDOR POR TRIMESTRE
116
Descripción: Administrador quiere ver una gráfica con el % ocupación del
comedor de un día concreto.
Actores: adminGeneral
Precondición: Administrador está registrado y ha iniciado sesión.
Postcondición: Se muestra la gráfica.
Escenario 1. Administrador selecciona fecha.
Principal: 2. Sistema muestra gráfica.
3. Termina caso de uso.
Excepciones:
117
8.2 DISEÑO CICLO 3
8.2.1 DISEÑO DE LA ARQUITECTURA
8.2.1.1 INTRODUCCIÓN
De nuevo al igual que en los 2 primeros ciclos del proyecto se mantiene la arquitectura.
Para más información se puede revisar el apartado del ciclo 1 donde queda explicada.
8.2.2.1 INTRODUCCIÓN
Se amplían las clases de negocio vistas anteriormente con las nuevas referentes a este ciclo.
En este caso los diagramas y apartados quedarán algo más densos debido a la mayor extensión
de esta última parte de la aplicación.
Los nuevos objetos de negocio van a ser las clases Comedor, Habitación, TipoHabitación,
ReservaHabitación y ReservaComedor.
En la parte de reservas de comedor quedarían las clases Comedor, que sería una clase de
tipo Singleton representando al comedor del hostal. Este tendría una capacidad que sería
ocupada por los usuarios no alojados en el hostal.
118
A continuación se muestra el diagrama de clases que intervienen en este ciclo.
Las clases utilizadas para interactuar con la base de datos serán HabitacionesBD,
ReservasHabitacionBD y ComedorBD.
119
Ilustración 58: Diagrama Clases BD Ciclo 3
8.2.2.4 ACTIONFORMS
HabitacionActionForm
ObtenerHabitacionesActionForm
ObtenerReservasActionForm
EstadisticasActionForm
ReservaActionForm
ComedorActionForm
120
8.2.2.5 ACTIONS
Los Actions de este tercer ciclo serán mostrados en las siguientes tablas:
Actions Descripción
AltaHabitacionAction Acción utilizada para añadir una nueva habitación.
GetHabitacionesAction Acción usada para recuperar listados de
habitaciones.
DisplayDatosHabitacionAction Acción usada para mostrar los datos de una
habitación.
FiltrarHabitacionesAction Acción que devolverá una lista de habitaciones
según un criterio de filtro.
BorrarHabitacionAction Acción utilizada para dar de baja una habitación.
ModificarHabitacionesAction Acción empleada para modificar una habitación.
AltaTipoHabitacionAction Acción usada en el proceso de creación de un
nuevo tipo de habitación
BorrarTipoHabitacionAction Acción utilizada para borrar un tipo de habitación.
DisplayDatosTipoHabitacionAction Acción utilizada para mostrar los datos de un tipo
de habitación.
GetTiposHabitacionesAction Acción empleada para devolver una lista con todos
los tipos de habitaciones existentes.
ModificarTipoHabitacionAction Acción empleada para modificar un tipo de
habitación.
MostrarTiposHabitacionHostal Acción que carga los tipos de habitación que
dispone el hostal.
Ilustración 59: Tabla Actions Habitaciones
Actions Descripción
ContinuarReserva2Action Acción usada en el paso 2 del proceso
de reserva de habitación por un usuario.
ContinuarReservaAction Acción usada durante el paso 1 de la
reserva de habitación por un usuario.
DisplayDatosReservaAction Acción que muestra los datos de una
reserva de habitación.
DisplayDatosReservaAdminAction Acción que le muestra al administrador
los datos de una reserva de habitación.
DisplayDatosReservaCerradaAdminAction Acción que le muestra al administrador
121
los datos de una reserva de habitación ya
finalizada.
FiltrarReservasAbiertasAction Acción que devuelve una lista con las
reservas que han pasado un filtro.
FiltrarReservasAction Acción que filtra una serie de reservas
de habitación y las muestra en una lista.
GetReservasAbiertasAction Acción que devuelve una lista al
administrador con todas las reservas aún
abiertas.
GetReservasAbiertasUsuarioAction Acción que devuelve una lista con todas
las reservas aún abiertas de un usuario.
GetReservasAction Acción que devuelve una lista al con
todas las reservas registradas.
GetReservasUsuarioAction Acción que devuelve una lista al
administrador con todas las reservas de un
usuario.
SellarReservaAction Acción que finaliza definitivamente una
reserva de habitación marcándola como
pagada o como cancelada.
SeleccionarFechaReservaAction Acción usada en el proceso de reserva
para marcar las fechas de reservas elegidas
por el usuario.
RegistrarReservaHabitacionAction Acción que registra la reserva del
usuario.
Ilustración 60: Tabla Actions Reservas Habitaciones
Actions Descripción
DisplayReservaComedorAdminAction Acción que muestra los datos de una
reserva del comedor elegida por el
administrador.
FiltrarReservasComedorAction Acción que muestra una lista filtrada de
reservas de comedor.
SellarReservaComedorAction Acción que finaliza definitivamente una
reserva de comedor.
GetReservasComedorAdmAction Acción que devuelve al administrador
una lista de todas las reservas.
GetReservasComedorUsuarioAction Acción que devuelve al usuario una lista
de todas sus reservas.
DisplayDatosReservaComedorAction Acción que muestra los datos de una
reserva del comedor.
FiltrarReservasComedorAbiertasAction Acción que devuelve una lista filtrada de
122
todas las reservas del comedor.
GetReservasComedorAbiertasAdminAction Acción que devuelve al administrador
una lista de todas las reservas del comedor
abiertas.
GetReservasComedorAbiertasUsuarioAction Acción que devuelve al usuario una lista
de todas las reservas del comedor abiertas.
RegistrarReservaComedorAction Acción que guarda una reserva de
comedor de un usuario.
SeleccionarFechaReservaComedorAction Acción que guarda la fecha elegida por el
usuario para la realización de la reserva.
ModificarCapacidadComedor Acción que cambia la capacidad del
comedor.
DisplayDatosReservaComedorAction Acción que le muestra al usuario los
datos de su reserva de comedor.
Ilustración 61: Tabla Actions Reservas Comedor
ACTIONS ESTADÍSTICAS
Actions Descripción
GraficaOcupacionComedorDiaAction Acción que crea una gráfica de estadísticas
de la ocupación del comedor en un día elegido.
GraficaOcupacionDiaAction Acción que crea una gráfica de estadísticas
de la ocupación de las habitaciones del hostal
en un día elegido.
GraficaOcupacionHostalMesAction Acción que crea una gráfica con la
ocupación del hostal en un año representada
en meses.
GraficaOcupacionTipoPensionAction Acción que crea una gráfica con los % de los
tipos de pensión elegidos para los usuarios en
un año.
GraficaPedidosTrimestreAction Acción que crea una gráfica con el número
de pedidos mensual de un año seleccionado.
GraficaRegistrosAñoAction Acción que muestra un diagrama de barras
con el número de registros anual
representándolos por meses.
GraficaReservasComedorTrimestreAction Acción que crea una gráfica con la
ocupación del comedor en un año
representada en trimestres.
Ilustración 62: Tabla Actions Estadísticas
123
8.2.3 DISEÑO DE LA BASE DE DATOS
8.2.3.1 INTRODUCCIÓN
El hostal almacenará las habitaciones con un número y estas serán descritas por un tipo de
habitación. Cada tipo de habitación tendrá una descripción, un precio y el número de personas
que pueden ocuparla.
Se guardarán tanto las reservas de habitaciones como las reservas relativas al comedor. En
las reservas de habitaciones interesará guardar el usuario que la ha hecho, las fechas de
entrada y salida, la fecha de la reserva, la habitación elegida y el precio total.
Todas las reservas, sean del tipo que sean, tendrán un identificador único y se quiere saber
si están finalizadas (pagadas o canceladas) o no para mostrar distintos listados en la aplicación.
Interesa almacenar también el tamaño del comedor para poder modificarlo en el futuro si
se diera el caso. Solo hay un comedor puesto a disposición de los clientes no alojados, sin más
posibles divisiones.
Habitación: Representa las habitaciones del hostal con el identificador del tipo de
habitación que las describirá.
TipoHabitación: Entidad descriptora de habitaciones, con un precio o números de
ocupantes.
ReservaHabitación: Representa las reservas de habitaciones realizadas por los usuarios con
su fecha de entrada, fecha de salida, habitación o precio.
124
ReservaComedor: Esta entidad representa las reservas de comedor hechas por los usuarios
registrados de la web con el número de personas que acudirán a comer y otra información
relevante.
ConfigComedor: Entidad que representa al comedor del hostal y almacena solamente su
capacidad.
DIAGRAMA EER
TABLAS RESULTANTES
Han aparecido nuevas tablas en la conversión del esquema EER. Habrá 2 tablas para
registrar las reservas de habitación y reservas de comedor canceladas. Y una para almacenar
la capacidad del comedor.
125
NORMALIZACIÓN
Claves candidatas
126
8.2.3.5 DIAGRAMA DE TABLAS FINAL
A continuación se van a mostrar una serie de pantallas realizadas durante este último ciclo
de la aplicación.
La siguiente pantalla muestra una gráfica del tipo de pensión elegido por los clientes en un
año concreto. Las gráficas son realizadas con jfreechart y son altamente personalizables en
colores, tamaños, etiquetas...
127
Ilustración 65: Interfaz Gráfica Tipo Ocupación hostal
Otra gráfica generada con jfreechart. Ésta muestra la ocupación de las habitaciones del
hostal en un día concreto elegido por el administrador.
128
8.2.4.3 MENÚ PRINCIPAL DE LA GESTIÓN DE HABITACIONES Y COMEDOR
Pantalla del menú de administrador general para realizar operaciones relacionadas con la
estructura del hostal restaurante.
Página pública mostrada a los internautas para comprobar si hay habitaciones libres en
unas determinadas fechas. Si se eligen fechas de forma errónea saldrá un error indicándolo.
129
Ilustración 68: Interfaz Elección Fechas Reserva Habitación
130
Ilustración 69: Interfaz Generación Gráficas
131
8.3 IMPLEMENTACIÓN CICLO 3
8.3.1 TECNOLOGÍAS EMPLEADAS
En el desarrollo del ciclo 3 se siguen utilizando las mismas tecnologías explicadas en los
anteriores ciclos.
Como novedad en este ciclo se ha hecho uso de una librería Java llamada jFreeChart.
http://www.jfree.org/jfreechart/ Esta librería ha sido empleada para facilitar la creación de
gráficos de calidad y de todo tipo en Java.
Para elegir las fechas de reservas, tanto de comedor como de habitación se ha utilizado un
calendario libre hecho en Javascript.
http://www.rainforestnet.com/datetimepicker/datetimepicker.htm
Web/WEB-INF/Comedor
Web/WEB-INF/ReservasHabitación
Web/WEB-INF/Estadisticas
Actions.comedor
Actions.estadisticas
Actions.reservashabitacion
132
8.3.3 CÓDIGO DESTACABLE
133
Ilustración 70: Código Action Gráfica
CALENDARIO
134
Ilustración 71: Interfaz Calendario
Debido a ser un proyecto sin hosting ni servidor planteado inicialmente, se usará una
cuenta de Google para el envío de emails.
Para realizar este cometido se ha empleado una clase Email genérica y dependiendo del
tipo de email que sea se cambiará el asunto o el contenido. Para el envío se ha hecho uso de
una serie de clases de javax.mail
135
Ilustración 72: Código envío email
136
8.4 PRUEBAS CICLO 3
8.4.1 INTRODUCCIÓN
Las pruebas que se van a realizar en este último ciclo se centrarán en testear el
funcionamiento de los procesos de reservas, de la gestión de habitaciones y comedor, de la
generación de estadísticas y de la muestra de listados de reservas.
Con la validación de formularios se asegurará que los datos introducidos por los usuarios
son correctos para su posterior tratamiento por la aplicación.
ALTA DE HABITACIÓN
MODIFICACIÓN DE HABITACIÓN
Caso válido
Prueba Unitaria 18
Descripción Alta de una nueva habitación
137
Entradas Número: “1”
Tipo Habitación: “Habitación doble”
Clases de (AH1)
equivalencia
Resultado Operación exitosa
esperado
Caso no válido
Prueba Unitaria 19
Descripción Alta de una nueva habitación
Entradas Número: “1”(existiendo)
Tipo Habitación: “Habitación doble”
Clases de (AH2)
equivalencia
Resultado Ya existe una habitación con ese nombre.
esperado
MODIFICACIÓN DE HABITACIÓN
Caso válido
Prueba Unitaria 20
Descripción Modificación de una habitación
Entradas Número: “1”(cambio a “2”)
Tipo Habitación: “Habitación doble”
Clases de (MH1)
equivalencia
Resultado Operación exitosa
esperado
Caso no válido
Prueba Unitaria 21
Descripción Modificación de un producto
Entradas Número: “1”(cambio a “3” existiendo)
Tipo Habitación: “Habitación doble”
Clases de (MH2)
equivalencia
Resultado Ya existe una habitación con ese nombre.
esperado
138
ALTA DE TIPO DE HABITACIÓN
CASOS DE PRUEBA
Caso válido
Prueba Unitaria 22
Descripción Alta de un nuevo tipo de habitación
Entradas Descripción: “Habitación doble”
Precio:20
Ocupantes:2
Clases de (AH1)
equivalencia
Resultado Operación exitosa
esperado
Caso no válido
Prueba Unitaria 23
Descripción Alta de un nuevo tipo de habitación
Entradas Descripción: “Habitación doble” (existiendo)
Precio:20
Ocupantes:2
Clases de (AH2)
equivalencia
Resultado Ya existe un tipo de habitación con esa descripción.
139
esperado
Caso válido
Prueba Unitaria 24
Descripción Modificación de un nuevo tipo de habitación
Entradas Descripción: “Habitación doble” (cambio a “habitación triple”)
Precio:20
Ocupantes:2
Clases de (MH1)
equivalencia
Resultado Operación exitosa
esperado
Caso no válido
Prueba Unitaria 25
Descripción Modificación de un nuevo tipo de habitación
Entradas Descripción: “Habitación doble” (cambio a “habitación triple”
existiendo)
Precio:20
Ocupantes:2
Clases de (MH2)
equivalencia
Resultado Ya existe un tipo de habitación con esa descripción.
esperado
En las pruebas se personalizaron más las gráficas cambiando algunos colores y leyendas. En
las habitaciones se añadió restricciones en la base de datos para que no pudieran tener la
misma descripción.
140
9. PRUEBAS FINALES
9.1 PRUEBAS DE INTEGRACIÓN
Por último se van a seguir una serie de pasos para probar la integración de los tres ciclos
conjuntamente.
Con adminGeneral:
Con adminCocina:
Con usuario:
141
Con adminRecepcion:
Para probar el sistema final completo hay que ejecutar con éxito cada uno de los requisitos
funcionales requeridos.
Como no existe un cliente como tal, seremos nosotros los que valoraremos si se ha
cumplido con los mínimos de un proyecto de este estilo.
Se han ejecutado correctamente todos los requisitos, así que se darán por finalizadas las
pruebas y se declarará el proyecto como concluido.
142
10. CONCLUSIONES
Esta sección pretende recoger las impresiones finales del alumno sobre la totalidad del
proyecto.
Sirvió también para una mayor toma de contacto con el entorno de Struts.
143
10.2 POSIBLES MEJORAS Y AMPLIACIONES
Otra ampliación podría ser la adición de un sistema de envío de sms que avisara al cliente
de ciertas informaciones, como pudiera ser el aviso de una reserva o de que un pedido
estuviera listo para recoger.
Uno de los aspectos que más se incide en la carrera es el relativo a las fases a seguir
durante todo el proceso de creación de software y su respectiva documentación. Aunque a
veces el alumno no valore toda esta “teoría” una vez que te pones a desarrollar una aplicación
de tamaño medio o grande te das cuenta de su importancia.
En lo que se refiere a la planificación personal creo que podía haber sido muy mejorable
por mi parte. Debido a varios factores personales no he ocupado horas que estaban dedicadas
al proyecto. Eso ha provocado que se haya retrasado demasiado la finalización del mismo.
144
11. GLOSARIO DE TÉRMINOS
145
12. BIBLIOGRAFÍA
Libros
Desarrollo de aplicaciones web dinámicas con XML y Java. [David Parsons, Anaya]
Ingeniería del Software [Sommerville]
Referencias Web:
146
13. ANEXOS
13.1 DISEÑO WEB
13.1.1 INTRODUCCIÓN
13.1.2 PROCESO
El diseño de la web fue empezado en papel recogiendo las secciones que debía tener la
aplicación. Se creó un diseño final utilizando hojas de estilo para mejorar la mantenibilidad de
la web.
Se han utilizado principalmente capas (div) combinadas con tablas para posicionar los
elementos en la web. Se ha cargado 2 hojas de estilo distintas dependiendo del navegador (IE
o Firefox, Chrome...) para la correcta visualización en todos navegadores.
En la aplicación se muestra información pública del hostal como marcaban los requisitos.,
tales como la situación, los precios o información típica de un hostal-restaurante.
13.1.3 IMÁGENES
Todas las imágenes o iconos empleados han sido sacados de repositorios libres de internet.
Las imágenes de habitaciones o elementos del hostal restaurante pertenecen al Hostal
Merced-Concordia y han sido utilizadas con su consentimiento para la realización de este
proyecto.
Como se ha visto en esta memoria, la aplicación creada necesitará recopilar datos relativos
a personas físicas para su funcionamiento. La aplicación estaría, en principio, planteada para
ser usada en España por lo que debería adaptarse a la legislación española. En este sentido
está creada la Ley Orgánica 15/1999, de Protección de Datos de Carácter Personal (LOPD).
http://noticias.juridicas.com/base_datos/Admin/lo15-1999.html
147
La presente Ley Orgánica tiene por objeto garantizar y proteger, en lo que concierne al
tratamiento de los datos personales, las libertades públicas y los derechos fundamentales de
las personas físicas, y especialmente de su honor e intimidad personal y familiar.
Para cumplir los requerimientos de dicha ley la empresa deberá básicamente de:
Informar de la existencia de un fichero o ficheros con datos de carácter personal
relativos a los usuarios registrados.
Notificar los ficheros ante el Registro General de Protección de Datos para su
inscripción.
Facilitar y garantizar el derecho del acceso, modificación, cancelación de esos datos.
Obtener el consentimiento para el tratamiento de los datos personales.
Asegurarse que los datos son veraces y han sido obtenidos lícita y legítimamente y
tratados para los fines que fueron obtenidos.
Para más información se puede mirar esta guía puesta por la agencia de protección de
datos.
http://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/common/pdfs/guia
_responsable_ficheros.pdf
13.3.1 INTRODUCCIÓN
13.3.2 REQUISITOS
Este breve manual está pensado para el despliegue en un entorno Windows. Será necesario
tener instalado JDK, los servicios de Apache y MySql y el servidor GlassFish.
Para instalar los servicios de mysql, apache y cargar la base de datos lo más simple es
descargarse Xampp http://www.apachefriends.org/es/xampp.html
148
Ilustración 73: Recorte de pantalla de Xampp
149
En el proceso de carga se ejecutan automáticamente todas las consultas incluidas en ese
archivo y al finalizar ya se tiene la base de datos instalada.
Para ello se puede añadir al path de Windows la carpeta bin creada en la ruta de instalación
elegida para Glassfish, o ejecutar este comando en símbolo del sistema con la ruta completa
donde está asadmin.
asadmin start-domain
Una vez que el dominio está creado correctamente hay que escribir de nuevo en consola.
Otra opción para desplegar la aplicación tras escribir el comando de asadmin start-domain
es entrar en la página de configuración de GlassFish en localhost:4848 . Tras escribir el usuario
y contraseña que elegimos en la instalación, habrá que ir al apartado aplicaciones desde
donde cargaremos el archivo .war.
150
Debería desplegarse también correctamente. Con la aplicación desplegada se puede
acceder a ella y probarla en http://localhost:8080/Hostal-PFC/index.jsp o clickeando en Iniciar
desde la página de Glassfish.
13.4.1 INTRODUCCIÓN
13.4.2 VISITANTE
Un visitante podrá ver información del hostal restaurante o registrarse en la página para
poder hacer pedidos o reservas.
151
Ilustración 77: Pantalla de registro de usuario
13.4.3 USUARIO
También podrá realizar pedidos de productos desde el enlace de arriba de pedidos o desde
el del lateral.
152
Ilustración 79: Listado de productos a la venta
Irá seleccionando los que quiera comprar y finalizará su pedido clickeando primero en carro
y después en finalizar pedido.
153
Un usuario también podrá realizar reservas de habitación y de comedor. Para las reservas
de habitación primero elegirá las fechas de entrada y salida para comprobar si hay
habitaciones libres.
154
Si las hay, elegirá la habitación que le interese y completará la reserva.
Respecto a las reservas de comedor, el usuario deberá elegir un horario, con su fecha y
número de personas que van a acudir.
155
Ilustración 85: Confirmación de reserva de comedor.
Finalmente un usuario podrá ver listados de sus pedidos y reservas abiertas o ya cerradas.
156
Ilustración 87: Pantalla de listados de reservas.
13.4.4 ADMINGENERAL
El administrador podrá ver, modificar o crear usuarios desde el enlace de Gestión Usuarios:
157
Ilustración 89: Pantalla de listado de usuarios
En el apartado de Gestión Hostal podrá crear y modificar habitaciones y sus tipos y ajustar
el tamaño del comedor.
158
Ilustración 90: Pantalla de administración del hostal
159
Ilustración 91: Página de generación de gráficas
160
13.4.5 ADMINCOCINA
En el menú de pedidos se podrá diferenciar entre los pedidos ya cerrados y los abiertos que
quedan por atender. Si se hace click en esos enlaces aparecerá un listado de pedidos donde se
podrá finalizarlos en el caso de que estén aún abiertos o simplemente consultarlos.
161
Ilustración 93: Pantalla administración de pedidos
162
En sistema de pedidos estará toda la configuración:
163
Ilustración 97: Listado de reservas de comedor
164
13.4.6 ADMINRECEPCIÓN
Los administradores de recepción serán los encargados en gestionar las reservas online,
atendiendo a las entradas de clientes en el hostal con su reserva anteriormente hecha.
Tendrán listados de reservas que deberán finalizar cuando el cliente deje el hostal o cuando
cancele esa reserva.
165
Elegirán la reserva abierta que deseen y la finalizarán.
166