Вы находитесь на странице: 1из 11

Carrera: Tecnicatura Superior en Programacin

Materia: Laboratorio de Computacin III


Profesores: Diego Serrano Christian Schneider

Clase: 6
Fecha: 18/04/16

Ejercitacin

Prctico
1. Una biblioteca necesita un software que le permita registrar los datos de los libros que posee y de sus prstamos. De cada libro conoce su ttulo, precio de reposicin (para el caso de extravos o daos) y estado (1:
disponible, 2: prestado, 3: extraviado).
Por otro lado, cada vez que un libro es prestado se registra el nombre del solicitante, la cantidad de das del
prstamo y si fue devuelto o no. El conjunto de prstamos debe ser almacenado como un atributo del libro en
cuestin.
Se necesita entonces un programa en Java que solicite por teclado los datos de los libros y sus prstamos y
luego de nalizada la carga informe:
(a) Cantidad de libros en cada estado (tres totales)
(b) Sumatoria del precio de reposicin de todos los libros extraviados
(c) Nombre de todos los solicitantes de un libro en particular identicado por su ttulo
(d) Promedio de veces que fueron prestados los libros de la biblioteca. Es decir, se debe responder a la
consulta de cuntas veces es prestado en promedio cada libro
Biblioteca

Libro

- libros: Libro[]

- titulo: String
- precio: int
- estado: int
- prestamos: Prestamo[]

+ constructor( cantidadLibros: int )


+ agregarLibro(l: Libro)
+ cantidadLibros(estado: int): int
+ cantidadLibrosPorEstado(): int[]
+ listadoSolicitantes(titulo: String): String
+ promedioPrestamos(): oat
+ sumaPrecioExtraviados(): oat

+ constructor( cantidadPrestamos: int )


+ agregarPrestamo(nuevo: Prestamo)
+ listadoSolicitantes(): String
+ cantidadPrestamos(): int

Principal

Prestamo

- bib: Biblioteca

- solicitante: String
- cantidadDias: int
- devuelto: boolean

+main()

+ constructor
+ get / set
+ toString()

Laboratorio de Computacin III

Clase 6

Clase Biblioteca
package entidades ;
public class Biblioteca {
private Libro [] libros ;
public Biblioteca ( int cantidadLibros ) {
libros = new Libro [ cantidadLibros ];
}
public void agregarLibro ( Libro l) {
for ( int i = 0; i < libros . length ; i ++) {
if ( libros [i] == null ) {
libros [i] = l;
break ;
}
}
}
public int cantidadLibros ( int estado ) {
int c = 0;
for ( Libro l : libros ) {
if (l != null && l. getEstado () == estado ) {
c ++;
}
}
return c;
}
public int [] cantidadLibrosPorEstado () {
int c [] = {0 , 0, 0};
for ( Libro l : libros ) {
if (l != null ) {
switch (l. getEstado () ) {
case 0: c [0]++; break ;
case 1: c [1]++; break ;
case 2: c [2]++; break ;
}
}
}
return c;
}
public float sumaPrecioExtraviados () {
float acPrecio = 0;
for ( Libro l : libros ) {
if (l != null && l. getEstado () == 3) {
acPrecio += l. getPrecio () ;
}
}
return acPrecio ;
}
public String listadoSolicitantes ( String titulo ) {
String listado = " No se encuentra ";

Laboratorio de Computacin III

Clase 6

for ( Libro l : libros ) {


if (l != null && l. getTitulo () . equalsIgnoreCase ( titulo )) {
listado = l. listadoSolicitantes () ;
break ;
}
}
return listado ;
}
public float promedioPrestamos () {
int c = 0, ac = 0;
for ( int i = 0; i < libros . length ; i ++) {
if ( libros [i] != null ) {
c ++;
ac += libros [i ]. cantidadPrestamos () ;
}
}
float promedio = 0;
if (c != 0) {
promedio = ( float ) ac / c;
}
return promedio ;
}
}

