Subido por Miguel Angel

Guia Laboratorio Nº 04 - Arreglos - Modular

Anuncio
UNIMASTER
Fundamentos JAVA
Fundamentos Java
Laboratorio 04
Arreglos – Programación Modular
COMPETENCIAS:
Implementa aplicaciones Java usando Arreglos uni y bidimensional.
Implementa aplicación usando programacion modular.
-
ARREGLO UNIDIMENSIONAL
Caso desarrollado: Registro de Notas con arreglo unidimensional
Implementar una aplicación en Java que permite controlar las notas de un grupo de alumnos usando
arreglo unidimensional.
Para lo cual debemos crear 2 Clases: la clase ArregloRegistro (clase que manejo el arreglo
unidimensional) y la clase frmCalificacion (clase que interactúa con el usuario a través de la GUI).
Dentro de la clase ArregloRegistro:
-
Crear un arreglo para los Alumnos
Crear un arreglo para cada nota.
Crear un arreglo para sus promedios
La variable índice de tipo int que almacene la cantidad de alumnos registrados y determine la
posición del arreglo donde se almacenara el alumno.
Los siguientes métodos:
- El método constructor se encarga de crear el arreglo con 40 alumnos e inicialice la variable
índice en cero para el inicio del arreglo.
- El método calculaPromedio que devuelva el promedio de las 4 notas del alumno.
- El método registrar se encarga de almacenar el nombre del Alumno, sus cuatros notas y su
promedio en los arreglos respectivos e incremente la variable índice en uno.
- El método getIndice es un método de acceso para el atributo índice, ya que éste es privado.
Devuelve la cantidad de alumnos registrados.
- El método obtenerAlumno devuelve el nombre del Alumno que se encuentra en el arreglo en
la posición pos, ya que desde afuera de la clase no se tiene acceso al arreglo por ser privado.
- El método obtenerPromedio devuelve el promedio del Alumno que se encuentra en el arreglo
en la posición pos.
- El método obtenerNota1 devuelve la nota 1 del Alumno que se encuentra en el arreglo en la
posición pos.
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
-
Fundamentos JAVA
El método obtenerNota2 devuelve la nota 2 del Alumno que se encuentra en el arreglo en la
posición pos.
El método obtenerNota3 devuelve la nota 3 del Alumno que se encuentra en el arreglo en la
posición pos.
El método obtenerNota4 devuelve la nota 4 del Alumno que se encuentra en el arreglo en la
posición pos.
El método buscarAlumno localiza la posición de un determinado alumno.
GUI Propuesto:
Script de la clase ArregloRegistro:
package pClases;
public class ArregloRegistro {
private String alumno[];
private double promedio[];
private int n1[],n2[],n3[],n4[];
private int indice;
//Metodo constructor
public ArregloRegistro(){
alumno=new String[40];
promedio=new double[40];
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
n1=new int[40];
n2=new int[40];
n3=new int[40];
n4=new int[40];
índice=0;
}
//Metodos propios
public double calcularPromedio(int n1,int n2,int n3,int n4){
return (n1+n2+n3+n4)/4;
}
//Método que registra un alumno y su promedio
public void registrar(String alumno,int n1,int n2,int n3,
int n4,double promedio){
this.alumno[indice]=alumno;
this.n1[indice]=n1;
this.n2[indice]=n2;
this.n3[indice]=n3;
this.n4[índice]=n4;
this.promedio[índice]=promedio;
índice++;
}
//Determinar el total de alumnos registrados
public int getIndice(){
return indice;
}
//Método que permite buscar un determinado alumno
public int buscarAlumno(String alumno){
for(int i=0;i<indice;i++){
if (this.alumno[i].equals(alumno))
return i;
}
return -1;
}
//Método que devuelve el nombre del alumno según la posición del arreglo
public String obtenerAlumno(int pos){
return alumno[pos];
}
public int
return
}
public int
return
}
public int
return
}
public int
return
}
obtenerNota1(int pos){
n1[pos];
obtenerNota2(int pos){
n2[pos];
obtenerNota3(int pos){
n3[pos];
obtenerNota4(int pos){
n4[pos];
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
//Método que devuelve el promedio según la posición en el arreglo
public double obtenerPromedio(int pos){
return promedio[pos];
}
}
Script para crear el objeto del tipo arreglo:
//Creando el objeto de la clase ArregloRegistro
ArregloRegistro objAr = new ArregloRegistro();
Métodos de la aplicación:
//Imprimir los valores encontrados en el arreglo
void imprimir(){
limpiarTabla();
for(int i=0;i<objAr.getIndice();i++){
tRegistro.setValueAt(objAr.obtenerAlumno(i), i, 0);
tRegistro.setValueAt(objAr.obtenerNota1(i), i, 1);
tRegistro.setValueAt(objAr.obtenerNota2(i), i, 2);
tRegistro.setValueAt(objAr.obtenerNota3(i), i, 3);
tRegistro.setValueAt(objAr.obtenerNota4(i), i, 4);
tRegistro.setValueAt(objAr.obtenerPromedio(i), i, 5);
}
}
//Limpia el contenido de la tabla
void limpiarTabla(){
for (int i=0;i<20;i++){
tRegistro.setValueAt("", i,
tRegistro.setValueAt("", i,
tRegistro.setValueAt("", i,
tRegistro.setValueAt("", i,
tRegistro.setValueAt("", i,
tRegistro.setValueAt("", i,
}
}
0);
1);
2);
3);
4);
5);
Script del botón REGISTRAR:
private void btnRegistrarActionPerformed(java.awt.event.ActionEvent evt) {
//Capturando los valores desde el formulario
String alumno=getAlumno();
int n1=getN1();
int n2=getN2();
int n3=getN3();
int n4=getN4();
//Calculando el promedio de notas
double promedio=objAr.calcularPromedio(n1, n2, n3, n4);
//Enviándolo al Arreglo
objAr.registrar(alumno,n1,n2,n3,n4,promedio);
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
//Imprimirlo en la tabla
imprimir();
}
Script del botón LISTAR:
private void btnListarActionPerformed(java.awt.event.ActionEvent evt) {
imprimir();
}
Script del botón BUSCAR:
private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {
limpiarTabla();
String alumno = JOptionPane.showInputDialog(this,
"Ingrese nombre del alumno: ");
int pos= objAr.buscarAlumno(alumno);
tRegistro.setValueAt(objAr.obtenerAlumno(pos), 0, 0);
tRegistro.setValueAt(objAr.obtenerNota1(pos), 0, 1);
tRegistro.setValueAt(objAr.obtenerNota2(pos), 0, 2);
tRegistro.setValueAt(objAr.obtenerNota3(pos), 0, 3);
tRegistro.setValueAt(objAr.obtenerNota4(pos), 0, 4);
tRegistro.setValueAt(objAr.obtenerPromedio(pos), 0, 5);
}
Script del botón LIMPIAR:
private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {
limpiarTabla();
}
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
Caso propuesto 01: Control de Venta Diaria
Se deberá crear 2 clases: la clase ArregloVenta (clase que maneje el arreglo unidimensional) y
la clase frmVenta (clase que interactúa con el usuario a través de la GUI).
Dentro de la clase ArregloVenta:
-
Crear un arreglo para el número de venta que inicie con el valor 1000.
Crear un arreglo para el nombre del vendedor
Crear un arreglo para el monto total vendido
Crear un arreglo para el monto de comisión
La variable índice de tipo int que almacene la cantidad de ventas registradas y determine
la posición del arreglo donde se almacenará dicha venta.
Los siguientes métodos:
- El método constructor se encarga de crear el arreglo para 50 ventas e inicialice la variable
índice en cero para el inicio del arreglo.
- El método calculaComision que devuelva el monto de comisión según el monto vendido:
MONTO VENDIDO
<1000
ENTRE 1000 y 2000
>2000
-
-
PORCENTAJE DE COMISION
2%
10%
15%
El método registrar se encarga de almacenar la venta es decir el numero de venta,
nombre del vendedor, monto vendido y el monto por comisión en los arreglos respectivos
e incremente la variable índice.
El método getIndice es un método de acceso para el atributo índice, ya que éste es
privado. Devuelve la cantidad de ventas registradas.
El método obtenerNumero que devuelve el numero de venta que se encuentra en el
arreglo en la posición pos.
El método obtenerVendedor que devuelve los datos del vendedor que se encuentra en
el arreglo en la posición pos.
El método obtenerMontoVendido que devuelva los montos vendidos que se encuentra
en el arreglo en la posición pos.
El método obtenerMontoComision que devuelve el monto de comisión que se encuentra
en el arreglo en la posición pos.
El método buscarVenta el cual localiza la venta registrada por medio del numero de venta
y devolverá los datos de la venta (numero, nombre del vendedor, monto vendido y monto
comisión).
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
Caso propuesto 02: Control de Pago de Pensiones
Se deberá crear 2 clases: la clase ArregloPension (clase que maneje el arreglo unidimensional)
y la clase frmPension (clase que interactúa con el usuario a través de la GUI).
Dentro de la clase ArregloPension:
-
Crear un arreglo para el número autogenerado.
Crear un arreglo para los alumnos
Crear un arreglo para tipo de alumno
Crear un arreglo para el monto mensual
La variable índice de tipo int que almacene la cantidad de pensiones registradas y
determine la posición del arreglo donde se almacenará dicha pensión.
Los siguientes métodos:
- El método constructor se encarga de crear el arreglo para 30 alumnos e inicialice la
variable índice en cero para el inicio del arreglo.
- El método asignaMontoMensual que devuelva el monto mensual según el tipo de
alumno:
TIPO DE ALUMNO
MONTO MENSUAL
Regular
Media Beca
Beca
-
-
S/ 769.00
S/ 350.00
S/ 50.00
El método registrar se encarga de almacenar la pensión es decir el numero autogenerado,
nombre del alumno, tipo de alumno y el monto mensual en los arreglos respectivos e
incremente la variable índice.
El método getIndice es un método de acceso para el atributo índice, ya que éste es
privado. Devuelve la cantidad de pensiones registradas.
El método obtenerNumero que devuelve el numero autogenerado que se encuentra en
el arreglo en la posición pos.
El método obtenerAlumno que devuelve los datos del alumno que se encuentra en el
arreglo en la posición pos.
El método obtenerTipo que devuelva los tipos de alumnos que se encuentra en el arreglo
en la posición pos.
El método obtenerMonto que devuelve el monto mensual que se encuentra en el arreglo
en la posición pos.
El método buscarAlumno el cual localiza la pensión registrada por medio del numero de
registro y devolverá los datos de la pensión (numero autogenerado, nombre del alumno,
tipo y monto mensual).
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
ARREGLO MULTIDIMENSIONAL
Caso Desarrollado 1: Control de ingreso de productos
Implemente una aplicación en Java que permita controlar el mantenimiento de los productos en una
tienda. Para lo cual se deberá considerar el ingreso de un producto, la modificación de algún dato y
la eliminación de un determinado productos. Así mismo deberá implementar la consulta para buscar
un determinado producto y un listado para mostrar todos los registros.
Solución:
1. Crear un proyecto llamado “pjMantenimientoProducto”
2. Añadir tres paquetes los cuales tienen la siguiente distribución:
PAQUETE
pClases
pFormularios
CLASE
Producto
DESCRIPCION
Contiene los métodos get/set de los atributos de
los productos como su código, descripción, precio,
stock y categoría; así como su método constructor.
ArregloProducto
Contiene los métodos que permiten agregar,
modificar o eliminar un registro de producto en el
ArrayList.
Contiene toda la interfaz que nos permite
gestionar los datos de los productos.
Contiene todas las imágenes usadas en el
formulario de mantenimiento de producto.
frmProducto
pImagenes
3. Los botones del formulario van a trabajar de la siguiente manera:
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
BOTON
AGREGAR
MODIFICAR
ELIMINAR
BUSCAR
LISTAR
Fundamentos JAVA
DESCRIPCION
Tiene como misión mostrar el nuevo número de producto, limpiar los
controles para un nuevo ingreso de productos. Así mismo deberá
ocultarse para mostrar un botón llamado GRABAR, el cual grabara los
nuevos datos del producto nuevo, una vez finalizado volverá a activarse
el botón Agregar y ocultarse el botón Grabar.
Tiene como misión mostrar una ventana de dialogo que solicite el número
de producto a modificar una vez encontrado mostrarlo en los controles.
Así mismo deberá ocultarse para mostrar un botón llamado GRABAR, el
cual grabara los datos modificados del producto, una vez finalizado
volverá a activarse el botón Modificar y ocultarse el botón Grabar.
Tiene como misión mostrar una ventana de dialogo que solicite el número
de producto a eliminar. Una vez encontrado deberá borrarlo del arreglo
y mostrar los nuevos elementos en la lista.
Tiene como misión mostrar una ventana de dialogo que solicite el número
de producto a buscar una vez encontrado lo mostrara en los controles y
en la lista de productos.
Tiene como misión mostrar información registrada dentro del arreglo.
Clase Producto:
package pClases;
public class Producto {
private int codigo;
private String descripcion;
private double precio;
private String categoria;
private int stock;
//Definir el constructor
public Producto(int codigo, String descripcion, double precio,
String categoria, int stock) {
this.codigo = codigo;
this.descripcion = descripcion;
this.precio = precio;
this.categoria = categoria;
this.stock = stock;
}
//Definir los metodos Get y Set
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
public double getPrecio() {
return precio;
}
public void setPrecio(double precio) {
this.precio = precio;
}
public String getCategoria() {
return categoria;
}
public void setCategoria(String categoria) {
this.categoria = categoria;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
}
Clase ArregloProductos:
package pClases;
import java.util.ArrayList;
public class ArregloProductos {
//Definir el arreglo de productos
ArrayList<Producto> prod;
//Definir el metodo constructor
public ArregloProductos(){
prod = new ArrayList<Producto>();
}
//Metodo que devuelve el total de productos registrados
public int totalProductos(){
return prod.size();
}
//Metodo para agregar un nuevo producto
public void agregaProducto(Producto objP){
prod.add(objP);
}
//Metodo para obtener elementos del arreglo
public Producto obtener(int pos){
return prod.get(pos);
}
//Metodo para buscar un producto desde el arreglo
public Producto buscarProducto(int cod){
for(Producto p:prod){
if (p.getCodigo()==cod)
return p;
Elaborado por: Lic. Manuel Torres Re.
Fundamentos JAVA
UNIMASTER
Fundamentos JAVA
}
return null;
}
//Metodo para eliminar un producto del arreglo
public void eliminaProducto(Producto objP){
prod.remove(objP);
}
}
Clase frmProducto:
package pFormularios;
import javax.swing.JOptionPane;
import pClases.ArregloProductos;
import pClases.Producto;
public class frmProducto extends javax.swing.JFrame {
ArregloProductos aProductos = new ArregloProductos();
int n;
public frmProducto() {
initComponents();
//Ocultar los botones de grabacion
btnGrabarA.setVisible(false);
btnGrabarM.setVisible(false);
//Llenar de productos
cboCategoria.addItem("Bebidas");
cboCategoria.addItem("Lacteos");
cboCategoria.addItem("Abarrotes");
cboCategoria.addItem("Golosinas");
}
void generaCodigo() {
n++;
lblCodigo.setText("" + n);
}
private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {
generaCodigo();
limpiarCajas();
//Habilitando los botones
btnAgregar.setVisible(false);
btnGrabarA.setVisible(true);
}
private void btnGrabarAActionPerformed(java.awt.event.ActionEvent evt) {
try {
int codigo = Integer.parseInt(lblCodigo.getText());
String descripcion = txtDescripcion.getText();
String categoria = String.valueOf(cboCategoria.getSelectedItem());
double precio = Double.parseDouble(txtPrecio.getText());
int stock = Integer.parseInt(txtStock.getText());
//Objeto de la clase Producto
Producto objP = new Producto(codigo,descripcion,precio,categoria,stock);
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
aProductos.agregaProducto(objP);
listar();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,
"Ocurrió un error al intentar agregar",
"Confirmación",
JOptionPane.INFORMATION_MESSAGE);
}
//Habilitando los botones
btnAgregar.setVisible(true);
btnGrabarA.setVisible(false);
limpiarCajas();
}
private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {
int cod = Integer.parseInt(JOptionPane.showInputDialog(null,
"Ingrese codigo de producto:"));
Producto objP = aProductos.buscarProducto(cod);
if (objP != null) {
lblCodigo.setText("" + objP.getCodigo());
txtDescripcion.setText("" + objP.getDescripcion());
txtPrecio.setText("" + objP.getPrecio());
cboCategoria.setSelectedItem("" + objP.getCategoria());
txtStock.setText("" + objP.getStock());
}
btnModificar.setVisible(false);
btnGrabarM.setVisible(true);
}
private void btnGrabarMActionPerformed(java.awt.event.ActionEvent evt) {
try {
Producto pro = aProductos.buscarProducto(
Integer.parseInt(lblCodigo.getText()));
pro.setDescripcion(txtDescripcion.getText());
pro.setPrecio(Double.parseDouble(txtPrecio.getText()));
pro.setStock(Integer.parseInt(txtStock.getText()));
pro.setCategoria(String.valueOf(cboCategoria.getSelectedItem()));
JOptionPane.showMessageDialog(null, "Producto modificada correctamente",
"Confirmación",
JOptionPane.INFORMATION_MESSAGE);
listar();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,
"Ocurrió un error al intentar modificar",
"Confirmación",
JOptionPane.INFORMATION_MESSAGE);
}
btnGrabarM.setVisible(false);
btnModificar.setVisible(true);
limpiarCajas();
}
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
limpiaTabla();
int cod = Integer.parseInt(JOptionPane.showInputDialog(null,
"Ingrese codigo de producto:"));
Producto objP = aProductos.buscarProducto(cod);
if (objP != null) {
aProductos.eliminaProducto(objP);
JOptionPane.showMessageDialog(null, "Producto eliminado correctamente",
"Confirmacion",
JOptionPane.INFORMATION_MESSAGE);
listar();
}
}
private void btnListarActionPerformed(java.awt.event.ActionEvent evt) {
limpiaTabla();
limpiarCajas();
listar();
}
private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {
int cod = Integer.parseInt(JOptionPane.showInputDialog(null,
"Ingrese codigo de producto:"));
limpiaTabla();
Producto objP = aProductos.buscarProducto(cod);
if (objP != null) {
tProductos.setValueAt(objP.getCodigo(), 0, 0);
tProductos.setValueAt(objP.getDescripcion(), 0, 1);
tProductos.setValueAt(objP.getPrecio(), 0, 2);
tProductos.setValueAt(objP.getCategoria(), 0, 3);
tProductos.setValueAt(objP.getStock(), 0, 4);
lblCodigo.setText("" + objP.getCodigo());
txtDescripcion.setText("" + objP.getDescripcion());
txtPrecio.setText("" + objP.getPrecio());
cboCategoria.setSelectedItem("" + objP.getCategoria());
txtStock.setText("" + objP.getStock());
}
}
void listar() {
for (int i = 0; i < aProductos.totalProductos(); i++) {
Producto objP = aProductos.obtener(i);
tProductos.setValueAt(objP.getCodigo(), i, 0);
tProductos.setValueAt(objP.getDescripcion(), i, 1);
tProductos.setValueAt(objP.getPrecio(), i, 2);
tProductos.setValueAt(objP.getCategoria(), i, 3);
tProductos.setValueAt(objP.getStock(), i, 4);
}
}
//Metodo que limpia la tabla
void limpiaTabla() {
for (int i = 0; i < 20; i++) {
tProductos.setValueAt("", i,
tProductos.setValueAt("", i,
tProductos.setValueAt("", i,
tProductos.setValueAt("", i,
tProductos.setValueAt("", i,
}
Elaborado por: Lic. Manuel Torres Re.
0);
1);
2);
3);
4);
UNIMASTER
Fundamentos JAVA
}
void limpiarCajas() {
txtDescripcion.setText("");
txtPrecio.setText("");
txtStock.setText("");
cboCategoria.setSelectedIndex(-1);
}
Caso Propuesto 1: Mantenimiento de Empleados
Implemente una aplicación en Java que permita controlar el mantenimiento de los empleados en
una empresa. Para lo cual se deberá considerar el ingreso de un nuevo empleado, la modificación
de algún dato y la eliminación de un determinado empleado. Así mismo deberá implementar la
consulta para buscar un determinado empleado y un listado para mostrar todos los registros.
Tener en cuenta
1. Crear un proyecto llamado “pjMantenimientoEmpleado”
2. Añadir tres paquetes los cuales tienen la siguiente distribución:
PAQUETE
pClases
pFormularios
CLASE
Empleado
DESCRIPCION
Contiene los métodos get/set de los atributos de
los empleados como su código, nombre, fecha de
nacimiento, tipo de empleado y sueldo; así como
su método constructor.
ArregloEmpleado
Contiene los métodos que permiten agregar,
modificar buscar y eliminar un registro de
empleado en el ArrayList.
Contiene toda la interfaz que nos permite
gestionar los datos de los empleados.
Contiene todas las imágenes usadas en el
formulario de mantenimiento de empleados.
frmEmpleado
pImagenes
3. Los botones del formulario van a trabajar de la siguiente manera:
BOTON
AGREGAR
MODIFICAR
ELIMINAR
BUSCAR
LISTAR
DESCRIPCION
Tiene como misión mostrar el nuevo número de empleado, limpiar los
controles para un nuevo ingreso de empleado. Así mismo deberá
ocultarse para mostrar un botón llamado GRABAR, el cual grabara los
nuevos datos del empleado nuevo, una vez finalizado volverá a activarse
el botón Agregar y ocultarse el botón Grabar.
Tiene como misión mostrar una ventana de dialogo que solicite el número
de empleado a modificar una vez encontrado mostrarlo en los controles.
Así mismo deberá ocultarse para mostrar un botón llamado GRABAR, el
cual grabara los datos modificados del empleado, una vez finalizado
volverá a activarse el botón Modificar y ocultarse el botón Grabar.
Tiene como misión mostrar una ventana de dialogo que solicite el número
de empleado a eliminar. Una vez encontrado deberá borrarlo del arreglo
y mostrar los nuevos elementos en la lista.
Tiene como misión mostrar una ventana de dialogo que solicite el número
de empleado a buscar una vez encontrado lo mostrara en los controles y
en la lista de empleados.
Tiene como misión mostrar información registrada dentro del arreglo.
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
Caso Propuesto 2: Mantenimiento de alumnos
Implemente una aplicación en Java que permita controlar el mantenimiento de los alumnos en una
institución privada de educación. Para lo cual se deberá considerar el ingreso de un nuevo alumno,
la modificación de algún dato y la eliminación de un determinado alumno. Así mismo deberá
implementar la consulta para buscar un determinado alumno y un listado para mostrar todos los
registros.
Tener en cuenta
1. Crear un proyecto llamado “pjMantenimientoAlumno”
2. Añadir tres paquetes los cuales tienen la siguiente distribución:
PAQUETE
pClases
CLASE
Alumno
ArregloAlumno
pFormularios
frmAlumno
pImagenes
DESCRIPCION
Contiene los métodos get/set de los atributos de
los alumnos como su código, nombre,
especialidad, y semestre; así como su método
constructor.
Contiene los métodos que permiten agregar,
modificar buscar y eliminar un registro de alumno
en el ArrayList.
Contiene toda la interfaz que nos permite
gestionar los datos de los alumnos.
Contiene todas las imágenes usadas en el
formulario de mantenimiento de alumnos.
3. Los botones del formulario van a trabajar de la siguiente manera:
BOTON
AGREGAR
MODIFICAR
ELIMINAR
BUSCAR
LISTAR
DESCRIPCION
Tiene como misión mostrar el nuevo número de alumnos, limpiar los
controles para un nuevo ingreso de alumno. Así mismo deberá ocultarse
para mostrar un botón llamado GRABAR, el cual grabara los nuevos datos
del alumno nuevo, una vez finalizado volverá a activarse el botón Agregar
y ocultarse el botón Grabar.
Tiene como misión mostrar una ventana de dialogo que solicite el número
de alumno a modificar una vez encontrado mostrarlo en los controles. Así
mismo deberá ocultarse para mostrar un botón llamado GRABAR, el cual
grabara los datos modificados del alumno, una vez finalizado volverá a
activarse el botón Modificar y ocultarse el botón Grabar.
Tiene como misión mostrar una ventana de dialogo que solicite el número
de alumno a eliminar. Una vez encontrado deberá borrarlo del arreglo y
mostrar los nuevos elementos en la lista.
Tiene como misión mostrar una ventana de dialogo que solicite el número
de alumno a buscar una vez encontrado lo mostrara en los controles y en
la lista de alumnos.
Tiene como misión mostrar información registrada dentro del arreglo.
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
Programación Modular
La programación modular es una metodología de programación que permite construir un programa
grande descomponiéndolo en pequeños subprogramas o módulos. Para ello se parte de un módulo
principal que se descompone en varios submódulos que son controlados por el módulo principal. Si
la tarea asignada a un módulo es demasiado compleja este deberá descomponerse en otros módulos
más pequeños hasta lograr módulos que hagan tareas relativamente sencillas. A este proceso de
refinamiento sucesivo se conoce también como la técnica de “divide y vencerás”.
Las tareas asignadas a los subprogramas pueden ser de diversa índole: entrada, salida, cálculos,
control de otros módulos, etc. Para que un subprograma pueda efectuar su tarea tiene que ser
llamado o invocado por el programa principal o por algún otro módulo que considere necesario el
servicio del subprograma. Una vez que el subprograma termina su tarea, devuelve el control al punto
donde se hizo la llamada. Un subprograma puede llamar a su vez a otros subprogramas.
En el lenguaje Java a los módulos o subprogramas se denominan métodos, mientras que en el
lenguaje algorítmico se denominan subalgoritmos.
VARIABLES LOCALES Y GLOBALES
Los métodos pueden utilizar sus propias variables denominadas variables locales o variables de
uso compartido, comunes a todos los métodos, denominadas variables globales.
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
A. Variables Locales
Una variable local es una variable que se declara en el interior de un método por lo que su
ámbito es el interior del método, es decir, sólo puede ser utilizada dentro del método donde
fue declarada. Este tipo de variable se crea al iniciar la ejecución del método y se destruye
al finalizar. Por otro lado, una variable local se crea vacía, es decir no recibe ninguna
inicialización automática.
B. Variables Globales
Una variable global es una variable que se declara dentro del programa, pero en el exterior
de todos los métodos, por lo que su ámbito es el interior de todo el programa, es decir,
puede ser utilizada desde cualquier parte del programa. Este tipo de variable se crea al iniciar
la ejecución del programa y se destruye al finalizar. Por otro lado, una variable global se
inicializa automáticamente: 0 si es de tipo int, 0.0 si es de tipo double, false si es de tipo
bolean, ‘\0’ si es de tipo char y null si es de tipo String.
METODOS TIPO void
Un método tipo void es un módulo de programa que puede recibir datos de entrada a través de
variables locales denominadas parámetros; pero, que no retorna ningún resultado al punto donde
es invocado, razón por el que se le conoce también como método sin valor de retorno. Este tipo de
método, al igual que los métodos que retornan un valor, puede recibir datos de entrada a través de
variables locales al método conocidas como parámetros.
Los métodos tipo void pueden dividirse a su vez en dos tipos:
 Métodos tipo void sin parámetros.
 Métodos tipo void con parámetros.
Método tipo void
sin parámetros
Definición
Invocación
Estos métodos no pueden recibir datos de entrada ni retornar ningún
resultado al punto de su invocación.
void nombreMetodo(){
Declaración de variables locales
Cuerpo del método
}
nombreMetodo();
Estos métodos reciben datos de entrada a través de variables locales al
método denominadas parámetros; pero, igual que en el caso anterior no
pueden retornar ningún resultado al punto de su invocación.
Método tipo void
con parámetros
Definición
Invocación
Donde p1, p2, p3, etc son los parámetros del método. El número de
parámetros es variable y depende de las necesidades del método.
void nombreMetodo( tipo1 p1, tipo2 p2, tipo3 p3, . . . ){
Declaración de variables locales
Cuerpo del método
}
nombreMetodo(v1, v2, v3, . . . );
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
Caso Desarrollado
En una universidad, los alumnos están categorizados en cuatro categorías. A cada categoría le
corresponde una pensión mensual distinta dada en la siguiente tabla:
Semestralmente, la universidad efectúa rebajas en las pensiones de sus estudiantes a partir del
segundo ciclo en base al promedio ponderado del ciclo anterior en porcentajes dados en la tabla
siguiente:
Diseñe un programa que determine cuánto de rebaja recibirá un estudiante sobre su pensión actual
y a cuánto asciende su nueva pensión. Declare todas las variables como globales y use métodos tipo
void.
Solución:
Código:
// Declaración de variables globales para el algoritmo
int categoria;
double actualpen, nuevapen, descuento, promedio;
// Método del botón Procesar
void procesar(){
ingresarDatos();
calcularPensionActual();
calcularDescuento();
calcularNuevaPension();
mostrarResultados();
}
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
// Método del botón Borrar
void borrar(){
txtS.setText("");
txtPromedio.setText("");
txtPromedio.requestFocus();
}
// Ingresa datos
void ingresarDatos(){
categoria = choCategoria.getSelectedIndex();
promedio = Double.parseDouble(txtPromedio.getText());
}
// Calcula la pensión actual
void calcularPensionActual(){
if( categoria == 0 )
actualpen = 550;
else if( categoria == 1 )
actualpen = 500;
else if( categoria == 2 )
actualpen = 460;
else
actualpen = 400;
}
// Cálcula el descuento
void calcularDescuento(){
if( promedio <= 13.99 )
descuento = 0;
else if( promedio <= 15.99 )
descuento = 0.10*actualpen;
else if( promedio <= 17.99 )
descuento = 0.12*actualpen;
else
descuento = 0.15*actualpen;
}
// Calcula la nueva pensión
void calcularNuevaPension(){
nuevapen = actualpen - descuento;
}
// Muestra resultados
void mostrarResultados(){
txtS.setText("");
imprimir("Pensión actual : " + actualpen);
imprimir("Descuento : " + descuento);
imprimir("Nueva pensión : " + nuevapen);
}
// Imprime una cadena de texto incluyendo un salto de línea al final
void imprimir(String cad){
txtS.append(cad + "\n");
}
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
METODOS CON VALOR DE RETORNO
Un método con valor de retorno es un módulo de programa que puede recibir datos de entrada a
través de variables locales denominadas parámetros y que retorna un resultado al punto donde es
invocado. Este tipo de método se utiliza para efectuar cualquier tipo de proceso que produzca un
resultado.
Estos métodos pueden dividirse a su vez en dos tipos:
 Métodos con valor de retorno sin parámetros.
 Métodos con valor de retorno con parámetros.
Método con Valor
de Retorno sin
parámetros
Definición
Invocación
Este tipo de métodos no reciben datos de entrada; pero, retornan un
resultado al punto donde son invocados.
tipo nombre(){
Declaración de variables locales
Cuerpo del método
return valor;
}
variable = nombre();
Estos métodos reciben datos de entrada a través de parámetros y retornan
un resultado al punto de su invocación.
Método con Valor
de Retorno con
parámetros
Definición
Invocación
tipo nombre( tipo1 p1, tipo2 p2, tipo3 p3, . . .){
Declaración de variables locales
Cuerpo del método
return valor;
}
variable = nombre(v1, v2, v3, …);
Caso Desarrollado:
Una empresa evalúa a sus empleados bajo dos criterios: puntualidad y rendimiento. En cada caso
el empleado recibe un puntaje que va de 1 a 10, de acuerdo a los siguientes criterios:
Puntaje por puntualidad:- está en función a los minutos de tardanza de acuerdo a la siguiente tabla:
Puntaje por rendimiento:- está en función a la cantidad de observaciones efectuadas al empleado
por no cumplir sus obligaciones de acuerdo a la siguiente tabla:
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
El puntaje total del empleado es la suma del puntaje por puntualidad más el puntaje por rendimiento.
En base al puntaje total, el empleado recibe una bonificación anual de acuerdo a la siguiente tabla:
Diseñe un programa que determine el puntaje por puntualidad, el puntaje por rendimiento, el
puntaje total y la bonificación que le corresponden a un empleado de la empresa.
Declare todas las variables como locales y use métodos con valor de retorno para cada una de las
entradas y para cada uno de los cálculos.
Solución:
public void actionPerformed( ActionEvent e ){
if( e.getSource() == btnProcesar )
procesar();
if( e.getSource() == btnBorrar )
borrar();
}
void procesar(){
// Declaración de variables locales
int minutosTar, numeroObs, puntajePun, puntajeRen, puntajeTot;
double bonificacion;
// Entrada de datos
minutosTar = getMinutos();
numeroObs = getObservaciones();
// Proceso de cálculo
puntajePun = determinarPuntajePuntualidad(minutosTar);
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
puntajeRen = determinarPuntajeRendimiento(numeroObs);
puntajeTot = determinarPuntajeTotal(puntajePun, puntajeRen);
bonificacion = determinarBonificacion(puntajeTot);
// Salida de resultados
txtS.setText("");
imprimir("Puntaje por puntualidad : " + puntajePun);
imprimir("Puntaje por rendimiento : " + puntajeRen);
imprimir("Puntaje total : " + puntajeTot);
imprimir("Bonificación : " + bonificacion);
}
// Método del botón Borrar
void borrar(){
txtMinutosTar.setText("");
txtNumeroObs.setText("");
txtS.setText("");
txtMinutosTar.requestFocus();
}
// Lee y retorna los minutos de tardanza
int getMinutos(){
return Integer.parseInt(txtMinutosTar.getText());
}
// Lee y retorna el número de observaciones
int getObservaciones(){
return Integer.parseInt(txtNumeroObs.getText());
}
// Determina y retorna el puntaje por puntualidad
int determinarPuntajePuntualidad(int minutosTar){
if(minutosTar == 0)
return 10;
else if(minutosTar <= 2)
return 8;
else if(minutosTar <= 5)
return 6;
else if(minutosTar <= 9)
return 4;
else
return 0;
}
// Determina y retorna el puntaje por rendimiento
int determinarPuntajeRendimiento(int numeroObs){
if(numeroObs == 0)
return 10;
else if(numeroObs == 1)
return 8;
else if(numeroObs == 2)
return 5;
else if(numeroObs == 3)
return 1;
else
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
return 0;
}
// Determina y retorna el puntaje total
int determinarPuntajeTotal(int puntajePun, int puntajeRen){
return puntajePun + puntajeRen;
}
// Determina y retorna la bonificación
double determinarBonificacion(int puntajeTot){
if(puntajeTot < 11)
return 2.5*puntajeTot;
else if(puntajeTot <= 13)
return 5.0*puntajeTot;
else if(puntajeTot <= 16)
return 7.5*puntajeTot;
else if(puntajeTot <= 19)
return 10.0*puntajeTot;
else
return 12.5*puntajeTot;
}
// Imprime una cadena de texto incluyendo un salto de línea al final
void imprimir(String cad){
txtS.append(cad + "\n");
}
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
Casos Propuestos
1. Digite el número de teléfono, el tipo de llamada y la cantidad de minutos utilizados, muestre
el importe a pagar. Tome en cuenta la siguiente tabla para el cálculo del importe de pago.
2. Ingrese el nombre del cliente, su importe de compra y su tipo de tarjeta, visualice el recargo
(vea la tabla) y su importe de compra final.
3. Una tienda vende tres tipos de productos a los precios unitarios dados en la siguiente tabla:
Como oferta la tienda ofrece un regalo de acuerdo a la siguiente tabla:
4. Diseñe un programa que determine el importe a pagar y el regalo para un cliente de la
tienda. Ingrese el nombre del trabajador, su estado civil, el turno y sueldo; se deberá mostrar
el incremento (vea la tabla de abajo) y su sueldo final.
Elaborado por: Lic. Manuel Torres Re.
UNIMASTER
Fundamentos JAVA
5. En una empresa se acordó dar bonificaciones por única vez a sus trabajadores en función a
su grado de estudios, para esto se deberá Ingresar por teclado el nombre del empleado, su
grado de estudios y su sueldo en soles, se deberá mostrar el nombre del grado de estudios,
su bonificación y sueldo final, estos dos últimos en soles.
6. Una empresa calcula el sueldo bruto de sus trabajadores multiplicando las horas trabajadas
por una tarifa horaria que depende de la categoría del trabajador de acuerdo a la siguiente
tabla:
Por ley, todo trabajador se somete a un porcentaje de descuento del sueldo bruto: 20% si
el sueldo bruto es mayor que S/. 2500 y 15% en caso contrario.
Diseñe un programa que determine el sueldo bruto, el descuento y el sueldo neto que le
corresponden a un trabajador de la empresa. Declare todas las variables como globales y
use métodos tipo void diferentes para cada uno de los cálculos.
Elaborado por: Lic. Manuel Torres Re.
Descargar