228 Kezdőlap - Vizsgafeladatok - Rendelések (programozás) - Megoldás
ujdomainek.hu

Rendelések

Megoldás

Feladatmegoldás

Valósítsa meg az alábbi feladatot a tanult programozási nyelven:



Megoldás megvalósítása PHP nyelven


  • adatszerkezet.php
  • 
    <?
    
        /*  1. FELADAT: Adatszerkezet kialakítása */ 
    
        /*  Raktar nevű osztály (igazából szinte ez csak egy rekord) definiálása */ 
    
        class Raktar
        {
    	public $rkod ;
    	public $rnev ;
    	public $rar  ;
    	public $rdb  ;
    
    	/* Raktar konstruktora: eredménye egy új rekord az adatokkal */ 
    
    	function __construct( $sz )
    	{
    	    $tomb = explode( ";" , $sz ) ;
    
    	    $this->rkod = $tomb[0] ;
    	    $this->rnev = $tomb[1] ;
    	    $this->rar  = $tomb[2] ;
    	    $this->rdb  = $tomb[3] ;
    	}
    
        }
    
        /*  Megrendeles nevű osztály definiálása */ 
    
        class Megrendeles
        {
    	public $mdatum ;
    	public $mazon  ;
    	public $mmail  ;
    
    	/* Megrendeles konstruktora: eredménye egy új rekord az adatokkal */ 
    
    	function __construct( $sz )
    	{
    	    $tomb = explode( ";" , $sz ) ;
    
    	    $this->mdatum = $tomb[1] ;
    	    $this->mazon  = $tomb[2] ;
    	    $this->mmail  = $tomb[3] ;
    	}
    
        }
    
        /*  Tetel nevű osztály definiálása */ 
    
        class Tetel
        {
    	public $tazon ;
    	public $tkod  ;
    	public $tdb   ;
    
    	/* Tetel konstruktora: eredménye egy új rekord az adatokkal */ 
    
    	function __construct( $sz )
    	{
    	    $tomb = explode( ";" , $sz ) ;
    
    	    $this->tazon = $tomb[1] ;
    	    $this->tkod  = $tomb[2] ;
    	    $this->tdb   = $tomb[3] ;
    	}
    
        }
    
    ?>
    
    
  • beolvasas.php
  • 
    <?
    
        /* Adatszerkezet */
    
        include("adatszerkezet.php") ;
    
        /* 1. FELADAT (folytatás): Adatok beolvasása */
    
        /* raktar.csv beolvasása táblázatba - ezt is meg lehetne osztályként csinálni */ 
    
        $raktar[] = array() ;
        $fp = fopen("../forras/raktar.csv" , "r") ;
    
    	$rsordb = 0 ;
    	while( $adatsor=fgets($fp) )
    	{
    	    $rsordb++ ;
    	    $raktar[$rsordb] = new Raktar( $adatsor ) ;
    	}
    
        fclose( $fp ) ;
    
        /* rendeles.csv beolvasása: soronként a megfelelő táblázatba */ 
    
        $megrendeles[] = array() ;
        $tetel[]       = array() ;
        $fp = fopen("../forras/rendeles.csv" , "r") ;
    
    	$msordb = 0 ;
    	$tsordb = 0 ;
    	while( $adatsor=fgets($fp) )
    	{
    	    if( substr($adatsor,0,1)=="M" )
    	    {
    		$msordb++ ;
    		$megrendeles[$msordb] = new Megrendeles( $adatsor ) ;
    	    }
    
    	    if( substr($adatsor,0,1)=="T" )
    	    {
    		$tsordb++ ;
    		$tetel[$tsordb] = new Tetel( $adatsor ) ;
    	    }
    	}
    
        fclose( $fp ) ;
    
    ?>
    
    
  • beolvasott_adatok.php   (ez a megjelenítés nem része az eredeti feladatnak)
  • 
    <link href='megjelenites.css' type='text/css' rel='stylesheet'>
    <?
    
        /* Adatbeolvasás */
    
        include("beolvasas.php") ;
    
        /* Táblázatok listázása (nem része a vizsgafeladatnak) */ 
    
        print "<table class=adat>" ;
        for( $i=1 ; $i<=$rsordb ; $i++ )
        {
    	print "
    		<tr>
    			<td> " . $raktar[$i]->rkod . "     </td>
    			<td> " . $raktar[$i]->rnev . "     </td>
    			<td> " . $raktar[$i]->rar  . " Ft  </td>
    			<td> " . $raktar[$i]->rdb  . " db  </td>
    		</tr>
    	";
        }
        print "</table>" ;
    
        print "<table class=adat>" ;
        for( $i=1 ; $i<=$msordb ; $i++ )
        {
    	print "
    		<tr>
    			<td> " . $megrendeles[$i]->mdatum . " </td>
    			<td> " . $megrendeles[$i]->mazon  . " </td>
    			<td> " . $megrendeles[$i]->mmail  . " </td>
    		</tr>
    	";
        }
        print "</table>" ;
    
        print "<table class=adat>" ;
        for( $i=1 ; $i<=$tsordb ; $i++ )
        {
    	print "
    		<tr>
    			<td> " . $tetel[$i]->tazon . "     </td>
    			<td> " . $tetel[$i]->tkod  . "     </td>
    			<td> " . $tetel[$i]->tdb   . " db  </td>
    		</tr>
    	";
        }
        print "</table>" ;
    
    ?>
    
    
  • levelek.php   - eredményei: levelek.csv és beszerzes.csv
  • 
    <link href='megjelenites.css' type='text/css' rel='stylesheet'>
    <table class='adat'>
    <?
    
        /* Adatbeolvasás */
    
        include("beolvasas.php") ;
    
        /* 2-3. FELADAT: Rendelések feldolgozása */ 
    
        $fp = fopen( "levelek.csv" , "w") ;
    
        $mazon = 1 ;		// megrendelésazonosító
        $teljesitheto = true ;
        $x = 0 ;			// fizetendő összeg
    
        for( $t=1 ; $t<=$tsordb ; $t++ )  /* Végnézzük a tételeket */
        {
    	/* Kiválasztás progr. tétellel megkeressük a raktárban */
    	$i=1 ;
    	while( $tetel[$t]->tkod != $raktar[$i]->rkod )
    	{
    	    $i++ ;
    	}
    	/* Levononjuk a készletből */
    	$raktar[$i]->rdb -= $tetel[$t]->tdb ;
    	/* Megnézzük, teljesíthető-e */
    	if( $raktar[$i]->rdb >= 0 )  $x += $tetel[$t]->tdb * $raktar[$i]->rar ;
    	else                         $teljesitheto = false ;
    
    	print "
    		<tr>
    			<td>$mazon.</td>
    			<td>$t.</td>
    			<td>". $raktar[$i]->rnev . "</td>
    			<td>" . $tetel[$t]->tdb . " db</td>
    			<td>(marad: " . $raktar[$i]->rdb . ")</td>
    		</tr>
    	";
    
    	/* Ha a megrendelés végéhez értünk */
    	if( $t==$tsordb || $tetel[$t+1]->tazon != $mazon )
    	{
    	    /* kiértékelünk, kiírunk */
    	    if($teljesitheto)
    	    {
    		$szoveg  = "A rendelését két napon belül szállítjuk. " ;
    		$szoveg .= "A rendelés értéke: $x Ft\r\n" ;
    		$statusz = "Szállítható. Értéke: <b>$x Ft</b>." ;
    	    }
    	    else
    	    {
    		$szoveg  = "A rendelés függő állapotba került. " ;
    		$szoveg .= "Hamarosan értesítjük a szállítás időpontjáról.\r\n" ;
    		$statusz = "<i>A rendelés függő állapotba került.</i>" ;
    	    }
    	    fwrite( $fp , str_replace("\r\n","",$megrendeles[$mazon]->mmail) . ";" . $szoveg ) ;
    	    print "<tr><td colspan=5><b>" . $megrendeles[$mazon]->mmail . "</b></td></tr>" ;
    	    print "<tr><td colspan=5>$statusz</td></tr>" ;
    	    print "<tr><td colspan=5><hr></td></tr>" ;
    
    	    /* előkészítjük a változókat a következő megrendelés feldolgozásához */
    	    $mazon++ ;
    	    $teljesitheto = true ;
    	    $x = 0 ;
    	}
    
        }
    
        fclose( $fp ) ;
    
        /* 4. FELADAT: beszerzes.csv elkészítése */ 
    
        $fp = fopen( "beszerzes.csv" , "w") ;
    
        for( $r=1 ; $r<=$rsordb ; $r++ )  /* Végnézzük a rakrtárt */
        {
    	if( $raktar[$r]->rdb < 0 )
    	{
    	    fwrite( $fp , $raktar[$r]->rkod . ";" . -1*$raktar[$r]->rdb . "\r\n" ) ;
    	}
        }
    
        fclose( $fp ) ;
    
    
    ?>
    </table>
    
    


    2020-08-13 22:12:24 Admin Köszönöm, ha Ön lesz az első, aki megírja ide véleményét, észrevételét, kérdését ezzel a lappal kapcsolatban.




    Új hozzászólás:
    E-mail cím:


    Erre a címre küldjük ki a hozzászólás jóvá- hagyásához szükséges linket. Az e-mail címet sehol nem tesszük közzé.

    Név:


    Ez a név fog megjelenni az Ön hozzászólásai mellett.

    Mennyi tizenhat + három?
    Számjegyekkel írja be!



    Ez a robotok beírása elleni védelem miatt szükséges ellenőrzés.


    © infojegyzet.hu, 2020. február