[ Foro de C++ ]
hola necesito ayuda con mi programa me carga a los clientes como inactivos y no me funcionan los buscadores de cliente ni el de borrar
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <conio.h>
#define M -1
#include <locale.h>
using namespace std;
struct cliente
{
int id_Usuario;
char fecha_creacion[10];
bool activo = true;
float importe_compras=0;
char email [50];
};
struct compras
{
char id_compra;
char fecha_hora;
float monto_compra;
char id_usuario_correspondiente;
char nro_articulo;
};
bool cargar_nuevo_cliente(void)
{
FILE*f;
cliente cli;
if (f = fopen("Clientes.bin","ab"))
{
cout << "Ingrese Nro. Id del cliente :" << endl;
cin >> cli.id_Usuario;
while (cli.id_Usuario == M)
{
cout << "Valor de Id Invalido, vuelva a ingresarlo porfavor" << endl;
cin >> cli.id_Usuario;
}
cout << "Ingrese Fecha de Creacion de legajo :" << endl;
cin >> cli.fecha_creacion;
cout << "Ingrese Email del cliente :" << endl;
cin >> cli.email;
fwrite(&cli, sizeof(cliente),1,f);
fclose(f);
return true;
}
return false;
}
int cargar_compra(FILE*c,cliente v[],int tam)
{
compras comp;
double montocompraxd;
int id;
if (c = fopen ("procesados.bin" , "ab" ))
{
cout << "Ingrese Id de compra: " << endl;
cin >> comp.id_compra;
cout << "Ingrese Fecha y Hora en formato AAAAMMDDHH:MM : " << endl;
cin >> comp.fecha_hora;
cout << "Ingrese Monto de la compra " << endl;
cin >> comp.monto_compra;
montocompraxd = comp.monto_compra;
cout << "Ingrese Id del Cliente que esta comprando: " << endl;
cin >> comp.id_usuario_correspondiente;
id = comp.id_usuario_correspondiente;
cout << "Ingrese Nro de Articulo " << endl;
cin >> comp.nro_articulo;
fwrite(&comp, sizeof(compras),1,c);
fclose(c);
v[id].importe_compras += montocompraxd;
return 0;
}
return 1;
}
int borrar (int id_Usuario)
{
FILE *f;
int encontrado =0;
cliente cli;
if (f=fopen("Clientes.bin","rb+"))
{
while(!encontrado && fread(&cli,sizeof(cliente),1,f))
{
if ((id_Usuario, cli.id_Usuario)==0)
{
encontrado = 1;
cli.activo = false;
fseek(f,(-1)*sizeof(cliente), SEEK_CUR);
fwrite(&cli,sizeof(cliente),1,f);
}
}
if (!encontrado)
cout << "No se encontro la persona a borrar." << endl;
fclose(f);
return 1;
}
return 0;
}
int buscar(int id_Usuario)
{
FILE *f;
int encontrado = 0;
struct cliente cli;
if (f=fopen("Clientes.bin","rb"))
{
while(fread(&cli,sizeof(struct cliente),1,f) && !encontrado)
{
if ((id_Usuario, cli.id_Usuario)==0)
{
encontrado = 1;
cout << "****** Datos del cliente *******" << endl;
cout << "Id Cliente: " << cli.id_Usuario << endl;
cout << "Fecha de Creacion: " << cli.fecha_creacion << endl;
cout << "Activo: " << cli.activo << endl;
cout << "Total importe compras: " << cli.importe_compras << endl;
cout << "eMail: " << cli.email<< endl;
}
}
if (!encontrado)
cout <<"No se encontro al cliente buscado" << endl;
fclose(f);
return 1;
}
return 0;
}
int buscar_mail(char email[])
{
FILE *f;
int encontrado =0;
struct cliente cli;
if (f=fopen("Clientes.bin","rb"))
{
while(fread(&cli,sizeof(struct cliente),1,f) && !encontrado)
{
if (strcmp(email, cli.email)==0)
{
encontrado = 1;
cout << "****** Datos del cliente *******" << endl;
cout << "Id Cliente: " << cli.id_Usuario << endl;
cout << "Fecha de Creacion: " << cli.fecha_creacion << endl;
cout << "Activo: " << cli.activo << endl;
cout << "Total importe compras: " << cli.importe_compras << endl;
cout << "eMail: " << cli.email<< endl;
}
}
if (!encontrado)
cout <<"No se encontro al cliente buscado" << endl;
fclose(f);
return 1;
}
return 0;
}
int mostrarclientes(void)
{
FILE *f;
cliente cli;
if (f=fopen("Clientes.bin","rb"))
{
fread(&cli,sizeof(cliente),1,f);
while(!feof(f))
{
cout << "****** Datos del cliente *******" << endl;
cout << "Id Cliente: " << cli.id_Usuario << endl;
cout << "Fecha de Creacion: " << cli.fecha_creacion << endl;
cout << "Activo: " << cli.activo << endl;
cout << "Total importe compras: " << cli.importe_compras << endl;
cout << "eMail: " << cli.email<< endl;
fread(&cli,sizeof(struct cliente),1,f);
}
fclose(f);
return 1;
}
return 0;
}
void inicializar_vector(cliente v[],int tam)
{
for(int i=0; i<tam; i++)
{
v[i].id_Usuario = M;
}
return;
}
int contar_clientes (cliente v[], int tam)
{
int x = 0;
for (int i =0; i<tam; i++ )
{
if(v[i].id_Usuario != M)
x++;
}
return x;
}
void ordenar_clientes (cliente v[], int tam)
{
int i,j;
cliente aux;
for (i=0 ; i< tam -1 ; i++)
{
for(j=0 ; j< tam -1 -i ; j++)
{
if (v[j].importe_compras < v[j+1].importe_compras)
aux = v[j];
v[j] = v[j+1];
v[j+1] = aux;
}
}
cout << "\nOrden ascendente" << endl;
for (i=0 ; i< tam -1 ; i++)
{
cout << ordenar_clientes[i]<< "" ;
}
cout<<"\n";
}
char menu()
{
char opcion;
cout << "Seleccione una opccion" << endl;
cout << "1 - Cargar nuevo cliente" << endl;
cout << "2 - Desactivar cliente existente" << endl;
cout << "3 - Buscar un cliente por numero de ID" << endl;
cout << "4 - Buscar un cliente por direccion de email" << endl;
cout << "5 - Mostrar todos los clientes" << endl;
cout << "6 - Mostrar lista de clientes activos" << endl;
cout << "7 - Cargar una compra" << endl;
cout << "8 - Ver compras de un cliente " << endl;
cout << "9 - Esc - Salir" << endl;
do
opcion = getch();
while (!(opcion > '0' && opcion < '6') && (opcion != 27));
int id_cliente_desactivar;
int numero_cliente_buscado;
int email_cliente_buscado;
switch(opcion)
{
case '1':
if (cargar_nuevo_cliente ())
cout << "El cliente fue cargado exitosamente" << endl;
else
cout << "Error al cargar el cliente" << endl;
break;
case '2':
cout << "Ingrese el ID del cliente a desactivar :" << endl;
cin >> id_cliente_desactivar;
borrar (id_cliente_desactivar);
break;
case '3':
cout << "Ingrese Id de cliente a buscar" << endl;
cin >> numero_cliente_buscado;
buscar(numero_cliente_buscado);
if (!buscar(numero_cliente_buscado))
cout << "Error al buscar el cliente"<< endl;
break;
case '4':
cout << "Ingrese eMail de cliente a buscar" << endl;
cin >> email_cliente_buscado;
buscar(email_cliente_buscado);
if (!buscar(email_cliente_buscado))
cout << "Error al buscar el cliente"<< endl;
break;
case '5':
if (!mostrarclientes())
cout << "No hay clientes cargados en el sistema" << endl;
break;
case '6' :
ordenar_clientes;
}
}
int main()
{
setlocale (LC_ALL,"");
cliente vector_clientes[1000];
inicializar_vector(vector_clientes,1000);
char out;
do
out = menu();
while (out != 27);
return 0;
}
hola en la funcion buscar por Id tienes que poner if(!encontrado) y en el segundo if((id_Usuario, cli.id_Usuario)==0) y te funciona.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)