Está en la página 1de 68

Construccin de MER con herramienta Da

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.

Asuma la informacin restante que sea necesaria para construir el MER.

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.

Asuma la informacin restante necesaria para construir el MER

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:

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 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

Diseo de la Arquitectura Logica del Sistema


Diagramas a desarrollar
Segn los enunciados construya:
1. Diagrama de Clases
2. Diagrama de Paquetes
3. Diagrama de Componentes
Enunciado 1
El propietario del centro mdico Humana Vivir requiere un
sistema que permita 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; 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 puede
tambin utilizarse desde dispositivos mviles.

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

LABORATORIO DISEO 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 votacin con dos candidatos y voto en blanco
Modelo Relacional de la Base de Datos
1. Tienda
2. Empresa de transporte de encomiendas

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.

El diagrama anterior representa el funcionamiento de un sistema de informacin 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 travs
del dispositivo RFID, el nodo del dispositivo RFID tiene dos componentes: el reader
que lee la seal y el transponder que comunica la seal; el nodo del servidor de
aplicaciones contiene el componente Asp Net que es una aplicacin empleada para
ejecutar la funcin requerida por el sistema de informacin; el nodo del servidor de
bases de datos tiene un componente de bases de datos en Oracle que administra
la informacin de la bases de datos y el cliente puede acceder por medio de internet
al servidor de aplicaciones.

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.

El diagrama anterior representa el funcionamiento de un sistema de informacin 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 estacin de trabajo y el empleado. El empleado accede a la red para
registrar la compra hecha por el cliente a travs de la estacin de trabajo, la estacin
tiene varios componentes que son el monitor, el teclado, la impresora que imprime
la factura y el lector de cdigo de barras que lee el cdigo de cada artculo. El
servidor de aplicaciones se compone por una aplicacin realizada en Apache
Tomcat y en el nodo de servidor de bases de datos contiene un componente en
Oracle.
Construccin de modelos de bases de datos
RELACIONES ENTRE LAS TABLAS

CONSULTAS

Muestre los salarios de los profesores ordenados por categora.


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 nmero 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 ms 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 categora 1.


SELECT AVG(`sal_prof`) FROM `profesor` WHERE `cate_prof`='1'

