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....