Clase Libro
package entidades ;
public class Libro {
private
private
private
private

String titulo ;
float precio ;
int estado ;
Prestamo [] prestamos ;

public String getTitulo () {


return titulo ;
}
public void setTitulo ( String titulo ) {
this . titulo = titulo ;
}
public float getPrecio () {
return precio ;
}
public void setPrecio ( float precio ) {
this . precio = precio ;
}
public int getEstado () {
return estado ;
}
public void setEstado ( int estado ) {
this . estado = estado ;

Laboratorio de Computacin III

Clase 6

}
public Libro ( String titulo , float precio , int estado , int cantidadPrestamos ) {
this . titulo = titulo ;
this . precio = precio ;
this . estado = estado ;
prestamos = new Prestamo [ cantidadPrestamos ];
}
public void agregarPrestamo ( Prestamo p) {
for ( int i = 0; i < prestamos . length ; i ++) {
if ( prestamos [i] == null ) {
prestamos [i] = p;
break ;
}
}
}
public String listadoSolicitantes () {
StringBuffer salida = new StringBuffer () ;
salida . append ("[");
for ( Prestamo p : prestamos ) {
salida . append (p. getSolicitante () + "\n");
}
salida . append ("]");
return salida . toString () ;
}
public int cantidadPrestamos () {
int c = 0;
for ( int i = 0; i < prestamos . length ; i ++) {
if ( prestamos [i] != null ) {
c ++;
}
}
return c;
}
@Override
public String toString () {
return " Libro {" + " titulo =" + titulo + " , precio =" + precio + " , estado =" + estado
+ } ;
}
}

Laboratorio de Computacin III

Clase 6

Clase Principal
package interfaz ;
import entidades .*;
import java . util . Scanner ;
public class Parcial1Manana {
public static void main ( String [] args ) {
Scanner sc = new Scanner ( System . in );
System . out . println (" Ingrese la cantidad de libros ");
int cantidadLibros = sc . nextInt () ;
Biblioteca biblio = new Biblioteca ( cantidadLibros );
for ( int i = 0; i < cantidadLibros ; i ++) {
System . out . println (" Libro Nro . " + i);
System . out . println (" Ingrese titulo del libro ");
String titulo = sc . next () ;
System . out . println (" Ingrese precio de reposicin ");
float precio = sc . nextFloat () ;
System . out . println (" Ingrese estado (1: disponible , 2: prestado , 3: extraviado )
");
int estado = sc . nextInt () ;
System . out . println (" Ingrese cantidad de prestamos ");
int cantidadPrestamos = sc . nextInt () ;
Libro l = new Libro ( titulo , precio , estado , cantidadPrestamos );
for ( int j = 0; j < cantidadPrestamos ; j ++) {
System . out . println (" Prestamo Nro . " + j);
System . out . println (" Ingrese el nombre del solicitante ");
String nombre = sc . next () ;
System . out . println (" Ingrese los dias del prestamo ");
int dias = sc . nextInt () ;
System . out . println (" Ingrese 1 si fue devuelto y 0 si no ");
int devu = sc . nextInt () ;
boolean devuelto = false ;
if ( devu == 1) devuelto = true ;
Prestamo pr = new Prestamo ( nombre , dias , devuelto );
l. agregarPrestamo ( pr );
}
biblio . agregarLibro (l);
}
System . out . println (" Ingrese el ttulo del libro a buscar : ");
String tituloBuscado = sc . next () ;
System . out . println (" RESULTADOS ");
System . out . println (" Cantidad de libros disponibles : " + biblio . cantidadLibros (1) ) ;
System . out . println (" Cantidad de libros prestados : " + biblio . cantidadLibros (2) ) ;
System . out . println (" Cantidad de libros extraviados : " + biblio . cantidadLibros (3) ) ;
System . out . println (" Suma de los precios de los extraviados : " + biblio .
sumaPrecioExtraviados () );
System . out . println (" Solicitantes del libro " + tituloBuscado + ": "+ biblio .
listadoSolicitantes ( tituloBuscado ));
System . out . println (" Promedio general de prestamos : " + biblio . promedioPrestamos () )
;
}
}

Laboratorio de Computacin III

Clase 6

Tarea
1. En una municipalidad otorgan planes de pagos a los contribuyentes que adeudan impuestos. De cada plan
se conoce el nombre del contribuyente, el total de la deuda, la cantidad de cuotas y una lista de las cuotas
pagadas.
A su vez, cada vez que un deudor efecta un pago se registran los datos correspondientes a la operacin.
De cada pago se conoce la demora, el importe pagado y el importe de intereses adicionales. Cuando el pago
se realiza el da del vencimiento o antes, la demora equivale a 0 y en caso contrario a la cantidad de das
transcurridos entre el vencimiento y el pago. Cuando el pago se realiza en fecha, no se cobran intereses
adicionales, pero si hay demora se le cobra un 0,5% del importe de la cuota por da.
La municipalidad necesita un software que le permita registrar los datos de todos los planes emitidos y de los
pagos recibidos. Asimismo el software debe poder calcular el importe de los intereses adicionales a partir de
la cantidad de das de demora.
Se debe desarrollar un programa en Java que solicite por teclado los datos de los planes y de los pagos y
luego de nalizada la carga informe:
(a) Cantidad de planes pagados en su totalidad (es decir, que tengan tantos pagos recibidos como la cantidad
de cuotas pactadas)
(b) Sumatoria de las deudas registradas
(c) Listado de todos los pagos efectuados por un contribuyente en particular
(d) Promedio general de intereses adicionales cobrados
Plan
Municipalidad
- planes: Plan[]
+ constructor( cantidadPlanes: int )
+ agregarPlan(p: Plan)
+ cantidadPlanesPagados(): int
+ sumatoriaDeuda(): oat
+ listadoPagosContribuyente(nombre: String): String
+ promedioIntereses(): oat

Principal

- nombre: String
- deuda: oat
- cuotas: int
- pagos: Pago[]
+ constructor(cantidadPagos: int)
+ agregarPago(p: Pago)
+ estaPagadoTotalmente(): boolean
+ listadoPagos(): String
+ sumaInteresesCobrados(): oat

Pago

- muni: Municipalidad

- demora: int
- importe: oat
- interesesAdicionales: oat

+main()

+ constructor
+ get / set
+ toString()

Laboratorio de Computacin III

Clase 6

Clase Municipalidad
package entidades ;
public class Municipalidad {
private Plan [] planes ;
public Municipalidad ( int cantidadPlanes ) {
planes = new Plan [ cantidadPlanes ];
}
public void agregarPlan ( Plan p) {
for ( int i = 0; i < planes . length ; i ++) {
if ( planes [i] == null ) {
planes [i] = p;
break ;
}
}
}
public int cantidadPlanesPagados () {
int c = 0;
for ( Plan p : planes ) {
if (p != null && p. estaPagadoTotalmente () ) {
c ++;
}
}
return c;
}
public float sumatoriaDeuda () {
float ac = 0;
for ( Plan p : planes ) {
if (p != null ) {
ac += p. getDeuda () ;
}
}
return ac ;
}
public String listadoPagosContribuyente ( String nombre ) {
String salida = " No se encuentra ";
for ( Plan p: planes ) {
if (p != null && p. getNombre () . equalsIgnoreCase ( nombre ))
salida = p. listadoPagos () ;
}
return salida ;
}
public float promedioIntereses () {
float ac = 0;
int c = 0;
for ( Plan p: planes ) {
if (p != null ) {
ac += p. sumaInteresesCobrados () ;
c ++;

Laboratorio de Computacin III

Clase 6

}
}
float promedio = 0;
if (c != 0)
promedio = ac / c;
return promedio ;
}
}

Clase Plan
package entidades ;
public class Plan {
private
private
private
private

String nombre ;
float deuda ;
int cuotas ;
Pago [] pagos ;

public Plan ( String nombre , float deuda , int cuotas , int cantidadPagos ) {
this . nombre = nombre ;
this . deuda = deuda ;
this . cuotas = cuotas ;
this . pagos = new Pago [ cantidadPagos ];
}
public String getNombre () {
return nombre ;
}
public void setNombre ( String nombre ) {
this . nombre = nombre ;
}
public float getDeuda () {
return deuda ;
}
public void setDeuda ( float deuda ) {
this . deuda = deuda ;
}
public int getCuotas () {
return cuotas ;
}
public void setCuotas ( int cuotas ) {
this . cuotas = cuotas ;
}
public void agregarPago ( Pago p) {
for ( int i = 0; i < pagos . length ; i ++) {
if ( pagos [i] == null ) {
pagos [i] = p;
break ;
}
}

Laboratorio de Computacin III

Clase 6

}
public boolean estaPagadoTotalmente () {
int c = 0;
for ( int i = 0; i < pagos . length ; i ++) {
if ( pagos [i] == null ) {
c ++;
}
}
if ( cuotas == c) {
return true ;
} else {
return false ;
}
}
public String listadoPagos () {
StringBuffer salida = new StringBuffer () ;
salida . append ("[");
for ( Pago pago : pagos ) {
if ( pago != null ) {
salida . append ( pago . toString () + "\n");
}
}
salida . append ("]");
return salida . toString () ;
}
public float sumaInteresesCobrados () {
float acumIntereses = 0f;
for ( Pago pago : pagos ) {
if ( pago != null ) {
acumIntereses += pago . getInteresesAdicionales () ;
}
}
return acumIntereses ;
}
}

Laboratorio de Computacin III

Clase 6

Clase Pago
package entidades ;
public class Pago {
private int demora ;
private float importe ;
private float interesesAdicionales ;
public Pago ( int demora , float importe ) {
this . demora = demora ;
this . importe = importe ;
if ( demora == 0)
interesesAdicionales = 0f;
else
interesesAdicionales = importe * 0.005 f * demora ;
}
public int getDemora () {
return demora ;
}
public void setDemora ( int demora ) {
this . demora = demora ;
}
public float getImporte () {
return importe ;
}
public void setImporte ( float importe ) {
this . importe = importe ;
}
public float getInteresesAdicionales () {
return interesesAdicionales ;
}
@Override
public String toString () {
return " Pago {" + " demora =" + demora + " , importe =" + importe + " ,
interesesAdicionales =" + interesesAdicionales + } ;
}
}

10

Laboratorio de Computacin III

Clase 6

Clase Principal
package interfaz ;
import entidades .*;
import java . util . Scanner ;
public class Parcial1Noche {
public static void main ( String [] args ) {
Scanner sc = new Scanner ( System . in );
System . out . println (" Ingrese la cantidad de planes ");
int cantidadPlanes = sc . nextInt () ;
Municipalidad muni = new Municipalidad ( cantidadPlanes );
for ( int i = 0; i < cantidadPlanes ; i ++) {
System . out . println (" Plan Nro . " + i);
System . out . println (" Ingrese nombre del contribuyente ");
String nombre = sc . next () ;
System . out . println (" Ingrese total de la deuda ");
float deuda = sc . nextFloat () ;
System . out . println (" Ingrese cantidad de cuotas ");
int cuotas = sc . nextInt () ;
System . out . println (" Ingrese cantidad de cuotas pagadas ");
int pagos = sc . nextInt () ;
Plan p = new Plan ( nombre , deuda , cuotas , pagos );
for ( int j = 0; j < pagos ; j ++) {
System . out . println (" Pago Nro . " + j);
System . out . println (" Ingrese el importe pagado ");
float importe = sc . nextFloat () ;
System . out . println (" Ingrese los dias de demora ");
int demora = sc . nextInt () ;
Pago pa = new Pago ( demora , importe );
p. agregarPago ( pa );
}
muni . agregarPlan (p);
}
System . out . println (" Ingrese nombre del contribuyente a buscar : ");
String nombreBuscado = sc . next () ;
System . out . println (" RESULTADOS ");
System . out . println (" Cantidad de planes pagados en su totalidad : " + muni .
cantidadPlanesPagados () );
System . out . println (" Suma de todas las deudas : " + muni . sumatoriaDeuda () );
System . out . println (" Pagos del plan de " + nombreBuscado + ": "+ muni .
listadoPagosContribuyente ( nombreBuscado ));
System . out . println (" Promedio general de intereses : " + muni . promedioIntereses () ) ;
}
}

11

Вам также может понравиться