Sunteți pe pagina 1din 5

Docente: Ing. Paulo Guerra Terán, MSc.

Estructura de Datos –TDA Colas.


Laboratorio de Colas

Crear la clase Paciente con tres atributos cédula, nombre y hora y métodos: constructor,
accesores get y set para los atributos nombre y cédula y un método getHora.
package prycolas;
import java.time.LocalTime;

public class Paciente


{
private String cedula;
private String nombre;
private LocalTime hora;
public Paciente(String cedula, String nombre)
{
super();
this.cedula = cedula;
this.nombre = nombre;
hora = LocalTime.now();
}
public String getCedula()
{
return cedula;
}
public void setCedula(String cedula)
{
this.cedula = cedula;
}
public String getNombre()
{
return nombre;
}
public void setNombre(String nombre)
{
this.nombre = nombre;
}
public String getHora()
{
return " " + hora.getHour() + ":" + hora.getMinute()
+ "-" + hora.getSecond();
}
public void setHora(LocalTime hora)
{
this.hora = hora;
}
}

A continuación, crear la Clase Nodo con los atributos dato y siguiente, constructor y métodos
accesores.
package prycolas;

public class Nodo


{
private Paciente dato;
private Nodo siguiente;

public Nodo(Paciente dato, Nodo siguiente)


Docente: Ing. Paulo Guerra Terán, MSc.
Estructura de Datos –TDA Colas.
{
super();
this.dato = dato;
this.siguiente = siguiente;
}

public Paciente getDato()


{
return dato;
}

public void setDato(Paciente dato)


{
this.dato = dato;
}

public Nodo getSiguiente()


{
return siguiente;
}

public void setSiguiente(Nodo siguiente)


{
this.siguiente = siguiente;
}
}

Creamos la clase Cola

package prycolas;

public class Cola


{

private Nodo inicio;


private Nodo fin;

public Cola()
{
super();
inicio = fin = null;
}

public boolean esVacia()


{
return inicio == fin && fin == null;
}

public void encolar(Paciente p)


{
Nodo n = new Nodo(p, null);
if (esVacia())
{
inicio = fin = n;
}
else
{
fin.setSiguiente(n);
fin = n;
}
}
Docente: Ing. Paulo Guerra Terán, MSc.
Estructura de Datos –TDA Colas.

public Paciente desencolar() throws Exception


{

if (esVacia()) {
throw new Exception("No hay elementos en la cola");
}
Nodo aux = inicio;
inicio = inicio.getSiguiente();
if (inicio == null) {
fin = inicio;
}
return aux.getDato();
}

public void imprimir() throws Exception


{
if (esVacia()) {
throw new Exception(" Cola vacia");
}
Nodo aux = inicio;
while (aux != null) {
System.out.println(aux.getDato().getNombre()
+ " llego a las " + aux.getDato().getHora());
aux = aux.getSiguiente();
}
}
}

Clase Principal
package prycolas;

import java.util.Random;
import java.util.Scanner;

public class Principal


{

private static int leerEntero(String mensaje, int min, int max)


{
Scanner ingreso = new Scanner(System.in);
int dato;
do
{
System.out.println(mensaje + "entre " + min + " y " + max);
dato = ingreso.nextInt();

} while (dato < min || dato > max);


return dato;
}

private static String leerString(String mensaje)


{
Scanner ingreso = new Scanner(System.in);
String dato;
System.out.println(mensaje);
dato = ingreso.nextLine();

return dato;
}

public static int menu()


Docente: Ing. Paulo Guerra Terán, MSc.
Estructura de Datos –TDA Colas.
{
System.out.println("Menú Opciones");
System.out.println("1. Encolar cliente");
System.out.println("2. Atender cliente");
System.out.println("3. Imprimir cola de clientes");
System.out.println("4. Salir");
int opcion = leerEntero("Seleccione una opcion", 1, 4);
return opcion;
}

public static void main(String[] args)


{
// TODO Auto-generated method stub
Cola clientes = new Cola();
int op;
do
{
op = menu();
switch (op)
{
case 1:
String cedula = leerString("Ingrese la cédula: ");
String nombre = leerString("Ingrese el nombre: ");
clientes.encolar(new Paciente(cedula, nombre));
break;
case 2:
try
{
Random aleatorio = new Random();
Paciente sale = clientes.desencolar();
System.out.println("Atendiendo a " + sale.getNombre() + "
espere ...");
int tiempo_atencion = 1000 + aleatorio.nextInt(10000);
Thread.sleep(tiempo_atencion);

System.out.println(sale.getNombre() + " fue atendido en "


+ tiempo_atencion / 1000 + "seg");

}
catch (InterruptedException e)
{
System.out.println(e.getMessage());
}
catch (Exception e)
{
System.out.println(e.getMessage());
}

break;
case 3:
System.out.println("Pacientes en cola ");
try
{
clientes.imprimir();
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
break;
case 4:
break;
Docente: Ing. Paulo Guerra Terán, MSc.
Estructura de Datos –TDA Colas.

}
} while (op != 4);

S-ar putea să vă placă și