ALUMNOS: Antonio Ricardo Ocampo Mora Giovanni Prez Bernal Leonardo Hernndez Oaxaca Edwi n Morgado Quijada
2
INDICE Conteni do Objetivos Generales ................................................................................................ 3 Objetivos Especficos .............................................................................................. 3 Marco Terico ......................................................................................................... 4 J ava ..................................................................................................................... 4 WampServer ........................................................................................................ 4 NetBeans ............................................................................................................. 4 J DBC (J ava Database Connectivity) .................................................................... 5 Nombre del Sistema ................................................................................................ 5 Beneficios ................................................................................................................ 5 Requerimientos Funcionales aplicaciones de escritorio .......................................... 5 Requerimientos no funcionales ............................................................................... 6 Requerimientos Funcionales aplicacin web ........................................................... 6 Requerimientos no funcionales ............................................................................... 6 Contextualizacin del sistema ................................................................................. 6 Casos de uso .......................................................................................................... 7 Detalle de caso de uso Hoteles ........................................................................... 7 Detalle de caso de uso Aerolneas ...................................................................... 8 Detalle de caso de uso Registro de Descuento ................................................. 10 Detalle de caso de uso Cancelacin .................................................................. 11 Detalle de Caso de uso Alta Cliente. ................................................................. 11 Base de Datos ....................................................................................................... 13 Consultas ........................................................................................................... 13 Subconsultas ..................................................................................................... 15 Trigger ............................................................................................................... 19 procedimientos con disparadores ...................................................................... 21 Indices ............................................................................................................... 25
3
Introduccin Viajes Emporio, es una empresa ubicada en la Ciudad de Mxico, dedicada a la venta y reservacin de vuelos, hoteles y transporte con el mejor precio garantizado. La empresa se constituye a partir de la idea de Roberto Snchez de crear una agencia de viajes, un mercado que en los ltimos aos ha comenzado a tomar presencia en Mxico. La empresa Viajes Emporio busca seguir creciendo a nivel nacional por lo que manejar una misma informacin en diferentes sucursales es tedioso y complicado utilizar diferentes sistemas para cada sucursal.
Obj eti vos General es Desarrollar un sistema de gestin de informacin para un mayor rendimiento de cada una de las sucursales de la agencia de viajes. En un plazo de 7 semanas
Obj eti vos Especficos -Analizar los requerimientos establecidos por el cliente y ofrecer las mejores propuestas que satisfagan en su totalidad las funciones y procesos de la agencia. -Proporcionar a los usuarios diferentes maneras de poder adquirir los servicios de la agencia. -Que el usuario al acezar a la pgina web se sienta en tal confianza como si estuviera tratando con cualquiera de los expertos agentes de viaje que dispone la sucursal. -Ofrecer al administrador una interfaz sencilla pero a la vez completa para el manejo de su informacin. -Mantener la integridad total de la informacin asi como la seguridad de la misma, desarrollando un cdigo estable que no contenga errores y este asegurado con validaciones en donde sea requerido o necesario. 4
Marco Terico Para el desarrollo de nuestro programa creamos una aplicacin de escritorio, creamos una base de datos y una pagina web esto fue posible utilizando los siguientes programas y lenguajes: Java Es un lenguaje de programacin y la primera plataforma informtica creada por Sun Microsystems en 1995. Es la tecnologa subyacente que permite el uso de programas punteros, como herramientas, juegos y aplicaciones de negocios, java se ejecuta en ms de 850 millones de ordenadores personales en todo el mundo. WampServer WampServer es la nica solucin que te permitir tener tu propio servidor de produccin. Una vez WampServer est instalado, usted tiene la posibilidad de aadir el mayor nmero de Apache, MySQL y PHP como las emisiones que desee. WampServer tiene funcionalidades que lo hacen muy completo y fcil de usar. Con un click izquierdo sobre el icono de WampServer, sers capaz de: Gestionar sus servicios de Apache y MySQL, Cambiar de lnea / fuera de lnea (dar acceso a todos o slo local) Instalar y cambiar de Apache, MySQL y PHP emisiones Gestin de la configuracin de sus servidores Acceder a sus registros Acceder a sus archivos de configuracin Crear alias Con un clic derecho: WampServer cambiar el idioma del men Acceder a la pgina principal NetBeans Es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programacin J ava. Existe adems un nmero importante de mdulos para extenderlo. NetBeans IDE es un producto libre y gratuito sin restricciones de uso. NetBeans es un proyecto de cdigo 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 cdigo abierto NetBeans en junio de 2000 y contina siendo el patrocinador principal de los proyectos. 5
La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados mdulos. Un mdulo es un archivo J ava que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como mdulo. Las aplicaciones construidas a partir de mdulos pueden ser extendidas agregndole nuevos mdulos. Debido a que los mdulos pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fcilmente por otros desarrolladores de software. JDBC (Java Database Connecti vity) Es un API (conjunto de clases y mtodos) que permite realizar operaciones a una base de datos relacional, desde el lenguaje de programacin J ava. Se trabaja con los paquetes java.sql y javax.sql Paquete java.sql J DBC ofrece el paquete java.sql, en el que existen clases muy tiles para trabajar con bases de datos. Nombre del Si stema SIAgVi *a cambiar Benefi ci os Un solo sistema para diferentes sucursales Soporte tcnico mnimo Requerimi entos Funci onal es aplicaciones de escritori o Altas, bajas cambios, modificaciones de aerolneas Altas, bajas cambios, modificaciones de hoteles Altas, bajas cambios, modificaciones de Consultas de paquetes Altas, bajas cambios, modificaciones de descuentos Registro de ventas Registro de reservaciones 6
Requerimi entos no funcionales Un mejor diseo Implementacin de pantallas por cada proceso Multiplataforma Requerimi entos Funci onal es aplicacin web Registro de clientes Consulta de vuelos Consulta de hoteles Consulta de paquetes Registro de reservaciones Registro de venta de paquetes Requerimi entos no funcionales Misma funcionalidad que ir a la sucursal Diseo claro Contextual izacin del si stema Las funciones que desempea la agencia se refieren a la gestin y mediacin de la reservacin, distribucin y venta de productos tursticos Informar claramente al viajero sobre las caractersticas de los destinos con que cuenta, para que pueda seleccionar del viaje mas adecuado de acuerdo a sus necesidades. Disear, organizar, vender y operar viajes tursticos combinando distintos servicios a un precio global establecido.
7
Casos de uso Detalle de caso de uso Hoteles Cdigo: AV-001.1 Nombre: Registro de Hoteles Actores: Usuario Administrador Descripcin: El usuario, por medio de un registro de entrada, ingresa las caractersticas especificas de cada hotel que forme parte de la agencia de viajes, las cuales consta de nombre, direccin, numero de pisos y habitaciones, telfono y los datos generales del encargado del hotel, procurando solo un encargado por hotel. El nmero de identificacin de cada hotel registrado se asignara de manera automtica dentro de la base de datos. Los datos que se manipulan dentro del formulario podr agregarse, eliminarse, consultarse y modificarse, donde dicha informacin estar almacenada en la base de datos. Precondicin: Que el usuario actual tenga los permisos de jerarqua mnimos requeridos para poder manipular las altas, bajas y/o modificacin de los registros de los hoteles disponibles y almacenados. Flujo Principal: Se registran los datos generales de cada hotel. Por cada hotel que se registra se almacena: Se registra el nombre del hotel. Se registra el nmero de estrellas asignado al hotel. Se registra la direccin completa del hotel. Se registra el nmero de pisos con los que cuenta el hotel. Se registra la cantidad de habitaciones de alquiler del hotel. Se registra el telfono general del hotel. Se registran los datos generales del encargado del hotel en cuestin. Por cada encargado por hotel que se registra se almacena: 8
Se registra el nombre completo del encargado. Se registra el nmero mvil del encargado. Se registra un nmero telefnico alternativo del encargado. Se registra el nmero de fax del encargado (en caso de contar con fax). Excepciones: Que los valores numricos solicitados sean asignados con letras o caracteres especiales. Postcondicin: Se genera y registra un nuevo nmero de registro de hotel en la base de datos. Comentarios: Un solo registro de hotel podr contener un solo encargado de dicho hotel. No podr haber nmeros telefnicos que se repitan en cada registro, tomando en cuenta que los nmeros telefnicos son privados y exclusivos para cada hotel en distintas ubicaciones. Actualmente nicamente se estn registrando hoteles afiliados a la agencia de viajes.
Detalle de caso de uso Aerolneas Cdigo: AVD-1 Nombre: Registro de las Aerolneas Actores: Usuario Administrador Descripcin: El usuario, por medio de un registro de entrada, ingresa las caractersticas especficas de cada Aerolnea que forme parte de la agencia de viajes, las cuales consta de nombre, direccin, telfono, telfono, alternativo y los datos generales del encargado de la aerolnea.
El nmero de identificacin de cada aerolnea registrada se asignara de manera automtica dentro de la base de datos.
9
Los datos que se manejan dentro del formulario podrn agregarse, eliminarse, consultarse y modificarse.
Y donde esta informacin estar siendo almacenada en la base de datos. Precondicin: El usuario actual tendr que tener los permisos jerrquicos requeridos para poder manejar las altas, bajas y/o modificacin de los registros de los aerolneas que estn disponibles y almacenadas. Flujo Principal: Se registran los datos generales de cada aerolinea. Por cada Aerolnea que se registre se almacena: Se registra el nombre de la aerolnea. Se registra la direccin completa la aerolnea. Se registra la cantidad de aviones de vuelo de las aerolneas. Se registra el telfono general la aerolnea. Se registra el telfono alternativo de la aerolnea. Se registran los datos generales del encargado de la aerolnea. Por cada encargado por aerolnea que se registra se almacena: Se registra el nombre completo del encargado. Se registra el nmero celular del encargado. Se registra un nmero telefnico alternativo del encargado. Se registra el nmero de fax del encargado (en caso de contar con fax). Excepciones: Que los valores numricos sean asignados con letras o caracteres especiales. Pos condicin: Se genera y registra un nuevo nmero de registro de la aerolnea en la base de datos. Comentarios: Un registro de aerolnea podr contener un solo encargado de dicho aerolnea. No podr haber nmeros telefnicos que se repitan en cada registro. 10
Actualmente nicamente se registran aerolneas afiliados a la agencia de viajes.
Detalle de caso de uso Registro de Descuento Nombre: Registro de Descuento Actores Administrador Descripcin El administrador podr ingresar el nombre de vuelo, paquete u hotel y a su vez retornara el importe normal podr ingresar el descuento y con que nombre se guardara, se generara el nuevo precio con el descuento al fin se ingresa un id para poder guardar y mediante un id se recupera la informacin del descuento que se podr modificar o eliminar. Precondicin Tener registrados vuelos, paquetes u hoteles Flujo principal Se ingresa el nombre del objeto a aplicar descuento Se identifica precio normal Se registra descuento Se registra nombre a guardar Se genera precio con descuento Se registra id Se ingresa id Se edita o elimina id Se guarda cambio en caso de realizar
Administrador Registro de descuento Bajas de descuento Cambios de descuento 11
Detalle de caso de uso Cancelacin Nombre: Cancelaciones Actores Administrador Descripcin El administrador podr cancelar una reservacin y se registra el importe por cancelacin Flujo principal Se ingresan los datos del cliente Se obtienen los datos del paquete Se genera un cargo por cancelacin Se procede a cancelar Se registra el importe de cancelacin Consideraciones previas Solo se puede realizar una cancelacin con una semana de anticipacin (5 das) y por esta accin se genera una comisin del 10% del costo total de la venta y/o reservacin, esto por paquete. Para cancelaciones de reservaciones de hotel se puede realizar con un da de anticipacin aplicando un cargo del 10% sobre el monto de la reservacin.
Detalle de Caso de uso Alta Cl iente. Cdigo: CU-AC01 Nombre: Alta cliente Actores: usuario Descripcin: Registrar datos de los clientes nuevos que van a ser dados de alta en la agencia de viajes Precondicin: El cliente queda registrado en la base de datos del sistema. Flujo Principal: 1. El caso de uso comienza cuando la recepcionista selecciona la opcin Dar de Alta clientes 2. El sistema muestra una ficha de alta de clientes, en la que se cargan los Cancelaciones Administrador 12
datos del cliente nuevo (ID, nombre, apellido materno, apellido paterno, ciudad, municipio, calle, numero, CP, tipo, telfono, e-mail). 3. La encargada ingresa los datos solicitados. 4. La encargada elige la opcin Guardar datos. 5. El sistema verifica que estn ingresados todos los datos obligatorios ( nombres, apellidos , direccin, localidad, telfono). 6. El sistema verifica que el cliente no se encuentre registrado 7. El sistema guarda los datos del ofertante. Flujos alternativos: 1. Cancelar Carga De Datos. Flujos de Excepcin: 1. Faltan Datos Obligatorios. 2. -Cliente registrado.
Pos condicin: - Datos de los clientes nuevos registrados. Comentarios:
13
Base de Datos Consultas 1.-selecciona el id de hotel que el nombre sea LUJ AN select id_hotel from hotel where nombre="LUJ AN"; create view consultas1 as select id_hotel from hotel where nombre="LUJ AN";
+----------+ | id_hotel | +----------+ | 37 | +----------+ 1 row in set (0.01 sec)
2.-selecciona el nombre de los empleados que sean hombres select nombre from empleado where sexo="M";
create view consultas2 as select nombre from empleado where sexo="M";
+---------+ | nombre | +---------+ | Antonio | | josue | | carlos | +---------+ 14
3 rows in set (0.02 sec)
3.-selecciona el id de sucursal que se encuentre encuentre en el estado de mexico select id_sucursal from sucursales where estado="estado de mexico";
create view consultas3 as select id_sucursal from sucursales where estado="estado de mexico";
+-------------+ | id_sucursal | +-------------+ | 7 | | 8 | +-------------+ 2 rows in set (0.01 sec)
4.-quiero conocer el nombre del empleado que tenga la maxima fecha de mysql>select nombre from empleado where fecha_nac=(select max(fecha_nac) from empleado); +--------+ | nombre | +--------+ | paola | +--------+ 1 row in set (0.00 sec)
15
create view consultas4 as select nombre from empleado where fecha_nac=(select max(fecha_nac) from empleado);
5.-Quiero conocer el nombre del estado cuando el nombre del estado inicie con T o el id sea igual a 10
mysql>select estado from destino where nombre=(select nombre from destino where municipio like"t%" or id_paquete=10); +---------+ | estado | +---------+ | Hidalgo | +---------+ 1 row in set (0.00 sec)
create view consultas5 as select estado from destino where nombre=(select nombre from destino where municipio like"t%" or id_paquete=10); Subconsultas
1.-selecciona el nombre del empleado que trabaja en la sucursal con nombre alex select nombre from empleado where id_sucursal=(select id_sucursal from sucursales where nombre="alex");
create view sub1 as select nombre from empleado where id_sucursal=(select id_sucursal from sucursales where nombre="alex");
16
+---------+ | nombre | +---------+ | Antonio | | josue | | paola | | carlos | +---------+ 4 rows in set (0.00 sec)
2.-selecciona el destino del vuelo que el id de boleto sea 50 select destino from vuelos where id_vuelo=(select id_vuelo from boletos where id_boleto="50");
create view sub2 as select destino from vuelos where id_vuelo=(select id_vuelo from boletos where id_boleto="50");
+-------------+ | destino | +-------------+ | las lourdes | +-------------+ 1 row in set (0.00 sec)
3.-selecciona el id de boleto que el numero de personas sea igual a 10 17
select id_boleto from boletos where id_reservacion=(select id_reservacion from reservacion where N_personas="10");
create view sub3 as select id_boleto from boletos where id_reservacion=(select id_reservacion from reservacion where N_personas="10");
+-----------+ | id_boleto | +-----------+ | 44 | +-----------+ 1 row in set (0.00 sec)
4.-selecciona el nombre y estado de destino donde id de hotel sea 37 select nombre, estado from destino where id_paquete=(select id_paquete from paquete where id_paquete=(select id_paquete from Hotel_paquete where id_hotel="37"));
create view sub4 as select nombre, estado from destino where id_paquete=(select id_paquete from paquete where id_paquete=(select id_paquete from Hotel_paquete where id_hotel="37")); +----------+---------+ | nombre | estado | +----------+---------+ | tenorios | Hidalgo | +----------+---------+ 1 row in set (0.00 sec) 18
5.-selecciona el nombre del cliente que compro boletos por valor de 600 pesos select nombre from cliente where id_cliente=(select id_cliente from boleto where precio="600"); create view sub5 as select nombre from cliente where id_cliente=(select id_cliente from boletos where precio="600");
+--------+ | nombre | +--------+ | MIGUEL | +--------+ 1 row in set (0.00 sec)
6.-Conocer el identificador y nombre del hotel que se encuentre mas 2 paquetes. select hotel.id_hotel,nombre from hotel inner join hotel_paquete on hotel.id_hotel=hotel_paquete.id_hotel where hotel_paquete.id_hotel >2; +----------+---------------+ | id_hotel | nombre | +----------+---------------+ | 3 | pikispikis | | 4 | tortugas | | 30 | LAS FLORES | | 31 | LAS FUENTES | | 33 | LOS ARBOLES | | 34 | LAS MANCIONES | 19
| 36 | TROMPETAS | | 37 | LUJ AN | +----------+---------------+ 8 rows in set (0.39 sec)
Create view sub6 as select hotel.id_hotel,nombre from hotel inner join hotel_paquete on hotel.id_hotel=hotel_paquete.id_hotel where hotel_paquete.id_hotel >2;
Quiero conocer el nombre del cliente que haya comprado el boletoo mas caro registrado en la base mysql>select nombre from cliente inner join boletos on boletos.id_cliente=cliente.id_cliente where precio=(select max(precio) from boletos); +--------+ | nombre | +--------+ | MIGUEL | +--------+ 1 row in set (0.00 sec)
Trigger
1.- create table cancelacion(id_cancelacion int auto_increment primary key, id_reser int, personas int, cliente int)engine=innodb;
delimiter // 20
create trigger cancel after delete on reservacion for each row insert into cancelacion values(old.id_reservacion,old.N_personas,old.id_cliente, old.id_descuento);
delete from reservacion where id_reservacion=20;
select *from cancelacion;
-------------Trigger----------------
2.- create table modificado(id_cliente int, nombre varchar(30), ap_pat varchar(30),ap_mat varchar(30))engine=innodb;
create trigger modificar after update on cliente for each row insert into modificado(id_cliente,nombre, ap_pat,ap_mat) values(old.id_cliente,old.nombre,old.ap_pat,old.ap_mat);
update cliente set nombre="angus" where id_cliente=60;
create trigger modificar_empleado after update on empleados for each row insert into modificar_empleado(id_empleado, nombre, ap_pat, ap_mat) values(old.id_empleado,old.nombre,old.ap_pat,old.ap_mat); 21
update empleados set nombre="algo" where id_empleado=1;
procedi mientos con disparadores 1.- resta lugares de hotel
create table habitacion_disponibles(id_hotel int , N_habitaciones int)engine=innodb;
create procedure habit(in hot int, hab int) begin declare exist int; set exist =(select N_hab from hotel where id_hotel =hot); set exist =exist - hab; update hotel set N_hab=exist where id_hotel=hot; end; //
create trigger disp_hab after insert on habitacion_disponibles for each row begin call habit (new.id_hotel,new.N_habitaciones); end //
insert into habitacion_disponibles values(2,2);
select *from hotel;
22
---------------------procedimientos con disparadores---------- 2.- calcula descuento de boletos;
create procedure bol_desc(in boleto int, precio int) begin set @prex =(precio /30)- precio; end; //
create trigger descuento before insert on boletos_descuento for each row begin call bol_desc(new.id_boleto,new.precio_con_descuento); set new.precio_con_descuento=@prex; end; //
insert into boletos_descuento values(40,300);
select *from boletos_descuento;
---------------------procedimientos con disparadores---------- 3.- resta lugares a aerolnea
create procedure plazas_disponibles(in vuelo int, destino varchar (30), salida date,llegada date, tiempo_salida time,tiempo_llegada time, compaia varchar(30),plazas int,aero int) begin declare lugares int; set lugares =(select N_plazas from aerolinea where id_aero=aero); set lugares =lugares - plazas; update aerolinea set N_plazas=lugares where id_aero=aero; end; //
create trigger lugares after insert on vuelos for each row begin call plazas_disponibles(new.id_vuelo,new.destino,new.fecha_salida, new.fecha_llegada,new.hora_salida,new.hora_llegada, new.campaa, new.N_asientos, new.id_aero); end; //
insert into vuelos values(500,"santa lopez", "2012-12-20","2013-1-20","12:00", "06:00","mexicana","20",1);
select *from aerolinea;
---------------------procedimientos con disparadores---------- 4.- suma lugares al cancelar
begin declare kus int; set kus=(select N_plazas from aerolinea where id_aero=aero); set kus =kus+asientos; update aerolinea set N_plazas=kus where id_aero=aero; end; //
create trigger sanco after delete on vuelos for each row begin call vuelcancel(old.id_vuelo, old.N_asientos, old.id_aero); insert into vuelo_cancelado(id_vuelo,N_asientos,id_aero) values(old.id_vuelo,old.N_asientos,old.id_aero); end; //
delete from vuelos where id_vuelo=400;
select *from aerolinea;
---------------------procedimientos con disparadores---------- 5.- agrega el nombre del empleado
create procedure nom(empleado int, socio int) begin set @as =(select nombre from empleados where id_empleado=empleado); 25
end; //
create trigger bas before insert on atiende for each row begin call nom(new.id_empleado,new.id_socio); set new.nombre_empleado=@as; end; // insert into atiende(id_empleado,id_socio) values(2,1);
Indices 1.-CORREOS mysql>create index correos on cliente (correo); Query OK, 10 rows affected (0.22 sec) Records: 10 Duplicates: 0 Warnings: 0