Documente Academic
Documente Profesional
Documente Cultură
Ejercicio Numero 1
a. Enunciado:
Se pretende automatizar la gestin de una biblioteca. Para ello se recoge la siguiente informacin:
Se dispone de un conjunto de usuarios con el nmero de carnet, nombre y direccin; Cada libro de
la biblioteca tiene un cdigo, ttulo y nmero de pginas.
Se realizan prstamos de libros a los usuarios. Cada usuario puede tener prestados a la vez varios
libros.
Cada libro pertenece a una determinada clase, identificada por una clave. De la clase del libro
depende el tiempo mximo que se puede prestar.
Se quiere llevar un control histrico de todos los prstamos que se van realizando, sabiendo
adems del libro y el usuario, las fechas de inicio y de devolucin del prstamo.
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 informacin necesaria para construir el modelo entidad relacin (MER).
b. Identificar Entidades:
Usuario
Libro
Autor
Clase
Editorial
Prestamos
c. Definir Relaciones entre entidades: Las relaciones de entidades, sern resaltadas en color Rojo
Autor escribe Libro
Libro tiene Editoriales
Libro pertenece Clase
Usuario Prstamo libro
d. Identificar Atributos:
Autor:
Nombre
Cdigo
Libro:
Pginas
Ttulo
Cdigo
Editoriales:
Editorial
Ao
Clase:
Clave
TiempoMaximo
Localizacin
Usuario:
NumeroCarnet
Nombre
Direccin
NumeroLibros
Prestamos:
FechaPrestamo
FechaDevolu
E. Depurar MER
Ejercicio nmero 2
a. Enunciado:
2. Se pretende automatizar la gestin de una Video tienda teniendo en cuenta la siguiente
informacin:
Se dispone de un conjunto de clientes con su cdigo, nombre, direccin y correo electrnico; Cada
video de la videoTienda tiene un cdigo, ttulo, idioma y duracin.
Los clientes pueden alquilar varios videos y es importante saber la fecha de alquiler, la fecha de
devolucin y el valor del alquiler que depende del formato del video (VHS, VCD, DVD, BlueRay). Los
clientes podrn consultar los videos que hay de un determinado formato, o gnero (comedia, terror
etc), as como por determinado actor.
Cada Video es dirigido por un director del cual adems de interesarnos conocer los videos que ha
dirigido, nos interesa saber cul es su nacionalidad.
Cada vez que un cliente devuelve un video es importante registrar adems de la fecha de
devolucin, los das de retraso, este histrico 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.
b. Identificar Entidades:
Cliente
Video
GeneroPelicula
FormatoPelicula
Directores
Actor
Listado
c. Definir Relaciones entre entidades: Las relaciones de entidades, sern resaltadas en color Rojo
Director Dirige Video
Video Tiene Actor
Video Tiene Gnero
Video Tiene Formato
Video Hace Alquiler
Alquiler Presta Cliente
d. Identificar Atributos:
Director:
Nombre
Nacionalidad
Cdigo
Video:
Cdigo
Ttulo
Idioma
Duracin
Genero:
NombreGenero
NombreActor
Formato:
NombreFormato
Usuario:
Cdigo
Nombre
Direccin
E-mail
Prestamos:
FDevol
DiasRetraz
Actor:
Cdigo
Nombre
Direccin
E-mail
Listado:
Premios
Sanciones
E. Depurar MER
Ejercicio nmero 3
a. Enunciado:
El SENA regional Caldas desea construir el diagrama entidad relacin de una base de datos que
tiene como objetivo fundamental llevar un control de los aprendices, instructores, cursos y formacin
que imparte cada centro perteneciente a la regional. La informacin requerida para la base de datos
es la siguiente:
De los aprendices interesa conocer su nmero de documento de identidad, nombre, fecha de
nacimiento, direccin, telfono y estrato. Adems es importante conocer para cada aprendiz el curso
en el que se encuentra matriculado, as como la fecha de la matrcula.
Los cursos pertenecen a un determinado centro de formacin, del cual interesa conocer el cdigo
y nombre, tambin sera importante conocer los instructores que pertenecen a un determinado centro
y a que grupos imparte formacin cada instructor.
Teniendo en cuenta que algunos de los aprendices del SENA estn patrocinados, es importante
tambin conocer la informacin de la empresa que los patrocina. La informacin requerida de la
empresa es: NIT, nombre, direccin, telfono. 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 regin as estas no estn patrocinando a ningn aprendiz.
Tambin es importante conocer la fecha de inicio y fin del patrocinio.
b. Identificar Entidades:
Aprendiz
Curso
Matriculas
CentroFormacin
Instructor
EmpresaPatrocinio
EmpresasZona
c. Definir Relaciones entre entidades: Las relaciones de entidades, sern resaltadas en color Rojo
CentroFormacin Matricula Aprendz
CentroFormacion Tiene Cursos
Curso Tiene Matricula
Aprendiz Estudia Curso
Curso Imparte Instructor
Aprendz Patrocinado Empresa
d. Identificar Atributos:
Aprendiz:
IdAprendiz
Nombre
FechaNacimiento
Direccin
Telfono
Estrato
Curso:
NombreCurso
IdCurso
CodigoCentro
CentroFormacin:
Nombre
Cdigo
Instructor:
Nombre
Cdula
Direccin
E-mail
Cdigo
EmpresasZona:
Nit
Nombre
Direccin
Telfono
EmpresaPatrocinio:
Nit
Nombre
Direccin
Telfono
FechaInicio
FechaFin
E. Depurar MER
Ejercicio nmero 4
a. Enunciado:
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 direccin y se identifican por su cdigo. Los clientes del banco
son personas u organizaciones. Las personas tienen fecha de nacimiento y gnero; en cambio las
organizaciones tienen un tipo de organizacin (empresa, institucin pblica, etc.), un representante
y un nmero de empleados.
Todas las cuentas tienen un nmero de cuenta, saldo actual y un saldo promedio, pero es
importante poder determinar si una cuenta es de ahorro o corriente.
Cada sucursal se identifica por su nmero. Adems tiene una direccin, un telfono y una ciudad.
Los empleados del banco se identifican por su cdigo. Tambin interesa conocer su nombre, fecha-
nacimiento, sexo y la sucursal en la que trabajan (aunque hay empleados que no trabajan en ninguna
sucursal).
Asuma la informacin necesaria para construir el MER
b. Identificar Entidades:
Banco
Cliente
Organizacin
Persona
Cuenta
Empleado
Sucursal
c. Definir Relaciones entre entidades: Las relaciones de entidades, sern resaltadas en color Rojo
Banco Tiene Sucursal
Sucursal Tiene Empleado
Sucursal Tiene Cliente
Cliente Posee cuenta
d. Identificar Atributos:
Banco:
Direccin
Telfono
Ciudad
IdBanco
Sucursal:
#Sucursal
Empleado:
Nombre
Cdigo
FechaNacimiento
Gnero
#Sucursal
Cliente:
Nombre
Cdula
Direccin
E-mail
Cdigo
FechaNacimiento
Gnero
Organizacin:
TipoOrganizacin
Representante
#Empleados
Cuenta:
#Cuenta
SaldoActual
SaldoPromedio
TipoCTA
E. Depurar MER
Diagrama de clases
Diagrama de Paquetes
Diagrama de Componentes
Enunciado 2
En un centro de formacin educativo necesitan un sistema web
que permita registrar los proyectos desarrollados por los
docentes, cada proyecto tiene un formato estndar que
almacena la justificacin, objetivos, alcance y productos a
obtener; as como tambin las lneas de inters de cada
proyecto. El objetivo principal es generar informes que los
directivos puedan acceder en cualquier momento desde sus
dispositivos mviles para generar estadsticas 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 organizacin desea incorporar en su poltica de
contratacin criterios de calidad del personal basados en la
medicin de sus habilidades o competencias. La empresa
desea medir las competencias intelectuales de todos sus
empleados y adems desea conocer las competencias
emocionales de sus directivos (por ejemplo, la capacidad de
trabajo en grupo, la motivacin, capacidad de liderazgo, etc),
en el rea de gestin 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 correccin as como el modo
en que se debern interpretar los resultados. Se requiere
disear una aplicacin que permita gestionar y medir las
competencias emocionales e intelectuales de los empleados,
as como tambin 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
3. Compaa de seguros
4. Biblioteca
ARQUITECTURA FSICA DEL SISTEMA
1. En una empresa se cuenta con un sistema de informacin con una arquitectura de
3 capas, que manipula la seguridad de ingreso y salida de los empleados de la
empresa Tecniques &+D a travs de dispositivos de RFID; dicho sistema maneja
el patrn vista controlador, La vista corresponde a una aplicacin web en Asp Net
de Visual Studio .Net y el cliente accede desde un browser de internet; su lgica de
datos est desarrollada con libreras de clase denominada Logica.dll y la
persistencia (base de datos) se encuentra con un servicio web xml llamado
Serviciobd.asmx.
2. El propietario del centro mdico Humana Vivir cuenta con un sistema que permite
administrar los datos bsicos de las citas, consultas, pacientes, diagnsticos e
historias clnicas del centro mdico. Un paciente debe solicitar su cita va web,
donde el sistema asigna el mdico 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 clnica y el diagnostico
junto con su tratamiento. Es importante destacar que este sistema permite gestionar
las citas a travs de dispositivos mviles. El sistema est configurado sobre una
arquitectura de 3 capas con su lgica y base de datos en libreras tipo dll y su
aplicacin desarrollada en Html5.
El diagrama anterior representa el funcionamiento de un sistema de informacin que
administra los datos bsicos de las citas, consultas, pacientes, diagnsticos e
historias clnicas de un centro mdico, los nodos utilizados son el servidor de bases
de datos, el servidor de aplicaciones, el paciente, dispositivo mvil y dispositivo de
lector de huellas. El paciente accede a internet y solicita una cita, este puede pedirla
a travs de un dispositivo mvil 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 seal; 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 informacin que maneja estaciones de trabajo que permiten capturar las
compras de un cliente, este sistema est diseado 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.
CONSULTAS
Calcule el valor promedio de los cursos cuyas horas sean mayores a 40.
SELECT AVG(`valor_cur`) FROM curso WHERE `horas_cur`>'40'
Muestre todos los campos de la tabla curso en orden ascendente segn el valor.
Select * from curso order by `valor_cur` asc
Visualizar los datos del pedido 1, incluyendo el nombre del cliente, la direccin del
mismo, el nombre y el valor de los artculos 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 los pedidos que se han realizado para el articulo con id 2, el listado debe
mostrar el nombre y direccin del cliente, el respectivo nmero 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'
Listar los todos datos de los automotores cuya pliza expira en octubre de 2013,
este reporte debe visualizar la placa, el modelo, la marca, nmero de pasajeros,
cilindraje nombre de automotor, el valor de la pliza 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-08-
31' and `asefechaexpiracion`<'2013-10-01'
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 pliza 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 los incidentes del vehculo con placas " FLL420", este reporte debe
visualizar la fecha, el lugar, la cantidad de heridos del incidente, la fecha de inicio la
de expiracin de la pliza 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 las plizas de los automotores tipo 1, este reporte debe
incluir placa, marca, modelo, cilindraje del vehculo junto con la fecha de inicio, de
finalizacin y estado de la pliza.
SELECT automotores.autoplaca, automotores.automarca, automotores.autocilindr
aje, aseguramientos.asefechainicio, aseguramientos.asefechaexpiracion, asegura
mientos.aseestado FROMautomotores, aseguramientos WHERE automotores.aut
otipo=1
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 categora 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`;
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.
Actualizacin:
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;
Articulo
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;
Articulo
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 preferencia (ORACLE O MySQL), para las tablas, Automotores,
Aseguramientos, Incidentes.
Actualizacin:
Automotores
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)
Aseguramientos
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
Automotores
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)
Aseguramientos
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
Registrar Atleta: Debe solicitar el nombre, la nacionalidad y el tiempo del atleta Datos Campen:
Muestra el nombre, la nacionalidad y el tiempo del atleta cuyo tiempo es el menor de todos. Atletas
por pas: Solicita el nombre del pas y muestra los nombres de todos los atletas de ese pas.
Tiempo promedio de todos los atletas: Muestra el tiempo promedio de los atletas registrados.
Caractersticas de la aplicacin: La aplicacin debe desarrollarse de manera orientada a objetos,
incluyendo las clases Atleta, Competencia y Principal. Debe emplear arreglos para su solucin.
import javax.swing.JOptionPane;
public class Ejercicio1 {
}
2. Desarrolle una aplicacin utilizando colecciones, la cual permita tener las siguientes
funcionalidades:
Insertar elementos (al inicio, al final). Eliminar elementos. Obtener el valor de una posicin
determinada. Asignar valor a una posicin determinada. Calcular la sumatoria de los valores de
todos los elementos. Calcular el promedio de los valores de todos los elementos. Obtener el
nmero de elementos. Contar el nmero de valores igual a cero (0). Calcular la suma de los
pares. Contar el nmero de repeticiones dado un nmero. Modificar el valor de una posicin 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 palndromo. Indicar si un nmero se encuentra dentro del
arreglo. Mostrar el contenido del arreglo. Para conseguir el objetivo, se le suministra la clase
principal y la clase de prueba, tenga en cuenta los nombres de los mtodos, argumentos y tipos de
datos para la codificacin.
public void setValor(int posicion, int valor) { // Metodo para reemplazar valores en numeros
numeros.add(posicion, valor);
}
return (int) (numeros.get(valor)); // metodo para mostrar los elementos que contiene numeros
}
int suma = 0;
return suma;
double getPromedio() { // Metodo para conocer el promedio de los elementos del ArrayList
int suma = 0;
double promedio = 0;
}
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) {
}
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;
numeros.set(antiguoValor, nuevoValor);
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;
mayor=(int) numero;
}
}
return mayor;
int getMenor ( ){ // Metodo para obtener el menor numero dentro del Array
int menor=11;
menor=(int) numero;
}
}
return menor;
boolean buscar (int numero){ // Metodo para buscar un numero dentro del Array.
return numeros.contains(numero);
}
Programacin 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 mtodo getTipo() debe retornar un String que 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 tipo 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 continuacin presente los siguientes mensajes: El nmero 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;
valorFinal=tarifa-percent;
}
else{
valorFinal=tarifa+percent;
}
return valorFinal;
}
}
package EjerciciosJava;
import javax.swing.JOptionPane;
Notas: getPlaca: Obtiene la placa del bus getCapacidad: Obtiene la capacidad de pasajeros del
bus getPrecioPasaje: Obtiene el valor del pasaje getPasajerosActuales: Obtiene el nmero de
pasajeros que se encuentra en el bus getPasajerosTotales: Obtiene el nmero 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 ms 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 mtodos.
package EjerciciosJava;
import javax.swing.JOptionPane;
public Bus (String placa, int capacidad, double pasaje, int actuales){
this.placa=placa;
this.capacidadPasajeros=capacidad;
this.precioPasaje=pasaje;
this.pasajerosActuales=actuales;
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){
}
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;
}
}
dineroAcumulado=(pasajerosActuales*precioPasaje);
return dineroAcumulado;
}
if (pasajeros1>pasajerosActuales) {
}
else{
pasajerosActuales=pasajerosActuales-pasajeros1;
}
}
}
package EjerciciosJava;
import javax.swing.JOptionPane;
if (actuales>capacidad) {
bus.bajarPasajeros(pasajeros1);
JOptionPane.showMessageDialog(null,"El dinero acumulado es: $" +
bus.totalDineroAcumulado());
}
}
}
package EjerciciosJava;
import javax.swing.JOptionPane;
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;
/* -----------------------------------/
/ Mtodo para consignar en la cuenta /
/------------------------------------*/
saldoActual=saldoActual+monto;
/* -----------------------------------/
/ Mtodo para saber saldo mnimo /
/------------------------------------*/
double getSaldoMinimo(){
saldoMinimo=valorInicial*0.1;
return saldoMinimo;
/* -----------------------------------/
/ Mtodo para retirar dinero de la cuenta /
/------------------------------------*/
saldoActual=saldoActual-monto1;
if (saldoActual<saldoMinimo) {
saldoActual=saldoActual+monto1;
autorizado=saldoActual-saldoMinimo;
JOptionPane.showMessageDialog(null, "No puede retirar sta cantidad de dinero
porque su saldo actual sera inferior a su saldo mnimo\n"
+ ", por lo tanto solo puede retirar: " + autorizado);
saldoActual=saldoActual-autorizado;
/* ----------------------------------/
/ Mtodo para consultar saldo /
/-----------------------------------*/
double getSaldo(){
return saldoActual;
/* -------------------------------------------/
/ Mtodo para conocer la capacidad de crdito/
/-------------------------------------------*/
double getCapacidadCredito(){
if ("ahorro".equals(tipo)) {
capacidadCredito=saldoActual-saldoMinimo;
if ("credito".equals(tipo)) {
capacidadCredito=saldoActual*3;
return capacidadCredito;
}
}
package EjerciciosJava;
import javax.swing.JOptionPane;
/* --------------------------/
/ 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.getSaldoMinimo();
cuenta.retirar(monto1);
}
}
4. A partir del siguiente diseo, cree las clases correspondientes y su respectivo cdigo para
generar los listados que se solicitan a continuacin:
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
cumplirAos( )
package Ejercicios;
import javax.swing.JOptionPane;
class Banco{
String nombre;
Cliente clientes[];
int numeroDeClientes;
}
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;
package Ejercicios;
}
public String obtRepresentante(){
return representante;
}
public String cambiarRepres(String repres){
return null;
}
public int obtEdad(){
return 1000;
}
package Ejercicios;
}
public String obtRepresentante(){
return null;
package Ejercicios;
import javax.swing.JOptionPane;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
}
}
</BODY>
</HTML>
<CENTER><H1>Calcular la nota final de la materia</H1></CENTER>
<?php
$parcial1=$_POST['parcial1'];
$parcial2=$_POST['parcial2'];
$parcial3=$_POST['parcial3'];
$examenFinal=$_POST['examenFinal'];
$trabajoFinal=$_POST['trabajoFinal'];
$promedioParciales= ($parcial1 + $parcial2 + $parcial3)/3;
$porcentajeParciales= $promedioParciales*0.35;
$porcentajeExamen=$examenFinal*0.35;
$porcentajeTrabajo=$trabajoFinal*0.30;
$notaFinal=$porcentajeParciales+$porcentajeExamen+$porcentajeTrabajo;
if($notaFinal<3){
echo "El estudiante no aprob";
}
else{
echo "El estudiante aprob";
}
?>
</BODY>
</HTML>
$nombre=$_POST['nombre'];
$cantidad=$_POST['cantidad'];
$precioTotal=$_POST['precioTotal'];
$salarioBasico=450000;
$comision=$cantidad*50000;
$porcentajeVenta=$precioTotal*0.05;
$salario=$salarioBasico+$comision+$porcentajeVenta;
?>
3. Basado en el siguiente prototipo, realice la codificacin necesaria para que se calcule y muestre
el ndice de masa corporal junto con la categora en la cual se encuentra el individuo.
El ndice de masa corporal (IMC) es una medida de asociacin entre el peso y la talla de un
individuo. Ideado por el estadstico belgaL. A. J. Quetelet, por lo que tambin se conoce como
ndice de Quetelet, se calcula segn la expresin matemtica: IMC=peso/estatura^2
$nombre=$_POST['nombre'];
$peso=$_POST['peso'];
$estatura=$_POST['estatura'];
$IMC=$peso/($estatura*$estatura);
echo "El indice de masa corporal del paciente es: ".$IMC."<br>";
if($IMC<18.5){
echo "El paciente esta por debajo del peso";
}
else{
if($IMC<24.9){
echo "El paciente esta saludable";
}
else{
if($IMC<29.9){
echo "El paciente esta con sobrepeso";
}
else{
if($IMC<39.9){
echo "El paciente es obeso";
}
else{
echo "El paciente tiene obesidad morbida";
}
}
}
}
?>
4. Realice la codificacin necesaria para Obtener la cantidad de dinero que recibir el rea de
Ginecologa, Traumatologa y Pediatra, para cualquier monto presupuestal, teniendo en cuenta
que el presupuesto anual del hospital se reparte conforme a la sig. tabla: rea Porcentaje del
presupuesto Ginecologa 40% Traumatologa 30% Pediatra 30%
</BODY>
</HTML>
$monto=$_POST['monto'];
$ginecologia=$monto*0.4;
$traumatologia=$monto*0.3;
$pediatria=$monto*0.3;
?>
</BODY>
</HTML>
$nombre=$_POST['nombre'];
$clave=$_POST['clave'];
$precio=$_POST['precio'];
if($clave==1){
$total=$precio-($precio*0.1);
echo "El precio con descuento es: ".$total."<br>";
}
else{
if($clave==2){
$total=$precio-($precio*0.2);
echo "El precio con descuento es: ".$total."<br>";
}
else{
echo "Esa clave no existe";
}
}
?>
Cdigo
if (radioButton1.Checked == true)
{
double horasTrabajadas = Convert.ToDouble(textBox1.Text), nomina
= 0;
if (horasTrabajadas > 40)
{
nomina = (40 * 12000) + ((horasTrabajadas - 40) * (12000 *
0.25 + 12000));
}
else
{
nomina = horasTrabajadas * 12000;
}
label4.Text = "El salario es: $" + nomina;
}
if (radioButton2.Checked == true)
{
double horasTrabajadas = Convert.ToDouble(textBox1.Text), nomina
= 0;
if (horasTrabajadas > 40)
{
nomina = (40 * 17000) + ((horasTrabajadas - 40) * (17000 *
0.25 + 17000));
}
else
{
nomina = horasTrabajadas * 17000;
}
label4.Text = "El salario es: $" + nomina;
}
if (radioButton3.Checked == true)
{
double horasTrabajadas = Convert.ToDouble(textBox1.Text), nomina
= 0;
if (horasTrabajadas > 40)
{
nomina = (40 * 22000) + ((horasTrabajadas - 40) * (22000 *
0.25 + 22000));
}
else
{
nomina = horasTrabajadas * 22000;
}
label4.Text = "El salario es: $" + nomina;
}
}
Prueba de condicin
E1: (Categora=2)
E2: (Horas extras>40)
F1: (Categora=3)
F2: (Horas extras>40)
2. Datos concretos para los casos de prueba
Caso Valor verdadero Valor falso
D1 1 2
D2 41 39
E1 2 3
E2 41 39
F1 3 1
F2 41 39
E1: (Categora=2)
C3.1 Categora=2
E2: (Horas extras>40)
C4.1 Horas extras>40
F1: (Categora=3)
C5.1 Categora=3
Caso de prueba 1:
C1.1=Verdadero; C2.1=Verdadero;
(Categora=1; Horas extras=41)
Caso de prueba 2:
C1.1=Verdadero; C2.1=Falso;
(Categora=1; Horas extras=39)
Caso de prueba 3:
C1.1=Falso; C2.1=Verdadero;
(Categora=2)
Caso de prueba 4:
C3.1=Verdadero; C4.1=Verdadero;
(Categora=2; Horas extras=41)
Caso de prueba 5:
C3.1=Verdadero; C4.1=Falso;
(Categora=2; Horas extras=39)
Caso de prueba 6:
C3.1=Falso; C4.1=Verdadero;
(Categora=3)
Caso de prueba 7:
C5.1=Verdadero; C6.1=Verdadero;
(Categora=3; Horas extras=41)
Caso de prueba 8:
C5.1=Verdadero; C6.1=Falso;
(Categora=3; Horas extras=39)
Caso de prueba 9:
C5.1=Falso; C6.1=Verdadero;
(Categora=1)
Particin de equivalencia
Caso Clase valida Clase invalida
1 Categora =1 Todo lo diferente a 1
2 Horas extras>40 Horas extras<=40
3 Categora =2 Todo lo diferente a 2
4 Horas extras>40 Horas extras<=40
5 Categora =3 Todo lo diferente a 3
6 Horas extras>40 Horas extras<=40
Caso de prueba 1:
1=Valida; 2=Valida;
(Categora=1; Horas extras=41)
Caso de prueba 2:
1=Valida; 2=Invalida;
(Categora=1; Horas extras=39)
Caso de prueba 3:
1= Invalida; 2= Valida;
(Categora=2)
Caso de prueba 4:
3= Valida; 4= Valida;
(Categora=2; Horas extras=41)
Caso de prueba 5:
3= Valida; 4= Invalida;
(Categora=2; Horas extras=39)
Caso de prueba 6:
3= Invalida; 4= Valida;
(Categora=3)
Caso de prueba 7:
5= Valida; 6= Valida;
(Categora=3; Horas extras=41)
Caso de prueba 8:
5= Valida; 6=Invalida;
(Categora=3; Horas extras=39)
Caso de prueba 9:
5=Invalida; 6= Valida;
(Categora=1)
Caso de prueba 1:
1=Verdadero; 2=Verdadero;
(Categora=1; Horas extras=90000.1)
Caso de prueba 2:
1= Verdadero; 2=Falso;
(Categora=1; Horas extras=0.00001)
Caso de prueba 3:
1= Falso; 2= Verdadero;
(Categora=2)
Caso de prueba 4:
3= Verdadero; 4= Verdadero;
(Categora=2; Horas extras=90000.1)
Caso de prueba 5:
3= Verdadero; 4= Falso;
(Categora=2; Horas extras=0.00001)
Caso de prueba 6:
3= Falso; 4= Verdadero;
(Categora=3)
Caso de prueba 7:
5= Verdadero; 6= Verdadero;
(Categora=3; Horas extras=90000.1)
Caso de prueba 8:
5= Verdadero; 6=Falso;
(Categora=3; Horas extras=0.00001)
Caso de prueba 9:
5=Falso; 6= Verdadero;
(Categora=1)
4. Biblioteca.
Convertir a Modelo Relacional los siguientes ejercicios planteados en
Modelo Entidad Relacin.
1. Tienda.