Nueva pregunta

Pregunta:

Fecha: 15-02-2019 20:27:20 (En Español)

Necesito Ayudita[Resuelta]

Hola soy nuevo en esto de php orientado a objetos y necesito de su colaboracion y que me puedan explicar como se hacen estos ejercios me seria de gran ayuda y muchas graciasCrear los siguientes archivos:
Empleado.class.php: clase empleado que definirá como atributos el nombre, sueldo,
email, fecha de nacimiento, peso y altura. Definir un método inicializar que lleguen como
datos todos los atributos de esta clase. Plantear un segundo método que imprima el
nombre y un mensaje si debe o no pagar impuestos (si el sueldo supera los $2.000.000
paga impuestos). Este segundo método deberá llamar a un tercer método que será
privado, recibirá como parámetro el sueldo y devolverá TRUE o FALSE para indicar si debe
pagar o no impuestos.
Tener otro método que permita calcular la edad con base a la fecha de nacimiento y que
muestre un mensaje si la persona puede o no votar
index.php: archivo que contiene el formulario html con todos los campos necesarios del
empleado. La acción del formulario deberá mandar los datos por POST al archivo
procesardatos.php
procesardatos.php: archivo que recibirá los datos del empleado, creará un objeto de la
clase empleado y llamará los métodos inicializar e imprimir para mostrar el resultado
Se debe tener en cuenta la función de PHP include para incluir el archivo
Empleado.class.php y poder utilizar dicha clase en el archivo procesardatos.php


