hace 9 años
Buenas:
Que tal quisiera ver si alguien me pudiera orientar con el siguiente problema que tengo, veran tengo un programa en c++ y tengo q crear un metodo llamado eliminar por cada clase.
hago la aclaracion de que estoy trabajando con arreglos de objetos, lo que me estan pidiendo que haga es que simule la eliminacion de un elemento bajo la condicion de: copiar a la posicion del arreglo a eliminar por la untima informacion capturada.
y la verdad desconosco como hacerlo espero y alguien pueda ayudarme les dejo el codigo:
#include <cstdlib>
#include <iostream>
using namespace std;
bool Retorno=false;
int b,c,g=0,h=0,i=0,j=0,n,m,o,p,q,t,k,z;
int A=0;
//Definicion de la clase del tecnico
class Tec_Esp
{
public:
string Nom_Tec,Dom_Tec;
int Tel_Tec[2],CodTec,CedTec;
void capturar();
void imprimir();
void buscar();
void modificar();
}TE[5];
//Captura e impresion de los datos del tecnico especializado
void Tec_Esp::capturar()
{
int b;
i++;
system("cls");
cout<<"Nombre del Tecnico Especializado: ";
cin>>Nom_Tec;
cin.ignore();
cout<<"Cedula Profecional: ";
cin>>CedTec;
cin.ignore();
cout<<"Domicilio del Tecnico: ";
cin>>Dom_Tec;
cin.ignore();
for(b=0;b<=1;b++)
{
cout<<"Telefono "<<b+1<<": ";
cin>>Tel_Tec[b];
}
cin.ignore();
cout<<"Codigo del Tecnico Especializado: ";
cin>>CodTec;
cin.ignore();
}
void Tec_Esp::imprimir()
{
int C;
system("color 9A");
cout<<"Nombre del Tecnico Especializado.: "<<Nom_Tec<<endl;
cout<<"Cedula Profecional:..............: "<<CedTec<<endl;
cout<<"Domicilio del Tecnico............: "<<Dom_Tec<<endl;
for(C=0;C<=1;C++)
{
cout<<"Telefono"<<C+1<<"........................: "<<Tel_Tec[C]<<endl;
}
cout<<"Codigo del Tecnico Especializado.: "<<CodTec<<endl;
cout<<endl;
}
void Tec_Esp::buscar()
{
int NumCed;
if(i>0)
{
system("cls");
cout<<"Introduce la Cedula Del Tecnico Especializado Que Deceas Buscar"<<endl;
cin>>NumCed;
for(b=0;b<i;b++)
{
if(TE[b].CedTec==NumCed)
{
TE[b].imprimir();
system("pause");
}
else
{
for(c=0;c<i;c++)
{
if(TE[c].CedTec!=NumCed)
{
system("cls");
cout<<"No Existe Tecnico Especializado!!
";
system("pause");
}
}
}
}
}
else
{
cout<<"No se han capturado datos de los Tecnicos"<<endl;
system("pause");
}
}
void Tec_Esp::modificar()
{
int Act,chek,C;
if(i>0)
{
cout<<"Ingrese la cedula del tecnico que desea actualizar"<<endl;
cin>>chek;
for(b=0;b<i;b++)
{
if(TE[b].CedTec==chek)
{
cout<<endl;
cout<<"Menu de actualizacion del Tecnico especializado"<<endl;
cout<<"Que decea modificar"<<endl;
cout<<"1.- Codigo"<<endl;
cout<<"2.- Nombre"<<endl;
cout<<"3.- Cedula"<<endl;
cout<<"4.- Telefonos"<<endl;
cout<<"5.- Domicilio"<<endl;
cout<<"6.- Regresar"<<endl;
cout<<"selecciona la opcion a modificar: ";
cin>>Act;
switch(Act)
{
case 1: cout<<"Nuevo codigo"<<endl;
cin>>CodTec;
break;
case 2: cout<<"Nuevo Nombre"<<endl;
cin>>Nom_Tec;
break;
case 3: cout<<"Nueva Cedula"<<endl;
cin>>CedTec;
break;
case 4: cout<<"Nuevos Telefonos"<<endl;
for(C=0;C<=1;C++)
{
cout<<"Telefono "<<C+1<<": "<<Tel_Tec[C]<<endl;
}
break;
case 5: cout<<"Nuevo Domicilio"<<endl;
cin>>Dom_Tec;
break;
case 6: Retorno=true;
break;
default:
cout<<"seleccione una opcion correcta"<<endl;
system("pause");
}
}
else
{
cout<<"El tecnico Especializado que buscabas no esta en los registros"<<endl;
system("pause");
}
}
}
else
{
cout<<"No se han capturado datos de los tecnicos"<<endl;
system("pause");
}
}
//deficinion de la clase del cliente
class Cliente
{
public:
string Nom_Client,Dom_Client;
int CodClient,Tel_Client[3];
void ingresar();
void mostrar();
void encontrar();
void actualizar();
}CLNT[15];
//Captura e impresion de los datos del Cliente
void Cliente::ingresar()
{
int d;
h++;
system("cls");
cout<<"Nombre del Cliente: ";
cin>>Nom_Client;
cin.ignore();
cout<<"Codigo del Cliente: ";
cin>>CodClient;
cin.ignore();
cout<<"Domicilio del Cliente: ";
cin>>Dom_Client;
cin.ignore();
for(d=0;d<=2;d++)
{
cout<<"Telefono "<<d+1<<": ";
cin>>Tel_Client[d];
cin.ignore();
}
}
void Cliente::mostrar()
{
int e;
system("color 6D");
cout<<"Nombre del Cliente..........: "<<Nom_Client<<endl;
cout<<"Codigo del Cliente..........: "<<CodClient<<endl;
cout<<"Domicilio del Cliente.......: "<<Dom_Client<<endl;
for(e=0;e<=2;e++)
{
cout<<"Telefono "<<e+1<<"..................: "<< Tel_Client[e] <<endl;
}
cout<<endl;
}
void Cliente::encontrar()
{
int NumCod;
if(h>0)
{
system("cls");
cout<<"Introduce El Codigo Del Cliente Que Deceas Buscar"<<endl;
cin>>NumCod;
for(b=0;b<h;b++)
{
if(CLNT[b].CodClient==NumCod)
{
system("cls");
CLNT[b].mostrar();
system("PAUSE");
}
else
{
system("cls");
cout<<"No Existe El Cliente!!
";
system("PAUSE");
}
}
}
else
{
cout<<"No se han capturado datos de los Clientes"<<endl;
system("pause");
}
}
void Cliente::actualizar()
{
int Act,chek,e;
if(h>0)
{
cout<<"Ingrese la cedula del tecnico que desea actualizar"<<endl;
cin>>chek;
for(b=0;b<h;b++)
{
if(CLNT[b].CodClient==chek)
{
cout<<endl;
cout<<"Menu de actualizacion del Cliente"<<endl;
cout<<"Que decea modificar"<<endl;
cout<<"1.- Codigo"<<endl;
cout<<"2.- Nombre"<<endl;
cout<<"3.- Domicilio"<<endl;
cout<<"4.- Telefonos"<<endl;
cout<<"5.- Regresar"<<endl;
cout<<"selecciona la opcion a modificar: ";
cin>>Act;
switch(Act)
{
case 1: cout<<"Nuevo Codigo"<<endl;
cin>>CodClient;
break;
case 2: cout<<"Nuevo Nombre"<<endl;
cin>>Nom_Client;
break;
case 3: cout<<"Nuevo Domicilio"<<endl;
cin>>Dom_Client;
break;
case 4: cout<<"Nuevos Telefonos"<<endl;
for(e=0;e<=2;e++)
{
cout<<"Telefono "<<e+1<<": "<<Tel_Client[e]<<endl;
}
break;
case 5: Retorno=true;
break;
default:
cout<<"seleccione una opcion correcta"<<endl;
system("pause");
}
}
else
{
cout<<"El Tecnico Especializado que Buscabas no Esta en los Registros"<<endl;
system("pause");
}
}
}
else
{
cout<<"No se han capturado datos de los Clientes"<<endl;
system("pause");
}
}
class Citas//clase citas
{
public:
int CTE,CCT,Costo,Hora,Fecha;
void Cap_Cita();
void Most_Cita();
void Buscar();
void Cambiar();
}Dates[15];
void Citas::Cap_Cita()//metodo de captura para clientes
{
//variable h=clientes variable i=tecnicos especializados
bool seguir=false;
bool cl=false;
bool te=false;
bool hr=false;
int cita=0;
int Hr;
system("cls");
do
{
if(i>0)
{
if(h>0)
{
j++;
cout<<"::::::::Cita #"<<cita+1<<" ::::::::"<<endl;
cout<<"Fecha para la cita...........: ";
cin>>Fecha;
cout<<"Costo de la cita.............: ";
cin>>Costo;
while(cl==false)
{
//CTE=0;//variable inicializada en 0 para evitar interferencia
cout<<"Codigo Tecnico Especializado.: ";
cin>>CTE;
cin.ignore();
for(o=0;o<j;o++)
{
if(TE[o].CodTec==CTE)
{
cout<<" El Tecnico si existe en los registros"<<endl;
cl=true;
}
}
}
while(te==false)//ciclo de confirmacion del codigo de cliente
{
//CCT=0;//variable inicializada en 0 para evitar interferencias
cout<<"Codigo Cliente...............: ";
cin>>CCT;
cin.ignore();
for(p=0;p<h;p++)
{
if(CLNT[p].CodClient==CCT)
{
cout<<"El Cliente si esta en el registro "<<endl;
te=true;
}
}
}//cierre del while de la confirmacion del codigo de cliente
while(hr==false)
{
Hr=0;//variable inicializada en 0 para evitar interferencias
cout<<"Hora de la cita..............: ";
cin>>Hr;
cin.ignore();
for(q=0;q<j;q++)
{
if(Dates[q].Hora==Hr)
{
cout<<"Hay Citas a esa Hora"<<endl;
hr=false;
}
else
{
cout<<"Cita capturada. Confirma el horario"<<endl;
cin>>Hora;
hr=true;
system("pause");
}
}
}
}
else
{
cout<<"No hay Clientes en los Registros"<<endl;
system("pause");
}
}
else
{
cout<<"No hay Tecnicos Especializados en los Registros"<<endl;
system("pause");
}
}
while(seguir=false);
}
void Citas::Most_Cita()//metodo de imprecion de datos de la cita
{
cout<<"Fecha De la Cita...............................: "<<Fecha<<endl;
cout<<"Hora De la Cita................................: "<<Hora<<endl;
cout<<"Costo..........................................: "<<Costo<<endl;
cout<<"Codigo Cliente.................................: "<<CTE<<endl;
cout<<"Codigo Tecnico Especializado...................: "<<CCT<<endl;
cout<<endl;
}
void Citas::Buscar()//metodo de buscar de citas
{
int N;
system("cls");
system("color E0");
//cout<<"Introduce el Codigo del Cliente para Buscar si tiene citas "<<endl;
//cin>>N;
if(j>0)
{
system("cls");
cout<<"Introduce El Codigo Del Cliente Que Deceas Buscar"<<endl;
cin>>N;
for(b=0;b<j;b++)
{
if(Dates[b].CCT==N)
{
system("cls");
Dates[b].Most_Cita();
system("PAUSE");
}
else
{
system("cls");
cout<<"No se Pueden Mostrar las Citas Del Registro"<<endl;
cout<<"Ya Que el Codigo Del Cliente Introducido no existe!!"<<endl;
system("PAUSE");
}
}
}
else
{
cout<<"No se han capturado citas"<<endl;
system("pause");
}
}
void Citas::Cambiar()
{
int v,l;
if(j>0)
{
cout<<"Introdusca el codigo del cliente para modificar su cita"<<endl;
cin>>v;
for(b=0;b<h;b++)
{
if(Dates[b].CCT==v)
{
cout<<endl;
cout<<"Menu de actualizacion de la cita del Cliente"<<endl;
cout<<"Que decea modificar"<<endl;
cout<<"1.- Fecha"<<endl;
cout<<"2.- Hora"<<endl;
cout<<"3.- Codigo del Cliente"<<endl;
cout<<"4.- Codigo del Tecnico Especializado"<<endl;
cout<<"5.- Costo"<<endl;
cout<<"6.- Regresar"<<endl;
cout<<"selecciona la opcion a modificar: ";
cin>>l;
switch(l)
{
case 1: cout<<"Fecha"<<endl;
cin>>Fecha;
break;
case 2: cout<<"Hora"<<endl;
cin>>Hora;
break;
case 3: cout<<"Codigo del Cliente"<<endl;
cin>>CCT;
break;
case 4: cout<<"Codigo del Tecnico especializado"<<endl;
cin>>CTE;
break;
case 5: cout<<"Costo"<<endl;
cin>>Costo;
break;
case 6: Retorno=true;
break;
default:
cout<<"seleccione una opcion correcta"<<endl;
system("pause");
}
}
else
{
cout<<"El codigo no existe"<<endl;
system("pause");
}
}
}
else
{
cout<<"No hay Citas Para Modificar"<<endl;
system("pause");
}
}
class Reportes//clase reportes
{
public:
int CC,CT,H,F;
string Resultado,Diagnostico,Observacion;
void CapRep();
void ImpRep();
void BusRep();
void ModRep();
}Rep[15];
void Reportes::CapRep()
{
bool R1=false;
bool R2=false;
int NR=0;
if(j>0)//variable J para citas
{
A++;
system("cls");
cout<<"::::::::Reporte #"<<NR+1<<"::::::::"<<endl;
cout<<"Ingrese la Fecha de Elaboracion del Reporte"<<endl;
cin>>F;
cout<<"Ingrese la Hora de Elaboracion del Reporte"<<endl;
cin>>H;
while(R1==false)
{
cout<<"Ingrese el Codigo del Cliente"<<endl;
cin>>CC;
cin.ignore();
for(o=0;o<j;o++)
{
if(TE[o].CodTec==CC)
{
cout<<" El Tecnico si existe en los registros"<<endl;
R1=true;
}
}
}
while(R2==false)//ciclo de confirmacion del codigo de cliente
{
cout<<"Ingrese El Codigo Cliente: "<<endl;
cin>>CT;
cin.ignore();
for(p=0;p<h;p++)
{
if(CLNT[p].CodClient==CT)
{
cout<<"El Cliente si esta en el registro "<<endl;
R2=true;
}
}
}//cierre del while de la confirmacion del codigo de cliente
cout<<"Ingrese el Diagnostico"<<endl;
cin>>Diagnostico;
cout<<"Ingrese la Observacion"<<endl;
cin>>Observacion;
cout<<"Ingrese el Resultado"<<endl;
cin>>Resultado;
system("pause");
}
else
{
cout<<"No Se Han Registrado Citas Previamente"<<endl;
system("pause");
}
}
void Reportes::ImpRep()
{
cout<<"Fecha de Emicion del Reporte....................: "<<F<<endl;
cout<<"Hora de Emicion del Reporte.....................: "<<H<<endl;
cout<<"Codigo Cliente..................................: "<<CC<<endl;
cout<<"Codigo Tecnico Especializado....................: "<<CT<<endl;
cout<<"Fecha de la Cita................................: "<<Dates[b].Fecha<<endl;
cout<<"Hora de la Cita.................................: "<<Dates[b].Hora<<endl;
cout<<"Diagnostico.....................................: "<<Diagnostico<<endl;
cout<<"Observaciones...................................: "<<Observacion<<endl;
cout<<"Resultados......................................: "<<Resultado<<endl;
cout<<endl;
}
void Reportes::BusRep()
{
int N1;
if(A>0)
{
system("cls");
cout<<"Introduce El Codigo Del Cliente Para Mostrar El Reporte Correspondiente"<<endl;
cin>>N1;
for(b=0;b<A;b++)
{
if(Rep[b].CT==N1)
{
system("cls");
Rep[b].ImpRep();
system("PAUSE");
}
else
{
cout<<"No se Puede Mostrar El Reporte Solicitado!!"<<endl;
cout<<"Ya Que el Codigo Del Cliente Introducido no existe!!"<<endl;
system("PAUSE");
}
}
}
else
{
cout<<"No Se Han Capturado Reportes"<<endl;
system("pause");
}
}
void Reportes::ModRep()
{
int f,s;
if(A>0)
{
cout<<"Introdusca El Codigo Del Cliente Para Modificar Su Reporte"<<endl;
cin>>f;
for(b=0;b<A;b++)
{
if(Rep[b].CC==f)
{
cout<<"Actualizacion del Reporte"<<endl;
cout<<"Que decea modificar"<<endl;
cout<<"1.- Resultado"<<endl;
cout<<"2.- Diagnostico"<<endl;
cout<<"3.- Observaciones"<<endl;
cout<<"4.- Regresar"<<endl;
cout<<"selecciona la opcion a modificar: ";
cin>>s;
switch(s)
{
case 1: cout<<"Resultado"<<endl;
cin>>Resultado;
break;
case 2: cout<<"Diagnostico"<<endl;
cin>>Diagnostico;
break;
case 3: cout<<"Observaciones"<<endl;
cin>>Observacion;
break;
case 4: Retorno=true;
break;
default:
cout<<"Seleccione una opcion correcta"<<endl;
system("pause");
}
}
else
{
cout<<"El Reporte No Existe"<<endl;
system("pause");
}
}
}
else
{
cout<<"No hay Reportes Para modificar "<<endl;
system("pause");
}
}
int main()//programa principal
{
/*estas variables son las que se utilizan para las sentencias switch de los menus tanto el principal como
los secundarios(Tecnico especializado y Cliente)*/
int Selec,Selec1,Selec2,Selec3,Selec4,Menu;
bool Menuprincipal=false;//variable para hacer el ciclo do-while / Uso de banderas
//Aqui se localiza el menu principal
do
{
system("color 6A");
system("cls");
cout<<":::Menu Principal:::"<<endl;
cout<<"1.- Tecnico Especializado"<<endl;
cout<<"2.- Cliente"<<endl;
cout<<"3.- Citas"<<endl;
cout<<"4.- Reportes"<<endl;
cout<<"5.- Salir"<<endl;
cout<<"Selecciona Una Opcion:";
cin>>Menu;
cin.ignore();
if(Menu==1)//Aqui comienza el menu del tecnico especializado
{
bool Menu1 = false;//variable de tipo bolana para ciclar el meni del tecnico especializado
while(Menu1==false)
{
bool retorno=false;
system("color 8B");
system("cls");
cout<<":::::: Menu del Tecnico Especializado ::::::"<<endl;
cout<<"1.- Capturar"<<endl;
cout<<"2.- Mostrar"<<endl;
cout<<"3.- Buscar"<<endl;
cout<<"4.- Modificar"<<endl;
cout<<"5.- Regresar"<<endl;
cout<<"Selecciona Una Opcion: ";
cin>>Selec;
cin.ignore();
system("cls");
switch(Selec)
{
case 1: system("cls");//capturar tecnico especializado
if(i<5)
{
TE[i].capturar();
retorno=true;
}
else
{
cout<<"Ya no hay cupo disponible"<<endl;
system("pause");
retorno=true;
}
break;
case 2: //mostrar tecnico especializado
if(i>0)
{
for(b=0;b<i;b++)
{
TE[b].imprimir();
}
system("PAUSE");
}
else
{
cout<<"No se a capturado informacion de los tecnicos especializados"<<endl;
system("pause");
}
break;
case 3: system("cls");//busqueda del tecnico especializado
for(b=0;b<1;b++)
{
TE[b].buscar();
}
break;
case 4: system("cls");//Actualizacion del tecnico especializado
for(b=0;b<i;b++)
{
TE[b].modificar();
}
break;
case 5: Menu1=true;//Se le introduce un valor verdadero a la bandera Menu1 para q retorne al menu principal
break;
default: cout<<"Error!! La Opcion Seleccionada No Existe"<<endl;
system("pause");
}//llave del switch tecnico especializado
}//llave q cierra del while del tecnico especializado
}//llave q cierra opcion 1
if(Menu==2)//Aqui se localiza el menu del Cliente
{
// bool regreso=false;
bool Menu2=false;// Uso de banderas
while(Menu2==false)//variable de tipo boleana para ciclar el meni del cliente
{
bool regreso=false;
system("color 7F");
system("cls");
cout<<":::::: Menu del Cliente ::::::"<<endl;
cout<<"1.- Capturar"<<endl;
cout<<"2.- Mostrar"<<endl;
cout<<"3.- Buscar"<<endl;
cout<<"4.- Modificar"<<endl;
cout<<"5.- Salir"<<endl;
cout<<"Selecciona Una Opcion ";
cin>>Selec1;
cin.ignore();
switch(Selec1)
{
case 1: system("cls");//capturar datos del cliente
if(h<15)
{
CLNT[h].ingresar();
regreso=true;
}
else
{
cout<<"Ya no hay cupo disponible"<<endl;
system("pause");
regreso=true;
}
break;
case 2: //mostrar datos del cliente
if(h>0)
{
system("cls");
for(b=0;b<h;b++)
{
CLNT[b].mostrar();
}
system("PAUSE");
}
else
{
cout<<"No se a capturado informacion de los Clientes"<<endl;
system("pause");
}
break;
case 3: system("cls");//busqueda del cliente
for(b=0;b<1;b++)
{
CLNT[b].encontrar();
}
break;
case 4: system("cls");//Actualizacion de datos del cliente
for(b=0;b<1;b++)
{
CLNT[b].actualizar();
}
break;
case 5: Menu2=true;//Se le introduce un valor verdadero a la bandera Menu2 para q retorne al menu principal
break;
default: cout<<"Error!! La Opcion Seleccionada No Existe"<<endl;
system("pause");
}//llave del switch cliente
}//llave q cierra del while del cliente
}//llave q cierra opcion 2
if(Menu==3)//Aqui incia el Menu de Citas
{
bool regreso=false;
bool Menu3=false;
while(Menu3==false)
{
system("color 5E");
system("cls");
cout<<"Menu de Citas"<<endl;
cout<<"1.- Capturar Citas"<<endl;
cout<<"2.- Mostrar Citas"<<endl;
cout<<"3.- Buscar Citas"<<endl;
cout<<"4.- Modificar Citas"<<endl;
cout<<"5.- Regresar"<<endl;
cout<<"Selecciona una Opcion: ";
cin>>Selec2;
cin.ignore();
switch(Selec2)
{
case 1:
if(j<15)
{
Dates[j].Cap_Cita();
regreso=true;
}
else
{
cout<<"Ya no es Posible Dar mas Citas"<<endl;
system("pause");
regreso=true;
}
break;
case 2: if(j>0)
{
system("cls");
for(b=0;b<j;b++)
{
Dates[b].Most_Cita();
}
system("PAUSE");
}
else
{
cout<<"No Se Han Capturado Citas "<<endl;
system("pause");
}
break;
case 3:
system("cls");
for(b=0;b<1;b++)
{
Dates[b].Buscar();
}
break;
case 4:
system("cls");
for(b=0;b<1;b++)
{
Dates[b].Cambiar();
}
break;
case 5: Menu3=true;
break;
default: cout<<"Error!! La Opcion Seleccionada No Existe"<<endl;
system("pause");
}
}
}
if(Menu==4)//Aqui inicia el Menu de Reportes
{
bool regreso=false;
bool Menu4=false;
while(Menu4==false)
{
system("color 5E");
system("cls");
cout<<"Menu de Reportes"<<endl;
cout<<"1.- Capturar Reporte"<<endl;
cout<<"2.- Mostrar Reporte"<<endl;
cout<<"3.- Buscar Reporte"<<endl;
cout<<"4.- Modificar Reporte"<<endl;
cout<<"5.- Regresar"<<endl;
cout<<"Selecciona una Opcion: ";
cin>>Selec3;
cin.ignore();
switch(Selec3)
{
case 1:
if(A<15)
{
Rep[A].CapRep();
regreso=true;
}
else
{
cout<<"Ya No Es Posible Generar Reportes"<<endl;
system("pause");
regreso=true;
}
break;
case 2: if(j>0)
{
system("cls");
for(b=0;b<A;b++)
{
Rep[b].ImpRep();
}
system("PAUSE");
}
else
{
cout<<"No Se Han Capturado Reportes"<<endl;
system("pause");
}
break;
case 3:
system("cls");
for(b=0;b<1;b++)
{
Rep[b].BusRep();
}
break;
/*
case 4:
system("cls");
for(b=0;b<1;b++)
{
Rep[b].ModRep();
}
break;
*/
case 5: Menu4=true;
break;
default: cout<<"Error!! La Opcion Seleccionada No Existe"<<endl;
system("pause");
}
}
}
if(Menu==5)
{
cout<<"Hasta pronto"<<endl;
Menuprincipal=true;
}
}
while(Menuprincipal==false);//while menu principal
return EXIT_SUCCESS;
}
¿Realmente quieres cerrar esta reparación?
Sí
No
¿Realmente quieres reabrir esta reparación?
Sí
No
¿Realmente quieres borrar este post?
Sí
No