Está en la página 1de 11

UNIVERSIDAD DE CÓRDOBA.

PROGRAMA INGENIERÍA DE SISTEMAS

COLAS: CONSECIONARIO AUTOMOTRIZ

REALIZADO POR
JAVIER DAVID SÁNCHEZ CALDERÓN

ASIGNATURA:
PROGRAMACION II

TUTOR:
PEDRO GUEVARA

UNIVERSIDAD DE CORDOBA
DEPARTAMENTO DE INGENIERIA DE SISTEMAS

MONTERIA – CORDOBA
2017
UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

 Diseño de clases de la solucion.


UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

 Implementacion de la case Vehiculo en el fichero


Vehiculo.java
clase Vehiculo donde se declaran los atributos del objeto

public class Vehiculo {

// se declaran las variables propietario y placa

private String propietario;

private String placa;

public Vehiculo() {// metodo constructor y dentro de este se inizializan las variables

propietario = "";

placa = "";

public String getPropietario(){//metodo selector de la variable propietario

return propietario;

public void setPropietario(String prop){//metodo modificador de la variable propietario

propietario = prop;

public String getPlaca(){//metodo selector de la variable placa

return placa;

public void setPlaca(String pla){//metodo modificador de la variable placa

placa = pla;

}
UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

 Implementacion de la clase VectorVehiculo en el fichero


VectorVehiculo.java
//clase VectorVehiculo donde se declara el vector

public class VectorVehiculo {

static final int N = 50;//numero maximo de elementos que se podran almacenar en la cola

private int finalcola;//Atributo para hacer referencia a la posición del primer elemento de la
cola.

private int frentecola;//Atributo para hacer referencia a la posición del último elemento de la
cola.

//Vector que se usara como estructura auxiliar para guardar los elementos de la cola.

private Vehiculo vector[] = new Vehiculo[N];

//Se declara el método constructor de la clase.

public VectorVehiculo() {

finalcola = -1;//La cola está vacía al principio, cuando la posición del final es -1.

frentecola = 0;//Asignamos al frente la primera posición del arreglo.

//metodo que retorna la posición del final de la cola.

public int getFinalcola() {

return finalcola;//retorna la posicion del final.

//método que retorna la posición del frente de la cola.

public int getFrentecola() {

return frentecola;//retorna la posicion del frente.

//metodo que sirve para dezplazar los elementos del vector de izquierda a derecha.

public void dezplazar(){

for (int i = 1; i<=getFinalcola(); i++){ //pasa el elemento que esta en la posicion i a la posicion
i-1

vector[i-1]=vector[i];
UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

//metodo que retorna el estado de la cola, si esta vacia retorna true de lo contrario false

public boolean colaVacia(){

if (getFinalcola() == -1){

return true;

}else{

return false;

//metodo que retorna el estado de la cola, si esta llena retorna true de lo contrario false.

public boolean colaLlena(){

if (getFinalcola() == N-1){

return true;

}else{

return false;

//metodo para agregar datos a la clase vehiculo por el final, inf sera el parametro que se le agrega
a la cola.

public void agregar(Vehiculo inf){

if (! colaLlena()){//si la cola no esta llena.

finalcola++;//se incrementa en uno la posicion del vector.

vector[getFinalcola()] = inf;//se agregan los datos por el final de la cola.

}
UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

//metodo para eliminar el primer elemento de la cola.

public void eliminar(){

if (! colaVacia()){//si la cola no esta vacia.

dezplazar();//se core una posicion a la izquierda todos los elmentos del vector

finalcola--;//se decrementa en uno las posiciones del vector.

//metodo que retorna los datos guardados en el frente de la cola.

public Vehiculo valorFrente(){

return vector[getFrentecola()];

//metodo que retorna los datos guardados en el final de la cola.

public Vehiculo valorFinal(){

return vector[getFinalcola()];

 Implementación de la clase Principal en el fichero


Principal.java
public class Principal {

//metodo para asignar menu de opciones a la aplicacion.

public static int menu() {

int opcion = 0;

do {

opcion = Integer.parseInt(JOptionPane.showInputDialog("<<<<< CONCESIONARIO


AUTOMOTRIZ CDA >>>>>\n\n1. Agregar vehiculo para revision.\n2. Listar vehiculos en espera. \n3.
Validar vehiculo. \n4. Eliminar vehiculo de la cola. \n5. Listar vehiculos que pasaron la revision.
\n6.Salir"));

} while (opcion <= 0 || opcion > 6);


UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

return opcion;

//metodo para mostrar los datos de la cola

public static void mostrarCola(VectorVehiculo obj){

//primero se pasa por parametro un objeto dela clase VectorVehiculo y se instancia otro vector de
la misma clase temporal

VectorVehiculo temp = new VectorVehiculo();

String verdatos = "";

while(! obj.colaVacia()){//mientras objeto en la cola no este vacia.

//concatena los datos capturados y los guarda en la variable

verdatos += ("Placa: " + obj.valorFrente().getPlaca()+ "\nPropietario: " +


obj.valorFrente().getPropietario()+"\n\n");

//agrega los datos a la cola temporal y eliminalos del objeto.

temp.agregar(obj.valorFrente());

obj.eliminar();

//muestra los datos por medio de un JOption.

JOptionPane.showMessageDialog(null,"=== Vehiculos en la cola ===\n\n" + verdatos);

while(! temp.colaVacia()){//mientras temporal no este vacia.

//agrega los datos a la cola objeto que tiene temporal en el frente y eliminalos de
temporal

obj.agregar(temp.valorFrente());

temp.eliminar();

public static void main(String[] args) {

VectorVehiculo obj = new VectorVehiculo();

VectorVehiculo temp = new VectorVehiculo();


UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

VectorVehiculo aux = new VectorVehiculo();

String placa, propietario;

int opcion;

do{

opcion = menu();

switch(opcion){

case 1:

if(!obj.colaLlena()){//agrega siempre y cuando la cola no este vacia.

Vehiculo info = new Vehiculo();

placa = JOptionPane.showInputDialog("Ingrese la placa del vehiculo");

info.setPlaca(placa);//se agrega el dato a la clase Vehiculo.

propietario = JOptionPane.showInputDialog("Ingrese nombre del propietario del


vehiculo");

info.setPropietario(propietario);// se agrega el dato a la clase Vehiculo.

obj.agregar(info);// se agregan los datos en la clase Vehiculo al objeto


VectorVehiculo.

JOptionPane.showMessageDialog(null,"Informacion agregada
corectamente\n\n"+"Placa: "+obj.valorFinal().getPlaca()+"\nPropietario:
"+obj.valorFinal().getPropietario());

}else{

JOptionPane.showMessageDialog(null,"Ya se ingresaron 50 vehiculos, regrese


mañana si gusta");

break;

case 2:

if(! obj.colaVacia()){//muestra los datos en la cola siempre que la cola no este vacia.

mostrarCola(obj);

}else{// si no mustra mensaje de informacion.

JOptionPane.showMessageDialog(null,"Aun no se han agregado vehiculos a la cola");

}
UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

break;

case 3:

String [] botones = {"SI","NO"};//vector que contiene nombre de botones.

//se declara variable entera que guardará la posicion del boton que
seleccione.

int opc = JOptionPane.showOptionDialog(null,"¿El vehiculo paso la revision?","Validar


vehiculo",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,botones,botones[
0]);

if(opc == JOptionPane.YES_OPTION){//mientras que la opcion elegida sea si.

aux.agregar(obj.valorFrente());//agrega a la cola aux el valor qeu tiene la cola obj en


el frente

obj.eliminar();//elimina el frente de la cola.

JOptionPane.showMessageDialog(null,"Validación correcta");

}else{

obj.valorFrente().setCont(obj.valorFrente().getCont()+1);//se crea contador si el


vehiculo es rechazado mas de una vez

//si el contador es menor que 2

if(obj.valorFrente().getCont() < 2){

obj.agregar(obj.valorFrente());//agrega a la cola obj lo que tiene guardado la cola


obj en el frente.

obj.eliminar();//elimina el frente de la cola

JOptionPane.showMessageDialog(null, "El vehiculo paso al final de la cola");

}else{

//sino elimina el dato de la cola

JOptionPane.showMessageDialog(null, "El vehiculo no paso la segunda revision por


lo cual sera eliminado de la cola");

obj.eliminar();

break;
UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

case 4:

//metodo para eliminar dato de la cola que se retira voluntariamente

//se declara variable tipo string que captura la informacion ingresada.

String pla = JOptionPane.showInputDialog("Por favor ingrese la placa del vehiculo que


se retiro de la cola");

//mientras la cola no este vacia.

while(!obj.colaVacia()){

//si el dato ingresado es igual al dato en el frente de la cola.

if(pla.equalsIgnoreCase(obj.valorFrente().getPlaca())){

//elimina el dato y manda mensaje de informacion.

obj.eliminar();

JOptionPane.showMessageDialog(null, "El vehiculo fue eliminado correctamente");

}else{//de lo contrario pasalo al final de la cola y eliminalo del frente

temp.agregar(obj.valorFrente());

obj.eliminar();

while(!temp.colaVacia()){//mientras la cola no este vacia.

//agrega los datos nuevamente en la cola obj y eliminalos de temp.

obj.agregar(temp.valorFrente());

temp.eliminar();

break;

case 5:

//metodo para mostrar los vehiculos que pasan la tecno-mecanica

if (! aux.colaVacia()){//siempre que la cola aux no este vacia.

//mostrar los datos guardados.

mostrarCola(aux);
UNIVERSIDAD DE CÓRDOBA. PROGRAMA INGENIERÍA DE SISTEMAS

}else{//de lo conrario mustra mensaje de informacion.

JOptionPane.showMessageDialog(null, "Aun no se han validado vehiculos");

while(opcion !=6);

También podría gustarte