Voy a poner la letra de lo que tengo que hacer, y a continuacion el codigo de las clases.
Espero que me digan que cambiarian ustedes, quiero hacerlo perfecto esta entrega. :P
Cita:
class.vuelo.phpUna empresa de ventas de pasajes aereos solicita una aplicacion web, que permita la reserva de pasajes via Internet. Luego de reunirnos en varias oportunidades con los encargados de la empresa acordamos en realizar la misma con la siguiente informacion:
1) La empresa desea almacenar los vuelos, los que tienen un numero (unico) una fecha, una hora y un destino.
2) Para cada vuelo la empresa permite realizar via Web reservas, de las que se conoce el vuelo, el asiento, y la fila (estos tres datos hacen unica la reserva), el documento de identidad, el nombre y el apellido.
3) Asi mismo al empresa manifiesta la necesidad de obtener la siguiente informacion resultante del sistema:
a) Dado un vuelo la cantidad de asientos reservados y libres del mismo.
b) Dado una cedula de identidad, los pasajes reservados por ese mismo apsajero en todos los vuelos.
c) El vuelo con mayor cantidad de asientos reservados.
d) El vuelo con la menor cantidad de asientos reservados.
f) El listado de pasajeros de un vuelo dado
Se pide:
1) Dar de alta, baja, modificar y visualizar los vuelos que la empresa maneja con la informacion que nos suministraron para ellos. Importante no se puede dar de baja un vuelo que tenga reservas realizadas.
2) Dar de alta, baja, modificar y visualizar las reservas sobre los vuelos, definidos en el punto 1.
3) Poder ejecutar los listados solicitados sobre la informacion cargada
1) La empresa desea almacenar los vuelos, los que tienen un numero (unico) una fecha, una hora y un destino.
2) Para cada vuelo la empresa permite realizar via Web reservas, de las que se conoce el vuelo, el asiento, y la fila (estos tres datos hacen unica la reserva), el documento de identidad, el nombre y el apellido.
3) Asi mismo al empresa manifiesta la necesidad de obtener la siguiente informacion resultante del sistema:
a) Dado un vuelo la cantidad de asientos reservados y libres del mismo.
b) Dado una cedula de identidad, los pasajes reservados por ese mismo apsajero en todos los vuelos.
c) El vuelo con mayor cantidad de asientos reservados.
d) El vuelo con la menor cantidad de asientos reservados.
f) El listado de pasajeros de un vuelo dado
Se pide:
1) Dar de alta, baja, modificar y visualizar los vuelos que la empresa maneja con la informacion que nos suministraron para ellos. Importante no se puede dar de baja un vuelo que tenga reservas realizadas.
2) Dar de alta, baja, modificar y visualizar las reservas sobre los vuelos, definidos en el punto 1.
3) Poder ejecutar los listados solicitados sobre la informacion cargada
Código PHP:
<?php
final class Vuelo {
private $unaColReservas;
private $mNumero;
private $mFecha;
private $mHora;
private $mAsientos;
private $mDestino;
public function getAtributo($atributo)
{
return $this->$atributo;
}
public function __construct($numero, $fecha, $hora, $asientos, $destino)
{
$this->mNumero = $numero;
$this->mFecha = $fecha;
$this->mHora = $hora;
$this->mAsientos = $asientos;
$this->mDestino = $destino;
if ($this->__tieneReservas())
$result = mysql_db::sql_query("select * from reservas WHERE idvuelo='". $this->mNumero . "' ORDER by apellido ASC");
while ($row = mysql_db::sql_fetchrow($result))
{
$pasajero = new Pasajero($row[documento], $row[nombre], $row[apellido]);
$reserva = new Reserva($row[idvuelo], $row[asiento], $row[fila], $pasajero);
$this->unaColReservas[] = $reserva;
}
}
public function AgregarDB()
{
$retorno = false;
$result = mysql_db::sql_query("INSERT INTO `vuelos` (`id`, `fecha`,`hora`,`asientos`,`destino`) VALUES ('". $this->mNumero . "', '". $this->mFecha . "', '" . $this->mHora . "', '". $this->mAsientos . "', '". $this->mDestino . "');");
if ($result)
{
$retorno = true;
}
return $retorno;
}
public function borrarDB()
{
$retorno= false;
if (!$this->__tieneReservas())
{
$result = mysql_db::sql_query("DELETE FROM `vuelos` WHERE id='". $this->mNumero . "'");
if ($result)
{
$retorno = true;
}
}
else
{
die("Este vuelo no puede ser borrado porque tiene reservas hechas");
}
return $retorno;
}
public function modificarDB($fecha, $hora, $destino)
{
$retorno = false;
$result = mysql_db::sql_query("UPDATE `vuelos` SET `fecha` = '$fecha', `hora` = ' $hora', `destino` = '$destino' WHERE id='". $this->mNumero . "'");
if ($result)
{
$this->mFecha = $fecha;
$this->mHora = $hora;
$this->mDestino = $destino;
$retorno = true;
}
return $retorno;
}
public function __tieneReservas()
{
$result = mysql_db::sql_query("select * from reservas WHERE idvuelo='". $this->mNumero . "'");
$retorno = false;
if (mysql_db::sql_numrows($result))
$retorno = true;
return $retorno;
}
public function __toString()
{
return "Vuelo n. <b>" . $this->mNumero . "</b> - Fecha: <b>" . $this->mFecha . "</b> - Hora: <b>" . $this->mHora . "</b> - Destino: <b>" . $this->mDestino . "</b>";
}
}
?>
Código PHP:
<?php
final class Reserva {
private $mNumero;
private $mAsiento;
private $mFila;
private $mPasajero;
public function getAtributo($atributo)
{
return $this->$atributo;
}
public function __construct($numero, $asiento, $fila, $pasajero)
{
$this->mNumero = $numero;
$this->mAsiento = $asiento;
$this->mFila = $fila;
$this->mPasajero = $pasajero;
}
public function AgregarDB()
{
$retorno = false;
if ($this->__comprobarDisponibilidad())
{
$result = mysql_db::sql_query("select asiento, fila from reservas WHERE idvuelo='". $this->mNumero . "' AND (asiento='". $this->mAsiento . "' AND fila='". $this->mFila . "')");
if (mysql_db::sql_numrows($result)==0)
{
$numero = $this->mNumero;
$asiento = $this->mAsiento;
$fila = $this->mFila;
$documento = $this->mPasajero->getAtributo('mDocumento');
$nombre = $this->mPasajero->getAtributo('mNombre');
$apellido = $this->mPasajero->getAtributo('mApellido');
$result = mysql_db::sql_query("INSERT INTO `reservas` (`idvuelo`,`asiento`,`fila`,`documento`,`nombre`,`apellido`) VALUES ('$numero','$asiento','$fila','$documento','$nombre','$apellido');");
if ($result)
{
$retorno = true;
}
}
else
{
die("Actualmente hay una reserva en ese asiento de la fila <b>$fila</b>");
}
}
else
{
die("No hay cupos disponibles para esta reserva");
}
return $retorno;
}
public function modificarDB($asiento, $fila, $pasajero)
{
$retorno = false;
$documento = $pasajero->getAtributo('mDocumento');
$nombre = $pasajero->getAtributo('mNombre');
$apellido = $pasajero->getAtributo('mApellido');
$result = mysql_db::sql_query("UPDATE `reservas` SET `asiento` = '$asiento', `fila` = '$fila', `documento` = '$documento', `nombre` = '$nombre', `apellido` = '$apellido'");
if ($result)
{
$this->mAsiento = $asiento;
$this->mFila = $fila;
$this->mPasajero = $pasajero;
$retorno = true;
}
return $retorno;
}
public function borrarDB($id)
{
$retorno = false;
$result = mysql_db::sql_query("DELETE FROM `reservas` WHERE id='". $id ."'");
if ($result)
{
$retorno = true;
}
return $retorno;
}
private function __comprobarDisponibilidad()
{
$id = $this->mNumero;
$result = mysql_db::sql_query("select v.asientos as total, count(r.idvuelo) as reservas from vuelos v, reservas r WHERE r.idvuelo='$id' AND v.id='$id' GROUP by v.id");
$row = mysql_db::sql_fetchrow($result);
$retorno = false;
if ($row[reservas]<$row[total])
{
$retorno = true;
}
return $retorno;
}
public function __toString()
{
return "Nombre: <b>". $this->mPasajero->getAtributo('mNombre') . "</b> - Apellido: <b>" . $this->mPasajero->getAtributo('mApellido') . "</b> - Documento: <b>". $this->mPasajero->getAtributo('mDocumento') ."</b> - Asiento: <b>" . $this->mAsiento . "</b> - Fila: <b>" . $this->mFila . "</b>" ;
}
}
?>
Código PHP:
<?php
final class Pasajero {
private $mDocumento;
private $mNombre;
private $mApellido;
public function getAtributo($atributo)
{
return $this->$atributo;
}
public function __construct($documento, $nombre, $apellido)
{
$this->mDocumento = $documento;
$this->mNombre = $nombre;
$this->mApellido = $apellido;
}
}
?>