Está en la página 1de 14

PROGRAMACION II

(TALLER II)

IVAN DARIO OVIEDO


JOSE ALFREDO MACEA

PROFESOR : PEDRO GUEVARA

UNIVERSIDAD DE CORDOBA
SAHAGUN
2019
CLASE ATENCION

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package taller_iii.Clases;

import javax.swing.JOptionPane;

/**
*
* @author banchox
*/
public class Atencion {
static final int totalPacientes = 20; //cantidad total de clientes quye se puede recivir
(modificable)
private int cantidadClientes; //Atributo para contar los nodos agregados a la cola.
private Cliente frente; //Apuntador que devuelve el nodo del frente de la cola.
private Cliente finalCola; //Apuntador que devuelve el nodo del final de la cola.

public void DeclaraCola(){


cantidadClientes = 0;
frente = null;
finalCola = null;
}

//Método que retorna el número de nodos agregados a la cola.


public int getCantidadClientes(){
return cantidadClientes;
}
//Método que retorna el apuntador al nodo del frente de la cola.
public Cliente getFrente(){
return frente;
}
//Método que retorna el apuntador al nodo del final de la cola.
public Cliente getFinal(){
return finalCola;
}
//Métodos para determinar si la cola está llena o vacía.
public boolean colaLLena(){
if(getCantidadClientes() >= totalPacientes){
return true;
}else{
return false;
}
}
public boolean colaVacia(){
if(getCantidadClientes() == 0){
return true;
}else{
return false;
}
}

public void llenar(Cliente cliente){

String nombre = JOptionPane.showInputDialog("Ingrese Nombre del Cliente: ");


cliente.setNombre(nombre);
String placa = JOptionPane.showInputDialog("Ingrese Placa del vehiculo del cliente: ");
cliente.setPlaca(placa);
int tipo =Integer.parseInt(JOptionPane.showInputDialog("Ingrese tipo de vehiculo:
\n"+"Presione 1 para AUTOMOVIL \n"+ "Presione 2 para CAMIONETA \n"));
if (tipo == 1) {
cliente.setTipo("Automovil");
}else{
if (tipo == 2) {
cliente.setTipo("Camion");
}else{
JOptionPane.showInputDialog("ERROR : REPITA FORMULARIO");
}

int dia = Integer.parseInt(JOptionPane.showInputDialog("Ingrese dia "));


cliente.setDia(dia);
int mes = Integer.parseInt(JOptionPane.showInputDialog("Ingrese mes "));
cliente.setDia(mes);
int anno = Integer.parseInt(JOptionPane.showInputDialog("Ingrese anno "));
cliente.setDia(anno);

}
//Método para agregar un dato en el campo de información, de un nuevo nodo.
public void agregar(Cliente dato, int id){
if (! colaLLena()){ //Si la cola no está llena, se pueden agregar nodos.
if(id==1){
llenar(dato); //Se asigna la información al respectivo atributo.
}
if (getFrente() == null){ //Esta condición es para cuando se agrega el primer nodo de la
cola.
frente = dato;
}else{
getFinal().setSiguiente(dato); //Si hay nodos en la cola, el ultimo nodo apuntara al
nuevo.
}
finalCola = dato;
cantidadClientes = cantidadClientes + 1; //El contador de nodos se incrementa en uno.

}else{
JOptionPane.showMessageDialog(null, "NO se puede agregar mas Clientes a esta
especialidad");
}

//Elimina el nodo del frente de la cola.


public void quitar(){
Cliente temp;
if (!colaVacia()){ //Si la cola no está vacía, se pueden eliminar nodos.
temp = getFrente(); //Se asigna una referencia temporal al nodo del frente.
frente = getFrente().getSiguiente(); //ahora frente, será el siguiente del nodo frente.
if (getFrente() == null){ //Esta condición es para cuando se elimina el único nodo que hay.
finalCola = null;
}
temp = null; //La referencia temporal se hace nulo, que era el anterior nodo del frente.
cantidadClientes = cantidadClientes - 1; //El contador de nodos se decremento en uno.
}
}
//Método que muestra la información del nodo del frente de la cola.
public Cliente valorFrente(){
return getFrente();
}
//Método que muestra la información del nodo del final de la cola.
public Cliente valorFinal(){
return getFinal();
}
//Método para eliminar todos los nodos de la cola.

public int contador(int dia, int mes, int anno, String tipo){
int contador = 0;
Cliente temp = frente;
while(temp != null){
if(temp.getDia()==dia && temp.getMes() == mes && temp.getAnno() == anno &&
temp.getTipo().equals(tipo)){
contador++;
}
temp = temp.getSiguiente();
}

return contador;
}

}
CLASE CLIENTE
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package taller_iii.Clases;

/**
*
* @author banchox
*/
public class Cliente {
private String nombre;
private String placa;
private Cliente siguiente;
private String tipo;
private String mecanico;
private int dia;
private int mes;
private int anno;

public Cliente(String nombre, String placa, String tipo, Cliente siguiente,String mecanico, int
dia,int mes,int anno) {
this.nombre = nombre;
this.placa = placa;
this.tipo = tipo;
this.dia = dia;
this.mes = mes;
this.anno = anno;
this.mecanico = mecanico;
this.siguiente = siguiente;
}

public Cliente(){
this.nombre = "";
this.placa = "";
this.tipo = "";
this.mecanico = "";
this.siguiente = null;
}

public Cliente(String nombre, String placa, String tipo,String mecanico, int dia,int mes,int anno){
this.nombre = nombre;
this.placa = placa;
this.tipo = tipo;
this.mecanico = mecanico;
this.dia = dia;
this.mes = mes;
this.anno = anno;

public int getDia() {


return dia;
}

public void setDia(int dia) {


this.dia = dia;
}

public int getMes() {


return mes;
}

public void setMes(int mes) {


this.mes = mes;
}

public int getAnno() {


return anno;
}

public void setAnno(int anno) {


this.anno = anno;
}
public String getMecanico() {
return mecanico;
}

public void setMecanico(String mecanico) {


this.mecanico = mecanico;
}

public String getTipo() {


return tipo;
}

public void setTipo(String tipo) {


this.tipo = tipo;
}
public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {


this.nombre = nombre;
}

public String getPlaca() {


return placa;
}

public void setPlaca(String placa) {


this.placa = placa;
}

public Cliente getSiguiente() {


return siguiente;
}

public void setSiguiente(Cliente siguiente) {


this.siguiente = siguiente;
}

}
CLASE MAIN
To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package taller_iii;

import taller_iii.Clases.Atencion;
import javax.swing.JOptionPane;
import taller_iii.Clases.Cliente;

/**
*
* @author banchox
*/
public class Taller_II {

//Método para asignar un menú de opciones de la aplicación.


public static int menu(){
int opcion = 0;
do{
opcion = Integer.parseInt(JOptionPane.showInputDialog(" CONCESIONARIO \n\n"
+"1. Registrar Cliente \n"
+"2. Atender Clientes \n"
+"3. Visualizar Orden de Atencion general \n"
+"4. Historial de atencion \n"
+"5. Visualizar Orden de Atencion POR TIPO DE VEHICULO\n"
+"6. Informe de mantenimientos por fecha especifica \n"
+"7. Salir"
+"\n \n Seleccione una opción del 1 al 5"));
}while(opcion <= 0 || opcion > 7);
return opcion;
}

//Método para mostrar los datos de la cola.


public static void mostrarCola(Atencion c, int n,String dato){
//Así se mueven los elementos de la cola, se quita el elemento del frente y se agrega por el final.
Atencion temp = new Atencion(); //Se crea un nuevo objeto de la clase cola.
String verDatosCola = ""; //variable tipo cadena vacía para almacenar los datos.

if (n ==1) {
while (! c.colaVacia()){ //Mientras la cola no este vacía se muestran sus datos.
if(c.valorFrente().getTipo().equals(dato)){
verDatosCola = verDatosCola+String.valueOf("NOMBRE :
"+c.valorFrente().getNombre()+"\n"
+"PLACA : "+c.valorFrente().getPlaca()+"\n"
+"TIPO: "+c.getFrente().getTipo()+"\n\n\n");
}
temp.agregar(c.valorFrente(),0); //Se agrega el elemento del frente a una cola temporal.
c.quitar(); //Luego se quita el elemento del frente de la cola actual.
}
JOptionPane.showMessageDialog(null, " GENERAL "+"\n"+verDatosCola+"\n");
while (! temp.colaVacia()){ //Se pasan los datos a la cola temporal a la original.
c.agregar(temp.valorFrente(),0);
temp.quitar();
}
} else {
while (! c.colaVacia()){ //Mientras la cola no este vacía se muestran sus datos.
verDatosCola = verDatosCola+String.valueOf("NOMBRE :
"+c.valorFrente().getNombre()+"\n"
+"PLACA : "+c.valorFrente().getPlaca()+"\n"
+"TIPO: "+c.getFrente().getTipo()+"\n\n\n");
temp.agregar(c.valorFrente(),0); //Se agrega el elemento del frente a una cola temporal.
c.quitar(); //Luego se quita el elemento del frente de la cola actual.
}
JOptionPane.showMessageDialog(null, " GENERAL "+"\n"+verDatosCola+"\n");
while (! temp.colaVacia()){ //Se pasan los datos a la cola temporal a la original.
c.agregar(temp.valorFrente(),0);
temp.quitar();
}
}

public static void main(String[] args) {


Atencion atencion = new Atencion();
Cliente c;
Cliente arrayObjetos[]=new Cliente[60];

int numeroVectorAtencion =0;


int opcion;
do {
opcion=menu();
switch(opcion){

case 1:
c = new Cliente();
atencion.agregar(c,1);
break;

case 2:

String[] array = {"si", "Cancelar"};


int seleccion = JOptionPane.showOptionDialog(null, "Esta seguro que quiere
atender??", "Seleccione", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
null, array, array[0]);
if (seleccion == 0) {
//Para poder eliminar el dato del frente, la cola esta no debe estar vacía.
if (! atencion.colaVacia()){
Cliente elemento = atencion.valorFrente();

String mecanico = JOptionPane.showInputDialog("EL CLIENTE A ATENDE ES :


\n"+"Nombre : "+elemento.getNombre()
+"\n"+"Placa : "+elemento.getPlaca()+"\n"+"Tipo :
"+elemento.getTipo()+"\n\n"+"Asignile un mecanico");
arrayObjetos[numeroVectorAtencion]=new
Cliente(elemento.getNombre(),elemento.getPlaca(),elemento.getTipo(),mecanico,
elemento.getDia(), elemento.getMes(), elemento.getAnno());

atencion.quitar();

JOptionPane.showMessageDialog(null,"Se Atenndio el Cliente con PLACA :


"+elemento.getPlaca()+" de la cola de Atencion");

numeroVectorAtencion ++;
}else{
JOptionPane.showMessageDialog(null, " AVISO "+"\n\n"+"El registro está vacío, No
pueden quitar Pacientes \n\n");
}
}else{
break;
}

break;
case 3:
JOptionPane.showMessageDialog(null, " Lista completa");
mostrarCola(atencion,0,"");
break;

case 4:
String datosVector = "";
for(int i=0 ; i<=numeroVectorAtencion-1; i++){
datosVector = datosVector+String.valueOf("NOMBRE :
"+arrayObjetos[i].getNombre()+"\n"+"PLACA : "+arrayObjetos[i].getPlaca()+"\n"
+"TIPO : "+arrayObjetos[i].getTipo()+"\n"+"MECANICO :
"+arrayObjetos[i].getMecanico()
+"FECHA : "+"/"+"\n\n");
}

JOptionPane.showMessageDialog(null, "=*=*=*= HISTORIAL


=*=*=*="+"\n"+datosVector);
System.out.println(arrayObjetos[1]);
break;

case 5:
int n =Integer.parseInt(JOptionPane.showInputDialog("orden de atencion : \n"+"1.
vehiculos \n"+"2. camionetas o camiones \n"));
if (n ==1) {
mostrarCola(atencion,1,"Automovil");
}else{
if (n==2) {
mostrarCola(atencion,1,"Camion");
}
}

break;

case 6:
int contAutos = 0;
int contCamion = 0;
String ganador;
int dia = Integer.parseInt(JOptionPane.showInputDialog("Ingrese dia "));
int mes = Integer.parseInt(JOptionPane.showInputDialog("Ingrese mes "));
int anno = Integer.parseInt(JOptionPane.showInputDialog("Ingrese anno "));
for (int i = 0; i < numeroVectorAtencion; i++) {

System.out.println(":D");
if (arrayObjetos[i].getDia()==dia && arrayObjetos[i].getMes() == mes &&
arrayObjetos[i].getAnno() == anno && arrayObjetos[i].getTipo().equals("Automovil")) {
contAutos++;
}
if (arrayObjetos[i].getDia()==dia && arrayObjetos[i].getMes() == mes &&
arrayObjetos[i].getAnno() == anno && arrayObjetos[i].getTipo().equals("Camion")) {
contCamion++;
}
}

if (contAutos>contCamion) {
ganador ="Automovil : "+contAutos;
}else{
ganador ="Camion : "+contCamion;
}

JOptionPane.showMessageDialog(null, "INFORME DE LA FECHA


"+dia+"/"+mes+"/"+anno+"\n\n"
+"AUTOMOVILES : " + contAutos+"\n"
+"CAMIONES O CAMIONETAS : "+ contCamion+"\n"
+"El que tuvo mas atenciones fue : "+ganador);

break;

case 7:
break;

} while (opcion!=7);
}

También podría gustarte