Buenas tardes.. tengo un problema con este programa que les colocare acontinuacion, ya que el menu me corre de lo mejor.. pero al terminar cada funcion del case no se como hacer que pregunte si el usuario desea regresar al menu principal y si el desea regresar q pulse S y asi muestre el menu principal de nuevo..
Espero me puedan ayudar.. se los agradeceria demasiado..
void main()
{
int i, op, num,no_prod; // declarando variables a utilizar
{
clrscr();
// Formando el menu para la gestion de datos del inventario
cout<<"\t\t*****MENU DE CONTROL DE INVENTARIOS*****"<<endl<<endl;
cout<<"\t\t\t1.-Ingresar Datos "<<endl;
cout<<"\t\t\t2.-Realizar consultas "<<endl;
cout<<"\t\t\t3.-Desplegar Informacion "<<endl;
cout<<"\t\t\t4. Modificacion"<<endl;
cout<<"\t\t\t5.-Borrar"<<endl;
cout<<"\t\t\t6.-Salir"<<endl<<endl;
cout<<"\t\tINGRESE CUALQUIERA DE LAS OPCIONES: ";
cin>>op;
}
switch(op)
{
// Opcion 1 = Ingreso de registros
case 1:
clrscr(); // limpia la pantalla
cout << "\n\rINGRESO DE DATOS";
alias=fopen("PRODUCTO.SEC","rb+"); // abre el archivo para lectura
if(alias==NULL)// si alias es nulo
alias=fopen("PRODUCTO.SEC","wb"); // crea archivo para E/S
cout << "\n\n\n\rNumero de producto: "; cin >> no_prod;
fread(&Registro,sizeof(Registro),1,alias); // cantidad de registros que se desean grabar
while(!feof(alias))//comprueba el indicador de final de fichero
{
if(Registro.no_prod==no_prod) // si el no de producto ya existe despliega que el registro esta duplicado
{
cout << "\n\n\n\rRegistro duplicado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
fclose(alias); // cierre de archivo
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias); // cuenta elementos dentro del archivo
}
cout << "\n\rDescripcion: "; gets(Registro.descrip);
cout << "\n\rCantidad : "; cin >> Registro.cantidad;
cout << "\n\rPrecio : "; cin >> Registro.precio;
Registro.no_prod=no_prod; // compara no. producto sino son iguales escribe el nuevo producto
fwrite(&Registro,sizeof(Registro),1,alias); // escritura de archivo
fclose(alias); // cierre de archivo
cout << "\n\n\n\rProducto registrado !!!" <<endl; // muestra mensaje del registro exitoso
getch();
break;
// Opcion 2: Consulta de inventario
case 2:
clrscr();
cout << "\n\rCONSULTA DE LOS DATOS INGRESADOS";
alias=fopen("PRODUCTO.SEC","rb"); // abre el archivo para lectura
if(alias==NULL) // si alias es nulo, muestra mensaje de que el archivo no existe
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\n\n\rNumero de producto: "; cin >> no_prod;
fread(&Registro,sizeof(Registro),1,alias); // cuenta elementos dentro del archivo
while(!feof(alias)) //comprueba el indicador de final de fichero
{
if(Registro.no_prod==no_prod) // si el no. producto existe, despliega los datos del producto
{
cout << "\n\rNo_Prod Descripcion Cantidad Precio ";
cout << "\n\r----------------------------------------------------------";
printf("\n\r%1d\t%10s\t%2d\t\t$%2.2f\t%c",Registro .no_prod,Registro.descrip,
Registro.cantidad,Registro.precio);
fclose(alias); // cierre de archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias); // cuenta elementos dentro del archivo
}
cout << "\n\rNo se encuentra ese registro !!!";
fclose(alias); // cierre de archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
break;
// Opcion 3: Lista los productos del inventario
case 3:
clrscr();
cout << "\n\rLISTADO DE REGISTROS DE PRODUCTOS";
alias=fopen("PRODUCTO.SEC","rb"); // abre el archivo para lectura
if(alias==NULL) // si alias es nulo, muestra mensaje de que el archivo no existe
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
// Lista todos los productos que se encuentren dentro del archivo
cout << "\n\rNo_Prod Descripcion Cantidad Precio ";
cout << "\n\r---------------------------------------------------------";
fread(&Registro,sizeof(Registro),1,alias); // cuenta elementos dentro del archivo
while(!feof(alias)) //comprueba el indicador de final de fichero
{
printf("\n\r%2d\t%10s\t%2d\t\t$%1.2f\t%c",Registro .no_prod,Registro.descrip,
Registro.cantidad,Registro.precio);
fread(&Registro,sizeof(Registro),1,alias); // cuenta elementos dentro del archivo
}
fclose(alias); // cierre de archivo
cout << "\n\r----------------------------------------------------------";
cout << "\n\rFin del listado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
break;
// Opcion 4: Modificacion de productos
case 4:
clrscr();
cout << "\n\rMODIFICACION DE REGISTROS DE PRODUCTOS";
alias=fopen("PRODUCTO.SEC","rb+"); // abre el archivo para lectura
if(alias==NULL) // si alias es nulo, muestra mensaje de que el archivo no existe
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\n\n\rNumero de producto: ";
cin >> no_prod;
cout << "\n\rNo_Prod Descripcion Cantidad Precio ";
cout << "\n\r---------------------------------------------------------";
fread(&Registro,sizeof(Registro),1,alias); // cuenta elementos dentro del archivo
while(!feof(alias)) //comprueba el indicador de final de fichero
{
if(Registro.no_prod==no_prod)
{
printf("\n\r%3d\t%10s\t%3d\t\t$%2.2f\t%c",Registro .no_prod,Registro.descrip,Registro.cantidad,Regist ro.precio);
// se deben anotar los nuevo datos (descripcion, cantidad y precio) del producto
cout << "\n\n\n\rAnote los nuevos datos:";
cout << "\n\rDescripcion: "; gets(Registro.descrip);
cout << "\n\rCantidad : "; cin >> Registro.cantidad;
cout << "\n\rPrecio : "; cin >> Registro.precio;
fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET);// situa el puntero en el dato a modificar
fwrite(&Registro,sizeof(Registro),1,alias); // escritura de archivo,graba el registro en la dirección física
fclose(alias); // cierre de archivo
cout << "\n\n\n\rRegistro modificado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias); // cuenta elementos dentro del archivo
cout << "\n\rNo se encuentra ese registro !!!";
fclose(alias); // Cierra el archivo
getch();
break;
// Opcion 5: borrado de productos
case 5:
clrscr();
cout << "\n\rBORRAR REGISTROS";
alias=fopen("PRODUCTO.SEC","rb+"); // abre el archivo para lectura
if(alias==NULL) // si alias es nulo, muestra mensaje de que el archivo no existe
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\n\n\rNumero de producto: ";
cin >> no_prod;
fread(&Registro,sizeof(Registro),1,alias); // cuenta elementos dentro del archivo
while(!feof(alias)) //comprueba el indicador de final de fichero
{
if(Registro.no_prod==no_prod)
{
cout << "\n\rNo_Prod Descripcion Cantidad Precio ";
cout << "\n\r---------------------------------------------------------";
printf("\n\r%1d\t%10s\t%1d\t\t$%1.2f\t%c",Registro .no_prod,Registro.descrip,Registro.cantidad,Regist ro.precio);
Registro.no_prod=0;
strcpy(Registro.descrip,"");
Registro.cantidad=0;
Registro.precio=0.0;
do {
cout << "\n\n\rEsta seguro que desea borrarlo? [S/N] ---> ";
op=toupper(getche());
}while(op!='S' && op!='N'); // si el usuario desea borrarlo al pulsar s el registro es eliminado del archivo
if(op=='S')
{
fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET); // situa el puntero en el dato a modificar
fwrite(&Registro,sizeof(Registro),1,alias); // escritura de archivo
cout << "\n\n\n\rRegistro eliminado !!!";
}
fclose(alias); // cierre de archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias); // cuenta elementos dentro del archivo
}
cout << "\n\rNo se encuentra ese registro !!!";
fclose(alias); // cierre de archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
break;
}
// Opcion de salida del programa
case 6:
break;
}
}