Diskuze: přidělávka OOP

JavaScript JavaScript přidělávka OOP

Avatar
danek1235
Člen
Avatar
danek1235:

Ahoj všem :) udělal jsem úkol podle zadání ..
Napište pomocí technologií JS a HTML jednoduchou www stránku řešící agendu školáka. (že si ten školák dělá něco do školy)
žák má k dispozici známky z předmětů - předměty jsou známé (alespoň 3ks). Známek je maximálně 5.
žák zvolí předmět, vyplní známky a program zapíše do výstupního prvku v rámci téže stránky záznam typu :
1)předmět ANG, zapsané známky: 1,4,2,3 : pruměr je 2,5
Další vstupy rozšíří již provedené záznamy, tzn. nemažeme.
2)předmět NEM, zapsané známky: 5,4,5,2 : průměr je 4
poznámky:

  • zkuste projít vstupní prvky se známkou pomocí smyčky a ne natvrdo 5x číst připravené id/jméno... existuje vlastnost tagName
  • zkuste na řešení použít OOP
  • zkuste promyslet možnost nasadit při řešení JSON

a teď chci zkusit to OOP s JSON ale vůbec nám to učitel nevysvětlil a potřebuji aby nějaká dobrá duše mi to na mém úkolu ukázala a vysvětlila a já pak co nejrychleji si vymyslel něco jiného a udělal bych si to abych se to naučil .. úkol už jsem poslal ten už mne nezajímá já se chci teď naučit to OOP aspoň trochu :) prosím pomožte mi někdo :)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1250">
    <meta name="generator" content="PSPad editor, www.pspad.com">
    <title>Znamky
    </title>
<script type="text/javascript" src="swixi.js"></script>
  </head>
  <body>
    <h1>Agenda školáka</h1>
          <form id="myform">
          zvol třídu : <select id="trida">
        <option value="E1">E1A
        </option>
        <option value="E2">E2A
        </option>
        <option value="E3">E3A
        </option>
        <option value="E4">E4A
        </option>
        </select>

    <br> <br>    Vyber předmět : <select id="predmety">
        <option value="N">Němčina
        </option>
        <option value="AJ">Angličtina
        </option>
        <option value="CJ">Čestina
        </option>
      </select>
     Zadej jednu známku : <input type="number" id="input" maxlength="1" min="1" max="5">
    </form>
    (při zadání známky a kliknutí na buton přidej..přidáte další známku tak že následně smažete předchozí známku a zadáte novou a znovu klik na buton toto max 5x)
    <br><br><button onclick="pridej()">Přidej jednu známku
    </button>
    <button onclick="generuj()">Vypiš záznam
    </button>
    <br>
    <br><div id="asd">Tady budou zapsané známky a průměr.
    </div>
  </body>
</html>
var znamky = new Array();
var out = " ";

function pridej(){
  znamky.push(document.getElementById('myform')['input'].value);

  }

function generuj(){

    var z=znamky.slice(0,5);
    var pr="";

      for (i = 0; i < document.getElementById('myform')['predmety'].length; ++i) {
                if (document.getElementById('myform')['predmety'][i].selected == true) {
                    switch (document.getElementById('myform')['predmety'][i].value) {
                        case "N": pr += "Němčina"; break;
                        case "AJ": pr += "Angličtina"; break;
                        case "CJ": pr += "Čeština"; break;
                        default: pr += "Předmět nebyl zvolen"; break;
                    }
                }
            }

  out+=" Zvolený předmět je "+pr+" zadané známky jsou: "+z+" průměr je "+aritm(z)+"<br>";
  document.getElementById("asd").innerHTML=out;
  znamky.length=0;
}


function aritm(array){

  var sum = 0, i;

    for (i = 0; i < array.length; i++){
      sum += parseInt(array[i],10);
    }

  return sum / array.length;
}
 
Odpovědět 28.5.2014 12:44
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:

No, přepisovat do objektů ti to nebudu. Na to jsou tutoriály, z kterých se to naučíš a sám si to přepíšeš.

Představ si, že Školák je objekt. Můžeš mi něco udělat (přidat známku) nebo může udělat něco on (mluvit, napsat svoje známky atd). Pak je tu druhý člověk. Ten co mu ty známky může zapsat (učitel). Čili učitel může školákovi zapsat známku. Tím objektu Ucitel vznikne metoda zapisSkolakoviZ­namku. Objekt Ucitel samozřejmě má ve vlastnosti zaci uložené všechny žáky, které může ohodnotit. Pokud tam žák není, tak si ho přidá. Teď máš dvě možnosti. Můžeš uživateli přidávat známky podle předmětu nebo podle učitele. Můžeš klidně vytvořit i další objekty jako Anglictina, Nemcina atd. Což by asi bylo nepraktické, protože dál by byly objekty nevyužitelné a už by to bylo jen pole na známky. Takže nejspíš každý žák dostane objekt s předměty.

Třeba objekt Skolak bych napsal asi podobně jako:

function Skolak(){
  this.znamky = {};
};

Skolak.dostupnePredmety = {
  AJ:'Angličtina',
  Nj:'Němčina',
  CJ:'Čeština'
};

Skolak.prototype.pridejZnamku = function(predmet,znamka){
  var znamky = this.znamky;
  var znamky_k_predmetu = znamky[predmet];

  if(!znamky_k_predmetu && Skolak.dostupnePredmety[predmet]){ znamky_k_predmetu = znamky[predmet] = []; }

  if(znamky_k_predmetu.length>6){ return false; }

  znamky_k_predmetu.push(znamka);
};

Zkus popřemýšlet o zbytku.

 
Nahoru Odpovědět 28.5.2014 23:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.