Julia Martínez Reyes
package proyecto;
import javax.swing.JOptionPane;
public class Main {
//establecer la matriz de los asientos
private static int[][] matriz = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } };
public static void main(String[] args) {
//crear pasajeros
Pasajero[] pasajeros = new Pasajero[18];
//seleccionar el vuelo
int vuelo = Integer.parseInt(JOptionPane.showInputDialog(
"Selecciona el vuelo que deseas reservar:\\n" + "1. Bogotá-Medellín\\n" + "2. Medellín-Bogotá"));
int clase;
switch (vuelo) {
case 1:
//seleccionar clase
clase = Integer.parseInt(JOptionPane.showInputDialog(
"Selecciona la clase en la que deseas viajar:\\n" + "1. Primera Clase\\n" + "2. Clase Económica"));
//verificar si hay asientos disponibles en la clase
if (clase == 1 && !DisponiblesPClase()) {
JOptionPane.showMessageDialog(null, "No hay asientos disponibles en la primera clase.");
int respuesta = JOptionPane.showConfirmDialog(null, "¿Deseas ser ubicado en la clase económica?", "Confirmación", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION) {
clase = 2;
} else {
JOptionPane.showMessageDialog(null, "El próximo vuelo disponible es dentro de 9 horas.");
return;
}
} else if (clase == 2 && !DisponiblesEconómica() && !DisponiblesEconómica()) {
JOptionPane.showMessageDialog(null, "No hay asientos disponibles en la clase económica.");
int respuesta = JOptionPane.showConfirmDialog(null, "¿Deseas ser ubicado en la primera clase?", "Confirmación", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION) {
clase = 1;
} else {
JOptionPane.showMessageDialog(null, "El próximo vuelo disponible es dentro de 9 horas.");
return;
}
}
//switch para decirle al usuario cuales asientos puede escoger depediendo de la clase
switch (clase) {
case 1:
JOptionPane.showMessageDialog(null, "Escoge tu asiento en la primera fila");
break;
case 2:
JOptionPane.showMessageDialog(null, "Escoge tu asiento en la segunda o tercera fila");
break;
}
//llamar metodo para escoger asiento
EscogerAsiento(pasajeros, vuelo);
break;
//mismo código que el primer vuelo
case 2:
clase = Integer.parseInt(JOptionPane.showInputDialog(
"Selecciona la clase en la que deseas viajar:\\n" + "1. Primera Clase\\n" + "2. Clase Económica"))
if (clase == 1 && !DisponiblesPClase()) {
JOptionPane.showMessageDialog(null, "No hay asientos disponibles en la primera clase.");
int respuesta = JOptionPane.showConfirmDialog(null, "¿Deseas ser ubicado en la clase económica?", "Confirmación", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION) {
clase = 2;
} else {
JOptionPane.showMessageDialog(null, "El próximo vuelo disponible es dentro de 9 horas.");
return;
}
} else if (clase == 2 && !DisponiblesEconómica() && !DisponiblesEconómica()) {
JOptionPane.showMessageDialog(null, "No hay asientos disponibles en la clase económica.");
int respuesta = JOptionPane.showConfirmDialog(null, "¿Deseas ser ubicado en la primera clase?", "Confirmación", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION) {
clase = 1;
} else {
JOptionPane.showMessageDialog(null, "El próximo vuelo disponible es dentro de 9 horas.");
return;
}
}
switch (clase) {
case 1:
JOptionPane.showMessageDialog(null, "Escoge tu asiento en la primera fila");
break;
case 2:
JOptionPane.showMessageDialog(null, "Escoge tu asiento en la segunda o tercera fila");
break;
}
EscogerAsiento(pasajeros, vuelo);
break;
}
}
//verificar asientos disponibles en la primera clase
private static boolean DisponiblesPClase() {
// Verificar solo la primera fila de la matriz (fila 0)
for (int j = 0; j < matriz[0].length; j++) {
if (matriz[0][j] == 0) {
return true;
}
}
return false;
}
//verificar asientos disponibles en la clase económica
private static boolean DisponiblesEconómica() {
// Verificar las filas 1 y 2 de la matriz (segunda y tercera fila)
for (int i = 1; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
if (matriz[i][j] == 0) {
return true;
}
}
}
return false;
}
//método para escoger asientos
private static void EscogerAsiento(Pasajero[] pasajeros, int vuelo) {
//imprimir matriz pra mostrar asientos disponibles
System.out.println("Los asientos disponibles son:");
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
System.out.print(matriz[i][j] + " ");
}
System.out.println();
}
// función para escoger el asiento
String entrada = JOptionPane
.showInputDialog("Escoge tu asiento (nombra fila y columna separadas por un espacio)");
String[] coordenadas = entrada.split(" ");
int fila = Integer.parseInt(coordenadas[0]) - 1; // Restar 1 para cambiar de 1-based a 0-based
int columna = Integer.parseInt(coordenadas[1]) - 1; // Restar 1 para cambiar de 1-based a 0-based
// Verificar si el asiento está ocupado
while (matriz[fila][columna] == 1) {
JOptionPane.showMessageDialog(null, "El asiento ya está ocupado. Por favor, selecciona otro asiento.");
entrada = JOptionPane.showInputDialog("Escoge tu asiento (nombra fila y columna separadas por un espacio)");
coordenadas = entrada.split(" ");
fila = Integer.parseInt(coordenadas[0]) - 1; // Restar 1 para cambiar de 1-based a 0-based
columna = Integer.parseInt(coordenadas[1]) - 1; // Restar 1 para cambiar de 1-based a 0-based
}
// Crear un objeto Asiento con la fila y columna escogidas
Asiento asientoEscogido = new Asiento(fila, columna);
// Guardar el asiento escogido en el objeto Pasajero correspondiente
pasajeros[vuelo - 1] = new Pasajero();
pasajeros[vuelo - 1].setAsiento(asientoEscogido);
// Cambiar el valor de la matriz en la posición elegida de 0 a 1
matriz[fila][columna] = 1; // Actualizar la matriz con el asiento seleccionado
// Mostrar la matriz actualizada
System.out.println("El asiento escogido es:");
imprimirMatriz(matriz);
// Pedir al usuario que ingrese su nombre
String nombre = JOptionPane.showInputDialog("Ingresa tu nombre");
pasajeros[vuelo - 1].setNombre(nombre);
// Preguntar al usuario si desea escoger otro asiento
int respuesta = JOptionPane.showConfirmDialog(null, "¿Deseas escoger otro asiento?", "Confirmación", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION) {
EscogerAsiento(pasajeros, vuelo);
} else {
//compra de tiquetes
int comprar = JOptionPane.showConfirmDialog(null, "¿Deseas comprar ese/esos asiento/s?", "Confirmación", JOptionPane.YES_NO_OPTION);
if (comprar == JOptionPane.YES_OPTION) {
JOptionPane.showMessageDialog(null, "Realizando la transacción...");
JOptionPane.showMessageDialog(null, "¡Tus tiquetes han sido comprados!\\n" + "Ten un buen viaje");
} else {
JOptionPane.showMessageDialog(null, "Transacción cancelada");
return; // Salir de la función si la transacción es cancelada
}
}
}
// método para imprimir la matriz
private static void imprimirMatriz(int[][] matriz) {
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
System.out.print(matriz[i][j] + " ");
}
System.out.println();
}
}
}
package proyecto;
public class Pasajero {
//atributos
private String nombre;
private Asiento asiento;
// constructores para inicializar
public Pasajero() {
this.nombre = "";
this.asiento = new Asiento();
}
public Pasajero(String nombre, Asiento asiento) {
this.nombre = nombre;
this.asiento = asiento;
}
//getters y setters
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Asiento getAsiento() {
return asiento;
}
public void setAsiento(Asiento asiento) {
this.asiento = asiento;
}
}
package proyecto;
public class Asiento {
//atributos
private int fila;
private int columna;
private int[][] matriz;
//constructor
public Asiento(int fila, int columna) {
this.fila = fila;
this.columna = columna;
this.matriz = new int[3][3];
}
//getters y setters
public int getFila() {
return fila;
}
public void setFila(int fila) {
this.fila = fila;
}
public int getColumna() {
return columna;
}
public void setColumna(int columna) {
this.columna = columna;
}
public int[][] getMatriz() {
return matriz;
}
public void setMatriz(int[][] matriz) {
this.matriz = matriz;
}
}