Inicio > Java > Certamen 2 Programacion Orientada a Objetos [2008]

Certamen 2 Programacion Orientada a Objetos [2008]

Bueno aqui les dejo el Certamen 2 que se hizo el año pasado la profesora Yasna Meza , espero que les sirva.

Enunciado:
Una empresa de venta de computadores desea agilizar su servicio. Se ha
detectado que muchos consumidores asisten a este local para consultar la
venta de un computador.

Se necesita una aplicación Java que permita al usuario ingresar los datos de
la venta y ver el costo asociado en pantalla.

Se ha diseñado la siguiente Interfaz de Usuario para esta aplicación:

WCertamen2

Se deben respetar las siguientes reglas:

· El modelo tiene un costo de:

Modelo Costo
Pentium V 300.000
AMD Duron 270.000
Athlon 250.000

· La pantalla tiene un costo de:

Pantalla Costo
Sin Pantalla 0
Pantalla 14” 50.000
Pantalla 15” 66.000
Pantalla 17” 85.000
Pantalla 19” 125.000
Sobre 19” 140.000

· El disco duro tiene un costo de:

Disco Duro Costo
80 GB 44.000
120 GB 60.000
160 GB 89.000
200 GB 122.000

El costo de venta total, considerando el IVA se calcula con la siguiente
fórmula:

Total IVA = (Costo modelo + Costo Pantalla + Costo Disco Duro) * 1.19

El costo de venta total, sin IVA se calcula con la siguiente fórmula:

Total SIN IVA = (Costo modelo + Costo Pantalla + Costo Disco Duro)

Además:

1. Se debe validar que el usuario escoja todos los datos antes de realizar
el cálculo, el cual se ejecuta al presionar el botón Calcular.
2. No se debe permitir modificar el cuadro donde se despliega el Total.
3. El botón Imprimir debe habilitar un Dialog, donde se indique el total
sin IVA y el total con IVA.
4. Crear una aplicación que levante la ventana y permite interactuar con
ella.

Clase Certamen2.java

/**
 * @(#)Certamen2.java
 *
 * Certamen2 application
 *
 * @author 
 * @version 1.00 2009/10/28
 */
 
public class Certamen2 {
    
    public static void main(String[] args) {
    	new WCertamen();
    }
}

Clase WCertamen.java

/*
 *	Importo todos los packages necesario para poder crear ventanas
 *	
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

/*
 *	Extiendo la clase WCertamen de JFrame, esto me permitirá heredar los metodos y atributos de la clase JFrame
 */
public class WCertamen extends JFrame {
	
	/* Atributos */
	
