Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
HUES
NUM HAB
NOM
FECARR
NUM HAB
NOM
FECARR
TIPO
PRECIO
DISP
Pgina 1
HUES[i]:
representa al registro que contiene la informacin del husped i. Los campos del registro son los siguientes:
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
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
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
Pgina 5
PSEUDOCDIGO: package paquete; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; public class Ventana extends javax.swing.JFrame {
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
//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
Pgina 8
/** * 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
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
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);
Pgina 11
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
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:
Pgina 13
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=0; i<=i1; i++){ String[] row = {hab[i].getNumero().toString(), String.valueOf(hab[i].getPrecio()), hab[i].getTipo(), hab[i].getDisponible()}; m1.addRow(row); }
Pgina 14
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);
Pgina 15
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
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
Pgina 18
Pgina 19