Creación de un Sistema de Reserva para Hoteles Para el Hotel LP Columbus La Paz 1. Introducción
En este proyecto, se presenta la creación de un sistema de reservas para hoteles orientado a Internet utilizando Java, MySQL y XAMPP. Se basara en la exposición de las funcionalidades que son necesarias para la creación de reservas desde 2 puntos de vista diferentes, la del cliente y el de un empleado de un hotel. Para este proyecto utilizaremos JAVA orientado a objetos por ser un lenguaje de fácil uso e ideal para este tipo de aplicación, nuestro gestor de base de datos será el MySQL por ser el mas eficiente y el mas completo es su categoría y por ultimo el XAMPP por ser un servidor estable de software libre. 2. Antecedentes
LP Hoteles® es una cadena hotelera boliviana, con presencia en las ciudades de La Paz y Santa Cruz de la Sierra. El nombre (LP Hoteles®) está compuesto por acrónimos de Luis Pomarino, que la fundó en el año 1999, cuando construyó el primer hotel de la cadena, el LP COLUMBUS® en La Paz. El 7 de agosto del año 2009, fecha del aniversario de LP Hoteles®, abre sus puertas el 2° hotel de la cadena, esta vez en Santa Cruz de la Sierra, el LP Santa Cruz®. Los futuros proyectos cuentan con un nuevo hotel LP® en la zona de Equipetrol, en Santa Cruz de la Sierra y en la ciudad de Cochabamba. LP Hoteles® pertenece a la categoría de tres estrellas, a pesar de que las Gobernaciones en Bolivia los categorizaron según la Norma Boliviana como 4 estrellas. Este hecho se debe a que la gerencia de la cadena preferió adaptarse a los estándares mundiales, en vez de las nacionales. La cadena LP Hoteles® se caracteriza por estar en las zonas céntricas de las principales ciudades de Bolivia, así también por el estilo arquitéctonico minimalista. Los hoteles de l a cadena son “pet friendly” vale decir, aceptan mascotas que acompañan a los huéspedes. La filosofía de la cadena LP Hoteles®, responde a los nuevos desafíos en la industría turística y aplica el concepto de turismo sostenible, es decir cuenta con una política de responsabilidad social, ambiental y económica. Dentro de
estos objetivos LP Hoteles®, se concentra a ayudar a niños huérfanos a través de donaciones periódicas al Hogar Fundación Padre Alfredo 1 en santa Cruz de la Sierra y los Hospitales Arco Iris 2 en La Paz. Asimismo cuenta con una Política Verde® 3 que consiste en el ahorro de energía, agua potable, reciclaje y reutilización. El pilar económico del turismo sostenible apoya la cadena a través del uso de productos exclusivamente regionales 4. En el año 2013 uno de los hoteles de la cadena, el LP Columbus®, fue galardonado con el premio Travelers Choice 2013, en la categoría de los 25 hoteles más populares por su servicio en Bolivia5 , otorgado por Tripadvisor®. Hotel de 3 estrellas ubicado en el centro de la ciudad de La Paz, en un barrio tranquilo. Nuestro Hotel ofrece una estadía placentera a todos los visitantes que desean conocer una ciudad como La Paz, en la que se puede apreciar arte, cultura, política y naturaleza. Estadística de la Propiedad
Año construcción:1998 Año última remodelación: 2011 Restaurante:1 Salón de Eventos:1 3. Planteamiento del Problema
Un software de gestión hotelera es bastante útil para administrar eficientemente las distintas labores que se realizan en el área hotelera, ya sean de índole operativa, administrativa, financiera, entre otros. Con dicho software se podrán agilizar todas las labores cotidianas que se realizan en un hotel, como son el manejo de las reservas, el eficiente registro de los clientes, se podrán asignar los diversos costes, así como también crear las diferentes boletas necesarias, entre otros, todo esto se podrá hacer de una manera bastante funcional y natural gracias a que dicho software está especialmente diseñado para ayudar en gran manera a el buen manejo y la funcionalidad de un hotel.
4. Objetivos 4.1 Objetivo General
El objetivo de este proyecto es implementar las funciones básicas para la creación, mantención y consulta de reservas de habitaciones en una base de datos El sistema está pensado para responder a las necesidades propias de un hotel y aspira a recoger los datos de la manera mas realista posible, desde los suplementos utilizados en las tarifas hoteleras, hasta las tarjetas de crédito de los clientes. 4.2
Objetivos Específicos
Crear una interface de fácil uso, con consulta de disponibilidad, introducción de los datos del cliente y confirmación de la reserva. Emparejar los requisitos del usuario con las habitaciones disponibles actualmente. Un hotel probablemente tendrá varios tipos de habitaciones y precios – suites áticos, grandes habitaciones con cama de gran tamaño, habitaciones simples, etc. Crear un sistema de boletas para que al final de la estadía del cliente tenga un atención rápida y eficaz sin demoras en sumas de cuentas.
5. Justificación 5.1 Justificación Social
En la actualidad una excelente gestión hotelera depende de una buena campaña de marketing que se encargue de publicitar de manera eficiente los diferentes paquetes y ofertas que el hotel ofrece, esto permitirá que el hotel tenga un mayor alcance a sus clientes, debido a que con la base de datos que provee el software de gestión hotelera se podrá tener información detallada de cada cliente y así se podrán diseñar campañas específicas e individualizadas para cada uno de ellos. El software también reflejará información detallada de cada
área del hotel, con esta información se podrá ofrecer el mejor de los servicios a los huéspedes, ya que se le brindará de acuerdo a las características específicas de cada uno de ellos, y así se logrará convertirlos en clientes frecuentes. Otra ventaja es que se podrá ofrecer servicios en diversos idiomas, ya que dicho software viene programado en multi-idiomas y con esto el alcance será mucho mayor debido a que se podrá alcanzar a clientes que sean de otras nacionalidades y que hablen otros idiomas que no sea el español. Como podemos ver los beneficios y ventajas son diversos, permitiendo que de esta manera el hotel sea más funcional en cuanto a su operación y servicio se refiere y también en cuanto a lo interno del mismo, ya que se podrá acceder en cualquier momento a todos los datos referentes al mismo, con esto se podrán hacer estudios y proyecciones en el tiempo, permitiendo así tener un mayor control sobre el funcionamiento del hotel. El software es flexible ya que puede ser manejado por diferentes usuarios desde diferentes lugares, proveyendo así mayor movilidad y agilidad a la hora de realizar cualquier tarea del HOTEL cualquier momento dado. 5.2
Justificación Técnica
En una era como la actual que está siempre ampliamente influida por la tecnología es completamente útil y necesario el contar con un software de gestión hotelera, ya que de esta manera las tareas cotidianas serán eficientemente realizadas, teniendo así un hotel más funcional y obviamente un negocio cada vez más próspero.Este software te agiliza las diversas tareas a realizar. En cuanto a las reservas este software ayuda a realizarlas por distintos canales, como pueden ser vía telefónica, por correo, internet u otro medio. En cuanto al alojamiento le permitirá detallar a los clientes los tipos de alojamientos con los que el hotel cuenta, así el cliente sabrá qué tipo de reserva debe hacer. 6. Alcances y Limitaciones 6.1 Alcances
Este software de gestión hotelera provee también otros beneficios como son el de generar facturas de forma profesional. Como podemos ver dicho software es bastante útil porque agiliza en gran manera las operaciones en el hotel, también se puede a través del mismo acceder a la base de datos de los clientes que se posee y la información de los mismos, así en algún momento dado, se le podrá ofrecer ofertas, paquetes especiales, entre otros, también se guardara
esta base de datos para que en la siguiente estadía del huésped su registro sea mas ágil y rápido. 6.2
Limitaciones
Este Software de gestión hotelera carece de algunos puntos débiles, como ser, principalmente el idioma que tendrá la interface, en un principio será solo en castellano y para después hacerlo en Ingles. Siendo el inglés el idioma que ahora rige el mundo, también por ser uno de los idiomas oficiales de la ONU, en muchos software hoteleros de diferentes hoteles se utiliza como idioma universal el ingles. Otro punto débil de este software será que solo será para reservas y ventas de habitaciones, consumo y creación de factura y no así para el registro diario de ingresos y egresos de huéspedes, tampoco habrá una planilla de sueldos para los empleados del hotel. 7. Marco Teórico 7.1 JAVA Plataforma Java EE
La tecnología Java es tanto un lenguaje de programación como una plataforma. El lenguaje de programación es un lenguaje de alto nivel orientado a objetos que tiene una sintaxis y estilo particular. Una plataforma Java es un ambiente particular en el cual las aplicaciones Java se ejecutan. Plataformas de Java
Existen tres plataformas del lenguaje Java: Java SE Java EE Java ME Todas las plataformas se componen de: Una máquina virtual (VM7 ). Es un programa para una plataforma particular de hardware y software que ejecuta aplicaciones Java. Una API . Es una colección de componentes de software que se pueden usar para crear otros componentes de software y aplicaciones. Cada plataforma provee de una máquina virtual y una API, esto permite a las aplicaciones escritas para esa plataforma ejecutarse en cualquier sistema compatible con las ventajas del lenguaje Java: independencia de plataforma, estabilidad, facilidad de desarrollo y seguridad.
Java SE
Esta plataforma provee las funcionalidades base del lenguaje de programación Java. Ésta define desde los tipos de datos básicos y objetos del lenguaje hasta las clases de alto nivel que se usan para la seguridad, acceso a base de datos, redes, desarrollo de interfaces gráficas de usuario y análisis sintáctico de documentos en formato XML. Java EE
Esta plataforma está construida sobre la plataforma Java SE. Ésta provee una API y un ambiente de desarrollo y ejecución para aplicaciones a gran escala, multicapa, escalables, confiables y distribuidas Este tipo de aplicaciones son denominadas aplicaciones empresariales porque generalmente son diseñadas para resolver problemas de carácter empresarial. Java ME
Esta plataforma provee de una API y una máquina virtual, la cual es reducida en comparación a las VM de Java SE y Java EE, para ejecutar aplicaciones Java en dispositivos tales como teléfonos celulares. La API de Java ME es un subconjunto de la API de Java SE junto con algunas librerías útiles en el desarrollo para pequeños dispositivos. Aplicaciones distribuidas multicapa y Java EE
En una aplicación multicapa la funcionalidad de la aplicación es separada en partes o capas de acuerdo a su funcionalidad. Por lo general, las aplicaciones multicapa tienen una capa de cliente, una capa media y una capa de datos (a veces llamada capa de sistemas empresariales de información). La capa cliente consiste en un programa cliente que hace una petición hacia la capa media. Las funciones o métodos de negocio de la capa media atienden la petición y procesan la información almacenándola en un depósito de información. La plataforma Java EE usa un modelo de aplicaciones distribuidas multicapa. La lógica de la aplicación se divide en componentes de acuerdo a la función, estos componentes están instalados en diferentes máquinas dependiendo de la capa en la que se encuentre de acuerdo al ambiente Java EE. La figura muestra dos aplicaciones Java EE divididas en capas, las cuales se describen a continuación: Capa cliente, se ejecuta en la máquina del cliente. Capa web, se ejecuta en el servidor Java EE.
Capa de negocio, se ejecuta en el servidor Java EE. Sistema de Información Empresarial (SIE), se ejecuta en el servidor de base de datos.
Aunque una aplicación Java EE puede consistir de 3 de las 4 capas mostradas en la figura , las aplicaciones Java EE son generalmente consideradas como aplicaciones de tres capas porque están distribuidas en tres lugares: máquinas de los clientes, el servidor Java EE y los servidores de base de datos.
Componentes Java EE
Las aplicaciones Java EE están conformadas por componentes. Un componente Java EE es una unidad de software que es ensamblada en una aplicación Java EE con sus clases y archivos que se comunican con los otros componentes. La especificación Java EE define los siguientes componentes: Aplicaciones en el cliente y Applets son componentes que se ejecutan de lado del cliente. Java Servlet, JavaServer Faces Y JavaServer Pages (JSP) son componentes web que corren de lado del servidor. Los Enterprise JavaBeans (EJB) son componentes de negocio que corren sobre el servidor. Los componentes son escritos en el lenguaje Java y son compilados de la misma manera que cualquier otro programa. La diferencia entre los componentes Java
EE y las clases Java estándar es que los componentes Java EE son ensamblados en una aplicación Java EE, se verifica que se encuentren bien formados de acuerdo la especificación Java EE y son desempaquetados en un servidor de aplicaciones. Clientes Java EE
Los clientes Java EE pueden ser web o aplicaciones. Clientes web.
Un cliente web consiste de dos partes: Páginas web dinámicas. La páginas pueden contener varios tipos de lenguaje de marcado (HTML, XHTML, etc.) que son generadas por componentes que se ejecutan en la capa web. Navegador web. Presenta las páginas recibidas del servidor.
Un cliente web frecuentemente es llamado un cliente ligero. Los clientes ligeros usualmente no consultan la base de datos, no ejecutan reglas complejas de negocio ni se conectan con sistemas heredados. Cuando se usa un cliente ligero, las operaciones pesadas son hechas por los EJBs que corren en el servidor, donde éstos se encargan de brindar la seguridad, rapidez, servicios y confiabilidad por medio de la comunicación con las tecnologías instaladas en el servidor. Applets
Una página web que proviene de la capa web puede incluir un Applet embebido. Un Applet es una pequeña aplicación escrita en lenguaje Java que se ejecuta en la máquina virtual instalada en el navegador web. Sin embargo, los sistemas cliente necesitan un plugin y un archivo de póliza de seguridad para que el Applet se pueda ejecutar en el navegador web exitosamente. Aplicaciones cliente
Una aplicación cliente corre sobre la máquina del cliente y brinda a los usuarios un modo para poder utilizar interfaces de usuario mucho más ricas (completas) que las proporcionadas por un lenguaje de marcado. Por lo general éstas tienen una interfaz gráfica creada a partir de la API Swing ó AWT, aunque una interfaz de línea de comando también es posible.
Arquitectura de componentes JavaBeans
Las capas de servidor y cliente pueden incluir componentes basados en la arquitectura de componentes JavaBean para administrar el flujo de información entre una aplicación cliente o un Applet y los componentes que corren en el servidor, o entre los componentes del servidor y la base de datos. La figura muestra la comunicación entre la capa cliente y el servidor. El cliente se puede comunicar directamente con la capa de negocio que reside en el servidor, o en el caso de de que el cliente se comunique por medio del navegador, la comunicación se da a través de páginas JSP y Servlets que corren en la capa web. Comunicación con el servidor
Componentes web
Los componentes web (figura 4) son Servlets o páginas creadas usando la tecnología JSP y/o la tecnología JavaServer Faces. Los Servlets son clases programadas en Java que dinámicamente procesan las peticiones y construyen las respuestas hacia la capa cliente. Las páginas JSP son documentos de texto que se ejecutan como Servlets pero que permiten un acercamiento más natural en el momento de crear contenido estático. Las páginas HTML estáticas y Applets son integradas con los componentes web durante el ensamblado de la aplicación pero no son considerados componentes web por la especificación Java EE. Las clases adicionales o de utilidad también pueden ser integradas con los componentes web pero no son consideradas componentes web.
Componentes de negocio
El código que contiene la lógica que permite resolver las necesidades de un área de conocimiento en específico, tal como: el sector financiero, bancario, etc., se encuentra en los Enterprise Beans (EJBs) que se ejecutan en la capa de negocio. La figura muestra como un EJB recibe datos de programas cliente, los procesa y los envía a la capa del sistema de información para su almacenamiento. Un EJB también recupera datos almacenados, los procesa y los regresa al programa cliente. Existen tres tipos de EJB: Beans de Sesión, Beans de Entidad y Beans de Mensajes. Un Bean de Sesión representa una conversación transitoria con el cliente. Cuando se termina la ejecución del proceso del cliente, el Bean de Sesión y sus datos se eliminan. En contraste, un Bean de Entidad representa los datos almacenados en un renglón de una tabla de base de datos. Un Bean de Mensaje combina las características de un Bean de Sesión y un oyente de mensajes JMS (Java Message Service), permitiendo que un componente de negocio reciba mensaje asíncronamente.
Capa del sistema de información.
La capa del sistema de información contiene el SIE e incluye sistemas de infraestructura como un ERP16, un procesador mainframe de transacciones, sistemas de bases de datos y otros sistemas de información heredados. 7.2
NetBeans
NetBeans es
un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programación Java. Existe además un número importante de módulos para extenderlo. NetBeans IDE 2 es un producto libre y gratuito sin restricciones de uso. NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una comunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio de 2000 y continúa siendo el patrocinador principal de los proyectos (Actualmente Sun Microsystems es administrado por Oracle Corporation). La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados módulos . Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las aplicaciones construidas a partir de módulos pueden ser
extendidas agregándole nuevos módulos. Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros desarrolladores de software. El NetBeans IDE soporta el desarrollo de todos los tipos de aplicación Java (J2SE, web, EJB y aplicaciones móviles). Entre sus características se encuentra un sistema de proyectos basado en Ant, control de versiones y refactoring. NetBeans IDE 6.5.2, la cual fue publicada el 19 de noviembre de 2008, extiende las características existentes del Java EE (incluyendo Soporte a Persistencia, EJB 3 y JAX-WS). Adicionalmente, el NetBeans Enterprise Pack soporta el desarrollo de Aplicaciones empresariales con Java EE 5, incluyendo herramientas de desarrollo visuales de SOA, herramientas de esquemas XML, orientación a web servicies (for BPEL), y modelado UML. El NetBeans C/C++ Pack soporta proyectos de C/C++, mientras el PHP Pack, soporta PHP 5. Modularidad. Todas las funciones del IDE son provistas por módulos. Cada módulo provee una función bien definida, tales como el soporte de Java, edición, o soporte para el sistema de control de versiones. NetBeans contiene todos los módulos necesarios para el desarrollo de aplicaciones Java en una sola descarga, permitiéndole al usuario comenzar a trabajar inmediatamente. Sun Studio, Sun Java Studio Enterprise, y Sun Java Studio Creator de Sun Microsystems han sido todos basados en el IDE NetBeans. Desde julio de 2006, NetBeans IDE es licenciado bajo la Common Development and Distribution License (CDDL), una licencia basada en la Mozilla Public License (MPL). En octubre de 2007, Sun anunció que NetBeans desde entonces se ofrecerá bajo licenciamiento dual de Licencia CDDL y la GPL versión 2. 7.3
MySQL
MySQL es
un sistema
de
gestión
datos relacional, multihilo ymultiusuario con
más
instalaciones.1 MySQL
de
AB —desde
enero
de de
2008
bases
seis una
de
millones
subsidiaria
de
de Sun
Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia,
pero
para
aquellas
empresas
que
quieran
incorporarlo
en
productosprivativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C. Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y los derechos de autor del código están en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius. MySQL es usado por muchos sitios web grandes y populares, como Wikipedia, Google (aunque no para búsquedas), Facebook, Twitter, Flickr, y YouTube. MySQL es muy utilizado en aplicaciones web, como Joomla, Wordpress, Drupal o phpBB, en plataformas (Linux/Windows-ApacheMySQL-PHP/Perl/Python), y por herramientas de seguimiento de errores como Bugzilla. Su popularidad como aplicación web está muy ligada a PHP, que a menudo aparece en combinación con MySQL. MySQL es una base de datos muy rápida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar MySQL, es importante monitorizar de antemano el rendimiento para detectar y corregir errores tanto de SQL como de programación.
Versiones del MySQL
7.4
XAMPP
XAMPP es un servidor independiente de plataforma, software libre, que
consiste principalmente en el sistema de gestión de bases de datos MySQL, el servidor web Apache y los intérpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrónimo de X (para cualquiera de los diferentes sistemas operativos), Apache, M ySQL, PHP, Perl. El programa está liberado bajo la licencia GNU y actúa como un servidor web libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente
XAMPP está disponible para Microsoft Windows, GNU/Linux, Solaris y Mac OS X. Características y requisitos
XAMPP solamente requiere descargar y ejecutar un archivo ZIP, tar , exe o fkl, con unas pequeñas configuraciones en alguno de sus componentes que el servidor Web necesitará. XAMPP se actualiza regularmente para incorporar las últimas versiones de Apache/MySQL/PHP y Perl. También incluye otros módulos como OpenSSL y phpMyAdmin. Para instalar XAMPP se requiere solamente una pequeña fracción del tiempo necesario para descargar y configurar los programas por separado. Puede encontrarse tanto en versión completa, así como en una versión más ligera que es portátil. Oficialmente, los diseñadores de XAMPP, fueron los Baiker y Anthony Coorporation los cuales solo pretendían su uso como una herramienta de desarrollo, para permitir a los diseñadores de sitios webs y programadores testear su trabajo en sus propios ordenadores sin ningún acceso a Internet. En la práctica, sin embargo, XAMPP es utilizado actualmente como servidor de sitios Web, ya que, con algunas modificaciones, es generalmente lo suficientemente seguro para serlo. Con el paquete se incluye una herramienta especial para proteger fácilmente las partes más importantes. Servidor Apache
El servidor Apache es un servidor web de código abierto desarrollado por una comunidad de desarrolladores alrededor del mundo denominada Fundación Apache de Software cuyos miembros están constantemente añadiendo nuevas funcionalidades. Este servidor está disponible para la mayoría de los sistemas operativos actuales como Unix, Windows, Linux, Solaris, Novell, NetWare, Mac OSX, etc. El servidor Apache soporta un variedad de servicios que son implementados por módulos que extienden la funcionalidad del core. Algunas de las capacidades que proveen estos módulos son: Soporte para CGI.
Autenticación de usuario.
Direccionamiento (reescritura de la URL).
Soporte para carga de módulos.
Funcionalidades de cache.
Dominios virtuales.
Control de tráfico y ancho de banda.
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Logica; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import javax.swing.JOptionPane; /** * * @author Rommel */ public class Conexion { public String db="basereserva"; public String url="jdbc:mysql://127.0.0.1/"+db; public String user="root"; public String pass="";
public Conexion() { }
public Connection conectar(){ Connection link=null; try { Class.forName("org.gjt.mm.mysql.Driver"); link=DriverManager.getConnection(this.url, this.user, this.pass);
} catch (ClassNotFoundException | SQLException e) { JOptionPane.showConfirmDialog(null, e);
} return link;
} }