Full text
Desarrollo de una aplicación web de gestión de billetes para compañía aérea + Apk Android + tienda en WordPress Autor: Anáss Tilkas Director: Ramón Gonzales Del Campo Rodríguez Barbero Facultad de Informática Universidad Complutense de Madrid Curso 2018-2019
I Agradecimientos Especial agradecimiento al director del Proyecto Ramón Gonzales Del Campo Rodríguez Barbero por su disposición en todo momento para ayudarme en todo lo necesario y por haber confiado en mí desde el principio para la realización de este proyecto. Gracias a mi familia y amigos por hacer de rol de clientes y probar la aplicación cuando se lo he pedido ya que sin ellos habría omitido muchos errores “tontos” en la aplicación. Gracias a mi mejor amiga Monika por haberme facilitado la web donde he creado el logo de la aplicación.
II Resumen Las compañías aéreas están en continua evolución para ofrecer mejoras de sus servicios a los usuarios. El objetivo de este TFG es la combinación del desarrollo de una aplicación web que gestione la compra/venta de billetes, experiencias únicas y productos útiles para los viajes y una aplicación para dispositivos Android enlazada que utilice la misma base de datos para realizar los mismos servicios. Se contempla su atractivo por ofrecer novedades que otras aplicaciones similares no ofrecen, tales como ventajas especiales para usuarios VIP, reservas básicas sin necesidad de registro para usuarios invitados o valoraciones de usuarios registrados para el prestigio de la empresa, tales como la compra de productos para recogerlos en el aeropuerto de destino ya que mucha gente realiza compras a última hora cuando se trata de viajar, otro aspecto a destacar es la reserva de experiencias como paracaidismo o cursos de buceo entre otros. Además, AIRTILKAS incluye una cuenta administradora para gestionar billetes nuevos o eliminarlos, ver estadísticas de los viajes o banear usuarios registrados. Respecto la tienda online, el administrador tiene el poder de gestionar todo lo posible en la web, desde añadir nuevas experiencias o productos hasta añadir nuevos plugins que le sean de utilidad. En definitiva, AIRTILKAS cumple con los objetivos deseados, siendo una aplicación completa que puede lanzarse al mercado para gestionar una aerolínea. El código fuente de este proyecto se ubica en la siguiente dirección: https://drive.google.com/drive/folders/1H-G_9RshaI3QU4irtpZJWCNIJcqsR_L- ?usp=sharing Palabras clave ➢ Billete ➢ Aplicación ➢ Valoración ➢ Tienda ➢ Registro ➢ Acceso a base de datos ➢ Experiencias ➢ Productos
III Abstract The airlines are constantly evolving to offer improvements to their services to users. The objective of this TFG is the combination of the development of a web application that manages the purchase / sale of tickets, unique experiences and useful products for travel and a linked Android application that uses the same database to perform the same services. Its attractiveness is contemplated for offering novelties that other similar applications do not offer, such as special advantages for VIP users, basic reservations without registration for invited users or valuations of registered users for the prestige of the company, such as the purchase of products for pick them up at the destination airport as many people make purchases at the last minute when it comes to travel, another aspect to highlight is the reservation of experiences such as skydiving or diving courses among others. In addition, AirTilkas includes an administrator account to manage new tickets or delete them, view travel statistics or ban registered users. Regarding the online store, the administrator has the power to manage everything possible on the web, from adding new experiences or products to adding new plugins that are useful. In short, AirTilkas meets the desired objectives, being a complete application that can be launched to the market to manage an airline. The source code of this project is located at the following address: https://drive.google.com/drive/folders/1H-G_9RshaI3QU4irtpZJWCNIJcqsR_L- ?usp=sharing Keywords ➢ Ticket ➢ Application ➢ Assessment ➢ Store ➢ Registry ➢ Access to database ➢ Experiences ➢ Products
IV Índice Tabla de contenido Agradecimientos ............................................................................................................................ I Resumen ....................................................................................................................................... II Palabras clave ............................................................................................................................... II Abstract ........................................................................................................................................ III Keywords ..................................................................................................................................... III Capítulo 1 ...................................................................................................................................... 1 Motivación, objetivos y plan de trabajo.................................................................................... 1 Motivation, objectives and work plan ...................................................................................... 1 1.1 Motivación....................................................................................................................... 1 1.2 Motivation ....................................................................................................................... 2 1.3 Objetivos ......................................................................................................................... 2 1.4 Objectives ........................................................................................................................ 3 1.5 Plan de trabajo ................................................................................................................ 5 1.6 Work plan ........................................................................................................................ 6 Capítulo 2 ...................................................................................................................................... 7 Determinación de los requisitos del proyecto .......................................................................... 7 2.1 Plataformas utilizadas ..................................................................................................... 7 2.2 Herramientas utilizadas................................................................................................... 8 Capítulo 3 .................................................................................................................................... 10 Determinación de las funcionalidades del proyecto ............................................................... 10 1.1 Funcionalidades de la aplicación Web .......................................................................... 10 1.3 Funcionalidades de la tienda online .............................................................................. 32 Capítulo 4 .................................................................................................................................... 42 Determinación de la arquitectura del proyecto ...................................................................... 42 4.1 Arquitectura de la aplicación Web ................................................................................ 42 4.2 Arquitectura de la tienda online ................................................................................... 44 4.3 Arquitectura de la aplicación Android........................................................................... 52 Capítulo 5 .................................................................................................................................... 55 Estructura de la base de datos del proyecto ........................................................................... 55 Base de datos de la aplicación de gestión de billetes ......................................................... 55
V Base de datos de la tienda en WordPress ........................................................................... 57 Instrucciones de instalación ................................................................................................ 59 Capítulo 6 .................................................................................................................................... 59 Conclusiones y trabajo futuro ................................................................................................. 59 6.1 Conclusiones .................................................................................................................. 59 6.2 Trabajo futuro ............................................................................................................... 60 Capítulo 7 .................................................................................................................................... 62 Conclusions and future work .................................................................................................. 62 7.1 Conclusions .................................................................................................................... 62 7.2 Future work ................................................................................................................... 63 Bibliografía .................................................................................................................................. 64
1 Capítulo 1 Motivación, objetivos y plan de trabajo Introducción El objetivo principal de este trabajo de fin de grado es la combinación de tres plataformas para realizar una aplicación centrada en la gestión de billetes, experiencias y tienda de productos. En este primer capítulo de la memoria se va a exponer la motivación del proyecto desarrollado. Cabe mencionar que se ha configurado un servidor casero para la publicación de la web, lo que viene siendo de gran utilidad ya que en ciertas asignaturas de la carrera fue necesario el uso de un servidor de pago junto con su dominio y con esta configuración es gratuito todo el proceso. Motivation, objectives and work plan Introduction The main objective of this end-of-degree project is the combination of three platforms to make an application focused on the management of tickets, experiences and product store. In this first chapter of the report the motivation of the developed project will be explained. It is worth mentioning that a home server has been configured for the publication of the web, which has been very useful since in certain subjects of the race it was necessary to use a payment server together with its domain and with this configuration it is free. the whole process. 1.1 Motivación ¿Cuántas veces sales con prisa a un viaje? Habitualmente, todo viajante prepara con antelación todo lo que necesita para su viaje y con esto se pierde mucho tiempo y finalmente siempre se nos olvida algo. Con AIRTILKAS esto no te ocurrirá. Tras adquirir tu billete puedes acceder a nuestra tienda online que contiene los productos que habitualmente todo viajante necesita.
2 ¿Cuándo me llegará el pedido? ¡Esto es lo mejor! compras el producto, te lo reservamos y lo recoges en el aeropuerto. A parte de productos exclusivos para tus viajes, AIRTILKAS te ofrece la posibilidad de adquirir cursos a elegir entre nuestras múltiples experiencias para hacer tu viaje inolvidable. Nuestros cursos abarcan desde paracaidismo hasta Snow en las míticas montañas de los pirineos. 1.2 Motivation How many times do you hurry to a trip? Usually, every traveler prepares everything they need for their trip in advance and with this, a lot of time is lost and finally we always forget something. With AIRTILKAS this will not happen to you. After purchasing your ticket you can access our online store that contains the products that every traveler usually needs. When will the order arrive? This is the best! you buy the product, we reserve it for you and you pick it up at the airport. Apart from exclusive products for your trips, AIRTILKAS offers you the possibility of acquiring courses to choose from among our many experiences to make your trip unforgettable. Our courses range from parachuting to Snow in the mythical mountains of the Pyrenees. 1.3 Objetivos El objetivo principal de este proyecto es el diseño de una aplicación completa amigable con cualquier usuario para facilitar el proceso de su preparación y hacer de su viaje una experiencia inolvidable. A continuación, vemos los objetivos principales y su descripción: Diseño e implementación de una aplicación Web/Android Desarrollo de una app intuitiva para permitir al usuario de forma sencilla gestionar sus billetes/compras desde su pc o smartphone.
3 Diseño e implementación de registro de usuario Desarrollo del algoritmo para el registro de un usuario insertando sus datos personales (nombre, apellidos, dirección, DNI, teléfono, correo, usuario y contraseña). Para asegurar la correcta introducción de datos en este formulario, se ha utilizado una validación de los campos basada en JavaScript. Respecto el campo DNI, se ha utilizado un algoritmo para asegurar que el DNI introducido sea real. Diseño e implementación de gestión de billetes para usuarios Desarrollo del algoritmo para la compra, consulta y cancelación de un billete, dependiendo de si un usuario está registrado o no, este proceso será más corto. Los usuarios registrados dotan de ventajas ya que, a la hora de gestionar una compra, consulta o cancelación de un billete no necesitan introducir repetidas veces sus datos. Diseño e implementación de interfaz administrador Desarrollo de una interfaz de administrador para la creación, modificación y cancelación de un billete, conductores, control de usuarios registrados y estadísticas de los viajes realizados. Diseño de una tienda WordPress Desarrollo de una aplicación en WordPress basada en una tienda online que ofrece la posibilidad de adquirir productos o experiencias inolvidables. 1.4 Objectives The main objective of this project is the design of a complete application friendly with any user to facilitate the process of its preparation and make your trip an unforgettable experience. Next, we see the main objectives and their description:
10 Capítulo 3 Determinación de las funcionalidades del proyecto En este capítulo se van a desarrollar las funcionalidades del proyecto, que serán divididas en tres partes. Se comenzará con las funcionalidades de la aplicación web para la gestión de billetes, seguidamente las funcionalidades de la aplicación de la tienda online y finalmente las funcionalidades de la aplicación Android. 1.1 Funcionalidades de la aplicación Web Para abarcar todos los detalles de la aplicación, comenzaremos suponiendo que partimos de una base de datos con ejemplos de prueba. La principal funcionalidad de la aplicación web es la venta de billetes a usuarios, para ello recomendamos a nuestros clientes registrarse ya que un usuario registrado posee ventajas respecto a ciertas funcionalidades de cara a un usuario no registrado. A continuación, en las siguientes figuras se van a mostrar los casos de uso de un usuario registrado y no registrado sucesivamente y las funcionalidades a las que tienen permiso. Figura de casos de uso de un usuario registrado
11 Figura de casos de uso de un usuario no registrado Para registrarse accedemos desde el botón Entrar/Registrarse situado en la parte superior derecha de la cabecera de la web, o el botón céntrico en el propio índex. Si no estamos registrados introduciremos nuestros datos. Si un usuario se registra dos veces con el mismo DNI o con un Nick que no se encuentre disponible, entonces procesará la petición y le mostrará al usuario un error para volver intentar registrarse.
12 Una vez el usuario se registra, se inicia sesión automáticamente. Para cerrar la sesión se pulsa en salir situado en la parte superior derecha de la cabecera. Para volver a iniciar sesión tan solo tendremos que introducir nuestro Nick y contraseña con los que nos hemos registrado. Figura de inicio de sesión de la aplicación
13 No es necesario registrarse para viajar con AIRTILKAS, pero se ofrecen ventajas si pasas a formar parte nuestra familia. Las principales ventajas de estar registrado son poder consultar todos los viajes que se hayan realizado o se tengan programados con un simple vistazo. Además, en el proceso de compra de un billete, los pasos a seguir son más dinámicos al no tener que ir introduciendo los datos personales. Pero la ventaja más destacable e interesante para nuestros clientes es la posibilidad de cancelar un viaje con tres días de antelación. Otra ventaja que se ofrece para quienes se registran, es la posibilidad de valorar la experiencia de viajar con AIRTILKAS o la experiencia vivida con nuestros pilotos. No obligamos a participar, pero si lo recomendamos ya que nos ayuda a mejorar y, por ello, lo agradecemos categorizando como usuarios vip a aquellos usuarios registrados que adquieran una cifra superior o igual a cinco valoraciones. Veamos un ejemplo, la usuaria Zahra ha realizado cinco viajes. Para los viajes realizados ya puede valorar la experiencia. A priori vemos en la siguiente figura que no tiene ningún icono de Vip junto a su nombre: Figura de viajes realizados para un usuario registrado
14 Si valoramos una más observamos cómo se muestra el icono al lado de Nick Zahra indicando que ha pasado a ser vip. Figura de la etiqueta VIP Ser usuario vip ofrece una ligera ventaja respecto a los usuarios registrados, el usuario vip puede cancelar un billete hasta un día antes de la fecha de salida. Vemos un ejemplo en el que un usuario vip intenta cancelar dos viajes, uno un día antes de la fecha de salida y otro el mismo día de la fecha de salida (ver fecha actual en la parte inferior derecha de la captura). Figura de viajes pendientes
15 Respecto el billete con la misma fecha que el día actual, la aplicación notifica al usuario de que la fecha ha caducado para poder realizar una cancelación como muestra en la siguiente figura: Figura de mensaje de notificación para consulta de billetes En cambio, para el billete del día anterior a la fecha actual, la aplicación si le permite al usuario Vip cancelarlo. En la siguiente figura observamos como el usuario Vip ha eliminado el billete con fecha del día siguiente al actual: Figura de viajes pendientes para usuarios VIP Para un usuario normal, la cancelación de un billete es posible tres días antes a la fecha del billete y para un usuario no registrado, no le es posible cancelar su billete. Si probamos con el usuario normal Nass a cancelar un viaje tres días antes y otro con cinco como se muestra en la figura:
16 Figura de consulta de billetes para un usuario registrado Para el viaje de cinco días después a la fecha actual, vemos que nos deja porque cumple con los requisitos de un usuario normal: Figura de viajes pendientes para usuarios normales
17 En cambio, para el billete del día 21 vemos en la figura que no nos deja y nos muestra un mensaje de que ha caduca la fecha de cancelación: Figura de mensaje de notificación para cancelación de un billete En todo momento, el usuario registrado puede consultar en la pestaña de consultar billete los detalles de cualquier viaje que haya realizado o esté programado por el usuario para volver a imprimirlos, vemos un ejemplo de un viaje programado de la captura anterior: Figura de detalles del billete
18 También es posible consultar un billete sin iniciar sesión, introduciendo el localizador y DNI del usuario sin registrar en la pestaña Consultar billetes. Esta funcionalidad está diseñada para los usuarios no registrados, pero también es apta para los billetes de los usuarios registrados que deseen imprimir un billete en concreto sin iniciar sesión: Figura de consulta billete para usuarios no registrados Si los datos del billete son introducidos correctamente, aparecerán los detalles de dicho billete y un botón con la posibilidad de imprimirlo como se muestra en la figura de detalles del billete, sin embargo, si los datos introducidos son incorrectos, se mostrará un mensaje que indica que son incorrectos como se muestra en la siguiente figura: Figura de mensaje de datos incorrectos en consultar billetes A continuación, vamos a ver los pasos que hay que seguir para la compra de un billete. La secuencia entre un usuario registrado y otro que no lo esté difiere, veamos: Primero consultamos el billete rellenando el formulario con los datos deseados como se muestra en la siguiente figura:
19 Figura de compra de un billete Como observamos, el formulario nos solicita seleccionar un origen, un destino (ambos se pueden seleccionar con un mapa de España gráfico que se abre y se cierra con un botón al lado derecho del select) que no es posible seleccionar un mismo origen que destino, si el billete va a ser de ida o ida y vuelta, una fecha que no puede ser anterior a la actual y un suplemento que podría ser entre ninguno, animales, bicicletas, material delicado o pesado. El formulario está validado con JavaScript y por lo tanto un dato introducido incorrectamente será avisado con un mensaje coloreando el cuadro relacionado. En la siguiente figura se muestra un ejemplo de cómo salta el mensaje de aviso de error al seleccionar el mismo origen que destino: Figura de error del mismo origen y destino
26 Nuestra aplicación web se sustenta gracias a la gestión del administrador. En esta gestión hemos implementado multitud de funcionalidades que pasaremos a describir a continuación. El Nick y contraseña con la que debe iniciar sesión el administrador son Nick: admin, contraseña: adminpass (los pasos a seguir para iniciar sesión son los mismos que un usuario registrado). La vista principal del administrador es un menú en el cual seleccionará la sección a la que desea dirigirse. Figura del menú del administrador En la funcionalidad Estadísticas se mostrarán los viajes que se han realizado en la empresa. Estos viajes están ordenados de manera que los más recientes se vean en las primeras filas, ya que nos interesa ver las valoraciones medias de los últimos viajes realizados. Se puede observar tanto la valoración media del viaje como la del conductor. También si deseamos podemos eliminar el viaje del historial.
27 Figura de estadísticas de los viajes En la funcionalidad Viajes se muestran los viajes programados. Estos están ordenados de manera que los más cercanos se vean en las primeras filas. Figura de los viajes creados Podemos observar que cuando han comprado billetes para un viaje, el administrador no puede modificar las características del viaje. En todo momento se puede cancelar un viaje si a la empresa no le interesa que se efectúe. Si pulsamos en añadir viaje, procederemos a detallar la información relacionada con el nuevo viaje que queramos programar.
28 Figura de creación de nuevo viaje Debemos seleccionar la fecha de finalización que no debe ser previa a la fecha de salida. Las fechas se pueden seleccionar dando al icono de la derecha desplegándose un calendario. La hora de salida debe introducirse a mano o pulsando aparece un reloj en el que, si quieres cambiar la hora, debes pulsar en el número que marca las horas y de la misma manera con los minutos. En el último campo, se deberá incluir un número de autobuses para proceder a asignar conductores al viaje. Figura de selección de conductores
29 En este paso, seleccionaremos a los conductores que deseamos que realicen el viaje. Si el nombre de nombre algún conductor se repitiese en cualquiera de los campos, entonces nos redijéremos a añadir un viaje de nuevo (captura 24) y mostrará el siguiente mensaje de error: Figura de mensaje de aviso de selección del mismo conductor Si no introducimos algún conductor entonces mostrará: Figura de mensaje de aviso de falta de conductores Otra funcionalidad en gestionar viajes como vemos en la figura de los viajes creados, es la de modificar viaje que si pulsamos en ello podremos modificar los campos secundarios de un viaje. Esta funcionalidad se aplica para que si al borrar un viaje el administrador quisiera corregir el número de autobuses o si desease cambiar la fecha o la hora de salida o un cambio de conductor como muestra la siguiente figura: Figura de modificación de un viaje
30 En la funcionalidad Conductores se muestran los conductores que tiene contratados la empresa. Estos están ordenados de manera que los que tienen más antigüedad se vean en las primeras filas. Figura de menú de conductores Podemos observar su valoración media y los podremos eliminar a cualquiera si este abandona la empresa. Si observamos detalladamente, podemos pulsar en el id del conductor para ver los viajes que ha realizado y los detalles de cada uno. Figura de detalles de un conductor Como observamos en la figura de menú de conductores, si pulsamos sobre el botón añadir conductor nos aparecerá los datos personales que debemos introducir sobre el conductor.
31 Figura de crear un conductor nuevo En la funcionalidad Usuarios se muestran los usuarios que se han registrado en la aplicación. Estos están ordenados de manera que los tienen más antigüedad se vean en las primeras filas. Figura de listado de usuario registrados Podemos eliminar cualquier usuario. También podemos ver los viajes que ha realizado cada usuario pulsando en su ID viaje. Figura de detalles de un usuario en concreto
32 Estos se clasifican según los viajes que tiene programados y según los viajes que ha realizado un usuario registrado, incluyendo las valoraciones que ha efectuado. 1.3 Funcionalidades de la tienda online La idea principal de la tienda online es ofrecer al cliente la posibilidad de adquirir cursos y excursiones de modo experiencia para hacer inolvidable su viaje. Además, puede adquirir productos con la posibilidad de recogerlos directamente en el aeropuerto. A continuación, en la siguiente figura se van a mostrar los casos de uso de un usuario que entra en la tienda para adquirir un producto o una experiencia. Figura de los casos de uso de un usuario en la tienda online Para acceder a la tienda, pulsamos en el botón TIENDA del menú de cabecera de la aplicación web como se muestra en la figura: Figura de botón acceso a la tienda
33 Pulsando el botón EXPERIENCIAS también accedemos a la tienda online, pero nos conduciría directamente a la descripción de las experiencias que ofrecemos. Tras pulsar el botón TIENDA, accedemos a la página de inicio de la tienda online donde vemos que se divide en la sección de todos los productos y un Slider con los productos más vendidos como se muestra en las siguientes figuras: Figura de todos los productos de la tienda Figura de los productos más vendidos Respecto la navegación, podemos acceder desde la cabecera a las experiencias que ofrece la tienda, un botón tienda desde el cual podemos acceder a los productos o bien al carrito de la compra, un botón billetes que enlaza esta tienda con la aplicación web para la gestión de billetes, un botón Faq donde el usuario encuentra una cantidad de preguntas frecuentes que le pueden surgir a la hora de realizar una compra, un botón conócenos donde el usuario tiene la posibilidad de ver la descripción de qué ofrece la
34 tienda, un buscador y dos banderas para traducir la web en los dos idiomas disponibles que son el español y el francés. Figura de la cabecera de la tienda online Para adquirir un producto, podemos hacerlo de forma rápida pulsando el botón “añadir al carrito” que aparece automáticamente en el centro del producto o podemos pulsar en el producto para ver más detalles sobre él. Figura de añadir al carrito un producto de forma rápida Tras pulsar el producto, accedemos a la pantalla en la que aparece el mismo con una descripción detallada y la posibilidad de su valoración.
35 Figura del producto detallado Tras pulsar el botón de “AÑADIR AL CARRITO” que aparece en la figura anterior, el producto será añadido automáticamente al carrito y aparece un dialogo de confirmación que nos ofrece la posibilidad de ver el carrito para finalizar la compra o bien podemos omitir el dialogo y seguir navegando por los productos. Figura del diálogo para acceder al carrito y finalizar la compra Si pulsamos en el botón de “Ver carrito” del diálogo de la figura anterior, accederemos a la pantalla en la que aparece el resumen de nuestra compra con todos los productos que hemos añadido al carrito anteriormente, con la posibilidad de insertar un cupón de descuento (hablaremos de él más adelante), actualizar el carrito o finalizar la compra.
42 Para las demás funcionalidades, el proceso es el mismo que la aplicación para escritorio. Capítulo 4 Determinación de la arquitectura del proyecto En este capítulo se enfocará la descripción del funcionamiento de las plataformas desde un nivel técnico. 4.1 Arquitectura de la aplicación Web Como se dijo anteriormente, la arquitectura de la aplicación Web está basada en la programación orientada a objetos. Se ha dividido el código en Scripts de vistas con un tema html5 Responsive [12], Scripts de la lógica y Scripts que interactúan con dicha lógica. A continuación, se detallarán todos los Script citados anteriormente y una descripción de cada uno: 4.1.1 Scripts de vistas mostrar_cabecera: Vista que muestra el saludo dependiendo si un usuario se encuentra registrado. mostrar_pie: Vista que muestra el pie de página. general_nuestraActividad: Vista que muestra la actividad que realizamos. general_equipaje: Vista que detalla cuanto equipaje puede llevarse. general_entretenimiento: Vista que detalla el entretenimiento que ofertamos. general_contacto: Vista para contactar con nosotros. general_avisoLegal: Vista alertar de la legalidad a la que nos acogemos. general_ventajas: Vista que muestra todas las ventajas que ofertamos. general_quienesSomos: Vista que muestra información sobre quiénes somos. general_personas: Vista que muestra información sobre el personal de la empresa. Vistas para el administrador: admin_index: Vista del index del admin. admin_mostrar_toolbar: Vista que muestra el toolbar del admin. admin_gestionarConductores: Vista de los conductores de la empresa. admin_gestionarUsuarios: Vista de los ususarios registrados.
43 admin_gestionarViajes: Vista de los viajes que se van a realizar. admin_estadisticas: Vista de los viajes realizados. admin_consultarEstadisticas: Vista con los detalles de un viaje realizado. Nota: Puede que se deban unificar estas dos últimas vistas. admin_modificarViaje: Vista para editar un viaje. admin_anadirConductor: Vista para añadir un conductor. admin_consultarConductor: Vista que muestras los viajes realizados por un conductor. admin_anadirViaje: Vista para añadir un viaje. admin_anadirViaje_conductores: Vista para añadir conductores a un viaje. admin_consultarUsuario: Vista que muestra los viajes realizados por un usuario. Vistas para usuarios registrados y no registrados: index: Vista del index de un usuario no registrado. mostrar_toolbar: Vista que muestra el toolbar del usuario. noRegistrado_mostrarRegistro: Vista para registrar o iniciar sesión de un usuario. mostrar_fallo_registrar: Vista para identificar un fallo en el registrado de un usuario. comprar: Vista para buscar un billete que se desea comprar. billetesDisponibles: Vista con los billetes disponibles. asientosDisp: Vista en la que un usuario ve qué asientos se encuentran disponibles, se utilizará un gráfico de dichos asientos y el usuario podrá seleccionar el asiento deseado. datosCliente: Vista para que unusuario no registrado introduzca sus datos personales al comprar un billete. comprobarDatos: Vista para que unusuario no registrado compruebe que sus datos son correctos en la compra del billete. general_impresion: Vista que muestra un billete listo para imprimir con los datos del usuario y viaje. consultar: Vista para consultar un billete que se haya comprado y volver a imprimirlo si éste se ha perdido. - Si no se encuentra registrado: deberá introducir un localizador. - Si se encuentra registrado: mostrara la lista de viajes realizados y programados. - los viajes realizados podrá valorarlos - los viajes programados podrá cancelarlos billeteConsultado: Vista con los detalles de un billete de un usuario no registrado. 4.1.2 Scripts que interactúan con la lógica Estos scripts se encuentran localizados en la carpeta lógica del proyecto. validar_logout: Interacción para establecer el cierre de una sesión. cabecera: Lógica que obtiene el saludo dependiendo si un usuario se encuentra registrado. admin_insertar_conductor: Interacción para insertar un conductor nuevo. admin_insertar_viaje: Interacción para insertar un viaje nuevo. admin_eliminar_conductor: Interacción para eliminar un conductor. admin_eliminar_viajes: Interacción para eliminar un viaje.
44 admin_eliminar_usuarios: Interacción para eliminar un usuario. admin_modificar_viaje: Interacción para modificar un viaje. noRegistrado_registro: Interacción que registra un usuario. noRegistrado_login: Interacción que establece el inicio de una sesión. registrado_valorar_conductor: Interacción que envía la valoración de un conductor de un usuario registrado. registrado_valorar_viaje: Interacción que envía la valoración de un viaje de un usuario registrado. insertar_billete: Interacción que inserta un billete de un usuario. borrar_billete: Interacción que cancela un billete de un usuario. 4.1.3 Scripts de la lógica bbdd_conexion: Clase que establecer la conexión con la base de datos para la realización de consultas. billete.php: Clase que almacena los datos de un billete. conductor.php: Clase que almacena los datos de un conductor. usuario.php: Clase que almacena los datos de un usuario registrado y no registrado. valoracion.php: Clase que almacena las valoraciones realizadas de los usuarios registrados. viaje.php: Clase que almacena los datos de un viaje. 4.2 Arquitectura de la tienda online Respecto la arquitectura de la tienda online, está basada en el sistema de gestión de contenido WordPress. Principalmente se ha seleccionado un tema como cimiento del sistema en cuestión, dicho tema es Shop isle. En WordPress, el rol del administrador es totalmente distinto al de la aplicación web anterior. Para esta aplicación, el administrador tiene un menú en el que puede realizar lo que estime oportuno para la gestión de la tienda. A dicho menú se le accede introduciendo usuario y contraseña del administrador como se ha citado anteriormente. Existen dos menús, uno para la personalización de la web de la tienda y otro para gestionar entradas, páginas, plugins y todo aquello relacionado con el motor de la tienda. Figura del menú del administrador
45 Si pulsamos en el menú personalizar, se despliega un submenú a la izquierda de la web en el cual aparecen todas las opciones necesarias para la personalización del tema de la web. Figura del submenú para personalización de la web Como dijimos anteriormente, el cimiento de la tienda es el tema y este se puede cambiar desde el submenú de personalización. Una vez seleccionado el tema deseado, desde este submenú podemos modificar todos sus componentes para ponerlo a nuestro gusto. Si pulsamos en la opción TILKAS citada en la figura del menú del administrador, accedemos al menú para la gestión de todos los plugins utilizados, la gestión de páginas y entradas. Una entrada es una experiencia ofrecida al cliente. Las entradas se dividen por categorías. Un ejemplo de una categoría sería AGUA y sus entradas serían buceo, surf, kayak o rafting.
46 4.2.1 Plugins de la tienda WooCommerce: este plugin es el motor principal de la tienda ya que es el encargado del comercio electrónico. Desde él podemos gestionar pedidos, cupones e informes. Figura del menú de WooCommerce Para crear un cupón vamos al submenú cupones, pulsamos en nuevo cupón y nos aparece la siguiente pantalla: Figura de crear un cupón Podemos crear un descuento para un solo producto o fijo en el carrito. En la figura anterior observamos cómo creamos un descuento para la experiencia del curso de aprendizaje de kayak. El cupón es de un descuento de diez Euros en la adquisición de la experiencia y tiene una fecha de caducidad para el 2019-06-14. En informes, podemos ver las estadísticas de las compras realizadas durante un tiempo determinado y el progreso de la tienda como se muestra en la siguiente figura:
47 Figura de las estadísticas de los informes En el submenú ajustes podemos configurar los datos generales como los países dónde vamos a vender, dirección y ubicación de la empresa y moneda de pago. Además de los datos generales, existe un submenú de pestañas donde podemos configurar productos, impuestos, envío, pagos, cuentas y privacidad, correos electrónicos y un menú avanzado donde podemos personalizar los contenidos de WooCommerce para que sepa dónde enviar a los usuarios para finalizar la compra. Figura de las pestañas de ajustes de WooCommerce En el submenú productos configuramos las unidades de peso, dimensiones y valoraciones de los productos.
48 Figura de configuración de productos Submenú de impuestos: Figura de configuración de impuestos
49 Submenú de envío: Figura de configuración de zona de envíos Submenú de pagos: Figura de configuración de pagos Respecto el submenú de cuentas y privacidad, se ha configurado para permitir a un usuario adquirir un producto sin crear una cuenta. En el submenú correos electrónicos gestionamos los listados de los avisos enviados por correo electrónico desde WooCommerce, así como el nombre del remitente y la plantilla del correo electrónico. Cabe destacar que este plugin no funciona si no subimos nuestra tienda online a un servidor junto a un dominio. Respecto los productos, se gestionan desde el menú Productos en el panel del administrador.
50 Figura del menú de productos Antes de añadir productos se deben crear categorías para estructurar cada producto a la categoría a la que pertenece. Para crear una categoría basta con ir al submenú Categorías del menú Productos y podemos introducir una nueva. En la siguiente figura se muestran las categorías actuales de la tienda, pertenecientes a las experiencias: Figura de las categorías existentes en la tienda Cookie Notice: informar elegantemente a los usuarios que tu sitio utiliza cookies, y ayuda a cumplir con el los reglamentos de la ley RGPD de cookies para la Unión Europea. Dicho mensaje aparece en la página principal la primera vez que entramos en la tienda online, posee dos botones, uno para aceptar las cookies y otro para leer la política de cookies con más detenimiento. Figura del mensaje de uso de cookies
51 Cryout Serious Slider: plugin para el efecto del zoom al deslizar el ratón sobre una imagen de un producto. GTranslate: es el plugin encargado de traducir a la tienda en varios idiomas, situando de forma atractiva en la cabecera banderas de los idiomas disponibles para que el usuario pueda elegir el deseado. Se ha probado este plugin con el español como lengua nativa de la tienda y el francés. Theme My Login: este plugin se encarga del inicio de sesión, registro y contraseña dentro de la tienda. Se ha utilizado solo para iniciar sesión con el administrador. WordPress Importer: plugin para importar entradas, páginas entre otras opciones desde un archivo de exportación. Se ha utilizado para importar alguna de las entradas de otro proyecto a modo de prueba. Yoast SEO: es un plugin que realiza un análisis del contenido de la tienda para facilitar la comprensión tanto a visitantes como a los rastreadores de los motores de búsqueda de los productos utilizados. En cada producto, realiza un análisis y muestra al administrador los resultados de dichos análisis para realizar una mejoría en la información de dicho producto para así mejorar tanto su venta como su posicionamiento en los motores de búsqueda. En la siguiente figura vemos cómo nos muestra un análisis de la información de la experiencia “salto en paracaídas”: Figura del análisis de legibilidad de Yoast SEO
58 A continuación, se muestra el gráfico de la base de datos de WordPress: Figura de la base de datos de WordPress
59 Instrucciones de instalación Las instrucciones a seguir para instalar la aplicación son: - Instalar la base de datos en el servidor XAMPP o localhost. Utilizaremos el script airtilka.sql para importar la base de datos de la aplicación web y tilkasshop.sql para la tienda de WordPress. Debemos crear un usuario “mam” con todos los privilegios en phpMyAdmin. - El administrador viene por defecto y el usuario y contraseña como se dijo para la aplicación web es usuario: admin y contraseña adminpass y para la tienda es usuario: mam y contraseña: mam. Dejamos las carpetas 99 y WordPress en el directorio htdocs del servidor XAMPP Capítulo 6 Conclusiones y trabajo futuro En este capítulo se enfocará la descripción de las metas alcanzadas del proyecto, las dificultades que se han encontrado en su desarrollo y las futuras modificaciones e integraciones al proyecto para su mejora. 6.1 Conclusiones Las principales metas del proyecto eran crear una aplicación web de gestión de billetes combinando PHP, Ajax, JavaScript y MySQL para la base de datos, junto con la creación de una tienda online basada en WordPress y una aplicación para Android que haga el mismo funcionamiento.
60 Los objetivos principales sobre la combinación de todas estas tecnologías se ha llevado a cabo satisfactoriamente ya que se han cumplido las expectativas del proyecto a pesar de haber topado con algunas dificultades como combinar PHP con Ajax para hacer las consultas del gráfico de los asientos y poner en rojo los ocupados. Otra de las dificultades encontradas fue la migración de las aplicaciones a un host remoto ya que fue necesario para realizar las pruebas oportunas en la tienda online como el uso de Stripe para los pagos de los productos. Utilizar una plantilla HTML Responsive ha sido un acierto sin duda ya que me ha ahorrado mucho trabajo a la hora de la creación de la aplicación Android. La seguridad de los formularios se veía afectada por la limitación de aprendizaje del lenguaje JavaScript, pero ha resultado más sencillo de lo imaginado. Resulta interesante el algoritmo de validación del documento de identidad original ya que hace a la aplicación web más real. La utilización de Ajax para los mapas de selección de origen y destino, calendario o reloj en la creación de viaje en modo administrador hace que la aplicación tenga un atractivo exquisito respecto su apariencia facilitando el manejo de la misma a los usuarios. Como conclusión, la tienda online es sin duda una aplicación que se podría utilizar de forma profesional sin duda ya que cumple los requisitos y funciones que toda tienda necesita. Lo que se podría añadir en un futuro serían más productos y experiencias a modo de completar mejor la tienda. 6.2 Trabajo futuro 6.2.1 Incorporación de redes sociales Actualmente las redes sociales son un pilar importante de una empresa a la hora de publicar su contenido. Es una buena opción añadir cuentas de redes sociales para publicar los productos de la tienda y ofertas de vuelos. 6.2.2 Añadir terminales a la hora de crear un vuelo Todo aeropuerto se organiza por terminales, sería interesante añadir la opción de crear terminales y organizar los vuelos a base de ellas desde el menú del administrador.
61 6.2.3 Mejora el gráfico de asientos El funcionamiento del gráfico de asientos sin duda se ha logrado, sin embargo, el gráfico en sí ha quedado dibujado de una forma estándar, cabe la posibilidad de mejoría en el gráfico simulando a un avión. 6.2.4 Habilitar más formas de pago en la tienda En la tienda actualmente están activados como forma de pago tarjetas de crédito y PayPal, sin embargo, se podrían configurar más formas de pago recientes como googlePay (para activar Stripe es necesario subir la aplicación a un servidor remoto, sin embargo, la aplicación de este proyecto está en un servidor local. Sólo fue subida a un servidor remoto para realizar las pruebas oportunas sobre las aplicaciones que requerían de dicho servidor, posteriormente se ha seguido trabajando en el servidor local ya que uno remoto requiere de pago mensual). 6.2.5 Enviar un correo con el billete adquirido y recordatorio el día anterior al vuelo Algo que añadiría a la aplicación sin duda es la mensajería vía correo con el billete comprado y el aviso por SMS con un recordatorio el día antes de la salida del avión, considero que harían que la aplicación sea más atractiva.
62 Capítulo 7 Conclusions and future work In this chapter the description of the goals reached of the project, the difficulties that have been found in its development and the future modifications and integrations to the project for its improvement will be focused. 7.1 Conclusions The main goals of the project were to create a web application for managing banknotes combining PHP, Ajax, JavaScript and MySQL for the database, along with the creation of an online store based on WordPress and an Android application that performs the same operation. The main objectives on the combination of all these technologies has been carried out satisfactorily since the expectations of the project have been met despite having encountered some difficulties such as combining PHP with Ajax to query the graph of the seats and put in the busy ones. Another of the difficulties encountered was the migration of the applications to a remote host since it was necessary to perform the appropriate tests in the online store as the use of Stripe for the payments of the products. Using a HTML Responsive template has been a success without a doubt since it has saved me a lot of work when it comes to creating the Android application. The security of the forms was affected by the learning limitations of the JavaScript language, but it has been simpler than imagined. The validation algorithm of the original identity document is interesting since it makes the web application more real. The use of Ajax for the selection maps of origin and destination, calendar or clock in the creation of travel in administrator mode makes the application has an exquisite appeal with respect to its appearance facilitating the management of it to the users. In conclusion, the online store is undoubtedly an application that could be used professionally without a doubt since it meets the requirements and functions that every store needs. What could be added in the future would be more products and experiences in order to better complete the store.
63 7.2 Future work 7.2.1 Incorporation of social networks Currently social networks are an important pillar of a company when publishing its content. It is a good option to add social media accounts to publish the store's products and flight offers. 7.2.2 Add terminals when creating a flight Every airport is organized by terminals, it would be interesting to add the option to create terminals and organize flights based on them from the administrator's menu. 7.2.3 Improve the seating graph The performance of the seating chart has undoubtedly been achieved, however the graphic itself has been drawn in a standard way, there is the possibility of improvement in the graphic simulating an airplane. 7.2.4 Enable more forms of payment in the store In the store are currently activated as a form of payment credit cards and PayPal, however, you could configure more recent payment methods such as googlePay (to activate Stripe is necessary to upload the application to a remote server, however, the application of this The project is on a local server, it was only uploaded to a remote server to perform the appropriate tests on the applications that required that server, later it has continued working on the local server since a remote one requires a monthly payment). 7.2.5 Send an email with the ticket purchased and reminder the day before the flight Something that would add to the application without a doubt is the courier via email with the purchased ticket and the notification by SMS with a reminder the day before the departure of the plane, I believe that they would make the application more attractive.
64 Bibliografía [1] https://es.wikipedia.org/wiki/WordPress [2] https://es.wikipedia.org/wiki/PHP [3] https://es.wikipedia.org/wiki/JavaScript [4] https://es.wikipedia.org/wiki/Ajax_de_%C3%81msterdam [5] https://es.wikipedia.org/wiki/JQuery [6] https://es.wikipedia.org/wiki/SQL [7] https://es.wikipedia.org/wiki/XAMPP [8] https://es.wikipedia.org/wiki/Notepad%2B%2B [9] https://es.wikipedia.org/wiki/Android_Studio [10] https://es.wikipedia.org/wiki/HTML5 [11] http://www.oscarabadfolgueira.com/guia-la-base-datos-wordpress/ [12] https://html5up.net/massively Volver al índice