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

16 jul 2007

Clase menuGranja

Corresponde a la segunda parte del trabajo.
Les recuerdo que en las buenas prácticas de programación, se requiere de, al menos, dos clases;
La clase que Plan que contiene el objeto principal, atributos privados y métodos públicos para "tocar" los datos.
La clase "Test" donde encontramos el menu, las entradas y salidas, las opciones y por supuesto la clase main

La clase "Plan" no debe ser manipulada directamente por el usuario!
La clase "Test" tiene métodos y variables estáticas y es la que se "ve"

Incluyo entonces el menu de esta tarea, que por supuesto, corresponde a una clase de tipo "Test"



/**
* @author Chubasco
*/

import java.io.*;

public class menuGranja
{

final static int maxAnimales = 30;
static int numAnimales = 0;
static Animal inventarioGranja[];

/**
* imprime
*/
private static void imprime( String mensaje){
System.out.print(mensaje);
} // imprimeLn

/**
* imprimeLn
*/
private static void imprimeLn( String mensaje){
System.out.println(mensaje);
} // imprimeLn


/**
*
*/
private static int leeInt(String mensaje )
{
int retorno=0;

System.out.print(mensaje);

try {
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
// resultado
retorno = Integer.parseInt(in.readLine());
}
catch (Exception e) {
System.out.print("Error al leer teclado");
} // fin del try
return (int)retorno;
}





/**
* leeMenu
* Imprime las opciones y entrega como resultado,
* la opcion selecionada
*/
public static int leeMenu( String mensaje, int maximo)
{
int retorno = 0;
do {
retorno = leeInt(mensaje);
} while ((retorno <1) &&(retorno > maximo)) ;
return retorno ;
}




/**
* menu
* Imprime el menu completo opciones y entrega
* como resultado, la opcion selecionada
*/
public static int menu( )
{
imprimeLn("--------------------------------------\n");
imprimeLn(" Granja");
imprimeLn(" ======");
imprimeLn("1.Crear Animal ");
imprimeLn("2.Mostrar Información");
imprimeLn("3.Comer");
imprimeLn("4.Total Producción");
imprimeLn("5.Total ganado días impares");
imprimeLn("6.Salir.");

return leeMenu("Ingresa opción :", 6);
// imprimeLn("------------------------------------------\n\n");
}




// Opción 1
private static void creaAnimal() {
int a=0;
a=inventarioGranja.length;
if (inventarioGranja.length>numAnimales) {
imprimeLn("Tipo de animal?");
a=leeMenu("1) Gallina / 2) Cabra / 3) Vaca [1/2/3]: ",3);
inventarioGranja[numAnimales++] = new Animal(a-1);
} else {
imprimeLn("No se puede seguir agregando animales");
} // endif
}




// opcion 2
private static void mostrarInformacion(){
String linea = "";

// ;
//
for (int i=0; i < numAnimales; i++) {
linea = (inventarioGranja[i].getTipo()+1)+": "
linea = linea + inventarioGranja[i].getNombreTipo();
imprimeLn( linea );
imprime( "Producción para el mes:" );
inventarioGranja[i].mostrarInformacion();
imprimeLn( "/");
} // for
} // mostrarInformacion();






private static void darDeComer( Animal a )
{
int diaComida = 0;
int cantComida = 0;

do {
diaComida = leeInt("Indique el día que comio :");
} while (( diaComida < 1) && ( diaComida > a.numDias));

do {
cantComida = leeInt("Indique la cantidad comida");
} while ( cantComida <= 0);
a.comer(diaComida,cantComida);
} // darDeComer






/**
* mostrarProduccion
*/
private static void mostrarProduccion(){
String linea;
//
imprimeLn( " Mostrar producción total x animal ");
imprimeLn( " ----------------------------------- ");
for (int i=0; i < numAnimales; i++) {
linea = (i+1)+": "+inventarioGranja[i].getNombreTipo();
imprime( linea );
linea = " - Producción total:"
linea = linea + inventarioGranja[i].totalProduccion();
imprimeLn( linea );
imprimeLn( " -------------------------------- ");
} // fin del for
} // fin de mostrarProduccion()





/**
* mostrarProduccionImpares
*/
private static void mostrarProduccionImpares(){
String linea;
//
imprimeLn( " Mostrar ganancia total x animal ");
imprimeLn( " (sólo días impares) ");
imprimeLn( " ----------------------------------- ");
for (int i=0; i < numAnimales; i++) {
linea = (i+1)+": "+inventarioGranja[i].getNombreTipo()
imprime( linea );
linea = " - Ganancia días impares:";
linea = linea + inventarioGranja[i].totalGanadoDiasImpares();
imprimeLn( linea );
imprimeLn( " -------------------------------- ");
} // fin de for
} // fin de mostrarProduccionImpares





/**
* Bloque principal
*/
public static void main( String[] args)
{
int opcion=0;
inventarioGranja = new Animal[maxAnimales];

do {
opcion = menu();
switch(opcion) {
case(1) : creaAnimal();
break;

case(2) : mostrarInformacion();
break;

case(3) : if ( numAnimales > 0)
darDeComer(inventarioGranja[numAnimales-1]);
else
imprimeLn("No hay animales...");
break;

case(4) : if ( numAnimales > 0)
mostrarProduccion();
else
imprimeLn("No hay animales...");
break;

case(5) :if ( numAnimales > 0)
mostrarProduccionImpares();
else
imprimeLn("No hay animales...");
break;

case(6) : imprimeLn("Saliendo...");
break;

} // end switch
} while (opcion!=6); //

} // main
}

No hay comentarios: