Ayuda por favor!
En primer lugar quisiera saludarles a todos ya que soy nueva tanto en el foro como en el mundo de Java. El caso es que estoy aprendiendo y me he atascado en un problema con el que llevo días y días, pero no lo saco. Aquí se lo expongo y si alguien me pudiese ayudar les estaría muy agradecida. No piensen que soy de esas personas que entran aquí esperando que se lo den todo hecho. Les mando, junto con el enunciado, el intento que he hecho, aunque ya sé que está mal... Un saludo a tod@s!
Desarrollar un sistema de reservas on-line para un cine con una capacidad de 10 personas máximo.
El cine admite dos tipos de reserva: estándar y especial. La diferencia es que la especial, admite un código de descuento que supone una rebaja en el precio de la entrada.
El precio estándar de una entrada es 8€.
Existen varios tipos de código:
DESC0001 supone un descuento de 2€
DESC0005 supone un descuento de 5€
Nota: Definir todos los precios como constantes para facilitar el posterior mantenimiento.
Todas las reservas tienen un identificador que la representa unívocamente. Este identificador, se devolverá al rea-lizar la reserva.
Adicionalmente guardarán el nombre y apellidos de quien hace la reserva. Nota: Para cada entrada se deberá rea-lizar una reserva independiente.
El sistema de reservas debe permitir realizar las siguientes acciones:
- Realizar una reserva (de ambos tipos). Nota: habrá que tener en cuenta si es posible realizar la reserva o no. Si no se pudiera realizar, devolver como identificador -1.
- Cancelar una reserva por identificador.
- Calcular la recaudación potencial si todas las reservas se pagasen.
- Imprimir un listado de los detalles de las reservas (para ello, cada tipo de reserva deberá implementar cómo ha de ser impresa).
Todas las clases implementadas estarán en el paquete Java java.es.core
Por último, desarrollar una clase con el método main, que deberá estar en el paquete Java java.es.main que creará un sistema de reservas, creará una reserva especial y otra estándar, cancelará una de las dos reservas, y mostrará por pantalla la potencial recaudación así como un listado de todas las reservas existentes.
Package java.es.core;
public interface Constantes {
public static final double PRECIO=8.0;
public static final double DESCUENTO1=2.0;
public static final double DESCUENTO2=5.0;
}
package java.es.core;
public abstract class Reserva {
private String nombre=null;
private String apellido=null;
private int id=0;
public void setId(int id)
{
this.id=id;
}
public Reserva(String param1,String param2)
{
nombre=param1;
apellido=param2;
}
public String getNombre()
{
return nombre;
}
public String getApellido()
{
return apellido;
}
public abstract double getPrecio();
}
package java.es.core;
public class ReservaEstandar extends Reserva{
public ReservaEstandar(String param1,String param2)
{
super(param1,param2);
}
public double getPrecio()
{
return Constantes.PRECIO;
}
public String toString()
{
return "Nombre: "+getNombre()+" Apellido: "+getApellido()+"Precio: "+getPrecio();
}
}
package java.es.core;
public class ReservaEspecial extends Reserva{
private String codigo=null;
public ReservaEspecial(String param1,String param2,String param3)
{
super(param1,param2);
codigo=param3;
}
public String getCodigo()
{
return codigo;
}
public boolean equals(Object o)
{
if(this==o)
return true;
if(!(o instanceof ReservaEspecial))
return false;
ReservaEspecial param=(ReservaEspecial)o;
return param.codigo.equals(codigo);
}
public int HashCode()
{
StringBuffer buffer=new StringBuffer();
buffer.append(codigo);
return(codigo).hashCode();
}
public double getPrecio()
{
if(codigo=="DESC0001")
{
return Constantes.PRECIO-Constantes.DESCUENTO1;
}
else if(codigo=="DESC0005")
{
return Constantes.PRECIO-Constantes.DESCUENTO2;
}
else
return Constantes.PRECIO;
}
public String toString()
{
return "Nombre"+getNombre()+" Apellidos: "+getApellido()+" Codigo: "+getCodigo()+"Precio"+getPrecio();
}
}
package java.es.core;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
public class GestorReservas {
private Mapreservas=new HashMap();
private int id=0;
private double recaudacion=0.0;
public int altaReserva(Reserva reserva)
{
reserva.setId(id);
reservas.put(id,reserva);
id++;
return id-1;
}
public void bajaReserva(int id)
{
reservas.remove(id);
}
public double getRecaudacionPotencial()
{
double acum=0.0;
Iteratorit=reservas.values().iterator();
while(it.hasNext())
{
acum=acum+it.next().getPrecio();
}
return acum;
}
public void listarReservas()
{
Iterator it=reservas.values().iterator();
while(it.hasNext())
{
System.out.print(it.next());
System.out.println("");
}
}
}
package java.es.main;
import java.es.core.ReservaEstandar;
import java.es.core.ReservaEspecial;
import java.es.core.GestorReservas;
public class Ejercicio{
public static void main(String[] args) {
GestorReservas gestor=new GestorReservas();
int id1=gestor.altaReserva(new ReservaEstandar("Estela","de la Fuente"));
int id2=gestor.altaReserva(new ReservaEspecial("Santiago","Castrillo","DESC0005"));
int id3=gestor.altaReserva(new ReservaEstandar("Elena","Castrillo"));
gestor.bajaReserva(id1);
System.out.println("Recaudacion potencial: "+gestor.getRecaudacionPotencial());
gestor.listarReservas();
}
}
- Inicie sesión o regístrese para enviar comentarios
Y ¿Donde quieres la ayuda?
Y ¿Donde quieres la ayuda? ¿Que fue lo que no entendiste? ¿Donde te atoraste? Le leei pero no encontre donde dijeras en que parte te da problemas.
Utiliza las etiquetas code y /code para que se resalte la sintaxis y se vea mas bonito :)
El problema que tengo es que
El problema que tengo es que en el enunciado dicen que el número máximo de entradas es 10, y no sé cómo ponerlo, y además tampoco sé como hacer que el programa reconozca los códigos de descuento. Gracias por contestar.
Una pregunta
Hay algo que no me deja tranquilo. Sabes usar interfaces, herencia, manipulas algunas de las colecciones de datos de java como son los mapas pero, ¿Tienes problemas para limitar una entrada? Algo me dice que algo extraño esta pasando....O.o
Total, el punto es que parece ser que no has entendido el problema completamente. ¿Por que no intentas colocar un pseudocodigo del programa? O los pasos que harias para resolverlo.
Te lo pregunto porque sino entiendes el problema al 100%, entonces te sera dificil seguir avanzando en el codigo. Si es asi, sera mejor regresar al problema y volver a plantearlo. Hay que hacerlo hasta que lo entendamos.
Ya como material didactico te dejo un tema que hizo un camarada de la comunidad @OscarRyz Link que te ayudara a comprender el problema.
Si le entiendes al problema, crear el pseudocodigo o los pasos no sera nada complejo ni complicado.
Saludos.