Muestre todos los campos de la tabla curso en orden ascendente segn 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 (cdigo 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 direccin de todos aquellos clientes que hayan


realizado un pedido el da 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 aos en marzo.


SELECT * FROM `cliente` WHERE `mes_cum_cli`='Marzo'

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 el nombre del cliente, la fecha y el valor del pedido ms costoso.


SELECT MAX(pedido.val_ped), cliente.nom_cli,pedido.fec_ped, pedido.val_ped F
ROM cliente, pedido WHERE1

Mostrar cuantos artculos se tienen de cada editorial.


SELECT COUNT(`edi_art`) FROM `articulo` WHERE 1
Mostrar los pedidos con los respectivos artculos (cdigo, 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 artculos 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 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'

Visualizar los datos de las empresas fundadas entre el ao 1991 y 1998.


SELECT * FROM `compaia` WHERE `comaofun`>='1991' and `comaofun`<='1
998'

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 ocurridos el 30 de septiembre de 2012, con


su respectivo nmero de pliza, fecha de inicio de la pliza, valor asegurado y valor
de la pliza.
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 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 todos los datos de la pliza ms costosa.


SELECT * FROM `aseguramientos` where 1 ORDER BY `asevalorasegurado` des
c
Visualizar los incidentes con el mnimo nmero de autos involucrados, de este
incidente visualizar el estado de la pliza y el valor asegurado.
SELECT MIN(`incicanautosinvolucrados`),aseguramientos.aseestado,aseguramie
ntos.asevalorasegurado FROM aseguramientos,incidentes WHERE 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 la empresa con nit 899999999-5.


SELECT * FROM `compaia` WHERE `comnit`='899999999-5'

Visualizar los datos de la pliza cuyo valor asegurado es el ms costoso, este


reporte adems de visualizar todos los datos de la pliza, debe presentar todos los
datos del vehculo que tiene dicha pliza.
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 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

USAR LENGUAJE TRANSACCIONAL SOBRE LA BASE


DE DATOS
1. Construya los siguientes procedimientos Almacenados para insercin 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, Compaa,
TiposAutomotores, Automotores, Aseguramientos, Incidentes.
Create procedure seguros() Select * from compaia, 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 categora.
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 direccin de todos aquellos clientes que hayan
realizado un pedido el da 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 todos los pedidos realizados incluyendo el nombre del artculo.
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 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.
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 segn 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 artculos (cdigo, 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 ao 1991 y 1998.
CREATE PROCEDURE empresafundada() SELECT * FROM compaia WHERE c
omaofun>=1991 AND comaofun<=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 pliza 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.asevaloraseguradoFROM incidente
s, aseguramientos WHERE incicantheridos=uno
call incidentesunherido('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.
CREATE PROCEDURE incidentesFLL420(fll varchar(6)) SELECTincidentes.incife
cha,incidentes.incilugar,incidentes.incicantheridos,aseguramientos.asefechainicio,
aseguramientos.asefechaexpiracion,aseguramientos.asevaloraseguradoFROM inc
identes,aseguramientos WHERE inciplaca=fll
call incidentesFLL420('FLL420')
4. Realice las Siguientes funciones en MySQL:
Cuente el nmero 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 ms 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 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`;

5. Realice las Siguientes funciones en ORACLE:


Visualizar el nombre del cliente, la fecha y el valor del pedido ms 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 artculos 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 pliza ms costosa.
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 mnimo nmero de autos involucrados, de este
incidente visualizar el estado de la pliza 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 pliza cuyo valor asegurado es el ms costoso, este
reporte adems de visualizar todos los datos de la pliza, debe presentar todos los
datos del vehculo que tiene dicha pliza.
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 actualizacin y borrado de
registros
En MySQL; para las tablas Profesor, Curso, Estudiante.
Actualizacin:
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.
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

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 programacin 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 aplicacin que presente el siguiente men:
Competencia
1. Registrar Atleta
2. Datos del campen.
3. Atletas por pas
4. Tiempo promedio de todos los atletas
5. Salir

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 {

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; i<totalAtletas; i++){
nombre[i]=JOptionPane.showInputDialog(null, "Ingrese el nombre del Atleta: ");
nacionalidad[i]=JOptionPane.showInputDialog(null, "Ingrese la nacionalidad del Atleta: ");
tiempo[i]=Double.parseDouble(JOptionPane.showInputDialog(null, "Ingrese el tiempo en
minutos del Atleta: "));
sumTiempo=sumTiempo+tiempo[i];
}
//Datos campeon
JOptionPane.showMessageDialog(null, "2. Datos del campeon");
for (int i=0; i<totalAtletas; i++){
if (tiempo[i]>may){
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<totalAtletas; i++){
if (nacionalidadpais == null ? nacionalidad[i] == null :
nacionalidadpais.equals(nacionalidad[i])){
nombreatletapais=nombre[i];
JOptionPane.showMessageDialog(null, "El nombre de un atleta de nacionalidad " +
nacionalidadpais + " es "
+ nombreatletapais);
}
}
//Promedio del tiempo de los atletas
JOptionPane.showMessageDialog(null, "4. Tiempo promedio de todos los atletas");
tiempoPromedio=sumTiempo/totalAtletas;
JOptionPane.showMessageDialog(null, "El tiempo promedio de los atletas fue " +
tiempoPromedio);
JOptionPane.showMessageDialog(null, "5. Salir");
}

}
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.

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 tamaa 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));

}
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;

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 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 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 de tipo ahorro o crdito El saldo mnimo de una cuenta
es el 10% del valor inicial con que se crea la cuenta. Consignar (double monto): 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 mnimo, si esto ocurre, solo se retirar el dinero autorizado. getSaldo(): obtiene el
saldo actual de la cuenta. getSaldoMinimo(): obtiene el saldo mnimo de la cuenta.
getCapacidadCredito(): Para cuentas de ahorro, la capacidad de crdito es igual a la diferencia
entre al saldo actual y el saldo mnimo y para cuentas de crdito, la capacidad de crdito 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 mtodos.

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;

/* -----------------------------------/
/ Mtodo para consignar en la cuenta /
/------------------------------------*/

public void consignar (double monto){

saldoActual=saldoActual+monto;

/* -----------------------------------/
/ Mtodo para saber saldo mnimo /
/------------------------------------*/

double getSaldoMinimo(){

saldoMinimo=valorInicial*0.1;

return saldoMinimo;

/* -----------------------------------/
/ Mtodo para retirar dinero de la cuenta /
/------------------------------------*/

public void retirar (double monto1){

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;

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 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 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<Cliente> 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()<menor){
menor=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 codificacin 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 calificacin del examen final. 30% de la calificacin de un trabajo final. La
materia se aprueba con una nota promedio mnimo de 3, debe mostrar la nota final y el mensaje de
Aprob o No aprob de acuerdo al resultado.

<HEAD><TITLE>Calcular la nota final de la materia</TITLE>


</HEAD>
<BODY >
<CENTER><H1>Calcular la nota final de la materia</H1></CENTER>
<BR>
<BR>
<FORM NAME="ejercicio1" action="procesar.php" METHOD='post'>

Parcial 1: <INPUT TYPE="text" value="" name="parcial1" SIZE="20">


<BR>
<BR>
Parcial 2: <INPUT TYPE="text" value="" name="parcial2" SIZE="20">
<BR>
<BR>
Parcial 3: <INPUT TYPE="text" value="" name="parcial3" SIZE="20">
<BR>
<BR>
Examen Final: <INPUT TYPE="text" NAME="examenFinal" SIZE="20">
<BR>
<BR>
Trabajo Final: <INPUT TYPE="text" NAME="trabajoFinal" SIZE="20">
<BR>
<BR>
<INPUT TYPE="submit" VALUE="Enviar" style='width:80px; height:30px'>

</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;

echo "La nota del parcial 1 es:".$parcial1."<br>";


echo "La nota del parcial 2 es:".$parcial2."<br>";
echo "La nota del parcial 3 es:".$parcial3."<br>";
echo "La nota del examen final es:".$examenFinal."<br>";
echo "La nota del trabajo final es:".$trabajoFinal."<br>";

$porcentajeParciales= $promedioParciales*0.35;
$porcentajeExamen=$examenFinal*0.35;
$porcentajeTrabajo=$trabajoFinal*0.30;
$notaFinal=$porcentajeParciales+$porcentajeExamen+$porcentajeTrabajo;

echo "La nota final es: ".$notaFinal."<br>";

if($notaFinal<3){
echo "El estudiante no aprob";
}
else{
echo "El estudiante aprob";
}

?>

2. Basado en el siguiente prototipo, realice la codificacin necesaria para dar solucin al


requerimiento presentado: Una compaa de venta de automviles paga a su personal de ventas
un salario bsico de $450000 mensuales ms una comisin de $50000 por cada automvil
vendido, ms el 5% del valor de la venta.

<HEAD><TITLE>Calcular el salario de un vendedor</TITLE>


</HEAD>
<BODY >
<CENTER><H1>Calcular el salario de un vendedor</H1></CENTER>
<BR>
<BR>
<FORM NAME="ejercicio2" action="procesar.php" METHOD='post'>

Nombre del vendedor: <INPUT TYPE="text" value="" name="nombre" SIZE="20">


<BR>
<BR>
Cantidad de automoviles vendidos: <INPUT TYPE="text" value="" name="cantidad" SIZE="20">
<BR>
<BR>
Precio total de automoviles vendidos: <INPUT TYPE="text" value="" name="precioTotal"
SIZE="20">
<BR>
<BR>
<INPUT TYPE="submit" VALUE="Enviar" style='width:80px; height:30px'>

</BODY>
</HTML>

<H1>Calcular el salario de un vendedor</H1></CENTER>


<?php

$nombre=$_POST['nombre'];
$cantidad=$_POST['cantidad'];
$precioTotal=$_POST['precioTotal'];

echo "El nombre del vendedor es: ".$nombre."<br>";


echo "La cantidad de automoviles vendidos es: ".$cantidad."<br>";
echo "El precio total de automoviles vendidos es:".$precioTotal."<br>";

$salarioBasico=450000;
$comision=$cantidad*50000;
$porcentajeVenta=$precioTotal*0.05;
$salario=$salarioBasico+$comision+$porcentajeVenta;

echo "El salario del vendedor es: ".$salario."<br>";

?>

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

<HEAD><TITLE>Calcular el indice de masa corporal</TITLE>


</HEAD>
<BODY >
<CENTER><H1>Calcular el indice de masa corporal</H1></CENTER>
<BR>
<BR>
<FORM NAME="ejercicio3" action="procesar.php" METHOD='post'>

Nombre del paciente: <INPUT TYPE="text" value="" name="nombre" SIZE="20">


<BR>
<BR>
Peso en kilogramos: <INPUT TYPE="text" value="" name="peso" SIZE="20">
<BR>
<BR>
Estura en metros: <INPUT TYPE="text" value="" name="estatura" SIZE="20">
<BR>
<BR>
<INPUT TYPE="submit" VALUE="Enviar" style='width:80px; height:30px'>
</BODY>
</HTML>

<CENTER><H1>Calcular el indice de masa corporal</H1></CENTER>


<?php

$nombre=$_POST['nombre'];
$peso=$_POST['peso'];
$estatura=$_POST['estatura'];

echo "El nombre del paciente es: ".$nombre."<br>";


echo "El peso del paciente en kilogramos es: ".$peso."<br>";
echo "La estatura del paciente en metros es:".$estatura."<br>";

$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%

<HEAD><TITLE>Calcular la cantidad de dinero para algunas areas de la salud</TITLE>


</HEAD>
<BODY >
<CENTER><H1>Calcular la cantidad de dinero para algunas areas de la salud</H1></CENTER>
<BR>
<BR>
<FORM NAME="ejercicio4" action="procesar.php" METHOD='post'>

Monto presupuestal: <INPUT TYPE="text" value="" name="monto" SIZE="20">


<BR>
<BR>
<INPUT TYPE="submit" VALUE="Enviar" style='width:80px; height:30px'>

</BODY>
</HTML>

<H1>Calcular la cantidad de dinero para algunas areas de la salud</H1></CENTER>


<?php

$monto=$_POST['monto'];

echo "El monto presupuestal es: ".$monto."<br>";

$ginecologia=$monto*0.4;
$traumatologia=$monto*0.3;
$pediatria=$monto*0.3;

echo "La cantidad de dinero para el area de ginecologia es: ".$ginecologia."<br>";


echo "La cantidad de dinero para el area de traumatologia es: ".$traumatologia."<br>";
echo "La cantidad de dinero para el area de pediatria es: ".$pediatria."<br>";

?>

5. Realice la codificacin necesaria para imprimir el nombre de un artculo, la clave, el precio


original y su precio con descuento. El descuento lo hace en base a la clave, si la clave es 1 el
descuento es del 10% y si la clave es 2 el descuento es del 20% (solo existen dos claves).

<HEAD><TITLE>Calcular el descuento de un articulo</TITLE>


</HEAD>
<BODY >
<CENTER><H1>Calcular el descuento de un articulo</H1></CENTER>
<BR>
<BR>
<FORM NAME="ejercicio5" action="procesar.php" METHOD='post'>

Nombre del articulo: <INPUT TYPE="text" value="" name="nombre" SIZE="20">


<BR>
<BR>
Clave para el descuento (1 para 10% y 2 para 20%): <INPUT TYPE="text" value=""
name="clave" SIZE="20">
<BR>
<BR>
Precio original del descuento: <INPUT TYPE="text" value="" name="precio" SIZE="20">
<BR>
<BR>
<INPUT TYPE="submit" VALUE="Enviar" style='width:80px; height:30px'>

</BODY>
</HTML>

<CENTER><H1>Calcular el descuento de un articulo</H1></CENTER>


<?php

$nombre=$_POST['nombre'];
$clave=$_POST['clave'];
$precio=$_POST['precio'];

echo "El nombre del articulo es: ".$nombre."<br>";


echo "La clave de descuento es: ".$clave."<br>";
echo "El precio original del articulo es: ".$precio."<br>";

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";
}
}

?>

IMPLEMENTACIN DE CASOS DE PRUEBA


IMPLEMENTACIN DE CASOS DE PRUEBA

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 camino bsico


1. Grafo
2. Complejidad ciclomtica
V(G) = #Aristas - #Nodos + 2
V(G) = 15 - 11 + 2
V(G) =6
3. Caminos linealmente independientes:
Existen seis caminos linealmente independientes.
4. Casos de prueba
Aristas
Caminos 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Casos de
prueba
abek 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 C=1; H=1;
S=12000
abfk 1 0 0 0 5 0 0 0 0 0 1 0 0 0 0 C=1; H=41;
S=495000
acgk 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 C=2; H=1;
S=17000
achk 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 C=2; H=41;
S=701250
adik 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 C=3; H=1;
S=22000
adjk 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 C=3; H=41;
S=907500

Prueba de condicin

1. Casos de prueba para cobertura de decisiones


D1: (Categora=1)
D2: (Horas extras>40)

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

3. Casos de prueba para cubrir todas las decisiones


Caso de prueba 1: D1=Verdadero; D2=Verdadero
(Categora=1; Horas extras=41)

Caso de prueba 2: D1=Verdadero; D2=Falso


(Categora=1; Horas extras=39)

Caso de prueba 3: D1=Falso


(Categora=2)

Caso de prueba 4: E1=Verdadero; E2=Verdadero


(Categora=2; Horas extras=41)

Caso de prueba 5: E1=Verdadero; E2=Falso


(Categora=2; Horas extras=39)

Caso de prueba 6: E1=Falso


(Categora=3)

Caso de prueba 7: F1=Verdadero; F2=Verdadero


(Categora=3; Horas extras=41)

Caso de prueba 8: F1=Verdadero; F2=Falso


(Categora=3; Horas extras=39)

Caso de prueba 9: F1=Falso


(Categora=1)

4. Casos de prueba para obtener una cobertura total de decisin/condicin:


D1: (Categora=1)
C1.1 Categora=1

D2: (Horas extras>40)


C2.1 Horas extras>40

E1: (Categora=2)
C3.1 Categora=2
E2: (Horas extras>40)
C4.1 Horas extras>40

F1: (Categora=3)
C5.1 Categora=3

F2: (Horas extras>40)


C6.1 Horas extras>40
4. Datos concretos para los casos de prueba
Caso Valor verdadero Valor falso
C1.1 Categora=1 Categora=2
C2.1 Horas extras=41 Horas extras=39
C3.1 Categora=2 Categora=3
C4.1 Horas extras=41 Horas extras=39
C5.1 Categora=3 Categora=1
C6.1 Horas extras=41 Horas extras=39

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)

Anlisis de valores lmite

Caso Valor verdadero Valor falso


1 Categora=1 Categora=2
2 Horas extras=90000.1 Horas extras=0.00001
3 Categora=2 Categora=3
4 Horas extras=90000.1 Horas extras=0.00001
5 Categora=3 Categora=1
6 Horas extras=90000.1 Horas extras=0.00001

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)

CONSTRUCCIN DE INSTALADOR DE SOFTWARE


Implementacin de casos de prueba
Disear una interfaz de usuario para un sistema de votacin que incluye
tres (3) candidatos, uno de ellos corresponde al voto en blanco.

Disear la interfaz de usuario para la captura de datos cuando una


persona compra un tiquete para un vuelo nacional

Disear la Interfaz de usuario para la captura de los datos del registro


de una persona en un hotel.
Disear la interfaz de usuario para la captura de los datos de un libro que debe ser registrado en
la Biblioteca.

Convertir a Modelo Relacional los siguientes ejercicios planteados en


Modelo Entidad Relacin.

4. Biblioteca.
Convertir a Modelo Relacional los siguientes ejercicios planteados en
Modelo Entidad Relacin.

ejercicio 3 Compaa de Seguros

Convertir a Modelo Relacional los siguientes ejercicios planteados en


Modelo Entidad Relacin.

2. Empresa de transporte de encomiendas.


Convertir a Modelo Relacional los siguientes ejercicios planteados en
Modelo Entidad Relacin.

1. Tienda.