import javax.swing.JOptionPane;
public class Main
{
public static void llenar(Laptop obj,Logica log,int pos)
{
String ref;
boolean existe = true;
do
{
ref = JOptionPane.showInputDialog("Ingrese la referencia:");
boolean repetida = false;
for (int i = 0; i < pos; i++)
{
if(log.getVector(i).getReferencia().equals(ref))
{
repetida = true;
}
}
if (repetida)
{
JOptionPane.showMessageDialog(null, "Error, esta referencia ya existe en el vector.");
}
else
{
existe = false;
}
}
while(existe);
obj.setReferencia(ref);
String mar = JOptionPane.showInputDialog("Ingrese la marca:");
obj.setMarca(mar);
String mod = JOptionPane.showInputDialog("Ingrese el modelo:");
obj.setModelo(mod);
float pre = Float.parseFloat(JOptionPane.showInputDialog("Ingrese el precio:"));
obj.setPrecio(pre);
float mem = Float.parseFloat(JOptionPane.showInputDialog("Ingrese capacidad de memoria ram:"));
obj.setMemoriaRam(mem);
float ghz = Float.parseFloat(JOptionPane.showInputDialog("Ingrese velocidad del procesador:"));
obj.setGhz(ghz);
}
public static void mostrar(Logica obj, int pos)
{
String datos = "";
datos += "Referencia: " + obj.getVector(pos).getReferencia() + "\n" +
"Marca: " + obj.getVector(pos).getMarca() + "\n" +
"Modelo: " + obj.getVector(pos).getModelo() + "\n" +
"Precio: " + obj.getVector(pos).getPrecio() + "\n" +
"Memoria Ram: " + obj.getVector(pos).getMemoriaRam()+ "gb\n" +
"Velocidad de procesador: " + obj.getVector(pos).getGhz()+ "ghz\n\n";
JOptionPane.showMessageDialog(null, datos);
}
public static void listar(Logica obj)
{
for (int i = 0; i < obj.getTamaño(); i++)
{
mostrar(obj, i);
}
}
public static void mostrarPorRango(Logica obj, float p_inicial, float p_final)
{
String datos = "";
for (int i = 0; i < obj.getTamaño(); i++)
{
if (obj.getVector(i).getPrecio() >= p_inicial && obj.getVector(i).getPrecio() <= p_final)
{
datos += "Referencia: " + obj.getVector(i).getReferencia() + "\n" +
"Marca: " + obj.getVector(i).getMarca() + "\n" +
"Modelo: " + obj.getVector(i).getModelo() + "\n" +
"Precio: " + obj.getVector(i).getPrecio() + "\n" +
"Memoria Ram: " + obj.getVector(i).getMemoriaRam()+ "gb\n" +
"Velocidad de procesador: " + obj.getVector(i).getGhz()+ "ghz\n\n";
}
}
if (datos.equals(""))
{
JOptionPane.showMessageDialog(null, "No hay equipos con esos precios");
}
else
{
JOptionPane.showMessageDialog(null, datos);
}
}
public static void mostrarPorMarca(Logica obj, String marca)
{
String datos = "";
for (int i = 0; i < obj.getTamaño(); i++)
{
if (obj.getVector(i).getMarca().equals(marca))
{
datos += "Refencia: " + obj.getVector(i).getReferencia()+ "\n" +
"Marca: " + obj.getVector(i).getMarca() + "\n" +
"Modelo: " + obj.getVector(i).getModelo() + "\n" +
"Precio: " + obj.getVector(i).getPrecio() + "\n\n";
}
}
if (datos.equals(""))
{
JOptionPane.showMessageDialog(null, "No hay equipos con esa marca");
}
else
{
JOptionPane.showMessageDialog(null, datos);
}
}
public static int menu()
{
int opcion;
do
{
opcion = Integer.parseInt(JOptionPane.showInputDialog(
"=========== SELECCIONE UNA OPCIÓN DEL MENÚ =========== \n" +
"1. Crear vector.\n" +
"2. Buscar referencias.\n" +
"3. Mostrar modelos ordenados.\n" +
"4. Mostrar equipos por rango de precios.\n" +
"5. Mostrar información del equipo mas economico.\n" +
"6. Mostrar información del equipo mas costoso.\n" +
"7. Mostrar datos\n" +
"8. Salir\n\n" +
" Seleccione una opción del 1 al 8:"));
}
while(opcion < 1 || opcion > 8);
return opcion;
}
public static int menuEquipo()
{
int opc_m;
do
{
opc_m = Integer.parseInt(JOptionPane.showInputDialog(
"Buscar equipo mas economico por:\n" +
"1. Marca especifica\n" +
"2. Todas las marcas"));
}
while (opc_m < 1 || opc_m > 2);
return opc_m;
}
public static void errorMensaje(int opc)
{
switch (opc)
{
case 1:
JOptionPane.showMessageDialog(null, "No se ha creado el vector");
break;
default:
JOptionPane.showMessageDialog(null, "No se encuentra el dato");
break;
}
}
public static void main(String[] args)
{
Logica obj = new Logica();
Laptop lap;
int opcion, tam, pos, opc_equipo;
String dato;
do
{
opcion = menu();
switch(opcion)
{
case 1:
do
{
tam = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite tamaño del Vector:"));
if (tam < 0)
{
JOptionPane.showMessageDialog(null, "Error, numero negativo.");
}
}
while (tam < 0);
obj.setTamaño(tam);
obj.crearVector();
for (int i = 0; i < obj.getTamaño(); i++)
{
lap = new Laptop();
JOptionPane.showMessageDialog(null, "Llene la información del laptop " + i);
llenar(lap,obj,i);
obj.setVector(i, lap);
}
break;
case 2:
if (obj.getTamaño() != 0)
{
dato = JOptionPane.showInputDialog("Digite referencia laptop que quiere buscar:");
pos = obj.buscar(dato);
if (pos != -1)
{
mostrar(obj, pos);
}
else
{
errorMensaje(2);
}
}
else
{
errorMensaje(1);
}
break;
case 3:
if (obj.getTamaño() != 0)
{
dato = JOptionPane.showInputDialog("Digite la marca:");
pos = obj.buscarMarca(dato);
if (pos != -1)
{
obj.ordenarPorReferencia();
mostrarPorMarca(obj, dato);
}
else
{
errorMensaje(2);
}
}
else
{
errorMensaje(1);
}
break;
case 4:
if (obj.getTamaño() != 0)
{
float p_inicial = Float.parseFloat(JOptionPane.showInputDialog("Digite el precio inicial:"));
float p_final = Float.parseFloat(JOptionPane.showInputDialog("Digite el precio final:"));
mostrarPorRango(obj, p_inicial, p_final);
}
else
{
errorMensaje(1);
}
break;
case 5:
if (obj.getTamaño() != 0)
{
opc_equipo = menuEquipo();
if (opc_equipo == 1)
{
String m = JOptionPane.showInputDialog("Digite la marca:");
pos = obj.buscarEquipoEconomicoMarca(m);
if (pos != -1)
{
JOptionPane.showMessageDialog(null,"EQUIPO MAS ECONOMICO");
mostrar(obj, pos);
}
else
{
errorMensaje(2);
}
}
else
{
pos = obj.buscarEquipoEconomicoTodos();
if (pos != -1)
{
JOptionPane.showMessageDialog(null,"EQUIPO MAS ECONOMICO");
mostrar(obj, pos);
}
else
{
errorMensaje(2);
}
}
}
else
{
errorMensaje(1);
}
break;
case 6:
if (obj.getTamaño() != 0)
{
opc_equipo = menuEquipo();
if (opc_equipo == 1)
{
String m = JOptionPane.showInputDialog("Digite la marca:");
pos = obj.buscarEquipoCostosoMarca(m);
if (pos != -1)
{
JOptionPane.showMessageDialog(null,"EQUIPO MAS COSTOSO");
mostrar(obj, pos);
}
else
{
errorMensaje(2);
}
}
else
{
pos = obj.buscarEquipoCostosoTodos();
if (pos != -1)
{
JOptionPane.showMessageDialog(null,"EQUIPO MAS COSTOSO");
mostrar(obj, pos);
}
else
{
errorMensaje(2);
}
}
}
else
{
errorMensaje(1);
}
break;
case 7:
if (obj.getTamaño() != 0)
{
listar(obj);
}
else
{
errorMensaje(1);
}
break;
default:
JOptionPane.showMessageDialog(null, "Adios!! ");
break;
}
}
while (opcion != 8);
}
}
public class Laptop
{
private String referencia;
private String marca;
private String modelo;
private float precio;
private float m_ram;
private float ghz;
public Laptop()
{
referencia = "";
marca = "";
modelo = "";
precio = 0;
m_ram = 0;
ghz = 0;
}
public void setReferencia(String val)
{
referencia = val;
}
public String getReferencia()
{
return referencia;
}
public void setMarca(String val)
{
marca = val;
}
public String getMarca()
{
return marca;
}
public void setModelo(String val)
{
modelo = val;
}
public String getModelo()
{
return modelo;
}
public void setPrecio(float val)
{
precio = val;
}
public float getPrecio()
{
return precio;
}
public void setMemoriaRam(float val)
{
m_ram = val;
}
public float getMemoriaRam()
{
return m_ram;
}
public void setGhz(float val)
{
ghz = val;
}
public float getGhz()
{
return ghz;
}
}
public class Logica
{
private Laptop [] vector;
private int tamaño;
public Logica()
{
vector = null;
tamaño = 0;
}
public void crearVector()
{
vector = new Laptop[tamaño];
}
public void setVector(int pos, Laptop val)
{
vector[pos] = val;
}
public Laptop getVector(int pos)
{
return vector[pos];
}
public void setTamaño(int val)
{
tamaño = val;
}
public int getTamaño()
{
return tamaño;
}
public int buscar(String nom)
{
for (int i = 0; i < getTamaño(); i++)
{
if (getVector(i).getReferencia().equals(nom))
{
return i;
}
}
return -1;
}
public int buscarMarca(String nom)
{
for (int i = 0; i < getTamaño(); i++)
{
if (getVector(i).getMarca().equals(nom))
{
return i;
}
}
return -1;
}
public int buscarEquipoEconomicoMarca(String mar)
{
float men = getVector(buscarEquipoCostosoMarca(mar)).getPrecio();
float def;
int pos_menor = -1;
for (int i = 0; i < getTamaño(); i++)
{
def = getVector(i).getPrecio();
if (getVector(i).getMarca().equals(mar) && def < men)
{
men = def;
pos_menor = i;
}
}
return pos_menor;
}
public int buscarEquipoEconomicoTodos()
{
float men = getVector(buscarEquipoCostosoTodos()).getPrecio();
float def;
int pos_menor = -1;
for (int i = 0; i < getTamaño(); i++)
{
def = getVector(i).getPrecio();
if(def < men)
{
men = def;
pos_menor = i;
}
}
return pos_menor;
}
public int buscarEquipoCostosoMarca(String mar)
{
float max = 0;
float def;
int pos_mayor = -1;
for (int i = 0; i < getTamaño(); i++)
{
def = getVector(i).getPrecio();
if (getVector(i).getMarca().equals(mar) && def > max)
{
max = def;
pos_mayor = i;
}
}
return pos_mayor;
}
public int buscarEquipoCostosoTodos()
{
float max = 0;
float def;
int pos_mayor = -1;
for (int i = 0; i < getTamaño(); i++)
{
def = getVector(i).getPrecio();
if(def > max)
{
max = def;
pos_mayor = i;
}
}
return pos_mayor;
}
public void ordenarPorReferencia()
{
for (int i = 0; i < getTamaño(); i++)
{
for (int j = i+1; j < getTamaño(); j++)
{
if (getVector(i).getReferencia().compareTo(getVector(j).getReferencia()) < 0)
{
cambiar(i, j);
}
}
}
}
public void cambiar(int p1, int p2)
{
Laptop temp;
temp = getVector(p1);
setVector(p1, getVector(p2));
setVector(p2, temp);
}
}