	/*
	 *	Aqui pondré todos los componentes que necesitaré usar a lo largo de la vida del programa,
	 *	Ej: Para despues asignarle un evento a los botones, sacar los datos de los combobox, etc
	 *	
	 */
	private JPanel panelArribaIzquierdo,panelArribaDerecho,panelAbajoIzquierdo,panelAbajoDerecho;
	private JTextField campoDeTexto;
	private JButton btnCalcular,btnSalir,btnImprimir;
	private JComboBox comboA,comboB;
	private ButtonGroup grupo;
	private JRadioButton radioA,radioB,radioC;
	/* Constructor por Defecto  */
	public WCertamen() {
		
		/* Con la palabra reservada "super" llamo al constructor por
		 * defecto de una entidad mas arriba en la jerarquia de clases
		 *
		 *	JFrame
		 *	|_______ WCertamen
		 *
		 *	En  este caso llamo a uno de los constructores de la Clase JFrame 
		 *	para setear el titulo de la ventana
		 *
		 */
		super("Certamen Dos");
		/* 
		 *	implemento el evento para que cuando al presionar el boton cerrar "X"
		 *	mi aplicacion se detenga.
		 **/
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		/*
		 *	A la ventana le asigno un Ancho y un Alto, el primer parametro.
		 *		Forma de uso:	setSize( ANCHO , ALTO )
		 */
		this.setSize(500,300);
		this.setLocationRelativeTo(null);
		
		/*
		 *	Al contenedor de la ventana (Contendrá todos los componentes) le asigno una
		 *	grilla, en palabras simples creo una grilla de 2 Filas y 2 Columnas
		 *		Forma de uso: 	GridLayout( FILAS , COLUMNAS )
		 *	La ventana Quedarà dividida Algo mas o menos asi :
		 *				Columnas
		 *			_________________
		 *			|		|		|
		 *			|_______|_______|
		 *  Filas	|		|		|
		 *			|_______|_______|
		 */
		this.getContentPane().setLayout(new GridLayout(2,2));
		
		
		/*
		 *	Creo 4 Paneles para cada espacio de la grilla
		 */
		
		this.panelArribaIzquierdo = new JPanel();
		this.panelArribaDerecho = new JPanel();
		this.panelAbajoIzquierdo = new JPanel();
		this.panelAbajoDerecho = new JPanel();
		
		
		/* Le seteo una grilla al panel izquierdo de arriba de 3,2 */
		this.panelArribaIzquierdo.setLayout(new GridLayout(3,2));
		JLabel lblModelo = new JLabel("Modelo: ");
		
		/* Creo tres Radio Buttons y los agrupo en el atributo "grupo" */
		radioA = new JRadioButton("Pentium v");
		radioB = new JRadioButton("AMD");
		radioC = new JRadioButton("Athlon");
		grupo = new ButtonGroup();
		grupo.add(radioA);
		grupo.add(radioB);
		grupo.add(radioC);
		
		/* Agrego al panel panelArribaIzquierdo todos los componentes */
		this.panelArribaIzquierdo.add(lblModelo);
		this.panelArribaIzquierdo.add(radioA);
		this.panelArribaIzquierdo.add(new JLabel());
		this.panelArribaIzquierdo.add(radioB);
		this.panelArribaIzquierdo.add(new JLabel());
		this.panelArribaIzquierdo.add(radioC);
		
		
		
		/* Vamos a Crear el segundo panel de arriba */
		this.panelArribaDerecho.setBorder(new EmptyBorder(30,0,30,0));
		this.panelArribaDerecho.setLayout(new GridLayout(2,3));
		
		/* Instancio la clase JComboBox y se lo asigno al tributo "comboA" */
		this.comboA = new JComboBox();
		comboA.addItem("80");
		comboA.addItem("120");
		comboA.addItem("180");
		comboA.addItem("200");
		/* Agrego los Componentes al JPanel "panelArribaDerecho" */
		this.panelArribaDerecho.add(new JLabel("Disco Duro"));
		this.panelArribaDerecho.add(comboA);
		this.panelArribaDerecho.add(new JLabel("GB"));
		
		
		this.comboB = new JComboBox();
		comboB.addItem("Sin");
		comboB.addItem("14");
		comboB.addItem("15");
		comboB.addItem("17");
		comboB.addItem("19");
		comboB.addItem("Mayor a 19");
		this.panelArribaDerecho.add(new JLabel("Pantalla"));
		this.panelArribaDerecho.add(comboB);
		this.panelArribaDerecho.add(new JLabel("Pulg."));
		
		
		this.panelAbajoIzquierdo.setLayout(new GridBagLayout());
		
		this.btnImprimir = new JButton("Imprimir");
		this.btnSalir = new JButton("Salir");
	
		this.panelAbajoIzquierdo.add(btnImprimir);
		this.panelAbajoIzquierdo.add(btnSalir);
			
		this.panelAbajoDerecho.setBorder(new EmptyBorder(50,0,50,0));
		this.panelAbajoDerecho.setLayout(new GridLayout(1,3));
			
		this.btnCalcular = new JButton("Calcular");
		this.panelAbajoDerecho.add(btnCalcular);
		this.panelAbajoDerecho.add(new JLabel("Total"));
		
		
		this.campoDeTexto = new JTextField();
this.campoDeTexto.setEnabled(false);
		this.panelAbajoDerecho.add(campoDeTexto);
			
		/*
		 *	Agrego todos los Paneles al Contenedor de la ventana
		 */
		this.getContentPane().add(panelArribaIzquierdo);
		this.getContentPane().add(panelArribaDerecho);
		this.getContentPane().add(panelAbajoIzquierdo);
		this.getContentPane().add(panelAbajoDerecho);
		
		this.pack();
		/* Llamo a el metodo 'agregarEventos()' para asignar todos los eventos */
		agregarEventos();
		/* Muestro la Ventana */
		this.setVisible(true);
	}
	/*
	 *	Metodo que calcula el total de la suma entre:
	 *	 Modelo + Disco Duro + Pantalla
	 *	Devuelve un int con la suma sin IVA.
	 */
	public int calcularSinIva() {
		/* 
		 *	declaro una variable llamada 'total' y la inicializo en 0 ,
		 *	ésta variable me llevara la cuenta de la sumna de:
		 *	 Modelo + Disco Duro + Pantalla
		 */
		int total=0;
		
		/*	#########
		 *	## MODELO
		 *	#########
		 *
		 *	Pregunto si el JRadioButton 'radioA' está seleccionado,
		 *	de ser asi debo sumarle al total el valor de un Pentium V
		 */
		 if(radioA.isSelected()) {
		 	/* Le sumo al total $300.000*/
		 	total += 300000;
		 } 
		 /* Osino, si el 'radioB' esta seleccionado,
		  *	debo sumar al total $270.000
		  */
		 else if(radioB.isSelected()) {
		 	/* Le sumo al total $270.000*/
		 	total += 270000;
		 }
		 /* Osino, si el 'radioC' esta seleccionado,
		  *	debo sumar al total $270.000
		  */
		 else if(radioC.isSelected()) {
		 	/* Le sumo al total $250.000*/
		 	total += 250000;
		 }
		 /*
		  *	Osino quiere decir que no seleccione ningun radioButton, 
		  *	entonces deberia lanzar una alerta con un error y no sumar nada al total
		  */
		 else {
		 	JOptionPane.showMessageDialog(null,"ERROR: Debes seleccionar un Modelo");
		 }
		 
		 /*
		  *	Si arriba hay un error quiere decir que no sume nada al total, en ese caso, 'total' aun estará en 0
		  *	Entonces si el valor es mayor a 0 quiere decir que debo continuar con la 
		  *	suma de los valores de disco duro y pantalla.
		  */
		  if(total > 0) {
		  	
			/*	#########
			 *	## Disco Duro
			 *	#########
			 *
		  	 *	Ahora seguire sumando el valor de los discos duros,
		  	 *	Para eso iré preguntando cual es el 
		  	 *	valor (texto)  de la opcion del JComboBox seleccionada
		  	 */
		  	if(comboA.getSelectedItem().toString()=="80") {
		  		/* Si la opcion seleccionada en el combobox es 80 debo sumar al total $44000 */
		  		total += 44000;
		  	} else if(comboA.getSelectedItem().toString()=="120") {
		  		/* Osino, Si la opcion seleccionada en el combobox es 120 debo sumar al total $60000 */
		  		total += 60000;
		  	} else if(comboA.getSelectedItem().toString()=="160") {
		  		/* Osino, Si la opcion seleccionada en el combobox es 160 debo sumar al total $89000 */
		  		total += 89000;
		  	} else if(comboA.getSelectedItem().toString()=="200") {
		  		/* Osino, Si la opcion seleccionada en el combobox es 200 debo sumar al total $122000 */
		  		total += 122000;
		  	} 
		  	
		  	/*	#########
			 *	## Pantalla
			 *	#########
			 *	Ahora seguire sumando el valor de las Pantallas ,
		  	 *	Para eso iré preguntando cual es el 
		  	 *	valor (texto)  de la opcion del JComboBox seleccionada
		  	 */
			 if(comboB.getSelectedItem() == "14") {
			 	/* Si la opcion seleccionada en el combobox es 14 debo sumar al total $50000 */
			 	total += 50000;
			 }
			 else if(comboB.getSelectedItem() == "15") {
			 	/* Si la opcion seleccionada en el combobox es 15 debo sumar al total $66000 */
			 	total += 66000;
			 }
			 else if(comboB.getSelectedItem() == "17") {
			 	/* Si la opcion seleccionada en el combobox es 17 debo sumar al total $85000 */
			 	total += 85000;
			 }
			 else if(comboB.getSelectedItem() == "19") {
			 	/* Si la opcion seleccionada en el combobox es 19 debo sumar al total $125000 */
			 	total += 125000;
			 } else if(comboB.getSelectedItem() == "Mayor a 19") {
			 	/* Si la opcion seleccionada en el combobox es 'Mayor a 19' debo sumar al total $140000 */
			 	total += 140000;
			 } else {
			 	/* 
			 	 *	Si la opcion no es ninguna de las anteriores 
			 	 *	quiere decir que seleccione la opcion 'Sin' donde debo sumar $0 
			 	 */
			 }
		  } 
		  /* 
		   *	Con el calculo hecho retorno el valor de la Variable 'total'
		   */
		   return total;
		  
	}
	public void agregarEventos() {
		ActionListener calcular = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				/* Llamo al metodo 'calcularSinIva()' para traer el valor de la suma total */
				int sumaSinIva = calcularSinIva();
				/* 
				 *	Le asigno al campo de texto el total de la compra 
				 */
				campoDeTexto.setText(String.valueOf(sumaSinIva));
			}
		};
		btnCalcular.addActionListener(calcular);
		
		ActionListener imprimir = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				/* Llamo al metodo 'calcularSinIva()' para traer el valor de la suma total */
				int sumaSinIva = calcularSinIva();
				/* 
				 *	Le agrego el iva a la 'sumaSinIva' y lo guardo en la variable 'sumaConIva'
				 */
				double sumaConIva = sumaSinIva * 1.19;
				/* 
				 *	Desplego una alerta mostrando los datos
				 */
				JOptionPane.showMessageDialog(null,"Valor Sin Iva: "+sumaSinIva+"\nValor Con Iva: "+sumaConIva);
			}
		};
		btnImprimir.addActionListener(imprimir);
		
		ActionListener salir = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				/* Detengo la Ejecucion del programa */
				System.exit(0);
			}
		};
		btnSalir.addActionListener(salir);
	}

}

Descargar Código de Fuente:
http://estebanfuentealba.net/ayudantia/Certamen2.rar

Categorías:Java Etiquetas: , , , ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: