Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/11/2008, 17:28
BeRMaNyA
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 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()
        {
            
$retornofalse;
            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;
        }
    }
?>