Está en la página 1de 19

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN

INFORME PROGRAMACIN III UNIDAD

ENUNCIADO: En un hotel se tiene almacenada informacin sobre las habitaciones y huspedes, en los siguientes arreglos de registros

HABI

NUM

TIPO

PRECIO

DISP

NUM

TIPO

PRECIO

DISP

Donde: HABI[i] representa al registro que contiene la informacin de la Habitacin i. Los campos del registro son los siguientes: NUM: representa el nmero de habitacin. Variable de tipo entero. TIPO: indica el tipo de Habitacin. Variable de tipo cadena de caracteres se ingresa: SI: Si la habitacin es simple. DO: Si la habitacin es doble. TR: Si la habitacin es triple. SU: Si la habitacin es suite. PRECIO: Representa el precio de la Habitacin. Variable de tipo real. DISP: Indica si la habitacin est disponible o no. Variable de tipo cadena de caracteres. Se ingresa: SI: Si la habitacin est disponible. NO: Si la habitacin no est disponible.

NOTA: El arreglo est ordenado teniendo en cuenta el nmero de la habitacin

HUES

NUM HAB

NOM

FECARR

NUM HAB

NOM

FECARR

TIPO

PRECIO

DISP

Pgina 1

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


Donde:

HUES[i]:

representa al registro que contiene la informacin del husped i. Los campos del registro son los siguientes:

NUMHAB: NOM: FECARR:

Indica el nmero de habitacin. Variable de tipo entero. Expresa el nombre del Husped. Variable de tipo cadena de caracteres. Indica la fecha del arribo del cliente. Variable de tipo real.

Construya un diagrama de flujo tal que luego de leer los dos arreglos, pueda efectuar las siguientes operaciones:

a) Dado el nombre de un husped y la fecha actual, regrese lo que debe pagar dicho husped. (Asuma que la diferencia entre las fechas la da el nmero de das de alojamiento.) b) Obtenga el total de habitaciones simples, dobles, triples y suites que hay disponibles. c) Dado el nombre de un husped, lo elimine de los arreglos correspondientes.

d) Dado el nombre de un husped que desea una habitacin tipo X, se d de alta en los arreglos correspondiente si existe habitacin disponible. Deber adems leer la fecha del da de hoy.

Pgina 2

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


PSEUDOCDIGO: INICIO LEER N PARA i=1 HASTA N LEER HABI[i], HUES[i] //Llenar todos los datos de ambos registros MOSTRAR HABI[i], HUES[i] FIN PARA MIENTRAS salir=false HACER //Darle clic en Salir LEER op CASE (op) CASE 1: //Botn calmonto LEER nombre //Escribir nombre del Cliente //Botones de calmonto, dispo, eliminar, solicitar //Mostrar dichos registros

PARA i=1 HASTA N HACER SI HUES[i].nombre = nombre ENTONCES LEER hoy //da de hoy dias = hues[i].dias(hoy); precio = hab[hues[i].getNumeroHab()-1].getPrecio(); FIN SI FIN PARA IMPRIMIR nombre, (dias*precio) CASE 2: // dispo PARA i=1 HASTA N HACER SI HAB[i].dispo=SI ENTONCES MOSTRAR HAB[i].num, HAB[i].precio, HAB[i].tipo, HAB[i].dispo FIN SI FIN PARA

Pgina 3

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN

CASE 3: // Botn eliminar LEER nombre PARA i=1 HASTA N HACER SI HUES[i].nombre = nombre ENTONCES HUES[i].DELETE() //Eliminar del registro HAB[i]. dispo=SI FIN SI FIN PARA CASE 4: // solicitar LEER nombre, tipo PARA i=1 HASTA N HACER SI HUES[i].dispo=SI Y HUESP[i]=tipo ENTONCES HAB[i].dispo=NO HUES[i].nombre= nombre Actualizar () BREAK FIN SI FIN PARA FIN CASE FIN - MIENTRAS FIN

Pgina 4

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


PRUEBA DE ESCRITORIO: La dimensin del problema dejado a mi persona es en palabras simples, compleja, por ello realic el programa en modo visual. Adems cabe recalcar que no realice un Diagrama de Flujo porque la misma dimensin del problema no alcanzara ni siquiera si la pongo en forma horizontal. Pero logr plasmar mi lgica en el pseudocdigo anterior, lo ms generalmente posible.

Haremos la prueba con calcular monto: Te pide nombre.

Ingresamos la fecha de hoy manuelmente:

Pgina 5

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


Finalmente resulta:

Des mismo modos para los otros 3 botones:

PSEUDOCDIGO: package paquete; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; public class Ventana extends javax.swing.JFrame {

/** * Creates new form Ventana */

DefaultTableModel m1 = new DefaultTableModel(); DefaultTableModel m2 = new DefaultTableModel(); DefaultTableModel m3 = new DefaultTableModel(); Habitacion[] hab = new Habitacion[5]; Huesped[] hues = new Huesped[2]; int i1=-1; int i2=-1; String[] t1 = new String[4]; String[] t3 = new String[4]; String[] t2 = new String[3];

Pgina 6

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


public Ventana() { initComponents(); OverData(); t1[0]="Numero"; t1[1]="Precio"; t1[2]="Tipo"; t1[3]="Disponible";

t2[0]="Nombre"; t2[1]="Habitacion"; t2[2]="Fecha";

t3[0]="Numero"; t3[1]="Precio"; t3[2]="Tipo"; t3[3]="Disponible";

m1.setColumnIdentifiers(t1); m2.setColumnIdentifiers(t2); m3.setColumnIdentifiers(t3);

tb1.setModel(m1); tb2.setModel(m2); tb3.setModel(m3);

//llenar tablas

for(int i=0; i<=i1; i++){ String[] row = {hab[i].getNumero().toString(), String.valueOf(hab[i].getPrecio()), hab[i].getTipo(), hab[i].getDisponible()}; m1.addRow(row); }

for(int i=0; i<=i2; i++){ String[] row = {hues[i].getNombre(), hues[i].getNumeroHab().toString(), hues[i].getFecha()}; m2.addRow(row); }

Pgina 7

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN

public void OverData(){

++i1; hab[i1] = new Habitacion(); hab[i1].setDisponible("SI"); hab[i1].setNumero(1); hab[i1].setPrecio(20.0); hab[i1].setTipo("SI");

++i1; hab[i1] = new Habitacion(); hab[i1].setDisponible("SI"); hab[i1].setNumero(2); hab[i1].setPrecio(256.0); hab[i1].setTipo("TR");

++i1; hab[i1] = new Habitacion(); hab[i1].setDisponible("NO"); hab[i1].setNumero(3); hab[i1].setPrecio(40.0); hab[i1].setTipo("DO");

++i1; hab[i1] = new Habitacion(); hab[i1].setDisponible("NO"); hab[i1].setNumero(4); hab[i1].setPrecio(60.0); hab[i1].setTipo("TR");

++i1; hab[i1] = new Habitacion(); hab[i1].setDisponible("SI"); hab[i1].setNumero(5);

Pgina 8

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


hab[i1].setPrecio(20.0); hab[i1].setTipo("SU");

++i2; hues[i2] = new Huesped(); hues[i2].setNombre("Miguel Fernandez"); hues[i2].setNumeroHab(3); hues[i2].setFecha("2012/08/01");

++i2; hues[i2] = new Huesped(); hues[i2].setNombre("Agusto Gutierrez"); hues[i2].setNumeroHab(4); hues[i2].setFecha("2012/08/03");

/** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane(); tb1 = new javax.swing.JTable(); jScrollPane2 = new javax.swing.JScrollPane(); tb2 = new javax.swing.JTable(); btnCalcular = new javax.swing.JButton(); btnDisponibles = new javax.swing.JButton(); btnEliminar = new javax.swing.JButton(); btnSolicitar = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jScrollPane3 = new javax.swing.JScrollPane();

Pgina 9

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


tb3 = new javax.swing.JTable();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

tb1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane1.setViewportView(tb1);

tb2.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane2.setViewportView(tb2);

btnCalcular.setText("Calcular monto"); btnCalcular.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCalcularActionPerformed(evt); } });

Pgina 10

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


btnDisponibles.setText("Disponibles"); btnDisponibles.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnDisponiblesActionPerformed(evt); } });

btnEliminar.setText("Eliminar"); btnEliminar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnEliminarActionPerformed(evt); } });

btnSolicitar.setText("Solicitar"); btnSolicitar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnSolicitarActionPerformed(evt); } });

jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Resultados"));

tb3.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane3.setViewportView(tb3);

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

Pgina 11

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane3) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE) );

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 315, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 334, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addComponent(btnCalcular) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(btnDisponibles) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(btnEliminar) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(btnSolicitar))) .addGap(0, 0, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

Pgina 12

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


.addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 137, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnCalcular) .addComponent(btnDisponibles) .addComponent(btnEliminar) .addComponent(btnSolicitar)) .addGap(18, 18, 18) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) );

pack(); }// </editor-fold>

private void btnDisponiblesActionPerformed(java.awt.event.ActionEvent evt) {

for(int i=0; i<=i1; i++){ if(hab[i].getDisponible().equals("SI")){ String[] row = {hab[i].getNumero().toString(), String.valueOf(hab[i].getPrecio()), hab[i].getTipo(), hab[i].getDisponible()}; m3.addRow(row); } }

private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

String nombre; nombre = JOptionPane.showInputDialog("Ingrese nombre");

Pgina 13

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


int dias=0; double precio=0; for(int i=0; i<=i2;i++){ if(hues[i].getNombre().equals(nombre)){ String hoy; hoy = JOptionPane.showInputDialog("Fecha de hoy aaaa/mm/dd"); dias = hues[i].dias(hoy); precio = hab[hues[i].getNumeroHab()-1].getPrecio(); } }

JOptionPane.showMessageDialog(null, "El huesped "+nombre+" debe pagar: "+dias*precio);

private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String nombre; nombre = JOptionPane.showInputDialog("Ingrese nombre"); for(int i=0; i<=i2;i++){ if(hues[i].getNombre().equals(nombre)){ hab[hues[i].getNumeroHab()-1].setDisponible("SI"); } }

for(int i=m1.getRowCount()-1; i>=0; i--){ m1.removeRow(0); }

for(int i=0; i<=i1; i++){ String[] row = {hab[i].getNumero().toString(), String.valueOf(hab[i].getPrecio()), hab[i].getTipo(), hab[i].getDisponible()}; m1.addRow(row); }

int row = 0; for(int i=0; i<m2.getRowCount(); i++){

Pgina 14

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


String nom = m2.getValueAt(i, 0).toString(); if(nombre.equals(nom)) row = i; } --i2; m2.removeRow(row); }

private void btnSolicitarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String nombre; nombre = JOptionPane.showInputDialog("Ingrese nombre"); String tipo; tipo = JOptionPane.showInputDialog("Ingrese tipo: SI, DO, TR, SU"); int num = 0; for(int i=0; i<=i1; i++){ if(hab[i].getDisponible().equals("SI") && hab[i].getTipo().equals(tipo)){ hab[i].setDisponible("NO"); num = hab[i].getNumero(); break; } }

++i2; hues[i2] = new Huesped(); hues[i2].setNombre(nombre); hues[i2].setNumeroHab(num); String hoy; hoy = JOptionPane.showInputDialog("Fecha de hoy aaaa/mm/dd"); hues[i2].setFecha(hoy);

for(int i=m1.getRowCount()-1; i>=0; i--){ m1.removeRow(0); }

for(int i=0; i<=i1; i++){

Pgina 15

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


String[] row = {hab[i].getNumero().toString(), String.valueOf(hab[i].getPrecio()), hab[i].getTipo(), hab[i].getDisponible()}; m1.addRow(row); }

for(int i=m2.getRowCount()-1; i>=0; i--){ m2.removeRow(0); }

for(int i=0; i<=i2; i++){ String[] row = {hues[i].getNombre(), hues[i].getNumeroHab().toString(), hues[i].getFecha()}; m2.addRow(row); }

/** * @param args the command line arguments */ public static void main(String args[]) { /* * Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* * If Nimbus (introduced in Java SE 6) is not available, stay with the * default look and feel. For details see * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } }

Pgina 16

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


} catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(Ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(Ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(Ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(Ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold>

/* * Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() {

public void run() { new Ventana().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton btnCalcular; private javax.swing.JButton btnDisponibles; private javax.swing.JButton btnEliminar; private javax.swing.JButton btnSolicitar; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTable tb1; private javax.swing.JTable tb2; private javax.swing.JTable tb3;

Pgina 17

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


// End of variables declaration } //CLASES: package paquete; public class Huesped { private Integer numeroHab; private String nombre; private String fecha; // yyyy/mm/dd public void setFecha(String fecha) { this.fecha = fecha; } public void setNombre(String nombre) { this.nombre = nombre; } public void setNumeroHab(Integer numeroHab) { this.numeroHab = numeroHab; } public String getFecha() { return fecha; } public String getNombre() { return nombre; } public Integer getNumeroHab() { return numeroHab; } public int dias(String fecha){ fecha = fecha.substring(8, 10); int f1 = Integer.parseInt(fecha); int f2 = Integer.parseInt(this.fecha.substring(8, 10)); return f1 - f2; } }

Pgina 18

UNIVERSIDAD NACIONAL DEL SANTA PROGRAMACIN


//OTRA CLASES package paquete; public class Habitacion { private Integer numero; private String tipo; private double precio; private String disponible; public void setDisponible(String disponible) { this.disponible = disponible; } public void setNumero(Integer numero) { this.numero = numero; } public void setPrecio(double precio) { this.precio = precio; } public void setTipo(String tipo) { this.tipo = tipo; } public String getDisponible() { return disponible; } public Integer getNumero() { return numero; } public double getPrecio() { return precio; } public String getTipo() { return tipo; }

Pgina 19

También podría gustarte