Sistema de Venta de Pasajes de Bus en C++: Asientos Ejecutivos y Cama

Informática3,34 KB

Sistema de venta de pasajes de bus en C++

A continuación se presenta un programa en C++ que simula la venta de pasajes en un bus con 40 asientos, distribuidos en asientos Ejecutivos (E) y asientos Cama (C).

Código fuente

#include <iostream>
using namespace std;

class Asiento {
  private:
    char tipo; // E Ejecutivo, C Cama
    bool estado; // true desocupado, false ocupado
  public:
    Asiento(char tipo)
    {
      this->tipo = tipo;
      estado = true;
    }
    void setEstado(bool estado)
    {
      this->estado = estado;
    }
    bool getEstado()
    {
      return estado;
    }
    char getTipo()
    {
      return tipo;
    }
    void setTipo(char tipo)
    {
      this->tipo = tipo;
    }
};

class Bus
{
  private:
    Asiento *lista[40];
  public:
    Bus()
    {
      int i;
      for (i = 0; i < 40; i++)
      {
        if (i <= 9)
        {
          lista[i] = new Asiento('E');
        }
        else
        {
          lista[i] = new Asiento('C');
        }
      }
    }
    void comprarPasaje(int numero, char tipo)
    {
      if (lista[numero]->getTipo() == tipo)
      {
        if (lista[numero]->getEstado() == true)
        {
          lista[numero]->setEstado(false);
          cout << "Pasaje comprado" << endl;
        }
        else
        {
          cout << "El asiento ya está ocupado" << endl;
        }
      }
      else
      {
        cout << "Número no corresponde a tipo seleccionado" << endl;
      }
    }
    void listarBus()
    {
      int i;
      for (i = 0; i < 40; i++)
      {
        if (lista[i]->getEstado() == false)
        {
          cout << "Asiento " << i << " ocupado" << endl;
        }
        else
        {
          cout << "Asiento " << i << " desocupado" << endl;
        }
      }
    }
    int obDisponibles()
    {
      int disp = 0;
      int i;
      for (i = 0; i < 40; i++)
      {
        if (lista[i]->getEstado() == true)
        {
          disp++;
        }
      }
      return disp;
    }
};

int main()
{
  Bus *b = new Bus();
  b->listarBus();
  while (b->obDisponibles() > 0)
  {
    char tipo;
    int numero;
    cout << "¿Qué tipo de asiento quiere?" << endl;
    cin >> tipo;
    cout << "¿Qué número quiere?" << endl;
    cin >> numero;
    b->comprarPasaje(numero, tipo);
  }
  system("pause");
}

Descripción de las clases

Clase Asiento

Representa un asiento individual del bus. Cada asiento almacena su tipo (E o C) y su estado (desocupado o ocupado).

Clase Bus

Contiene un arreglo de 40 asientos. Los primeros 10 asientos (0 a 9) son de tipo Ejecutivo y los restantes son de tipo Cama. Además, permite comprar pasajes, listar el estado de los asientos y contar los asientos disponibles.

Funcionamiento

  • Al iniciar, se muestran todos los asientos con su estado.
  • El usuario ingresa el tipo de asiento deseado y el número.
  • El programa valida que el número corresponda al tipo solicitado y que el asiento esté libre.
  • El proceso se repite mientras existan asientos disponibles.

Descargar

PDF Word HTML