Todo lo necesario para sobrevivir en la carrera de Ing. en Informática, Vespertino

23 sept 2007

Sistema par manejo de notas


Un colegio necesita que se construya un sistema para la toma de ramos y el manejo de notas de sus alumnos.
La información que se maneja es:

De cada alumno se conoce:
• Nombre.
• Numero de matricula (generado por el sistema y correlativo).
• y un arreglo de las asignaturas que ha tomado este semestre.

Por su parte cada asignatura cuenta con la siguiente información:
• Nombre de la asignatura.
• Profesor que la imparte.
• Creditos.
• Y un arreglo de las notas obtenidas por el alumno durante el semestre.

Cada nota corresponde a un objeto que tiene dos atributos,
• la nota y
• su valor en porcentaje.

El sistema debe permitir:
• Ingresar Alumno
• Tomar ramos.
• Eliminar ramos.
• Modificar ramos.
• Ingresar notas.
• Ver promedios.
• Salir.

Se destaca en negrita los sustantivos que indican una clase y se señalan sus atributos.
Esto nos permite aplicar el siguiente método para resolver el problema;
- Distinguimos entre los sustantivos que se convierten en clases y que sostienen el desarrollo de la aplicación. Tienen las siguientes características;
• Todos sus atributos son privados
• El acceso a los atributos se realizan mediante métodos públicos (getters y setters)
• La interacción se realiza mediante una clase adicional, con métodos estáticos.

Esta clase adicional corresponde a la clase que actúa como interfaz con el usuario del sistema y contiene por lo general;
• El método "main"
• Un menu con opciones
• Un bloque "switch" para tomar decisiones.

La mejor estrategia es comenzar por las clases más pequeñas, en este caso "Notas" que luego es utilizada por la clase
Asignatura;
La clase Notas tiene dos atributos, que definimos como privados y para los que construimos los respectivos "get" y "set", además creamos un constructor vacío y uno (sobrecarga) con la carga de los atributos.

/**
* @(#)Nota.java
*
*
* @author
* @version 1.00 2007/9/22
*/


public class Nota {
private double valorNota;
private double valorPorcentaje;

public Nota() {
valorNota = 0;
valorPorcentaje = 0;
}

public Nota( double nota, double porc ) {
this.valorNota = nota;
this.valorPorcentaje = porc;
}

// ------------------ getter y setter
public double getNota( ) {
return this.valorNota;
}

//
public double getPorcentaje( ) {
return this.valorPorcentaje;
}

//
public void setNota( double nota ) {
this.valorNota = nota;
}

public void setPorcentaje( double porc ) {
this.valorPorcentaje;
}

}

Luego creamos la clase Asignatura, con los constructores apropiados (uno vacio y uno con la carga de atributos) tres atributos "normales" y un ArrayList con el objeto "Notas" construido previamente.
/**
* @(#)Asignatura.java
*
*
* @author
* @version 1.00 2007/9/22
*/
import java.util.ArrayList;

public class Asignatura {
private String nombre; // Nombre de la asignatura
private String profesor;
private int numCreditos;
private ArrayList notasAlumno;

public Asignatura() {
nombre = null;
profesor = null;
numCreditos = 0;
ArrayList notasAlumno = new ArrayList();
}

public Asignatura( String nombre, String profe, int creditos ) {
this.nombre = nombre;
this.profesor = profe;
this.numCreditos = creditos;
ArrayList notasAlumno = new ArrayList();
}


// ------------------ getter y setter
public String getNombre( ) {
return this.nombre ;
}

public String getProfesor( ) {
return this.profesor;
}

public int getCreditos( ) {
return this.numCreditos;
}

//_--------
public void setNombre( String nombre ) {
this.nombre = nombre;
}

public void setProfesor( String profe ) {
this.profesor = profe;
}

public void setCreditos( int creditos ) {
this.numCreditos = creditos;
}

}

Nos falta la clase Alumno, que la construyo más adelante.

Seguimos con el Menu;
El Menu se prepara creando una clase de tipo "Interfaz" llamada "appRamo" donde "main()" hace lo siguiente;
- llama al menu
- segun la opcion, llama a la acción apropiada
- si la opcion es salir, despedirse y salir
- si no, volver a mostrar el menu

/**
* @(#)appRamos.java
*
*
* @author
* @version 1.00 2007/9/22
*/
import java.util.ArrayList;


public class appRamos {


public static void main (String [] arg)
{
int opc;
opc = mainMenu();

switch ( opc ) {
case 1:
ingresaAlumno();
break;
case 2:
break;
case 3:
break;
case 0:
System.out.println("Gracias...");
break;

} // switch
} // main

public static int mainMenu ()
{
int op;

System.out.println("Ingreso de Datos");
System.out.println("1.- Ingresar Alumno");
System.out.println("2.- Tomar ramos");
System.out.println("3.- Eliminar ramos");
System.out.println("4.- Modificar ramos");
System.out.println("5.- Ingresar notas");
System.out.println("6.- Ver promedios");
System.out.println("0.- Salir");

do {
System.out.print("\nIngrese opcion: ");
op = Leer.datoInt();
} while ((op <> 6));

} // main

private static void ingresaAlumno()
{
String strNombre;
String strRut;
Alumno a;

System.out.println("Ingrese Nombre");
strNombre =Leer.dato();

System.out.println("Ingrese rut ");
strRut = Leer.dato();

Alumno a=new Alumno(strNombre,strRut );
curso.add(uno);

} // ingresaAlumno()
}

En la noche sigo completando el programa...

Continuara....

4 comentarios:

Unknown dijo...

Hola muchas gracias por el tiempo y los consejos estaba tambien tratando de resolver ,pero tu me estas ganando se agradece de verdad la ayuda..voy a continuar leyendo tu codigo Saludos,

Anónimo dijo...

excelente tus apuntes!!!
cuando tenga..codigos o trabajo te lo dejaré en los comentarios.
estudio lo mismo pero en viña!!
cuidate

Cainista dijo...

No se acepta spam de ningun tipo!

Edutiva dijo...

Amigos si tienen alguna consulta sobre sistemas de gestión académica tenemos los módulos de Ventas, Programación, Matrícula, Notas, Certificación, Facilitadores, Cuentas x cobrar, Administración, Seguridad, Biblioteca, Bolsa de trabajo, Encuestas, Interbanking y más...
Nos pueden encontrar en facebook para sus consultas sin compromiso...
www.facebook.com/edutiva