Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/11/2008, 17:28
BeRMaNyA
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 18 años, 8 meses
Puntos: 1
Proyecto para clase

Bueno gente, me mandaron hacer un proyecto para clase en php, orientado a objetos, y esta es mi primer aplicacion 100% orientada a objetos que estoy haciendo.
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:
Una 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
class.vuelo.php
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>";
        }
    }
?>
class.reserva.php
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>" ;
        }
    }
?>
class.pasajero.php
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;
        }
    }
?>