lunes, 16 de marzo de 2009

Práctica 2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>AAP: Practica 2 : Programa Simple en JavaScript</title>
</head>

<body>
<h1>AAP: Practica 2 : Programa Simple en JavaScript</h1>

<h2>Breve introducción</h2>

<p>La aplicación que le he buscado a este programa en JavaScript es el de "matricular" alumnos a una asignatura y poder asignarle notas de modo que podemos ir viendo cómo van creciendo el número de notas que haya obtenido y se muestra la media de todas las calificaciones obtenidas.</p>

<h2>Primer punto puntuable de la práctica</h2>

<p>Para la realización de la práctica he declarado 3 clases: La clase <b>Asignatura</b> que contiene un Array de objetos de la clase <b>Alumnos</b>, que, a su vez declara en su interior otro array de la clase <b>Notas</b>.</p>

<p>A continuación inserto el código de JavaScript y los dos bloques más importantes del código en HTML:</p>


<h2>Resultado final</h2>

<script type="text/javascript">
// Definición de la clase Notas
function Notas () {
this.notas = new Array;
this.media = null;
this.asignarNota = asignarNota;
this.calcularMedia = calcularMedia;
this.imprimirNotas = imprimirNotas;
}
// Funciones de la clase Notas
// asignarNota
function asignarNota (nota){
this.notas[this.notas.length] = nota;
}
// calcularMedia
function calcularMedia (){
if (this.notas.length <= 0){
this.media = null;
}
else {
media = 0;
for (i in this.notas){
media = media+parseInt(this.notas[i]);
}
this.media = media/this.notas.length;
}
}
// imprimirMedia
function imprimirMedia (){
this.calcularMedia();
return this.media;
}
// imprimirNota
function imprimirNota (i){
return this.notas[i];
}
// imprimirNotas
function imprimirNotas (){
if (this.notas.length <= 0){
return "";
}
var nota = "";
for (i in this.notas){
n = parseInt(i)+1;
nota += "<td> Nota "+n+": <b>"+this.notas[i]+"</b></td>";
}
this.calcularMedia();
nota += "<td> Nota media: <b><i>"+this.media+"</i></b></td>";
return nota;
}

//----------------------------------------------

// Definición de la clase Alumno
function Alumno (nombre){
this.nombre = nombre;
this.notas = new Notas();
this.asignarNota = this.notas.asignarNota;
this.imprimirAlumno = imprimirAlumno;
}
// Funciones de la clase Alumno
// imprimirAlumno
function imprimirAlumno (){
var texto = "<tr>";
texto += "<td><b>"+this.nombre+":</b></td>";
texto += this.notas.imprimirNotas();
texto += "</tr>";
return texto;
}

//-----------------------------------------------

// Definición de la clase Asignatura
function Asignatura () {
this.alumnos = new Array;
this.matricularAlumno = matricularAlumno;
this.mostrarAlumno = mostrarAlumno;
this.calificaciones = calificaciones;
}
// Funciones de la clase Asignatura
// matricularAlumno
function matricularAlumno (nombre){
this.alumnos[nombre] = new Alumno(nombre);
this.mostrarAlumno(nombre);
}
// motrarAlumno
function mostrarAlumno (i) {
escribir(this.alumnos[i].imprimirAlumno());
}
// calificaciones
function calificaciones () {
texto = "";
for (i in this.alumnos) {
texto += this.alumnos[i].imprimirAlumno();
}
escribir(texto);
}

//-----------------------------------------------

function escribir (text){
document.getElementById('programa').innerHTML=text;
}

function matricular(){
nombre = document.getElementById('nombre').value;
if (nombre!=""){
aap.matricularAlumno(nombre);
}
else { alert("No puedes matricular al alumno 'Sin Nombre'"); }
}

function calificar(){
nombre = document.getElementById('nombre2').value;
if (nombre!=""){
nota = document.getElementById('nota').value;
if (nota!=""){
aap.alumnos[nombre].notas.asignarNota(nota);
aap.mostrarAlumno(nombre);
}
else { alert("No puedes puntuar al alumno "+nombre+" sin indicar los puntos que quieres darle"); }
}
else { alert("No puedes puntuar al alumno 'Sin Nombre'"); }
}

aap = new Asignatura();
</script>

Nombre del alumno: <input type="text" id="nombre">
<input type="submit" name="Matricular" value="Matricular" onClick="matricular();"><br>

Nombre del alumno: <input type="text" id="nombre2">
Nota del alumno: <input type="text" id="nota">
<input type="submit" name="Calificar" value="Asignar nota" onClick="calificar();"><br>

<input type="submit" name="Listar" value="Mostrar todos los alumnos con sus calificaciones" onClick="aap.calificaciones()">

<table id="programa" border=3>
</table>

<hr>
<address><a href="afharo@correo.ugr.es">afharo</a></address>
Última modificación: Sábado 14 de marzo a las 21:12
</body>
</html>


Esto quedaría como se puede ver en esta página.

No hay comentarios:

Publicar un comentario