Defina un vector de tamaño N de tipo Empleado. Para esto se declara la clase Empleado con sus atributos (código, nombre). Haga un menú que permita realizar las siguientes operaciones:
- Registrar un empleado.
- Mostrar datos del vector.
- Mostrar los nombres de los empleados.
- Mostrar los códigos de los empleados.
- Buscar un empleado mediante su nombre.
- Mostrar información de empleados con códigos mayores a un código pedido por pantalla.

#include <iostream>
// se incluye la clase Empleado para despues llamar a sus metodos
#include "Empleado.h"
// se incluye la clase Logica para despues llamar a sus metodos
#include "Logica.h"
// se incluye la clase stdlib para poder utilizar el metodo system que nos permitira utilizar los comandos basicos de la consola, en este caso lo utilizaremos para limpiar la pantalla de la consola system("cls")
#include "stdlib.h"
using namespace std;
// método para llenar los datos en el vector
void llenar(Empleado *obj)
{
string nom;
cout << "Ingrese su nombre" << endl;
cout << ">> ";
cin >> nom;
obj->setNombre(nom);
int cod;
cout << "Ingrese su codigo" << endl;
cout << ">> ";
cin >> cod;
obj->setCodigo(cod);
}
// método para mostrar los datos del vector
void mostrar(Logica *obj, int opc)
{
// dependiendo del valor de la variable opc pasada como parametro se seleccionara un caso
switch(opc){
case 1:
for (int i = 0; i < obj->getTamano(); i++)
{
cout << "Nombre: " << obj->getVector(i)->getNombre() << endl;
cout << "Codigo: " << obj->getVector(i)->getCodigo() << endl << endl;
}
break;
case 2:
for (int i = 0; i < obj->getTamano(); i++)
{
cout << "Nombre: " << obj->getVector(i)->getNombre() << endl << endl;
}
break;
case 3:
for (int i = 0; i < obj->getTamano(); i++)
{
cout << "Codigo: " << obj->getVector(i)->getCodigo() << endl << endl;
}
break;
default:
if (obj->getVector(0) == NULL)
{
cout << "No hay ningún empleado registrado." << endl;
}
else
{
int cod;
cout << "Ingrese codigo" << endl;
cout << ">> ";
cin >> cod;
for (int i = 0; i < obj->getTamano(); i++)
{
if (obj->getVector(i)->getCodigo() > cod)
{
cout << "Nombre: " << obj->getVector(i)->getNombre() << endl;
cout << "Codigo: " << obj->getVector(i)->getCodigo() << endl << endl;
}
}
}
break;
}
}
// método para mostrar el menu
int menu()
{
int opcion = 0;
do
{
cout << "=========== SELECCIONE UNA OPCION DEL MENU ===========" << endl;
cout << "1. Registrar empleado." << endl;
cout << "2. Mostrar datos del vector." << endl;
cout << "3. Mostar nombres de los empleados." << endl;
cout << "4. Mostar códigos de los empleados." << endl;
cout << "5. Buscar empleado." << endl;
cout << "6. Mostrar informacion de los empleados, con códigos mayores a un codigo pedido por pantalla." << endl;
cout << "7. Salir" << endl;
cout << ">> ";
cin >> opcion;
system("cls");
}
while(opcion < 1 || opcion > 7);
return opcion;
}
int main(void)
{
// se crea un objeto de la clase Logica
Logica *obj = new Logica();
// se declara una variable de tipo Empleado
Empleado *emp;
// se crean 3 variables de tipo entero
int opcion, tam, cod;
// se crea una variable de tipo string
string nombre;
// se pide el tamaño del vector y se guarda en la variable tam
cout << "Digite tamano del Vector" << endl;
cout << ">> ";
cin >> tam;
// se encapsula el valor de la variable tam
obj->setTamano(tam);
// se crea el vector con el tamaño ya dado
obj->crearVector();
do
{
// se le asigna a la variable opcion el valor que retorne el metodo menu
opcion = menu();
// dependiendo del valor de la variable opcion seleccionara un caso
switch(opcion)
{
case 1:
for (int i = 0; i < obj->getTamano(); i++)
{
emp = new Empleado();
cout << "Llene la informacion del empleado " << i << endl;
llenar(emp);
obj->setVector(i, emp);
}
break;
case 2:
if (obj->getVector(0) == NULL)
{
cout << "No se creado el vector." << endl;
}
else
{
mostrar(obj, 1);
}
break;
case 3:
if (obj->getVector(0) == NULL)
{
cout << "No se creado el vector." << endl;
}
else
{
mostrar(obj, 2);
}
break;
case 4:
if (obj->getVector(0) == NULL)
{
cout << "No se creado el vector." << endl;
}
else
{
mostrar(obj, 3);
}
break;
case 5:
if (obj->getVector(0) == NULL)
{
cout << "No se creado el vector." << endl;
}
else
{
cout << "Digite nombre del empleado que quiere buscar" << endl;
cout << ">> ";
cin >> nombre;
int pos = obj->buscar(nombre);
if (pos != -1)
{
cout << "Nombre: " << obj->getVector(pos)->getNombre() << endl;
cout << "Codigo: " << obj->getVector(pos)->getCodigo() << endl;
}
else
{
cout << "El dato no se encuentra." << endl;
}
}
break;
case 6:
if (obj->getVector(0) == NULL)
{
cout << "No se creado el vector." << endl;
}
else
{
mostrar(obj, 4);
}
break;
default:
break;
}
}
while (opcion != 7);
}
#ifndef EMPLEADO_H
#define EMPLEADO_H
#include <iostream>
using namespace std;
class Empleado
{
public:
Empleado();
virtual ~Empleado();
// se declaran los métodos publicos de la clase Empleado
void setNombre(string val);
string getNombre();
void setCodigo(int val);
int getCodigo();
protected:
private:
// se declaran los atributos privados de la clase Empleado
string nombre;
int codigo;
};
#endif // EMPLEADO_H
#include "Empleado.h"
Empleado::Empleado()
{
// se le asignan valores por defecto a los atributos de la clase
nombre = "";
codigo = 0;
}
Empleado::~Empleado()
{
//dtor
}
// métodos Setters y Getters de los atributos de la clase
void Empleado::setNombre(string val)
{
nombre = val;
}
string Empleado::getNombre()
{
return nombre;
}
void Empleado::setCodigo(int val)
{
codigo = val;
}
int Empleado::getCodigo()
{
return codigo;
}
#ifndef LOGICA_H
#define LOGICA_H
#include <iostream>
using namespace std;
class Logica
{
public:
Logica();
virtual ~Logica();
// métodos publicos de la clase Logica
void setTamano(int val);
int getTamano();
void setVector(int pos, Empleado *val);
Empleado *getVector(int pos);
void crearVector();
int buscar(string nom);
protected:
private:
// atributos privados de la clase Logica
int tamano;
Empleado *vector;
};
#endif // LOGICA_H
#include "Logica.h"
Logica::Logica()
{
// se le asignan valores por defecto a los atributos de la clase
tamano = 0;
vector = NULL;
}
Logica::~Logica()
{
//dtor
}
// métodos Setters y Getters de la clase Logica
void Logica::setTamano(int val)
{
tamano = val;
}
int Logica::getTamano()
{
return tamano;
}
// debo aclarar que el set del vector es algo complicado de entender, se debe tener un puntero hacia la variable val
// para poder modificarlo
void Logica::setVector(int pos, Empleado *val)
{
vector[pos] = *val;
}
// el simbolo & solo significa que tomaremos el valor que hay en la posicion pos del vector, recuerden que si no se escribe esto
// dara error porque entonces, estariamos retornando la direccion de la memoria asignada para ese vector...
Empleado *Logica::getVector(int pos)
{
return &vector[pos];
}
// método para crear el vector
void Logica::crearVector()
{
// se le asigna al vector el nuevo tamaño
vector = new Empleado[tamano];
}
int Logica::buscar(string nom)
{
// recorremos todo el vector con el ciclo for
for (int i = 0; i < getTamano(); i++)
{
// si el nombre de la posicion i es igual al valor de la variable nom pasada como parametro
if (getVector(i)->getNombre().compare(nom) == 0)
{
// entonces se retorna la posicion actual de i
return i;
}
}
// si no se encontro nada, se retorna -1
return -1;
}
// se importa paquete JOptionPane para dibujar un cuadro de dialogo en pantalla
// que muestre información o para llenar información
import javax.swing.JOptionPane;
public class Main
{
// método para llenar los datos en el vector
public static void llenar(Empleado obj)
{
String nom = JOptionPane.showInputDialog("Ingrese su nombre:");
obj.setNombre(nom);
int cod = Integer.parseInt(JOptionPane.showInputDialog("Ingrese su codigo:"));
obj.setCodigo(cod);
}
// método para mostrar los datos del vector
public static void mostrar(Logica obj, int opc)
{
String datos = "";
// dependiendo del valor de la variable opc pasada como parametro se seleccionara un caso
switch(opc){
case 1:
for (int i = 0; i < obj.getTamaño(); i++)
{
datos += "Nombre: " + obj.getVector(i).getNombre() + "\n" +
"Codigo: " + obj.getVector(i).getCodigo() + "\n\n";
}
JOptionPane.showMessageDialog(null, datos);
break;
case 2:
for (int i = 0; i < obj.getTamaño(); i++)
{
datos += "Nombre: " + obj.getVector(i).getNombre() + "\n\n";
}
JOptionPane.showMessageDialog(null, datos);
break;
case 3:
for (int i = 0; i < obj.getTamaño(); i++)
{
datos += "Codigo: " + obj.getVector(i).getCodigo()+ "\n\n";
}
JOptionPane.showMessageDialog(null, datos);
break;
default:
if (obj.getVector(0) == null)
{
JOptionPane.showMessageDialog(null, "No hay ningún empleado registrado.");
}
else
{
int cod = Integer.parseInt(JOptionPane.showInputDialog("Ingrese codigo:"));
for (int i = 0; i < obj.getTamaño(); i++)
{
if (obj.getVector(i).getCodigo() > cod)
{
datos += "Nombre: " + obj.getVector(i).getNombre() + "\n" +
"Codigo: " + obj.getVector(i).getCodigo() + "\n\n";
}
}
JOptionPane.showMessageDialog(null, datos);
}
break;
}
}
// método para mostrar el menu
public static int menu()
{
int opcion = 0;
do
{
opcion = Integer.parseInt(JOptionPane.showInputDialog(
"=========== SELECCIONE UNA OPCIÓN DEL MENÚ =========== \n" +
"1. Registrar empleado.\n" +
"2. Mostrar datos del vector.\n" +
"3. Mostar nombres de los empleados.\n" +
"4. Mostar códigos de los empleados.\n" +
"5. Buscar empleado.\n" +
"6. Mostrar información de los empleados, con códigos mayores a un codigo pedido por pantalla.\n" +
"7. Salir\n\n" +
" Seleccione una opción del 1 al 7:"));
}
while(opcion < 1 || opcion > 7);
return opcion;
}
public static void main(String[] args)
{
// se crea un objeto de la clase Logica
Logica obj = new Logica();
// se declara una variable de tipo Empleado
Empleado emp;
// se crean 3 variables de tipo entero
int opcion, tam, cod;
// se crea una variable de tipo string
String nombre;
// se pide el tamaño del vector y se guarda en la variable tam
tam = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite tamaño del Vector:"));
// se encapsula el valor de la variable tam
obj.setTamaño(tam);
// se crea el vector con el tamaño ya dado
obj.crearVector();
do
{
// se le asigna a la variable opcion el valor que retorne el metodo menu
opcion = menu();
// dependiendo del valor de la variable opcion seleccionara un caso
switch(opcion)
{
case 1:
for (int i = 0; i < obj.getTamaño(); i++)
{
emp = new Empleado();
JOptionPane.showMessageDialog(null, "Llene la información del empleado " + i);
llenar(emp);
obj.setVector(i, emp);
}
break;
case 2:
if (obj.getVector(0) == null)
{
JOptionPane.showMessageDialog(null, "No se creado el vector.");
}
else
{
mostrar(obj, 1);
}
break;
case 3:
if (obj.getVector(0) == null)
{
JOptionPane.showMessageDialog(null, "No se creado el vector.");
}
else
{
mostrar(obj, 2);
}
break;
case 4:
if (obj.getVector(0) == null)
{
JOptionPane.showMessageDialog(null, "No se creado el vector.");
}
else
{
mostrar(obj, 3);
}
break;
case 5:
if (obj.getVector(0) == null)
{
JOptionPane.showMessageDialog(null, "No se creado el vector.");
}
else
{
nombre = JOptionPane.showInputDialog("Digite nombre del empleado que quiere buscar");
int pos = obj.buscar(nombre);
if (pos != -1)
{
JOptionPane.showMessageDialog(null,
"Nombre: " + obj.getVector(pos).getNombre() + "\n" +
"Código: " + obj.getVector(pos).getCodigo());
}
else
{
JOptionPane.showMessageDialog(null, "El dato no se encuentra.");
}
}
break;
case 6:
if (obj.getVector(0) == null)
{
JOptionPane.showMessageDialog(null, "No se creado el vector.");
}
else
{
mostrar(obj, 4);
}
break;
default:
break;
}
}
while (opcion != 7);
}
}
public class Empleado
{
// se declaran los atributos privados de la clase Empleado
private String nombre;
private int codigo;
public Empleado()
{
// se le asignan valores por defecto a los atributos de la clase
nombre = "";
codigo = 0;
}
// métodos Setters y Getters de los atributos de la clase
public void setNombre(String val)
{
nombre = val;
}
public String getNombre()
{
return nombre;
}
public void setCodigo(int val)
{
codigo = val;
}
public int getCodigo()
{
return codigo;
}
}
public class Logica
{
// atributos privados de la clase Logica
private int tamaño;
private Empleado [] vector;
public Logica()
{
// se le asignan valores por defecto a los atributos de la clase
tamaño = 0;
vector = null;
}
// métodos Setters y Getters de los atributos de la clase
public void setTamaño(int val)
{
tamaño = val;
}
public int getTamaño()
{
return tamaño;
}
public void setVector(int pos, Empleado val)
{
vector[pos] = val;
}
public Empleado getVector(int pos)
{
return vector[pos];
}
// método para crear el vector
public void crearVector()
{
// se le asigna al vector el nuevo tamaño
vector = new Empleado[tamaño];
}
// método para buscar un nombre
public int buscar(String nom)
{
// recorremos todo el vector con el ciclo for
for (int i = 0; i < getTamaño(); i++)
{
// si el nombre de la posicion i es igual al valor de la variable nom pasada como parametro
if (getVector(i).getNombre().equals(nom))
{
// entonces se retorna la posicion actual de i
return i;
}
}
// si no se encontro nada, se retorna -1
return -1;
}
}