Created
October 11, 2010 19:39
-
-
Save felladrin/621089 to your computer and use it in GitHub Desktop.
Primeira versão da Calculadora de Notas
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script> | |
/*--------------------------------------------------------------------------+ | |
Calculadora de Notas para estudantes da UFRN | |
Copyright (C) 2010 Victor Nogueira | |
This program is free software: you can redistribute it and/or modify | |
it under the terms of the GNU General Public License as published by | |
the Free Software Foundation, either version 3 of the License, or | |
(at your option) any later version. | |
This program is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
GNU General Public License for more details. | |
You should have received a copy of the GNU General Public License | |
along with this program. If not, see <http://www.gnu.org/licenses/>. | |
+--------------------------------------------------------------------------*/ | |
function calcula(form) | |
{ | |
primeira = form.primeira; | |
segunda = form.segunda; | |
terceira = form.terceira; | |
recuperacao = form.recuperacao; | |
media = form.media; | |
resultado = form.resultado; | |
primeira.value = (primeira.value).replace(/,/gi, '.'); | |
segunda.value = (segunda.value).replace(/,/gi, '.'); | |
terceira.value = (terceira.value).replace(/,/gi, '.'); | |
recuperacao.value = (recuperacao.value).replace(/,/gi, '.'); | |
p = parseFloat(primeira.value); | |
s = parseFloat(segunda.value); | |
t = parseFloat(terceira.value); | |
r = parseFloat(recuperacao.value); | |
if ((primeira.value != "" && isNaN(p)) || (segunda.value != "" && isNaN(s)) || (terceira.value != "" && isNaN(t)) || (recuperacao.value != "" && isNaN(r))) | |
{ | |
alert("Um dos campos foi preenchido com um valor que não representa um número\nou nenhum dos campos foi preenchido. Tente novamente."); | |
return false; | |
} | |
if (primeira.value != "") | |
{ | |
if (segunda.value != "" && terceira.value == "") | |
{ | |
semrecuperacao = ((p * 5.0) + (s * 6.0)) / 11.0; | |
comrecuperacao = (semrecuperacao + (r * 1.0)) / 2.0; | |
if (recuperacao.value == "") | |
{ | |
media.value = semrecuperacao.toFixed(1); | |
if (media.value < 3) | |
resultado.value = ("REPROVADO"); | |
else if (media.value < 7) | |
resultado.value = ("RECUPERAÇÃO"); | |
else | |
resultado.value = ("APROVADO"); | |
} | |
else | |
{ | |
media.value = comrecuperacao.toFixed(1); | |
resultado.value = media.value < 5 ? "REPROVADO" : "APROVADO"; | |
} | |
} | |
else if (segunda.value != "" && terceira.value != "") | |
{ | |
semrecuperacao = ((p * 4.0) + (s * 5.0) + (t * 6.0)) / 15.0; | |
comrecuperacao = (semrecuperacao + (r * 1.0)) / 2.0; | |
if (recuperacao.value == "") | |
{ | |
media.value = semrecuperacao.toFixed(1); | |
if (media.value < 3) | |
resultado.value = ("REPROVADO"); | |
else if (media.value < 7) | |
resultado.value = ("RECUPERAÇÃO"); | |
else | |
resultado.value = ("APROVADO"); | |
} | |
else | |
{ | |
media.value = comrecuperacao.toFixed(1); | |
resultado.value = media.value < 5 ? "REPROVADO" : "APROVADO"; | |
} | |
} | |
} | |
else | |
{ | |
alert("Você deve informar a nota da primeira unidade!"); | |
return false; | |
} | |
casoA = (((7 * 11.0) - (p * 5.0)) / 6.0); | |
casoB = (((7 * 15.0) - (p * 4.0)) / 11.0); | |
casoC = (((7 * 15.0) - (p * 4.0) - (s * 5.0)) / 6.0); | |
casoAmin = (((3 * 11.0) - (p * 5.0)) / 6.0); | |
casoBmin = (((3 * 15.0) - (p * 4.0)) / 11.0); | |
casoCmin = (((3 * 15.0) - (p * 4.0) - (s * 5.0)) / 6.0); | |
if (casoAmin < 0) casoAmin = 0; | |
if (casoBmin < 0) casoBmin = 0; | |
if (casoCmin < 0) casoCmin = 0; | |
if (primeira.value != "" && segunda.value == "" && document.getElementById("quantidade").value == "duas") | |
{ | |
if (casoA <= 10) | |
alert("Para passar direto, na segunda unidade você deve tirar uma nota superior a " + casoA.toFixed(2) | |
+ "\nNota mínima necessária para fazer a prova final: " + casoAmin.toFixed(2)); | |
else | |
{ | |
document.getElementById("revelar").style.display = 'none'; | |
alert("Mesmo tirando 10 na segunda unidade, você ainda ficará de recuperação, infelizmente." | |
+ "\nTirando qualquer nota acima de " + casoAmin.toFixed(2) + " permitirá que você faça a recuperação."); | |
segunda.value = "10"; | |
return calcula(form); | |
} | |
} | |
else if (primeira.value != "" && segunda.value == "" && terceira.value == "" && document.getElementById("quantidade").value == "tres" && (casoB <= 10)) | |
alert("Tirando " + casoB.toFixed(2) + " nas próximas duas unidades você consegue passar direto." | |
+ "\nTirando " + casoBmin.toFixed(2) + " nas próximas duas unidades você consegue ir para a recuperação."); | |
else if (primeira.value != "" && segunda.value != "" && terceira.value == "" && document.getElementById("quantidade").value == "tres") | |
{ | |
if (casoC <= 10) | |
alert("Agora você precisa tirar uma nota superior a " + casoC.toFixed(2) + " para passar direto." | |
+ "\nNota mínima necessária para fazer a prova final: " + casoCmin.toFixed(2)); | |
else | |
{ | |
document.getElementById("revelar").style.display = 'none'; | |
alert("Mesmo tirando 10 na terceira unidade, você ainda ficará de recuperação, infelizmente." | |
+ "\nTirando qualquer nota acima de " + casoCmin.toFixed(2) + " permitirá que você faça a recuperação."); | |
terceira.value = "10"; | |
return calcula(form); | |
} | |
} | |
else | |
document.getElementById("revelar").style.display = 'block'; | |
if (resultado.value == "APROVADO") | |
resultado.style.color = 'green'; | |
else if (resultado.value == "REPROVADO") | |
resultado.style.color = 'red'; | |
else if (resultado.value == "RECUPERAÇÃO") | |
{ | |
resultado.style.color = 'brown'; | |
alert("Tirando " + (10.0 - media.value).toFixed(2) + " na recuperação você estará aprovado!"); | |
} | |
} | |
</script> | |
<form name="form"> | |
<fieldset style="width:230px; margin-left: auto; margin-right: auto;"> | |
<legend>Notas da Disciplina</legend> | |
<select id="quantidade" onchange="document.getElementById('revelar').style.display = 'none';" style="width:100%"> | |
<option value="tres" onclick="document.getElementById('unidades').style.display = 'block';form.media.value = '';form.resultado.value = '';" selected>Disciplina de 3 unidades</option> | |
<option value="duas" onclick="document.getElementById('unidades').style.display = 'none';form.media.value = '';form.resultado.value = '';form.terceira.value = '';">Disciplina de 2 unidades</option> | |
</select><br> | |
<input name="primeira" size="1" type="text"> Primeira Unidade<br> | |
<input name="segunda" size="1" type="text"> Segunda Unidade<br> | |
<div id="unidades"> | |
<input name="terceira" size="1" type="text"> Terceira Unidade<br> | |
</div> | |
<input name="recuperacao" size="1" type="text"> Recuperação<br> | |
<input type="button" onclick="calcula(form)" value="Calcular"> <input type="reset" value="Recomeçar" onclick="document.getElementById('revelar').style.display = 'none';document.getElementById('unidades').style.display = 'block';"> | |
</fieldset> | |
<div id="revelar" style="display:none"> | |
<fieldset style="width:230px; margin-left: auto; margin-right: auto;"> | |
<legend>Média Final e Resultado</legend> | |
<input name="media" size="1" type="text" disabled><input name="resultado" size="14" type="text" disabled> | |
</fieldset> | |
</div> | |
</form> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment