Construcción de MER con herramienta Día Ejercicio Numero 1
• • • • • •
• • • •
a. Enunciado: Se pretende automatizar la gestión de una biblioteca. Para ello se recoge la siguiente información: • Se dispone de un conjunto de usuarios con el número de carnet, nombre y dirección; Cada libro de la biblioteca tiene un código, título y número de páginas. • Se realizan préstamos de libros a los usuarios. Cada usuario puede tener prestados a la vez varios libros. • Cada libro pertenece a una determinada clase, identificada po r una clave. De la clase del libro depende el tiempo máximo que se puede prestar. • Se quiere llevar un control histórico de todos los préstamos que se van realizando, sabiendo además del libro y el usuario, las fechas de inicio y de devolución del préstam o. • Es importante poder consultar los libros de un determinado autor o de una determinada editorial. Sabiendo que un libro puede ser escrito por varios autores pero editado por una sola editorial. Asuma la información necesaria para construir el modelo entidad relación (MER). b. Identificar Entidades: Usuario Libro Autor Clase Editorial Prestamos c. Definir Relaciones entre entid ades: ades: Las relaciones de entidades, serán resaltadas en color Rojo Autor escribe escribe Libro Libro Libro tiene tiene Editoriales Editoriales Libro pertenece Clase Usuario Préstamo Préstamo libro libro
d. Identificar Identificar Atribu tos:
•
➢ ➢ •
➢ ➢ ➢ •
➢ ➢ •
➢ ➢ ➢
Auto Au tor: r: Nombre Código Libro: Páginas Título Código Editoriales: Editorial Año Clase: Clave TiempoMaximo Localización
•
➢ ➢ ➢ ➢ •
➢ ➢
Usuario: NumeroCarnet Nombre Dirección NumeroLibros Prestamos: FechaPrestamo FechaDevolu
E. Depurar MER
Ejercicio número 2 a. Enunciado: 2. Se pretende automatizar la gestión de una Video tienda teniendo en cuenta la siguiente información: • Se dispone de un conjunto conjun to de clientes con su código, nombre, dirección y correo electrónico; Cada video de la videoTienda tiene un código, título, idioma y duración. • Los clientes pueden alquilar varios videos y es importante saber la fecha de alquiler, la fecha de devolución y el valor del alquiler alq uiler que depende del formato del video (VHS, VCD, DVD, BlueRay). Los clientes podrán consultar los videos que hay de un determinado formato, o género (comedia, terror etc), así como por determinado actor.
•
➢ ➢ ➢ ➢ •
➢ ➢
Usuario: NumeroCarnet Nombre Dirección NumeroLibros Prestamos: FechaPrestamo FechaDevolu
E. Depurar MER
Ejercicio número 2 a. Enunciado: 2. Se pretende automatizar la gestión de una Video tienda teniendo en cuenta la siguiente información: • Se dispone de un conjunto conjun to de clientes con su código, nombre, dirección y correo electrónico; Cada video de la videoTienda tiene un código, título, idioma y duración. • Los clientes pueden alquilar varios videos y es importante saber la fecha de alquiler, la fecha de devolución y el valor del alquiler alq uiler que depende del formato del video (VHS, VCD, DVD, BlueRay). Los clientes podrán consultar los videos que hay de un determinado formato, o género (comedia, terror etc), así como por determinado actor.
• Cada Video es dirigido por un director del cual además de interesarnos conocer los videos que ha dirigido, nos interesa saber cuál es su nacionalidad. • Cada vez que un cliente devuelve un video es importante registrar además de la fecha de devolución, los días de retraso, este histórico es importante para determinar las sanciones o premios para cada cliente, pues existe un listado de premios y de sanciones que es importante conocer que clientes los han recibido, aunque no todos los clientes deben recibir premios o sanciones. Asuma la información restante que sea necesaria para construir el MER.
• • • • • • •
• • • • • •
b. Identificar Entidades: Cliente Video GeneroPelicula FormatoPelicula Directores Actor Listado c. Definir Relaciones entre entid ades: ades: Las relaciones de entidades, serán resaltadas en color Rojo Director Dirige Video Video Tiene Tiene Actor Actor Video Tiene Género Video Tiene Formato Video Hace Video Hace Alquiler Alquiler Alquiler Presta Presta Cliente Cliente
d. Identificar Identificar Atribu tos:
•
➢ ➢ ➢ •
➢ ➢ ➢ ➢ •
➢ ➢
•
➢
Director: Nombre Nacionalidad Código Video: Código Título Idioma Duración Genero: NombreGenero NombreActor Formato: NombreFormato •
➢ ➢ ➢ ➢
Usuario: Código Nombre Dirección E-mail
➢ ➢
Prestamos: FDevol DiasRetraz
➢ ➢ ➢ ➢
Actor: Código Nombre Dirección E-mail
•
•
Listado:
•
➢ ➢
Premios Sanciones
E. Depurar MER
Ejercicio número 3 a. Enunciado: El SENA regional Caldas desea construir el diagrama entidad relación de una base de datos que tiene como objetivo fundamental llevar un control de los aprendices, instructores, cursos y formación que imparte cada centro perteneciente a la regional. La información requerida para la base de datos es la siguiente:
• De los aprendices interesa conocer su número de documento de identidad, nombre, fecha de nacimiento, dirección, teléfono y estrato. Además es importante conocer para cada aprendiz el curso en el que se encuentra matriculado, así como la fecha de la matrícula. • Los cursos pertenecen a un determinado centro de formación, del cual interesa conocer el código y nombre, también sería importante conocer los instructores que pertenecen a un determinado centro y a que grupos imparte formación cada instructor. • Teniendo en cuenta que algunos de los aprendices del SENA están patrocinados, es importante también conocer la información de la empresa que los patrocina. La información requerida de la empresa es: NIT, nombre, dirección, teléfono. Un aprendiz solo puede estar patrocinado por una empresa, pero una empresa puede patrocinar a varios aprendices, siendo importante para la base de datos todas las empresas de la región así estas no estén patrocinando a ningún aprendiz. También es importante conocer la fecha de inicio y fin del patrocinio. Asuma la información restante necesaria para construir el MER
• • • • • • •
• • • • • •
•
➢ ➢ ➢ ➢ ➢ ➢ •
➢ ➢ ➢
•
➢ ➢
b. Identificar Entidades: Aprendiz Curso Matriculas CentroFormación Instructor EmpresaPatrocinio EmpresasZona c. Definir Relaciones entre entid ades: Las relaciones de entidades, serán resaltadas en color Rojo CentroFormación Matricula Aprendíz CentroFormacion Tiene Cursos Curso Tiene Matricula Aprendiz Estudia Curso Curso Imparte Instructor Aprendíz Patrocinado Empresa d. Identificar Atribu tos: Aprendiz: IdAprendiz Nombre FechaNacimiento Dirección Teléfono Estrato Curso: NombreCurso IdCurso CodigoCentro CentroFormación: Nombre Código •
➢
Instructor: Nombre
➢ ➢ ➢ ➢
Cédula Dirección E-mail Código
➢ ➢ ➢ ➢
EmpresasZona: Nit Nombre Dirección Teléfono
➢ ➢ ➢ ➢ ➢ ➢
EmpresaPatrocinio: Nit Nombre Dirección Teléfono FechaInicio FechaFin
•
•
E. Depurar MER
Ejercicio número 4 a. Enunciado: Se conocen las siguientes reglas de negocio de un banco: • El banco tiene cuentas corrientes, cuentas de ahorro y clientes. Un cliente tiene al menos una cuenta, aunque puede tener varias cuentas de cualquiera de los dos tipos. Cada cuenta pertenece a un único cliente. • Los clientes tiene un nombre, una dirección y se identifican por su código. Los clientes del banco son personas u organizaciones. Las personas tienen fecha de nacimiento y género; en cambio las organizaciones tienen un tipo de organización (empresa, institución pública, etc.), un representante y un número de empleados.
• Todas las cuentas tienen un número de cuenta, sald o actual y un saldo promedio, pero es importante poder determinar si una cuenta es de ahorro o corriente. • Cada sucursal se identifica por su número. Además tiene una dirección, un teléfono y una ciudad. • Los empleados del banco se identifican por su código. También interesa conocer su nombre, fechanacimiento, sexo y la sucursal en la que trabajan (aunque hay empleados que no trabajan en ninguna sucursal). Asuma la información necesaria para construir el MER
• • • • • • •
• • • •
b. Identificar Entidades: Banco Cliente Organización Persona Cuenta Empleado Sucursal c. Definir Relaciones entre entid ades: Las relaciones de entidades, serán resaltadas en color Rojo Banco Tiene Sucursal Sucursal Tiene Empleado Sucursal Tiene Cliente Cliente Posee cuenta d. Identificar Atribu tos:
•
➢ ➢ ➢ ➢ •
➢
•
➢ ➢ ➢ ➢ ➢
Banco: Dirección Teléfono Ciudad IdBanco Sucursal: #Sucursal Empleado: Nombre Código FechaNacimiento Género #Sucursal •
➢ ➢ ➢ ➢ ➢ ➢ ➢
Cliente: Nombre Cédula Dirección E-mail Código FechaNacimiento Género
•
➢ ➢ ➢
Organización: TipoOrganización Representante #Empleados •
➢ ➢ ➢ ➢
Cuenta: #Cuenta SaldoActual SaldoPromedio TipoCTA
E. Depurar MER
Diseño de la Arquitectura Logica del Sistema Diagramas a desarrollar Según los enunciados construya: 1. Diagrama de Clases 2. Diagrama de Paquetes 3. Diagrama de Componentes Enunciado 1 El propietario del centro médico “Humana Vivir” requiere un sistema que permita administrar los datos básicos de las citas, consultas, pacientes, diagnósticos e historias clínicas del
centro médico. Un paciente debe solicitar su cita vía web, donde el sistema asigna el médico que lo va atender y le agenda la consulta; cuando el paciente asiste a la consulta se le genera la historia clínica y el diagnostico junto con su tratamiento. Es importante destacar que este sistema puede también utilizarse desde dispositivos móviles. Diagrama de clases
Diagrama de Paquetes
Diagrama de Componentes
Enunciado 2 En un centro de formación educativo necesitan un sistema web que permita registrar los proyectos desarrollados por los docentes, cada proyecto tiene un formato estándar que almacena la justificación, objetivos, alcance y productos a obtener; así como también las líneas de interés de cada proyecto. El objetivo principal es generar informes que los directivos puedan acceder en cualquier momento desde sus dispositivos móviles para generar estadísticas ya que deben reportar a las centrales los avances y totalidades de proyectos que cada docente está generando dentro de sus aulas de trabajo.
Diagrama de Clases
Diagrama de paquetes
Diagrama de Componentes
Enunciado 3 Una organización desea incorporar en su política de contratación criterios de calidad del personal basados en la medición de sus habilidades o competencias. La empresa desea medir las competencias intelectuales de todos sus empleados y además desea conocer las competencias emocionales de sus directivos (por ejemplo, la capacidad de trabajo en grupo, la motivación, capacidad de liderazgo, etc), en el área de gestión humana se cuenta con un paquete de
pruebas para medir estas competencias. Cada competencia está asociada a un conjunto de test que permiten medirla. Un test puede medir una única competencia. Cada test se identifica por un nombre y debe tener asociado un conjunto de preguntas, una plantilla para su corrección así como el modo en que se deberán interpretar los resultados. Se requiere diseñar una aplicación que permita gestionar y medir las competencias emocionales e intelectuales de los empleados, así como también configurar los test junto con sus preguntas y respuestas. Al final generar un informe con las medidas de las competencias emocionales e intelectuales de los empleados. Recuerde que las competencias se miden o califican con un numero llamado umbral.
Diagrama de clases
Diagrama de paquetes
Diagrama de Componentes
LABORATORIO DISEÑO DE INTERFACES •
Registro de un libro en un biblioteca
•
Registro de una persona en un hotel
•
Compra de un tiquete de un vuelo nacional en un aeropuerto
•
Sistema de votación con dos candidatos y voto en blanco
Modelo Relacional de la Base de Datos 1. Tienda
2. Empresa de transporte de encomiendas
3. Compañía de seguros
4. Biblioteca
ARQUITECTURA FÍSICA DEL SISTEMA 1. En una empresa se cuenta con un sistema de información con una arquitectura de 3 capas, que manipula la seguridad de ingreso y salida de los empleados de la empresa “Tecniques &+D” a través de dispositivos de RFID; di cho sistema maneja el patrón vista controlador, La vista corresponde a una aplicación web en Asp Net de Visual Studio .Net y el cliente accede desde un browser de internet; su lógica de datos está desarrollada con librerías de clase denominada Logica.dll y la persistencia (base de datos) se encuentra con un servicio web xml llamado Serviciobd.asmx.
El diagrama anterior representa el funcionamiento de un sistema de información que manipula la seguridad de ingreso y salida de los empleados de una empresa, los nodos utilizados son el servidor de bases de datos, el servidor de aplicaciones, el cliente, los empleados y el dispositivo RIFD. El nodo de los empleados posee el componente tarjeta, este componente permite que el empleado se registre a través del dispositivo RFID, el nodo del dispositivo RFID tiene dos componentes: el reader que lee la señal y el transponder que comunica la señal; el nodo del servidor de aplicaciones contiene el componente Asp Net que es una aplicación empleada para ejecutar la función requerida por el sistema de información; el nodo del servidor de bases de datos tiene un componente de bases de datos en Oracle que administra la información de la bases de datos y el cliente puede acceder por medio de internet al servidor de aplicaciones. 2. El propietario del centro médico “Humana Vivir” cuenta con un sistema que permite administrar los datos básicos de las citas, consultas, pacientes, diagnósticos e historias clínicas del centro médico. Un paciente debe solicitar su cita vía web, donde el sistema asigna el médico que lo va atender y le agenda la consulta; para poder asistirá a la consulta debe identificarse por medio de lector de huella digital, cuando el paciente asiste a la consulta se le genera la historia clínica y el diagnostico junto con su tratamiento. Es importante destacar que este sistema permite gestionar las citas a través de dispositivos móviles. El sistema está configurado sobre una arquitectura de 3 capas con su lógica y base de datos en librerías tipo dll y su aplicación desarrollada en Html5.
El diagrama anterior representa el funcionamiento de un sistema de información que administra los datos básicos de las citas, consultas, pacientes, diagnósticos e historias clínicas de un centro médico, los nodos utilizados son el servidor de bases de datos, el servidor de aplicaciones, el paciente, dispositivo móvil y dispositivo de lector de huellas. El paciente accede a internet y solicita una cita, este puede pedirla a través de un dispositivo móvil que contiene principalmente dos componentes que son la pantalla y el teclado, cuando el paciente va a tener la cita se identifica por medio de un lector de huellas que lee la huella y comunica la señal; el nodo del servidor de aplicaciones se compone por un software hecho en Apache Tomcat y el nodo del servidor de bases de datos contiene un componente en Oracle. 3. En una tienda de venta y compra de productos de canasta familiar se cuenta con un sistema de información que maneja estaciones de trabajo que permiten capturar las compras de un cliente, este sistema está diseñado para generar las facturas de compra de un cliente y tiene su base de datos almacenada en un servidor, el sistema tiene una arquitectura de 3 capas.
El diagrama anterior representa el funcionamiento de un sistema de información que maneja estaciones de trabajo que permiten capturar las compras de un cliente de una tienda, los nodos utilizados son el servidor de bases de datos, el servidor de aplicaciones, la estación de trabajo y el empleado. El empleado accede a la red para registrar la compra hecha por el cliente a través de la estación de trabajo, la estación tiene varios componentes que son el monitor, el teclado, la impresora que imprime la factura y el lector de código de barras que lee el código de cada artículo. El servidor de aplicaciones se compone por una aplicación realizada en Apache Tomcat y en el nodo de servidor de bases de datos contiene un componente en Oracle.
Construcción de modelos de bases de datos RELACIONES ENTRE LAS TABLAS
CONSULTAS • Muestre los salarios de los profesores ordenados por categoría. SELECT `sal_prof` FROM `profesor` order by `sal_prof` • Muestre los cursos cuyo valor sea mayor a $500.000. SELECT * FROM `curso` WHERE `valor_cur`>'500000' • Cuente el número de estudiantes cuya edad sea mayor a 22. SELECT count(`doc_est`) FROM `estudiante` WHERE `edad_est`>'22' • Muestre el nombre y la edad del estudiante más joven.
SELECT `nom_est`, min(`edad_est`) FROM `estudiante` • Calcule el valor promedio de los cursos cuyas horas sean mayores a 40. SELECT AVG(`valor_cur`) FROM curso WHERE `horas_cur`>'40' • Obtener el sueldo promedio de los profesores de la categoría 1. SELECT AVG(`sal_prof`) FROM `profesor` WHERE `cate_prof`='1' • Muestre todos los campos de la tabla curso en orden ascendente según el valor. Select * from curso order by `valor_cur` asc • Muestre el nombre del profesor con menor sueldo. SELECT `nom_prof`, min(`sal_prof`) FROM `profesor` • Visualizar todos los estudiantes (código y nombre) que iniciaron cursos el 01/02/2011, del curso debe mostrarse el nombre, las horas y el valor. select estudiante.`doc_est`, estudiante.`nom_est`, estudiantexcurso.`fec_ini_estcur `, curso.`nom_curs`, curso.horas_cur , curso.valor_cur From estudiante,estudiantex curso,cursowhere estudiantexcurso.`fec_ini_estcur`='2011-02-01' • Visualice los profesores cuyo sueldo este entre $500.000 y $700.000. SELECT * FROM `profesor` WHERE `sal_prof`>'500000' and `sal_prof`<'700000' • Visualizar el nombre, apellido y dirección de todos aquellos clientes que hayan realizado un pedido el día 25 /02/2012. SELECT cliente.nom_cli, cliente.ape_cli, cliente.dir_cli FROM cliente, pedido WHE RE pedido.fec_ped='2012-02-25' • Listar todos los pedidos realizados incluyendo el nombre del articulo. SELECT pedido.id_ped, articulo.tit_art, pedido.id_cli_ped, pedido.fec_ped, pedido. val_ped FROM pedido, articulo WHere 1 • Visualizar los clientes que cumplen años en marzo. SELECT * FROM `cliente` WHERE `mes_cum_cli`='Marzo' • Visualizar los datos del pedido 1, incluyendo el nombre del cliente, la dirección del mismo, el nombre y el valor de los artículos que tiene dicho pedido. SELECT cliente.nom_cli, cliente.dir_cli, articulo.tit_art,articulo.prec_art FROM clien te, articulo, pedido WHEREpedido.id_ped='1' • Visualizar el nombre del cliente, la fecha y el valor del pedido más costoso. SELECT MAX(pedido.val_ped), cliente.nom_cli,pedido.fec_ped, pedido.val_ped F ROM cliente, pedido WHERE1 • Mostrar cuantos artículos se tienen de cada editorial. SELECT COUNT(`edi_art`) FROM `articulo` WHERE 1
• Mostrar los pedidos con los respectivos artículos (código, nombre, valor y cantidad pedida). SELECT articulo.id_art, articulo.tit_art,articulo.prec_art, articuloxpedido.can_art_art ped FROMarticulo, articuloxpedido WHERE 1 • Visualizar todos los clientes organizados por apellido. SELECT * FROM `cliente` ORDER BY `ape_cli` • Visualizar todos los artículos organizados por autor. SELECT * FROM `articulo` ORDER by `aut_art` • Visualizar los pedidos que se han realizado para el articulo con id 2, el listado debe mostrar el nombre y dirección del cliente, el respectivo número de pedido y la cantidad solicitada. SELECT cliente.nom_cli, cliente.dir_cli, pedido.id_ped, articuloxpedido.can_art_art ped FROM cliente, pedido, articulo, articuloxpedido WHERE articulo.id_art='2' • Visualizar los datos de las empresas fundadas entre el año 1991 y 1998. SELECT * FROM `compañia` WHERE `comañofun`>='1991' and `comañofun`<='1 998' • Listar los todos datos de los automotores cuya póliza expira en octubre de 2013, este reporte debe visualizar la placa, el modelo, la marca, número de pasajeros, cilindraje nombre de automotor, el valor de la póliza y el valor asegurado. SELECT automotores.autoplaca, automotores.automodelo, automotores.automarc a, automotores.autonumpasajeros , automotores.autocilindraje , automotores.autoti po,aseguramientos.asecosto, aseguramientos.asevalorasegurado FROM asegura mientos, automotores WHERE `asefechaexpiracion` >'2013-0831' and `asefechaexpiracion` <'2013-10-01' • Visualizar los datos de los incidentes ocurridos el 30 de septiembre de 2012, con su respectivo número de póliza, fecha de inicio de la póliza, valor asegurado y valor de la póliza. SELECT aseguramientos .asecodigo,aseguramientos .asefechainicio,aseguramient os.asevalorasegurado , aseguramientos.asecostoFROM incidentes, aseguramiento s WHERE `incifecha`='2012-09-30' • Visualizar los datos de los incidentes que han tenido un(1) herido, este reporte debe visualizar la placa del automotor, con los respectivos datos de la póliza como son fecha de inicio, valor, estado y valor asegurado. SELECT automotores.autoplaca,aseguramientos.asefechainicio, aseguramientos. asecosto,aseguramientos .aseestado,aseguramientos.asevalorasegurado FROM in cidentes,automotores, aseguramientos WHERE `incicantheridos`='1' • Visualizar todos los datos de la póliza más costosa. SELECT * FROM `aseguramientos` where 1 ORDER BY `asevalorasegurado` des c
• Visualizar los incidentes con el mínimo número de autos involucrados, de este incidente visualizar el estado de la póliza y el valor asegurado. SELECT MIN(`incicanautosinvolucrados`),aseguramientos .aseestado,aseguramie ntos.asevalorasegurado FROM aseguramientos,incidentes WHERE 1 • Visualizar los incidentes del vehículo con placas " FLL420", este reporte debe visualizar la fecha, el lugar, la cantidad de heridos del incidente, la fecha de inicio la de expiración de la póliza y el valor asegurado. SELECT incidentes.incifecha, incidentes.incilugar , incidentes.incicantheridos , aseg uramientos.asefechaexpiracion , aseguramientos.asevalorasegurado FROM asegu ramientos, incidentesWHERE incidentes.inciplaca='FLL420' • Visualizar los datos de la empresa con nit 899999999 -5. SELECT * FROM `compañia` WHERE `comnit`='899999999-5' • Visualizar los datos de la póliza cuyo valor asegurado es el más costoso, este reporte además de visualizar todos los datos de la póliza, debe presentar todos los datos del vehículo que tiene dicha póliza. SELECT MAX(aseguramientos .asevalorasegurado ), aseguramientos.asecodigo, a seguramientos.asefechainicio, aseguramientos.asefechaexpiracion, aseguramient os.asevalorasegurado ,aseguramientos.aseestado, aseguramientos.asecosto, auto motores.autoplaca, automotores.automarca, automotores.autotipo, automotores.au tomodelo,automotores.autonumpasajeros ,automotores.autocilindraje , automotores .autonumchasis FROM aseguramientos, automotores WHERE 1 • Visualizar los datos de las pólizas de los automotores tipo 1, este reporte debe incluir placa, marca, modelo, cilindraje del vehículo junto con la fecha de inicio, de finalización y estado de la póliza. SELECT automotores.autoplaca, automotores.automarca, automotores.autocilindr aje, aseguramientos.asefechainicio, aseguramientos.asefechaexpiracion, asegura mientos.aseestado FROMautomotores, aseguramientos WHERE automotores.aut otipo=1
USAR LENGUAJE TRANSACCIONAL SOBRE LA BASE DE DATOS 1. Construya los siguientes procedimientos Almacenados para inserción de registros: • En MySQL; para las tablas Profesor, Curso, Estudiante, Estudiantexcurso. Create procedure colegio() Select * from profesor, curso, estudiante, estudiantexcu rso; call colegio(); • En ORACLE; para las tablas Cliente, Articulo, Pedido. Create or replace PROCEDURE negocios(unos out SYS_REFCURSOR) as
BEGIN OPEN unos FOR SELECT * FROM cliente, articulo, pedido; END negocios; • En el Motor de su preferencia (ORACLE O MySQL), para las tablas, Compañía, TiposAutomotores, Automotores, Aseguramientos, Incidentes. Create procedure seguros() Select * from compañia, tiposautomotores, automotore s, aseguramientos, incidentes; call seguros(); 2. En Oracle construya los procedimientos almacenados para realizar los siguientes procesos: • Muestre los salarios de los profesores ordenados por categoría. create or replace PROCEDURE salarioprofesor(uno out SYS_REFCURSOR) as BEGIN OPEN uno FOR SELECT sal_prof FROM profesor ORDER BY cate_prof; END salarioprofesor; • Muestre los cursos cuyo valor sea mayor a $500.000. Create or replace PROCEDURE valorcurso(uno out SYS_REFCURSOR) as BEGIN OPEN uno FOR SELECT nom_curs FROM curso WHERE valor_cur>='500000'; END valorcurso; • Visualizar el nombre, apellido y dirección de todos aquellos clientes que hayan realizado un pedido el día 25 /02/2012. Create or replace PROCEDURE pedidos02252012(uno out SYS_REFCURSOR) as BEGIN OPEN uno FOR SELECT cliente.nom_cli, cliente.ape_cli, cliente.dir_cli FROM cliente, pedido WHERE pedido.fec_ped='02/25/2012'; END pedidos02252012; • Listar todo s los pedidos realizados incluyendo el nombre del artículo. Create or replace PROCEDURE todospedidos(uno out SYS_REFCURSOR) as BEGIN OPEN uno FOR SELECT pedido.id_ped, pedido.id_cli_ped, pedido.fec_ped, pedido.val_ped, articulo.tit_art FROM pedido, articulo; END todospedidos;
• Listar los todos datos de los automotores cuya póliza expira en octubre de 2013, este reporte debe visualizar la placa, el modelo, la marca, número de pasajeros, cilindraje nombre de automotor, el valor de la póliza y el valor asegurado. Create or replace PROCEDURE polizaoctubre(uno out SYS_REFCURSOR) as BEGIN OPEN uno FOR SELECT automotores.autoplaca, automotores.automodelo, automotores.automarca, automotores.autonumpasajeros, automotores.autocilindraje, automotores.autotipo, aseguramientos.asecosto, aseguramientos.asevalorasegurado FROM automotores, aseguramientos WHERE aseguramientos.asefechaexpiracion>'09/30/2013' AND aseguramientos.asefechaexpiracion<'11/01/2013'; END polizaoctubre;
3. En MySQL construya los procedimientos almacenados para realizar los siguientes procesos: • Muestre todos los campos de la tabla curso en orden ascendente según el valor. CREATE PROCEDURE `cursoascendente`() NOT DETERMINISTIC CONTAINS S QL SQL SECURITY DEFINER Select * from curso ORDER BY valor_cur ASC; call cursoascendente(); • Mostrar los pedidos con los respectivos artículos (código, nombre, valor y cantidad pedida). Create procedure pedidosyarticulos() Select pedido.id_ped,pedido.id_cli_ped, pedi do.fec_ped, pedido.val_ped,articulo.id_art, articulo.tit_art, articulo.prec_art,articulo xpedido.can_art_artped from pedido, articulo,articuloxpedido call pedidosyarticulos() • Visualizar los datos de las empresas fundadas entre el año 1991 y 1998. CREATE PROCEDURE empresafundada() SELECT * FROM compañia WHERE c omañofun>=1991 AND comañofun<=1998 call empresafundada() • Visualizar todos los clientes organizados por apellido. Create procedure apellidosclientes() Select * from cliente ORDER BY ape_cli call apellidosclientes() • Visualizar los datos de los incidentes que han tenido un(1) herido, este reporte debe visualizar la placa del automotor, con los respectivos datos de la póliza como son fecha de inicio, valor, estado y valor asegurado. CREATE PROCEDURE incidentesunherido(uno int) SELECTincidentes.inciplaca, i ncidentes.incicantheridos ,aseguramientos .asefechainicio, aseguramientos.asecost o,aseguramientos .aseestado, aseguramientos.asevalorasegurado FROM incidente s, aseguramientos WHERE incicantheridos=uno call incidentesunherido( '1') • Visualizar los incidentes del vehículo con placas " FLL420", este reporte debe visualizar la fecha, el lugar, la cantidad de heridos del incidente, la fecha de inicio la de expiración de la póliza y el valor asegurado.
CREATE PROCEDURE incidentesFLL420(fll varchar (6)) SELECTincidentes.incife cha,incidentes.incilugar ,incidentes.incicantheridos ,aseguramientos .asefechainicio, aseguramientos.asefechaexpiracion,aseguramientos.asevalorasegurado FROM inc identes,aseguramientos WHERE inciplaca=fll call incidentesFLL420( 'FLL420') 4. Realice las Siguientes funciones en MySQL: • Cuente el número de estudiantes cuya edad sea mayor a 22. CREATE FUNCTION `contarestudiantes` (`input` INT) RETURNS INT(11) NOT DE TERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLARE can tidad int; SELECT COUNT(*) INTOcantidad FROM estudiante WHERE edad_est>' 22'; RETURN cantidad; END SELECT `contarestudiantes` (@p0) AS `contarestudiantes` • Muestre el nombre y la edad del estudiante más joven. CREATE FUNCTION `estudiantejoven` (`input` INT) RETURNS INT(11) NOT DET ERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLARE jove n int; SelectMIN(edad_est) INTO joven from estudiante; RETURN joven; END SELECT `estudiantejoven` (@p0) AS `estudiantejoven` ; • Calcule el valor promedio de los cursos cuyas horas sean mayores a 40. CREATE FUNCTION `valorpromedio` (`input` INT) RETURNS INT(11) NOT DETE RMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLARE prome dio int; SELECT AVG(valor_cur) INTO promedioFROM curso WHERE horas_cur> ='40'; RETURN promedio; END SELECT `valorpromedio` (@p0) AS `valorpromedio` ; • Obtener el sueldo promedio de los profesores de la categoría 1. CREATE FUNCTION `sueldopromedio` (`input` INT) RETURNS INT(11) NOT DET ERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLARE prom edio int; SELECT AVG(sal_prof) INTO promedioFROM profesor WHERE cate_prof ='1'; RETURN promedio; END SELECT `sueldopromedio`(@p0) AS `sueldopromedio` ; • Muestre el nombre del profesor con menor sueldo. CREATE FUNCTION `menorsueldo`(`inout` INT) RETURNS VARCHAR(30) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLARE nombre varchar (30);SELECT nom_prof INTO nombre FROM profesor where sal_p rof=(select min(sal_prof) from profesor); RETURN nombre; END SELECT `menorsueldo`(@p0) AS `menorsueldo`;
5. Realice las Siguientes funciones en ORACLE: • Visualizar el nombre del cliente, la fecha y el valor del pedido más costoso. create or replace FUNCTION pedidomascostos RETURN NUMBER IS valor NUMBER; BEGIN SELECT MAX(val_ped) INTO valor FROM pedido; RETURN valor; END; • Mostrar cuantos artículos se tienen de cada editorial.
create or replace FUNCTION contareditoriales RETURN NUMBER IS valor NUMBER; BEGIN SELECT COUNT(edi_art) INTO valor FROM articulo; RETURN valor; END; • Visualizar todos los datos de la póliza más costo sa. create or replace FUNCTION polizacostosa RETURN NUMBER IS valor NUMBER; BEGIN SELECT asecodigo INTO valor FROM aseguramientos WHERE asecosto=(select min(asecosto) from aseguramientos ); RETURN valor; END; • Visualizar los incidentes con el mínimo número de autos involucrados, de este incidente visualizar el estado de la póliza y el valor asegurado. create or replace FUNCTION menosautos RETURN NUMBER IS valor NUMBER; BEGIN SELECT incicodigo INTO valor FROM incidentes WHERE incicanautosinvolucrados=(select min(incicanautosinvolucrados) from incidentes); RETURN valor; END; • Visualizar los datos de la póliza cuyo valor asegurado es el más costoso, este reporte además de visualizar todos los datos de la póliza, debe presentar todos los datos del vehículo que tiene dicha póliza. create or replace FUNCTION polizacostosa RETURN NUMBER IS valor NUMBER; BEGIN SELECT asecodigo INTO valor FROM aseguramientos WHERE asevalorasegurado=(select max(asevalorasegurado) from aseguramientos ); RETURN valor; END; 6. Construya los siguiente disparadores para controlar la actualización y borrado de registros • En MySQL; para las tablas Profesor, Curso, Estudiante. Actuali zació n: ✓ Profesor CREATE TRIGGER `profesorupdate` BEFORE UPDATE ON `profesor` FOR EAC H ROW INSERT INTO trigger_profesores (DocumentoAnterior, NombreAnterior,Ap ellidoAnterior, CategoriaAnterior, SalarioAnterior, DocumentoNuevo, NombreNuev o, ApellidoNuevo, CategoriaNuevo, SalarioNuevo) VALUES (OLD.doc_prof , OLD.n om_prof , OLD.ape_prof ,OLD.cate_prof , OLD.sal_prof , NEW.doc_prof , NEW.nom_ prof , NEW.ape_prof , NEW.cate_prof , NEW.sal_prof ); ✓ Curso CREATE TRIGGER `cursoupdate` BEFORE UPDATE ON `curso` FOR EACH RO W INSERT INTO trigger_cursos(CodigoAnterior, NombreAnterior, HorasAnterior, V alorAnterior, CodigooNuevo, NombreNuevo,HorasNuevo, ValorNuevo) VALUES ( OLD.cod_curs, OLD.nom_curs, OLD.horas_cur , OLD.valor_cur , NEW.cod_curs, N EW.nom_curs, NEW.horas_cur ,NEW.valor_cur );
✓
Estudiante CREATE TRIGGER `estudianteupdate` BEFORE UPDATE ON `estudiante` FOR EACH ROW INSERT INTO trigger_estudiante (DocumentoAnterior, NombreAnteri or, ApellidoAnterior, EdadAnterior,DocumentoNuevo, NombreNuevo, ApellidoNuev o, EdadNuevo) VALUES (OLD.doc_est, OLD.nom_est, OLD.ape_est, OLD.edad_e st, NEW.doc_est, NEW.nom_est, NEW.ape_est, NEW.edad_est);
Borrado ✓ Profesor CREATE TRIGGER `profesordelete` AFTER DELETE ON `profesor` FOR EACH R OW INSERT INTO trigger_profesores (DocumentoAnterior, NombreAnterior, Apelli doAnterior, CategoriaAnterior,SalarioAnterior, DocumentoNuevo, NombreNuevo, A pellidoNuevo, CategoriaNuevo, SalarioNuevo) VALUES (OLD.doc_prof , OLD.nom _prof , OLD.ape_prof , OLD.cate_prof , OLD.sal_prof ); ✓ Curso CREATE TRIGGER `cursodelete` AFTER DELETE ON `curso` FOR EACH ROW I NSERT INTO trigger_cursos(CodigoAnterior, NombreAnterior, HorasAnterior, Valo rAnterior, CodigooNuevo,NombreNuevo,HorasNuevo, ValorNuevo) VALUES (OLD .cod_curs, OLD.nom_curs, OLD.horas_cur , OLD.valor_cur ); ✓ Estudiante CREATE TRIGGER `estudiantedelete` AFTER DELETE ON `estudiante` FOR EA CH ROW INSERT INTO trigger_estudiante (DocumentoAnterior,NombreAnterior, ApellidoAnterior, EdadAnterior, DocumentoNuevo, NombreNuevo, ApellidoNuevo, EdadNuevo) VALUES (OLD.doc_est, OLD.nom_est, OLD.ape_est, OLD.edad_est) • En ORACLE; para las tablas Cliente, Articulo, Pedido. Actuali zació n: ✓ Cliente create or replace trigger "CLIENTEUPDATE" BEFORE update on "CLIENTE" for each row begin INSERT INTO trigger_cliente (CodigoAnterior, NombreAnterior, ApellidoAnterior, DireccionAnterior,DepartamentoAnterior, MesCumpleAnterior, CodigoNuevo, NombreNuevo, ApellidoNuevo, DireccionNuevo, DepartamentoNuevo, MesCumpleNuevo) VALUES (:OLD.id_cli, :OLD.nom_cli, :OLD.ape_cli, :OLD.dir_cli, :OLD.dep_cli, :OLD.mes_cum_cli, :NEW.id_cli, :NEW.nom_cli, :NEW.ape_cli, :NEW.dir_cli, :NEW.dep_cli, :NEW.mes_cum_cli); end; ✓ Articu lo create or replace trigger "ARTICULOUPDATE" BEFORE update on "ARTICULO" for each row begin
INSERT INTO trigger_articulo (CodigoAnterior, NombreAnterior, AutorAnterior, EditorialAnterior, PrecioAnterior, CodigoNuevo, NombreNuevo, AutorNuevo, EditorialNuevo, PrecioNuevo) VALUES (:OLD.id_art, :OLD.tit_art, :OLD.aut_art, :OLD.edi_art, :OLD.prec_art, :NEW.id_art, :NEW.tit_art, :NEW.aut_art, :NEW.edi_art, :NEW.prec_art); end; ✓ Pedido create or replace trigger "PEDIDOUPDATE" BEFORE update on "PEDIDO" for each row begin INSERT INTO trigger_pedido (CodigoAnterior, DocumentoClienteAnterior, FechaAnterior, ValorAnterior, CodigoNuevo, DocumentoClienteNuevo, FechaNuevo, ValorNuevo) VALUES (:OLD.id_ped, :OLD.id_cli_ped, :OLD.fec_ped, :OLD.val_ped, :NEW.id_ped, :NEW.id_cli_ped, :NEW.fec_ped, :NEW.val_ped); end; Borrado ✓ Cliente create or replace trigger "CLIENTEDELETE" AFTER delete on "CLIENTE" for each row begin INSERT INTO trigger_cliente (CodigoAnterior, NombreAnterior, ApellidoAnterior, DireccionAnterior,DepartamentoAnterior, MesCumpleAnterior, CodigoNuevo, NombreNuevo, ApellidoNuevo, DireccionNuevo, DepartamentoNuevo, MesCumpleNuevo) VALUES (:OLD.id_cli, :OLD.nom_cli, :OLD.ape_cli, :OLD.dir_cli, :OLD.dep_cli, :OLD.mes_cum_cli); end; ✓ Articu lo create or replace trigger "ARTICULODELETE" AFTER delete on "ARTICULO" for each row begin INSERT INTO trigger_articulo (CodigoAnterior, NombreAnterior, AutorAnterior, EditorialAnterior, PrecioAnterior, CodigoNuevo, NombreNuevo, AutorNuevo, EditorialNuevo, PrecioNuevo) VALUES (:OLD.id_art, :OLD.tit_art, :OLD.aut_art, :OLD.edi_art, :OLD.prec_art); end; ✓ Pedido create or replace trigger "PEDIDODELETE" AFTER delete on "PEDIDO" for each row begin
INSERT INTO trigger_pedido (CodigoAnterior, DocumentoClienteAnterior, FechaAnterior, ValorAnterior, CodigoNuevo, DocumentoClienteNuevo, FechaNuevo, ValorNuevo) VALUES (:OLD.id_ped, :OLD.id_cli_ped, :OLD.fec_ped, :OLD.val_ped); end; • En el Motor de su pref erencia (ORACLE O MySQL), para las tablas, Automotores, Aseguramientos, Incidentes. Actuali zació n: ✓ Automo tores CREATE TRIGGER `automotoresupdate` BEFORE UPDATE ON `automotores` F OR EACH ROW INSERT INTO trigger_automotores (PlacaAnterior, MarcaAnterior , TipoAnterior, ModeloAnterior,NumeroPasajerosAnterior, CilindrajeAnterior, Nume roChasisAnterior, PlacaNuevo, MarcaNuevo, TipoNuevo, ModeloNuevo, NumeroP asajerosNuevo, CilindrajeNuevo, NumeroChasisNuevo )VALUES (OLD.autoplaca, OLD.automarca, OLD.autotipo, OLD.automodelo, OLD.autonumpasajeros , OLD.au tocilindraje, OLD.autonumchasis, NEW.autoplaca, NEW.automarca, NEW.autotipo, NEW.automodelo, NEW.autonumpasajeros , NEW.autocilindraje , NEW.autonumch asis) ✓ Asegu ramientos CREATE TRIGGER `aseguramientosupdate` BEFORE UPDATE ON `aseguramie ntos` FOR EACH ROW INSERT INTO trigger_aseguramientos(CodigoAnterior, Fe chaInicioAnterior,FechaExpiracionAnterior, ValorAseguradoAnterior, EstadoAnterio r, CostoAnterior, PlacaAnterior, CodigoNuevo, FechaInicioNuevo, FechaExpiracion Nuevo, ValorAseguradoNuevo,EstadoNuevo, CostoNuevo, PlacaNuevo) VALUES (OLD.asecodigo, OLD.asefechainicio, OLD.asefechaexpiracion , OLD.asevaloraseg urado, OLD.aseestado, OLD.asecosto, OLD.aseplaca,NEW.asecodigo, NEW.asef echainicio, NEW.asefechaexpiracion , NEW.asevalorasegurado , NEW.aseestado, NEW.asecosto, NEW.aseplaca) ✓ Incidentes CREATE TRIGGER `incidentesupdate` BEFORE UPDATE ON `incidentes` FOR E ACH ROW INSERT INTO trigger_incidentes(CodigoAnterior, FechaAnterior, Placa Anterior, LugarAnterior,CantidadHeridosAnterior, CantidadFatalidadesAnterior, Ca ntidadAutosInvolucradosAnterior, CodigoNuevo, FechaNuevo, PlacaNuevo, Lugar Nuevo, CantidadHeridosNuevo,CantidadFatalidadesNuevo, CantidadAutosInvolucr adosNuevo) VALUES (OLD.incicodigo, OLD.incifecha, OLD.inciplaca, OLD.incilug ar , OLD.incicantheridos , OLD.incicanfatalidades ,OLD.incicanautosinvolucrados, N EW.incicodigo, NEW.incifecha, NEW.inciplaca, NEW.incilugar , NEW.incicantherido s, NEW.incicanfatalidades , NEW.incicanautosinvolucrados ) Borrado ✓ Automo tores CREATE TRIGGER `automotoresdelete` AFTER DELETE ON `automotores` FOR EACH ROW INSERT INTO trigger_automotores (PlacaAnterior, MarcaAnterior, Tip oAnterior, ModeloAnterior,NumeroPasajerosAnterior, CilindrajeAnterior, NumeroCh asisAnterior, PlacaNuevo, MarcaNuevo, TipoNuevo, ModeloNuevo, NumeroPasaje rosNuevo, CilindrajeNuevo, NumeroChasisNuevo)VALUES (OLD.autoplaca, OLD.
automarca, OLD.autotipo, OLD.automodelo, OLD.autonumpasajeros , OLD.autocili ndraje, OLD.autonumchasis) ✓ Asegu ramientos CREATE TRIGGER `aseguramientosdelete` AFTER DELETE ON `aseguramiento s` FOR EACH ROW INSERT INTO trigger_aseguramientos(CodigoAnterior, Fecha InicioAnterior,FechaExpiracionAnterior, ValorAseguradoAnterior, EstadoAnterior, C ostoAnterior, PlacaAnterior, CodigoNuevo, FechaInicioNuevo, FechaExpiracionNu evo, ValorAseguradoNuevo,EstadoNuevo, CostoNuevo, PlacaNuevo) VALUES (O LD.asecodigo, OLD.asefechainicio, OLD.asefechaexpiracion , OLD.asevalorasegur ado, OLD.aseestado, OLD.asecosto, OLD.aseplaca) ✓ Incidentes CREATE TRIGGER `incidentesdelete` AFTER DELETE ON `incidentes` FOR EAC H ROW INSERT INTO trigger_incidentes(CodigoAnterior, FechaAnterior, PlacaAnt erior, LugarAnterior,CantidadHeridosAnterior, CantidadFatalidadesAnterior, Cantid adAutosInvolucradosAnterior, CodigoNuevo, FechaNuevo, PlacaNuevo, LugarNue vo, CantidadHeridosNuevo,CantidadFatalidadesNuevo, CantidadAutosInvolucrado sNuevo) VALUES (OLD.incicodigo, OLD.incifecha, OLD.inciplaca, OLD.incilugar , OLD.incicantheridos, OLD.incicanfatalidades ,OLD.incicanautosinvolucrados)
Elementos del lenguaje de programación y estructuras de datos en JAVA 1. En una competencia participan N atletas de los cuales es importante conocer su nombre, nacionalidad y su tiempo. Desarrolle una aplicación que presente el siguiente menú: Competencia 1. Registrar Atleta 2. Datos del campeón. 3. Atletas por país 4. Tiempo promedio de todos los atletas 5. Salir
Registrar Atleta: Debe solicitar el nombre, la nacionalidad y el tiempo del atleta Datos Campeón: Muestra el nombre, la nacionalidad y el tiempo del atleta cuyo tiempo es el menor de todos. Atletas por país: Solicita el nombre del país y muestra los nombres de todos los atletas de ese país. Tiempo promedio de todos los atletas: Muestra el tiempo promedio de los atletas registrados. Características de la aplicación: La aplicación debe desarrollarse de manera orientada a objetos, incluyendo las clases Atleta, Competencia y Principal. Debe emplear arreglos para su solución. import javax.swing.JOptionPane; public class Ejercicio1 { public static void main(String[] args) { //Declaracion de variables String nombre[]; String nacionalidad[]; double tiempo[]; int totalAtletas; double may=0; String nombremin = null; String nacionalidadmin = null;
String nacionalidadpais; String nombreatletapais; double sumTiempo=0; double tiempoPromedio; //Menu JOptionPane.showMessageDialog(null, " Competencia \n" + "1. Registrar Atleta \n" + "2. Datos del campeon \n" + "3. Atletas por pais \n" + "4. Tiempo promedio de todos los atletas \n" + "5. Salir"); totalAtletas=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de Atletas ")); nombre=new String[totalAtletas]; nacionalidad=new String[totalAtletas]; tiempo=new double[totalAtletas]; //Registrar atletas JOptionPane.showMessageDialog(null, "1. Registrar Atleta"); for(int i=0; imay){ may=tiempo[i]; nombremin=nombre[i]; nacionalidadmin=nacionalidad[i]; } } JOptionPane.showMessageDialog(null, "El nombre del atleta campeon es " + nombremin + " de nacionalidad " + nacionalidadmin + " cuyo tiempo fue " + may); //Atletas por pais JOptionPane.showMessageDialog(null, "3. Atletas por pais"); nacionalidadpais=JOptionPane.showInputDialog(null, "Ingrese la nacionalidad para mostrar los atletas de ese pais: "); for (int i=0; i
2. Desarrolle una aplicación utilizando colecciones, la cual permita tener las siguientes funcionalidades: • Insertar elementos (al inicio, al final). • Eliminar elementos. • Obtener el valor de una posición determinada. • Asignar valor a una posic ión determinada. • Calcular la sumatoria de los valores de todos los elementos. • Calcular el promedio de los valores de todos los elementos. • Obtener el número de elementos. • Contar el número de valores igual a cero (0). • Calcular la suma de los pares. • Contar el número de repeticiones dado un número. • Modificar el valor de una posición por otro valor suministrado. • Cambiar todo el contenido. • Invertir el arreglo. • Obtener el mayor valor. • Obtener el menor valor. • Obtener los primeros n elementos del arreglo. • Obtener los últimos n elementos del arreglo. • Indicar si es palíndromo. • Indicar si un número se encuentra dentro del arreglo. • Mostrar el contenido del arreglo. Para conseguir e l objetivo, se le suministra la clase principal y la clase de prueba, tenga en cuenta los nombres de los métodos, argumentos y tipos de datos para la codificación. import java.util.*; // Importando Java util public class MiColeccion { // Clase MiColeccion ArrayList numeros = new ArrayList(); // Declaracion ArrayList numeros public void insertarAlFinal(int valor) { // Metodo para insertar valores en numeros numeros.add(valor); } public void insertarAlPrincipio(int valor) { // Metodo insertar al principio del ArrayList numeros.add(0, valor); } public void mostrarContenido() { // metodo para mostrar el contenido de numeros System.out.println(numeros); } public void agregarAlFinal(Object valor) { numeros.add(valor); } public void eliminar(int valor) { // Metodo para eliminar elementos de numeros numeros.remove(valor); } public void setValor(int posicion, int valor) { // Metodo para reemplazar valores en numeros numeros.add(posicion, valor); } int getValor(int valor) { return (int) (numeros.get(valor)); // metodo para mostrar los elementos que contiene numeros } int cuentaElementos() { // metodo para saber el tamaña del ArrayList int valor = numeros.size(); return valor; }
int getSumatoria() { // metodo para sumar los elementos del ArrayList int suma = 0; for (Object numero : numeros) { suma = suma + (int) numero; } return suma; } double getPromedio() { // Metodo para conocer el promedio de los elementos del ArrayList int suma = 0; double promedio = 0; for (Object numero : numeros) { suma = suma + (int) numero; promedio = suma / numeros.size(); } return promedio; } int cuentaCeros() { // metodo para contar los ceros dentro del ArrayList int cantidad = 0; for (Object numero : numeros) { if ((int) numero == 0) { cantidad = cantidad + 1; } } return cantidad; } int sumaPares() { // Metodo para sumar los numeros pares dentro del ArrayList int par = 0; for (Object numero : numeros) { if (((int) numero % 2) == 0) { par = par + (int) numero; } } return par; } int cuentaRepeticiones(int num) { // Metodo que cuenta el numero de veces que se repite el numero 2 en el Array
int cuenta = 0; for (Object numero : numeros) { if ((int) numero == 2) { cuenta = cuenta + 1; } } return cuenta; } public void reemplazarValor(int antiguoValor, int nuevoValor) { // Metodo para reemplazar un valor dentro del Array numeros.set(antiguoValor, nuevoValor); } public void reemplazarTodo() { // Metodo para reemplazar todo el Array numeros.clear(); numeros.add(9); numeros.add(10); numeros.add(11); } int getMayor ( ){ // Metodo para obtener el mayor numero dentro del Array int mayor=0; for (Object numero : numeros) { if ((int)numero >= mayor) { mayor=(int) numero; } } return mayor; } int getMenor ( ){ // Metodo para obtener el menor numero dentro del Array int menor=11; for (Object numero : numeros) { if ((int)numero <= menor) { menor=(int) numero; } } return menor; } boolean buscar (int numero){ // Metodo para buscar un numero dentro del Array.
return numeros.contains(numero); } } public class TestMiColeccion { public static void main(String[] args) { System.out.println("Mi Coleccion 1"); MiColeccion mc1 = new MiColeccion(); mc1.insertarAlFinal(1); mc1.insertarAlFinal(2); mc1.insertarAlFinal(3); mc1.insertarAlPrincipio(4); mc1.mostrarContenido(); //ArrayList al=new ArrayList(); mc1.agregarAlFinal(9); mc1.agregarAlFinal(10); mc1.agregarAlFinal(11); //mc1.agregarAlFinal(al); mc1.mostrarContenido(); mc1.eliminar(0); mc1.eliminar(5); mc1.mostrarContenido(); mc1.setValor(0, 0); mc1.setValor(6, 0); mc1.mostrarContenido(); System.out.println("En la posicion 4 esta el " + mc1.getValor(4)); System.out.println("La sumatoria de sus elementos es: " + mc1.getSumatoria()); System.out.println("El promedio de sus elementos es: " + mc1.getPromedio()); System.out.println("En la coleccion hay " + mc1.cuentaElementos() + " elementos"); System.out.println("Y hay " + mc1.cuentaCeros() + " ceros"); System.out.println("La sumatoria de los pares es: " + mc1.sumaPares()); System.out.println("El numero 2 esta " + mc1.cuentaRepeticiones(2) + " veces"); mc1.reemplazarValor(0, 9); mc1.mostrarContenido(); mc1.reemplazarTodo(); mc1.mostrarContenido(); System.out.println("El mayor elemento es: " + mc1.getMayor()); System.out.println("El menor elemento es: " + mc1.getMenor()); mc1.insertarAlFinal(1); mc1.insertarAlFinal(2); mc1.insertarAlFinal(3); mc1.mostrarContenido(); System.out.println("Esta el 3 en la lista? "+mc1.buscar(3)); } }
Programación orientada a objetos en JAVA
1. Cree y compile la siguiente clase: Cita -int numero -int tipo -double tarifa -double valorFinal +Cita(int numero, int tipo, double tarifa) + int getNumero() +String getTipo() +double getTarifa() +double calcularValorFinal() Notas: • El método getTipo() debe retornar un String q ue puede ser “especialista” o “general”, será general si la cita es tipo 1, 2 o 3 y será especialista si el tipo de cita es 4 o 5. • El valor final de la cita depende de la tarifa y el tipo de cita, las citas de ti po “especialista” tienen un incremento del 50% sobre la tarifa y las citas de tipo “general” tiene un descuento del 50% sobre la tarifa. Cree la clase Principal.java donde solicite al usuario los datos para crear una cita (objeto de la clase Cita) y a continuación presente los siguientes mensajes: El número de la cita es: XXXXXX Esta cita es de tipo: XXXXXXXX Su tarifa normal es: XXXXXXXX Pero por ser de tipo XXXXXXXX queda con un valor final de XXXXXXXX
package EjerciciosJava; public class Cita { int numero; int tipo; double tarifa; double valorFinal=0; public Cita(int numero, int tipo, double tarifa) { this.numero=numero; this.tipo=tipo; this.tarifa=tarifa; } public int getNumero() { return numero; } public String getTipo() { if(tipo<=3) return "General"; else return "Especialista"; } public double getTarifa() { return tarifa; } public double calcularValorFinal() { double percent=tarifa*0.5;
if(tipo<=3){ valorFinal=tarifa-percent; } else{ valorFinal=tarifa+percent; } return valorFinal; }
}
package EjerciciosJava; import javax.swing.JOptionPane; public class Principal1 { public static void main(String[] args) { int numero =Integer.parseInt(JOptionPane.showInputDialog(null,"Introduzca el numero de la cita")); int tipo = Integer.parseInt(JOptionPane.showInputDialog(null, "Introduzca el tipo de cita (Para general: 1, 2 y 3 y para especialista: 4 y 5)")); double tarifa = Double.parseDouble(JOptionPane.showInputDialog(null, "Introduzca la tarifa")); Cita cita= new Cita(numero,tipo,tarifa); System.out.println("El numero de la cita es: "+cita.getNumero()); System.out.println("El tipo de cita es: "+ cita.getTipo()); System.out.println("Su tarifa normal es: "+ cita.getTarifa()); System.out.println("Pero por ser de tipo " + cita.getTipo() + " queda con un valor final de: " + cita.calcularValorFinal()); } } 2. Cree y compile la siguiente clase: Bus -String placa -int capacidadPasajeros -double precioPasaje -int pasajerosActuales - int totalPasajeros +Bus (String placa, int capacidad, double pasaje) +String getPlaca() +int getCapacidad() +double getPrecioPasaje() +int getPasajerosTotales() +int getPasajerosActuales() +void subirPasajeros(int pasajeros) +void bajarPasajeros(int pasajeros) +double getDineroAcumulado() Notas: • getPlaca: Obtiene la placa del bus • getCapacidad: Obtiene la ca pacidad de pasajeros del bus • getPrecioPasaje: Obtiene el valor del pasaje • getPasajerosActuales: Obtiene el número de pasajeros que se encuentra en el bus • getPasajerosTotales: Obtiene el número de pasajeros que se han subido al bus • subirPasajeros: sube una cantidad de pasajeros al bus, teniendo en cuenta
que no sobrepase la capacidad del bus. • bajarPasajeros: baja una cantidad de pasajeros del bus, teniendo en cuenta que no baje más pasajeros de los que realmente existen en el bus. • getDineroAcumulado: Obtiene todo el dinero que ha acumulado el bus teniendo en cuenta todos los pasajeros que se han subido y el valor del pasaje. Cree y compile la clase Principal.java donde instancie un objeto de la clase Bus y pruebe cada uno de sus métodos. package EjerciciosJava; import javax.swing.JOptionPane; public class Bus { String placa; int capacidadPasajeros; double precioPasaje; int pasajerosActuales; int totalPasajeros; double dineroAcumulado; public int pasajeroSsubidos; int pasajeros1; int totalAcumulado; public Bus (String placa, int capacidad, double pasaje, int actuales){ this.placa=placa; this.capacidadPasajeros=capacidad; this.precioPasaje=pasaje; this.pasajerosActuales=actuales; } public String getPlaca(){ return placa; } public int getCapacidad(){ return capacidadPasajeros; } public double getPrecioPasaje(){ return precioPasaje; } public int getPasajerosTotales(){ return totalPasajeros; } public int getPasajerosActuales(){ return pasajerosActuales;
} public void subirPasajeros(int pasajeros){ if (pasajeros > capacidadPasajeros) { JOptionPane.showMessageDialog(null, " No se pueden subir " + pasajeros + ", porque es SOBRECUPO "); } else { if ((pasajerosActuales + pasajeros) > capacidadPasajeros) { JOptionPane.showMessageDialog(null, " No se pueden subir " + pasajeros + ", porque es SOBRECUPO "); }else{ totalPasajeros=pasajeros; pasajerosActuales=pasajerosActuales+pasajeros; totalAcumulado = pasajerosActuales + pasajeros; } }
} public void getDineroAcumulado(){ dineroAcumulado=(pasajerosActuales*precioPasaje); } public double totalDineroAcumulado(){ return dineroAcumulado; } public void bajarPasajeros(int pasajeros1){ if (pasajeros1>pasajerosActuales) { JOptionPane.showMessageDialog(null, "La cantidad de pasajeros que desea bajar es mayor al numero de pasajeros que actualmente hay en el bus!!!"); } else{ pasajerosActuales=pasajerosActuales-pasajeros1; } } }
package EjerciciosJava;
import javax.swing.JOptionPane; public class Principal2 { public static void main(String[] args) { String placa=JOptionPane.showInputDialog("Digite placa del bus"); int capacidad=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese capacidad del bus")); int actuales = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese numero de pasajeros que estan en el bus ")); double pasaje = Double.parseDouble(JOptionPane.showInputDialog(null,"Valor pasaje")); if (actuales>capacidad) { System.out.println("Error!!! El numero actual de pasajeros sobrepasa la capacidad del bus"); }else{ Bus bus = new Bus(placa,capacidad,pasaje,actuales); int pasajeros=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese cantidad de pasajeros a subir al bus!")); bus.subirPasajeros(pasajeros); JOptionPane.showMessageDialog(null,"El numero de pasajeros actuales es: "+bus.getPasajerosActuales()); JOptionPane.showMessageDialog(null,"El bus tiene una capacidad de: "+bus.getCapacidad()); JOptionPane.showMessageDialog(null,"La placa del bus es: "+bus.getPlaca()); bus.getDineroAcumulado(); JOptionPane.showMessageDialog(null,"El numero de pasajeros que se han subido es: "+bus.getPasajerosTotales()); int pasajeros1= Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese numero de pasajeros que va a bajar del bus")); bus.bajarPasajeros(pasajeros1); JOptionPane.showMessageDialog(null,"El dinero acumulado es: $" + bus.totalDineroAcumulado()); }
} } 3. Cree y compile la siguiente clase: Cuenta - String numero - String tipo - double saldoActual - double saldoMinimo + Cuenta(int numero, String tipo, double valorInicial) + void consignar (double monto) + void retirar (double monto) + double getSaldo() + double getSaldoMinimo() + double getCapacidadCredito()
Notas: • Las cuentas solo pueden ser d e tipo “ahorro” o “crédito” • El saldo mínimo de una cuenta es el 10% del valor inicial con que se crea la cuenta. • Consignar (double m onto): incrementa el dinero de la cuenta con base en el monto de dinero que se desea consignar. • Retirar (double monto): retira el monto dado de la cuenta siempre y cuando la cuenta no quede con un saldo inferior al saldo mínimo, si esto ocurre, solo se retirará el dinero autorizado. • getSaldo(): obtiene el saldo actual de la cuenta. • getSaldoMinimo(): obtiene el saldo mínimo de la cuenta. • getCapacidadCredito(): Para cuentas de ahorro, la capacidad de crédito es igual a la diferencia entre al saldo actual y el saldo mínimo y para cuentas de crédito, la capacidad de crédito es 3 veces el saldo actual. Cree y compile la clase Principal.java y en ella cree un objeto de la clase Cuenta y pruebe cada uno de sus métodos. package EjerciciosJava; import javax.swing.JOptionPane; public class Cuenta { /* ---------------------------/ / Atributos de la clase cuenta/ /----------------------------*/ int numero; String tipo; double valorInicial; double saldoActual; double saldoMinimo; double capacidad; double autorizado; double capacidadCredito; /* ---------------------------/ / Metodos de la clase Cuenta / /----------------------------*/ // Metodo Constructor Cuenta(int numero,String tipo,double valorInicial){ this.numero=numero; this.tipo=tipo; this.saldoActual=valorInicial; this.valorInicial=valorInicial; } /* -----------------------------------/ / Método para consignar en la cuenta / /------------------------------------*/ public void consignar (double monto){ saldoActual=saldoActual+monto; } /* -----------------------------------/
/ Método para saber saldo mÃÂnimo /------------------------------------*/
/
double getSaldoMinimo(){ saldoMinimo=valorInicial*0.1; return saldoMinimo; } /* -----------------------------------/ / Método para retirar dinero de la cuenta / /------------------------------------*/ public void retirar (double monto1){ saldoActual=saldoActual-monto1; if (saldoActual
/
double getSaldo(){ return saldoActual; } /* -------------------------------------------/ / Método para conocer la capacidad de crédito/ /-------------------------------------------*/ double getCapacidadCredito(){ if ("ahorro".equals(tipo)) { capacidadCredito=saldoActual-saldoMinimo; } if ("credito".equals(tipo)) {
capacidadCredito=saldoActual*3; } return capacidadCredito; } } package EjerciciosJava; import javax.swing.JOptionPane; public class Principal3 { public static void main(String[] args) { /* --------------------------/ / Captura de datos inicales / /---------------------------*/ int numero=Integer.parseInt(JOptionPane.showInputDialog("Digite el numero de la cuenta")); String tipo=JOptionPane.showInputDialog("Digite el tipo de cuenta, ahorro o credito"); double valorInicial=Double.parseDouble(JOptionPane.showInputDialog("Digite el valor que va a consignar inicialmente")); /* --------------------------/ / Creando el objeto Cuenta / /---------------------------*/ Cuenta cuenta=new Cuenta(numero,tipo,valorInicial); double monto=Double.parseDouble(JOptionPane.showInputDialog("Digite la cantidad de dinero a consignar")); cuenta.consignar(monto); cuenta.getSaldoMinimo(); double monto1=Double.parseDouble(JOptionPane.showInputDialog("Digite la cantidad de dinero a retirar")); cuenta.retirar(monto1); JOptionPane.showMessageDialog(null,"Su saldo Actual es: " + cuenta.getSaldo()); JOptionPane.showMessageDialog(null,"El saldo minimo de su cuenta es: " + cuenta.getSaldoMinimo()); JOptionPane.showMessageDialog(null,"Su capacidad de Credito es: " + cuenta.getCapacidadCredito()); } } 4. A partir del siguiente diseño, cree las clases correspondientes y su respectivo código para generar los listados que se solicitan a continuación: Banco
-String nombre -Cliente clientes[ ] -int numeroDeClientes + Banco(String nom) + String obtNombre() + void cambiarNombre(String nombre) + void adCliente(Cliente clie) + int obtNumClientes( ) + Cliente obtCliente(int posicion) + Cliente [ ] obtClientes( ) Cliente {abstract} -String nombre + Cliente (String nombre) + String obtNombre( ) + abstract String obtIdentificacion( ) Empresa -String nit -String representante +Empresa(String nit,String nom,String r) + String obtIdentificacion( ) + String obtRepresentante( ) + String cambiarRepres(String repres) Persona -String cedula -int edad + Persona(String ced,String nom,int ed) + String obtIdentificacion( ) + String obtEdad( ) + void cumplirAños( ) package Ejercicios; import javax.swing.JOptionPane; class Banco{ String nombre; Cliente clientes[]; int numeroDeClientes; public Banco(String nomb){ this.nombre=nomb; } public String obtnombre(){ return nombre; } public void cambiarNombre(String nombre){ } public void adCliente(Cliente clie){ } public int obtNumClientes(){ return numeroDeClientes; } Cliente obtCliente(int posicion){ return null; } Cliente[] obtClientes(){ return null; } }
package Ejercicios; abstract class Cliente{ protected String nombre; public Cliente(String nom) { this.nombre=nom; } public String obtNombre() { return nombre; } abstract String obtIdentificacion(); abstract String obtRepresentante(); abstract int obtEdad(); }
package Ejercicios; class Empresa extends Cliente{ String nit; String representante; public Empresa(String n, String nom, String r){ super(nom); this.nit=n; this.representante=r; } public String obtIdentificacion(){ return nit; } public String obtRepresentante(){ return representante; } public String cambiarRepres(String repres){ return null; } public int obtEdad(){ return 1000;
} }
package Ejercicios; public class Persona extends Cliente{ String cedula; int edad; public Persona(String ced, String nom, int ed){ super(nom); this.cedula=ced; this.edad=ed; }
public String obtIdentificacion(){ return cedula; } public int obtEdad(){ return edad; } public void cumpliranos(){ } public String obtRepresentante(){ return null; } } package Ejercicios; import javax.swing.JOptionPane; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Principal4 { private static Cliente per; public static void main(String args[]) { List lista = new ArrayList<>(); int numeroDeClientes = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el numero de clientes")); for (int i = 1; i <= numeroDeClientes; i++) {
int tipoCliente = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el tipo de cliente: 1 para Empresa o 2 para Persona")); String nom = JOptionPane.showInputDialog(null, "Ingrese el nombre del cliente"); if (tipoCliente == 1) { String nit = JOptionPane.showInputDialog(null, "Ingrese el nit de la empresa"); String r = JOptionPane.showInputDialog(null, "Ingrese el representante"); Empresa emp = new Empresa(nit, nom, r); emp.obtIdentificacion(); //Esta linea no se con que fin es //emp.obtRepresentante(); //ESTA LINEA ES LA QUE UD BORRO, AQUI ES DONDE SE ASIGNA EL OBJETO AL ARRAY LIST lista.add(emp); } else { String ced = JOptionPane.showInputDialog(null, "Ingrese la cedula de la persona"); int ed = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la edad de la persona")); Persona per = new Persona(ced, nom, ed); //AQUI ES DONDE SE ASIGNA EL OBJETO AL ARRAY LIST lista.add(per); } } System.out.println("Todos los nombres que tiene el banco son: "); for(int cuenta = 0; cuenta < lista.size(); cuenta++){ System.out.println(lista.get(cuenta).nombre); } System.out.println("Todos los nombres y cedulas de las personas clientes del banco son: "); for(int cuenta = 0; cuenta < lista.size(); cuenta++){ if (lista.get(cuenta) instanceof Persona){ System.out.println("La cedula del cliente es "+lista.get(cuenta).obtIdentificacion()); System.out.println("El nombre del cliente es "+lista.get(cuenta).obtNombre()); } } System.out.println("Todos los nombres y representantes de cada empresa son: "); for(int cuenta = 0; cuenta < lista.size(); cuenta++){ if (lista.get(cuenta) instanceof Empresa){ System.out.println("El nombre del cliente es "+lista.get(cuenta).obtNombre()); System.out.println("El nombre del representante es "+lista.get(cuenta).obtRepresentante()); } } System.out.println("Los nombres de los clientes menores de edad son: "); for(int cuenta = 0; cuenta < lista.size(); cuenta++){ if (lista.get(cuenta) instanceof Persona){ if (lista.get(cuenta).obtEdad()<18){ System.out.println("El nombre del cliente es "+lista.get(cuenta).obtNombre()); } } } int menor=1000; for(int cuenta = 0; cuenta < lista.size(); cuenta++){ if (lista.get(cuenta) instanceof Persona){ if (lista.get(cuenta).obtEdad()>1){ if (lista.get(cuenta).obtEdad()
} } } System.out.println("La edad del cliente mas joven es "+menor ); int mayor=0; for(int cuenta = 0; cuenta < lista.size(); cuenta++){ if (lista.get(cuenta) instanceof Persona){ if (lista.get(cuenta).obtEdad()>18){ if (lista.get(cuenta).obtEdad()>mayor){ mayor=lista.get(cuenta).obtEdad(); } } } } System.out.println("La edad del cliente mas viejo es "+mayor); } }
Codificar aplicaciones en PHP
1. Basado en el siguiente prototipo, realice la codificación necesaria para calcular la nota final de una materia teniendo en cuenta los siguientes porcentajes: 35% del promedio de sus los 3 parciales. 35% de la calificación del examen final. 30% de la calificación de un trabajo final. La materia se aprueba con una nota promedio mínimo de 3, debe mostrar la nota final y el mensaje de “Aprobó” o “No aprobó” de acuerdo al resultado. Calcular la nota final de la materia Calcular la nota final de la materia