Etiquetas: PHP - Pregunta Votos: 0 - Respuestas: 11 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 16-02-2019 16:34:46 Es más fácil que vallas a la sección de empleos y hagas la solicitud de un programador para ello, pues si no muestras que al menos los has intentado y tes has quedado atascado en algo no creo que alguien valla a hacer tooooda la tarea, no tiene lógica.

    Muestra hasta que punto del desarrollo estas, que intentaste hacer y partimos de allí con la orientación, lo que te están pidiendo es tan fácil que si en tu instituto están en eso es para que a estas alturas ya supieras lo que vas a hacer.

    Yo te ayudo con todo el gusto del mundo si me demuestras que al menos lo has intentado, pues no es un fragmento de código si no una secuencia de archivos para un proceso.

    Quedo a la espera mi amigo.

    Saludos.
      Votos: 0 - Link respuesta
     
  • Fecha: 17-02-2019 08:05:14 Claro Carlos aca esta
    Empleados.php
    <?php 
    class Empleado {
    
    	public $nombre;
    	public $sueldo;
    	public $email;
    	public $fecha;
    	public $peso;
    	public $altura;
    
    	public function inicializar($nombre,$sueldo,$email,$fecha,$peso,$altura){
    
    		$this->nombre=$nombre;
    		$this->sueldo=$sueldo;
    		$this->email=$email;
    		$this->fecha=$fecha;
    		$this->peso=$peso;
    		$this->altura=$altura;
    
    
    	}
    
    	public function PagarImpuesto2(){
    		$this->PagarImpuesto($sueldo);
    	}
    	private function PagarImpuesto($sueldo){
    		echo $this->nombre;
    		echo '-';
    
    		if($this->sueldo>2000000){
    			echo "debe pagar impuestos";
    		}
    		else{
    			"no debe pagar impuestos";
    		}
    
    	}
    	
    }
    
    
    
     ?>


    index.php
    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    </head>
    <body>
    	<form action="procesarDatos.php" method="POST">
    		
    	<label>Nombre</label>
    	<input type="text" name="txtNom" id="txtNom">
    	<label>Sueldo</label>
    	<input type="text" name="txtSueldo" id="txtSueldo">
    	<label>Correo</label>
    	<input type="email" name="txtEmail" id="txtEmail">
    	<label>Fecha</label>
    	<input type="date" name="txtDate" id="txtDate">
    	<label>Peso</label>
    	<input type="text" name="txtPeso" id="txtPeso">
    	<label>Altura</label>
    	<input type="text" name="txtAltura" id="txtAltura">
    
    	<br>
    
    	<input type="submit" value="Enviar">
    
    
    
    
    	</form>
    
    </body>
    </html>
    
    
    
    


    procesarDatos.php
    <?php 
    require_once "clases/Empleados.php";
    
    $nombre=$_POST['txtNom'];
    $sueldo=$_POST['txtSueldo'];
    $email=$_POST['txtEmail'];
    $fecha=$_POST['txtFecha'];
    $peso=$_POST['txtPeso'];
    $altura=$_POST['txtAltura'];
    
    $empleado_obj= new Empleado();
    $empleado_obj->nombre($txtNom);
    $empleado_obj->sueldo($txtSueldo);
    $empleado_obj->email($txtEmail);
    $empleado_obj->fecha($txtFecha);
    $empleado_obj->peso($txtPeso);
    $empleado_obj->altura($txtAltura);
    
    
    
     ?>
    



    Bueno no si voy por buen camino o me perdi en todo caso no me funciona ,haber si me puedes dar una mano y gracias
      Votos: 0 - Link respuesta
     
  • Fecha: 17-02-2019 09:23:39 Prueba así:

    class Empleado {
        private $name;
        private $salary;
        private $email;
        private $date;
        private $weight;
        private $height;
        private $min = 18;//Edad minima para votar
        private $minsal = 2000000;//Salario minimo para no pagar impuestos
    
        public function __construct($n,$s,$e,$f,$p,$a){
            $this->name   = $n;
            $this->salary = $s;
            $this->email  = $e;
            $this->date   = $f;
            $this->weight = $p;
            $this->height = $a;
        }
    
        public function checkImpuesto(){
            return ($this->pagarImpuesto()==true) ? $this->name.' debe pagar impuestos' :  $this->name.' NO debe pagar impuestos';
        }
        
        private function pagarImpuesto(){
            return ($this->salary > $this->minsal) ? true : false;
        }
    
        public function elector(){
            $fe = time() - strtotime($this->date);
            $edad = floor( (($fe / 3600 / 24) / 360 ) );
            return ($edad >= $this->min) ? [$edad,$this->name.' Debe Votar']:[$edad,$this->name.' no debe votar'];
        }
    
        public function generalInfo(){
            $data = [
                'nombre'     => $this->name,
                'salario'    => $this->salary,
                'email'      => $this->email,
                'nacimiento' => $this->date,
                'edad'       => $this->elector()[0],
                '¿Vota?'     => $this->elector()[1],
                'peso'       => $this->weight,
                'altura'     => $this->height,
                'impuestos'  => $this->checkImpuesto(),
            ];
            return $data;
        }
        
    }
    
    $nombre = 'Carlos Quintero';
    $sueldo = 2100000;
    $email  = 'a@a.com';
    $fecha  = date('Y-m-d', strtotime('11/07/1980'));
    $peso   = 75;
    $altura = 1.75;
    
    
    $emple = new Empleado($nombre, $sueldo, $email, $fecha, $peso, $altura);
    
    foreach($emple->generalInfo() as $key => $value){
        echo "<li>".$key.": ".$value."</li>";
    }
    


    claro tienes que hacerle las validaciones en caso de enviar datos vacíos entre otros
      Votos: 0 - Link respuesta
     
  • Fecha: 17-02-2019 09:33:09 Tambien así, no es lo que te pidieron pero es una alternativa al constructor:

    class Empleado {
        private $name;
        private $salary;
        private $email;
        private $date;
        private $weight;
        private $height;
        private $min = 18;//Edad minima para votar
        private $minsal = 2000000;//Salario minimo para no pagar impuestos
    
        public function setName($x){
            $this->name = $x;
            return $this;
        }
    
        public function setSalary($x){
            $this->salary = $x;
            return $this;
        }
    
        public function setEmail($x){
            $this->email = $x;
            return $this;
        }
        public function setDate($x){
            $this->date = $x;
            return $this;
        }
        public function setWeight($x){
            $this->weight = $x;
            return $this;
        }
        public function setHeight($x){
            $this->height = $x;
            return $this;
        }
    
        public function checkImpuesto(){
            return ($this->pagarImpuesto()==true) ? $this->name.' debe pagar impuestos' :  $this->name.' NO debe pagar impuestos';
        }
        
        private function pagarImpuesto(){
            return ($this->salary > $this->minsal) ? true : false;
        }
    
        public function elector(){
            $fe = time() - strtotime($this->date);
            $edad = floor( (($fe / 3600 / 24) / 360 ) );
            return ($edad >= $this->min) ? [$edad,$this->name.' Debe Votar']:[$edad,$this->name.' no debe votar'];
        }
    
        public function getInfo(){
            $data = [
                'nombre'     => $this->name,
                'salario'    => $this->salary,
                'email'      => $this->email,
                'nacimiento' => $this->date,
                'edad'       => $this->elector()[0],
                '¿Vota?'     => $this->elector()[1],
                'peso'       => $this->weight,
                'altura'     => $this->height,
                'impuestos'  => $this->checkImpuesto(),
            ];
            return $data;
        }
        
    }
    
    $nombre = 'Carlos Quintero';
    $sueldo = 2100000;
    $email  = 'a@a.com';
    $fecha  = date('Y-m-d', strtotime('11/07/1980'));
    $peso   = 75;
    $altura = 1.75;
    
    
    $emple = new Empleado();
    $da    = $emple
                ->setName($nombre)
                ->setSalary($sueldo)
                ->setEmail($email)
                ->setDate($fecha)
                ->setHeight($altura)
                ->setWeight($peso)
                ->getInfo();
    
    foreach($da as $key => $value){
        echo "<li>".$key.": ".$value."</li>";
    }
    
      Votos: 0 - Link respuesta
     
  • Fecha: 17-02-2019 09:41:14 Hola gracias por la ayuda pero veo que usar una funcion llamada floor y aun no le he visto,y lo otro tengo que usar el formulario si o si para que se manden los datos y no ponerlos directamente como me diste aca en el ejemplo ,como seria sin usar floor y mandando los datos desde un formulario y gracias   Votos: 0 - Link respuesta
     
  • Fecha: 17-02-2019 10:05:25 los datos solo son referenciales, simplemente cambialos por tus variables post, en cuanto al floor se me ocurre el round   Votos: 0 - Link respuesta
     
  • Fecha: 17-02-2019 10:09:40 En cuanto a las cuentas se me ocurre algo así, puedes continuar desarrollando a partir de esto o cambiarlo a tu manera:

    class Cuentas{
        private $account;
        private $name;
        private $valance;
        private $type;
        private $in;//dinero entrante
        private $out;//dinero saliente
        private $outAccount;
    
        //Asigna el numero de cuenta
        public function setAccount($x){
            $this->account = $x;
            return $this;
        }
        //Asigna el nombre del titular
        public function setName($x){
            $this->name = $x;
            return $this;
        }
        //Asigna el valance a mover
        public function setValance($x){
            $this->valance = $x;
            return $this;
        }
        //asigna el tipo de cuenta
        public function setType($x){
            $this->type = $x;
            return $this;
        }
        //asigna el monto de entrada en los movimientos
        public function setIn($x){
            $this->in = $x;
            return $this;
        }
        //Asigna el monto de salida en los movimientos
        public function setOut($x){
            $this->out = $x;
            return $this;
        }
    
        //Retorna los datos de la cuenta de manera interna
        private function getAccount(){
            return $_SESSION['cuentas'][$this->account];
        }
        
        //Crea una cuenta nueva
        public function createAccount(){
            if(isset($_SESSION['cuentas'])){
                if(array_key_exists($this->account,$_SESSION['cuentas'])){
                    return "La Cuenta Existe";
                }else{
                    $_SESSION['cuentas'][$this->account] = [
                        'titular'       => $this->name,
                        'valance'       => $this->valance,
                        'tipo'          => $this->type,
                        'transacciones' => []
                    ];
                    return "Cuenta Creada";
                }
            }else{
                $_SESSION['cuentas'] = [];
                $_SESSION['cuentas'][$this->account] = [
                    'titular'       => $this->name,
                    'valance'       => $this->valance,
                    'tipo'          => $this->type,
                    'transacciones' => []
                ];
                return "Cuenta Creada";
            }
        }//
    
        //Agrega saldo a la cuenta
        public function addValance(){
            $account = $this->getAccount();
            $nuevo = $account['valance'] + $this->in;
            $_SESSION['cuentas'][$this->account]['valance'] = $nuevo;
            return ["Completed",$this->getAccount()['valance']];
        }
        //retira saldo de la cuenta
        public function withdraw(){
            $account = $this->getAccount();
            $nuevo = $account['valance'] - $this->out;
            $_SESSION['cuentas'][$this->account]['valance'] = $nuevo;
            return ["Completed",$this->getAccount()['valance']];
        }
    
        //Retorna los datos de una cuenta
        public function getData(){
            if(isset($_SESSION['cuentas'])){
                if(array_key_exists($this->account, $_SESSION['cuentas'])){
                    return $_SESSION['cuentas'][$this->account];
                }else{
                    return "La cuenta no existe";
                }
            }else{
                return "No hay Cuentas Registradas";
            }
        }
    
    }
    
    $cuentas = new Cuentas();
    
    //Nueva Cuenta
    $nueva = $cuentas->setAccount(101010)->setName('Carlos Quintero')->setType('Corriente')->setValance(1000)->createAccount();
    //Agrega saldo
    $agrega = $cuentas->setAccount(101010)->setIn(1500)->addValance();
    //Retira saldo
    $retiro = $cuentas->setAccount(101010)->setOut(1500)->withdraw();
    //Datos de una cuenta
    $data = $cuentas->setAccount(101010)->getData();
    
      Votos: 0 - Link respuesta
     
  • Fecha: 17-02-2019 10:14:19 Tendrán sus pelones y faltan validaciones y mejorar algunos métodos, pero es una idea, puedes avanzar de alli   Votos: 0 - Link respuesta
     
  •  
      0  
     
    Fecha: 17-02-2019 10:15:56 Hola.
    Te paso una alternativa.
    Saludos

    archivo index.php
    <!DOCTYPE html>
    <html lang="es">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<style type="text/css">
    		.espacio{
    			margin-top: 10px;
    		}
    	</style>
    </head>
    <body>
    	<form method="post" action="procesardatos.php">
    		<div class="espacio">
    			Nombre: <input type="text" name="nombre" required>
    		</div>
    		<div class="espacio">
    			Sueldo: <input type="number" step="any" name="sueldo" required>
    		</div>
    		<div class="espacio">
    			Email: <input type="email" name="email" required>
    		</div>
    		<div class="espacio">
    			Fecha Nacimiento: <input type="date" name="f_nac" min="1900-01-01" required>
    		</div>
    		<div class="espacio">
    			Peso: <input type="number" step="any" name="peso" required>
    		</div>
    		<div class="espacio">
    			Altura: <input type="number" step="any" name="altura" required>
    		</div>
    
    		<button type="submit">Enviar</button>
    		
    	</form>
    </body>
    </html>
    


    archivo Empleado.class.php

    <?php 
    
    class Empleado {
    	private $nombre, $sueldo, $email, $fecha_nacimiento, $peso, $altura;
    
    	public function inicializar($nombre,$sueldo,$email,$fecha_nacimiento,$peso,$altura){
    		$this->nombre=$nombre;
    		$this->sueldo=$sueldo;
    		$this->email=$email;
    		$this->fecha_nacimiento=$fecha_nacimiento;
    		$this->peso=$peso;
    		$this->altura=$altura;
    	}
    	
    	public function imprimir(){
    		echo 'Nombre: '.$this->nombre.'<br>';
    		echo 'Sueldo: '.$this->sueldo.'<br>';
    		echo 'Email: '.$this->email.'<br>';
    		echo 'Fecha Nacimiento: '.$this->fecha_nacimiento.'<br>';
    		echo 'Edad: '.$this->edad().' años'.'<br>';
    		echo 'Peso: '.$this->peso.' Kg <br>';
    		echo 'Altura: '.$this->altura.' m <br>';
    		echo '<br>';
    
    		if($this->pagarImpuestos($this->sueldo)){
    			echo 'Debes pagar impuestos'.'<br>';
    		}else{
    			echo 'NO debes pagar impuestos'.'<br>';
    		}
    	}
    
    	private function pagarImpuestos($sueldo){
    		if($sueldo > 2000000){
    			return true;
    		}
    		return false;
    	}
    
    	public function votar(){
    		$edad=$this->edad();
    
    		echo ($edad >= 18)? 'Puedes Votar':'NO puedes votar';
    	}
    
    	private function edad(){
    		$f_nac=new DateTime($this->fecha_nacimiento);
    		$f_act=new DateTime('today');
    		$edad=$f_nac->diff($f_act)->y;
    		return $edad;
    	}
    	
    }
    ?>
    


    archivo procesardatos.php

    
    <?php
    
    include ('Empleado.class.php');
    
    if(isset($_POST)){
    	$nombre=$_POST['nombre'];
    	$sueldo=$_POST['sueldo'];
    	$email=$_POST['email'];
    	$fecha_nacimiento=$_POST['f_nac'];
    	$peso=$_POST['peso'];
    	$altura=$_POST['altura'];
    
    	$empleado = new Empleado;
    
    	$empleado->inicializar($nombre,$sueldo,$email,$fecha_nacimiento,$peso,$altura);
    	$empleado->imprimir();
    	$empleado->votar();
    }else{
    	echo "Los Datos No llegaron....";
    }
    
    
    ?>
    
      Votos: 0 - Link respuesta
     
  • Fecha: 17-02-2019 15:43:49 Muchas Gracias , Me sirvio ahora voy a tratar de entender que fue lo que hiciste :)   Votos: 0 - Link respuesta
     
  • Fecha: 17-02-2019 16:48:15 Analiza bien la clase, pués:

    -> Lo ideal es que tenga un constructor y que sea este quien se encargue de iniciarlizar los valores de la misma.
    -> La función edad no retorna la edad real si no la diferencia en años, pues ese calculo puede decir 18 cuando en realidad tiene 17 al momento de consultarla lo que da pié a malas interpretaciones.
    -> función imprimir, no debería de estar retornando etiquetas html, no es bien vista esta práctica y no te da la libertad de manejar el resultado y da problemas para el mantenimiento a futuro de una aplicación.
      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com