Sei sulla pagina 1di 21

registro para clientes de un taller de mecanica automotriz

codigo enviada por: jhonny666 (2009-08-26 06:38:13) bueno aqui les dejo uno de mis programas de gestion para un taller de mecanica automotriz el cual tiene la funcion de guardar los datos de los clientes en un ficher y ala vez crear para cada cliente registrado un historial donde se almacenen todos los trabajos realizados a dichos cliente... bueno amigos espero que les guste y espero sus comentarios, felicitaciones, criticas , recomendaciones loq ustedes quieran... por cierto no se olviden de cambiarle las rutas donde se guardaran los ficheros presentes en mi codigo por rutas de sus ordenadores... a y se me olvidaba... en esta linea de mi codigo: char para_concatenar[100]="C:\Users\BRICPADES SL\Documents\"; solamanete especifico la ruta hasta la carpeta que contendra los historiales de los cliente por loque ustedes hagan lo mismo especifiquen una ruta solo hasta la carpeta donde quieran que se guarden los historiales...lo demas el codigo ya lo hace solo aaa y no se olviden de poner las dobles barras en la ruta porque si no no funciona el programa o por lo menos con el borland no lo hace jejej grasias un abrazo a todos.
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h> #include<conio.h> #define TAM 100 struct FECHA{ int dia; int mes; int year; }; struct HISTORIAL{ struct FECHA fecha_finalizacion; char descripcion_trabajo[500000]; long int clave_acceso; }; struct TRABAJO{ char descripcion[200]; char confirmacion; char incidencias[200]; }; struct CLIENTE{ long int dni; //cada registro ha de tener su clave int numero_cliente; char nombre[20]; struct FECHA fecha_registro; struct TRABAJO trabajo; char modelo_coche[25]; char matricula[20]; //char historial[500000]; };

struct FECHA leer_Fecha(); struct TRABAJO leer_trabajos(); void visualizar_Fecha(struct FECHA fecha_registro); struct CLIENTE leer_Cliente(); void crear_fichero_clientes(char *ruta); void alta_Cliente(char *ruta, char *ruta2); void baja_Cliente(char *ruta, char *ruta2, long int clave); void modificar_Cliente(char *ruta, char *ruta2, long int clave); int consultar_Cliente(char *ruta, long int clave); void anadir_trabajos(char *ruta, char *ruta2, long int clave); void incluir_trabajo(char *ruta, long int clave); void visualizar_fichero_clientes(char *ruta); int contar_registros_clientes(char *ruta); void borrar_trabajo(char *ruta, char *ruta2, long int clave); int comprobar_existencia_trabajos(char *ruta, long int clave); void crear_historial(char *ruta_historial); void guardar_datos(char *ruta_historial, char *ruta_historial2, long i nt clave, char *trabajo); int comprobar_existencia_historial(char *ruta_historial); long int sacar_clave(char *ruta, long int clave, char *trabajo); void visualizar_historial_cliente(char *nombre_cliente, char *extensio n); void devolver_nombre_cliente(char *ruta, long int clave, char *nombre_ cliente); void sacar_trabajo_realizado(char *ruta, char *trabajo, long int clave ); void guardar_datos(char *ruta_historial, char *ruta_historial2, long i nt clave, char *trabajo); void buscar_nombre_cliente(char *ruta, char *nombre_cliente, long int clave); void main(void){ int clave; //Esta variable la usaremos para borrar, modificar y con sultar un registro del fichero. char ruta[90]="C:\Users\BRICPADES SL\Documents\clientes.dat"; char ruta2[90]="C:\Users\BRICPADES SL\Documents\clientes2.dat"; char para_concatenar[100]="C:\Users\BRICPADES SL\Documents\"; char extension[20]=".dat"; char ruta_historial2[90]="C:\Users\BRICPADES SL\Documents\historial 2.dat"; int opc; char resp; char resp2; int tamano; int resultado; int resultado2; long int dni; char nombre_cliente[300]; char trabajo[500]; do{ printf(" MENU DE SELECCIONn"); printf(" =================n"); printf(" 34.Crear ficheron"); printf(" 1.Dar de alta un clienten"); printf(" 2.Dar de baja un clienten"); printf(" 3.Actualizar un clienten"); printf(" 4.Consultar ficha de un clienten"); printf(" 5.Obtener una lista de clientesn"); printf(" 6.Consultar el historial de un clienten" ); printf(" 0.Salir de SENATINO REGISTER v1.0n");

textcolor(YELLOW); cprintf(" nElige una opcion: "); scanf("%d",&opc); switch(opc){ case 34: system("cls"); crear_fichero_clientes(ruta); printf("nn "); system("pause"); system("cls"); break; case 1: system("cls"); alta_Cliente(ruta,ruta2); printf("nn system("pause"); system("cls"); break;

");

case 2: system("cls"); printf("INTRODUZCA EL DNI/NIE DEL CLIENTE QUE DESEA DAR DE BAJA DEL REGISTRO: "); scanf("%ld",&clave); baja_Cliente(ruta,ruta2,clave); printf("nn "); system("pause"); system("cls"); break; case 3: system("cls"); printf("INTRODUZCA EL DNI/NIE DEL CLIENTE QUE DESEA MODIFI CAR: "); scanf("%ld",&clave); modificar_Cliente(ruta,ruta2,clave); printf("nn "); system("pause"); system("cls"); break; case 4: system("cls"); printf("INTRODUZCA EL EL DNI/NIE DEL CLI ENTE CUYA INFORMACION DESEA CONSULTAR: "); fflush(stdin); scanf("%ld",&clave); resultado=consultar_Cliente(ruta,clave); if(resultado!=-1){ tamano=comprobar_existencia_trabajos(ruta,clave); if(tamano>1){ printf("nnDar por finali zado este trabajo?: s/n"); fflush(stdin); scanf("%c",&resp); if(resp=='s'){ devolver_nombre_cliente(ruta,clave,nombre_cliente ); strcat(para_concatenar,nombre_cliente);

ncatenar);

strcat(para_concatenar,extension); resultado2=comprobar_existencia_historial(para_co

if(resultado2==-1){ //aqi hay q hacer una com probacion por si el historial fichero ya esta creado fflush(stdin); //printf("nIntroduzca el nombre y los ap ellidos ocmpletos para crear el historial de este cliente:" ); //fflush(stdin); //gets(nombre_historial); printf("nIntroduzca la fecha de finalizacion d e este trabajo: n"); //strcat( para_concatenar,nombre_historial); //strcat(para_concatenar,extension); crear_historial(para_concatenar); dni=sacar_clave(ruta,clave,trabajo); //sacar_trabajo_realizado(ruta,trabajo,clave); guardar_datos(para_concatenar,ruta_historial2,dni,trabajo);//aqi tengo q ver de donde saco los dos ultimos datos de la funcion-->cre q tengo q crearme otra funcion para sacar los datos. }else{ if(resultado2==1){ printf("nIntroduzca la fecha de finaliza cion de este trabajo: n"); dni=sacar_clave(ruta,clave,trabajo); //sacar_trabajo_realizado(ruta,trabajo,c lave); guardar_datos(para_concatenar,ruta_historia l2,dni,trabajo); } } borrar_trabajo(ruta,ruta2,clave); textcolor(GREEN); cprintf("nnEL TRABAJO/S HA SIDO BORRADO CON EXI TO Y SE HA ALMACENADO EN EL HISTORIAL DE ESTE CLIENTE"); }else{ printf("nnDesea aadir algun dato respecto al trabajo para este cliente? s/n: "); fflush(stdin); scanf("%c",&resp2); fflush(stdin); if(resp2=='s'){ anadir_trabajos(ruta,ruta2,clave); } }else{ }

printf("nnDesea aadir a lgun dato respecto al trabajo para este cliente? s/n: "); fflush(stdin); scanf("%c",&resp2); fflush(stdin); if(resp2=='s'){ anadir_trabajos(ruta,ruta2,clave); }

} } printf("nn "); fflush(stdin); system("pause"); fflush(stdin); break; case 5: system("cls"); visualizar_fichero_clientes(ruta); printf("nnnnACTUALMENTE TIENE REGISTRADOS EN SU SISTEMA UN TOTAL DE %d CLIENTES",contar_registros_clientes(ruta)); printf("nn "); system("pause"); system("cls"); break; case 6: system("cls"); printf("nINTRODUCE EL DNI/NIE DEL CLIENTE DEL QUE DESEA CO NSULTAR SU HISTORIAL: " ); scanf("%ld",&clave); buscar_nombre_cliente(ruta,nombre_cliente,clave); system("cls"); visualizar_historial_cliente(nombre_cliente,extension); system("pause"); system("cls"); break; } }while(opc!=0); getch(); } struct FECHA leer_Fecha(){ struct FECHA fecha; printf("nDia: "); scanf("%d",&fecha.dia); printf("nmes: "); scanf("%d",&fecha.mes); printf("nao: "); scanf("%d",&fecha.year); return(fecha); } struct TRABAJO leer_trabajos(){ struct TRABAJO trabajo; //char resp; printf("nEspecifique aqui el tipo de trabajo a realizar: nn"); fflush(stdin); gets(trabajo.descripcion); return(trabajo); } void visualizar_Fecha(struct FECHA fecha_registro){ printf("%d/%d/ %d",fecha_registro.dia,fecha_registro.mes,fecha_registro.year); } struct CLIENTE leer_Cliente(){

system("cls");

struct CLIENTE cli; printf("nDni cliente: "); scanf("%d",&cli.dni); printf("nNombre y los 2 apellidos del cliente(obligatoriamente): ") fflush(stdin); gets(cli.nombre); printf("nNumero Cliente: "); fflush(stdin); scanf("%d",&cli.numero_cliente); printf("nFecha de registro : "); cli.fecha_registro=leer_Fecha(); printf("nModelo del coche: "); fflush(stdin); gets(cli.modelo_coche); printf("nMatricula: "); fflush(stdin); gets(cli.matricula); return(cli);

} void crear_fichero_clientes(char *ruta){ FILE *f; char resp='s'; struct CLIENTE cliente; f=fopen(ruta,"wb"); if(f==NULL){ printf("Error al crear el fichero %s",ruta); getch(); exit(-1); } while(resp=='s'){ cliente=leer_Cliente(); fwrite(&cliente,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(1); } printf("nnQuiere registrar otro alumno?: s/n"); fflush(stdin); scanf("%c",&resp); } fclose(f); if(ferror(f)!=0){ printf("Se ha producido un error al cerrar"); getch(); exit(1); } } void alta_Cliente(char *ruta, char *ruta2){ struct CLIENTE cli; struct CLIENTE alta; FILE *f; FILE *faux; f=fopen(ruta,"rb"); if(f==NULL){ printf("ERROR INESPERADO"); getch(); exit(-1);

} faux=fopen(ruta2,"wb"); if(faux==NULL){ printf("ERROR INESPERADO"); getch(); exit(-1); } fread(&cli,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(1); } while(!feof(f)){ fwrite(&cli,sizeof(struct CLIENTE),1,faux); if(ferror(faux)!=0){ printf("Se ha producido un error al realizar la operaci on"); getch(); exit(1); } fread(&cli,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(1); } } alta=leer_Cliente(); fwrite(&alta,sizeof(struct CLIENTE),1,faux); if(ferror(faux)!=0){ printf("Se ha producido un error al realizar la operaci on"); getch(); exit(1); } while(!feof(f)){ fwrite(&cli,sizeof(struct CLIENTE),1,faux); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(1); } fread(&cli,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(1); } } fclose(f); if(ferror(f)!=0){ printf("Se ha producido un error al cerrar"); getch(); exit(1); } fclose(faux); if(ferror(faux)!=0){ printf("Se ha producido un error al cerrar"); getch(); exit(1);

} remove(ruta); rename(ruta2,ruta);//ruta 2 pasa a llamarse "ruta".

void baja_Cliente(char *ruta, char *ruta2, long int clave){ struct CLIENTE baja; FILE *f; FILE *faux; char enc='n'; f=fopen(ruta,"rb"); if(f==NULL){ printf("ERROR INESPERADO!"); getch(); exit(-1); } faux=fopen(ruta2,"wb"); if(faux==NULL){ printf("ERROR INESPERADO!"); getch(); exit(-1); } fread(&baja,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } while(!feof(f)){ if(baja.dni!=clave){ fwrite(&baja,sizeof(struct CLIENTE),1,faux); if(ferror(faux)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } }else{ enc='s'; } fread(&baja,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } } fclose(f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } if(enc=='s'){ printf("nnEL CLIENTE HA SIDO BORRADO CON EXITO"); }else{ printf("nnEL CLIENTE QUE DESEAS BORRAR NO EXISTE EN EL REGISTRO "); } fclose(faux); if(ferror(faux)!=0){

printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } remove(ruta); rename(ruta2,ruta);

void modificar_Cliente(char *ruta, char *ruta2, long int clave){ struct CLIENTE cliente; struct CLIENTE modificacion; FILE *f; FILE *faux; char enc='n'; f=fopen(ruta,"rb"); if(f==NULL){ printf("ERROR INESPERADO!"); getch(); exit(-1); } faux=fopen(ruta2,"wb"); if(faux==NULL){ printf("ERROR INESPERADO!"); getch(); exit(-1); } fread(&cliente,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } while(!feof(f)){ if(cliente.dni!=clave){ fwrite(&cliente,sizeof(struct CLIENTE),1,faux); if(ferror(faux)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } }else{ modificacion=leer_Cliente(); fwrite(&modificacion,sizeof(struct CLIENTE),1,faux); printf("nnLa informacion de este cliente ha sido modificada c on exito"); enc='s'; } fread(&cliente,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } } if(enc=='n'){ printf("nnEl cliente que quieres modificar no existe en el arch ivo"); } fclose(f); if(ferror(f)!=0){

printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } fclose(faux); if(ferror(faux)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } remove(ruta); rename(ruta2,ruta);

int consultar_Cliente(char *ruta, long int clave){ struct CLIENTE consulta; int resp; FILE *f; f=fopen(ruta,"rb"); if(f==NULL){ printf("error al realizar la operacion"); getch(); exit(-1); } char enc='n'; fread(&consulta,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("error al realizar la operacion"); getch(); exit(-1); } while(!feof(f)){ if(consulta.dni==clave){ printf("nn============================================================ ========n"); textcolor(RED+BLINK); cprintf(" REGISTRO CLIENTES SENATINO n"); printf("rr============================================================ ========n"); textcolor(YELLOW); cprintf("Numero Cliente: "); cprintf("%d",consulta.numero_cliente); printf("n============================================================= =======n"); printf("Nombre y apellidos del cliente: "); puts(consulta.nombre); printf("DNI/NIE cliente: %d",consulta.dni); printf("nFecha de registro: "); visualizar_Fecha(consulta.fecha_registro); printf("nModelo del coche: "); puts(consulta.modelo_coche); printf("Matricula: "); puts(consulta.matricula);

printf("============================================================== ======n"); textcolor(BLUE+BLINK); cprintf(" TRABAJO A REALIZAR n"); printf("rr============================================================ ========nn"); puts(consulta.trabajo.descripcion); enc='s'; } fread(&consulta,sizeof(struct CLIENTE),1,f); } if(enc=='n'){ printf("nnEl cliente que quieres consultar no existe en el arch ivo"); resp=-1; } fclose(f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); exit(-1); } return(resp); } void anadir_trabajos(char *ruta, char *ruta2, long int clave){ struct CLIENTE cliente; //struct CLIENTE modificacion; //struct TRABAJO trabajo; char trabajos[200]; FILE *f; FILE *faux; char aux[200]; char enc='n'; f=fopen(ruta,"rb"); if(f==NULL){ printf("ERROR INESPERADO!"); getch(); exit(-1); } faux=fopen(ruta2,"wb"); if(faux==NULL){ printf("ERROR INESPERADO!"); getch(); exit(-1); } fread(&cliente,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } while(!feof(f)){ if(cliente.dni!=clave){ fwrite(&cliente,sizeof(struct CLIENTE),1,faux); if(ferror(faux)!=0){ printf("Se ha producido un error al realizar la operacion");

getch(); exit(-1); } }else{ printf("nnintroduce la tarea a realizar: "); fflush(stdin); gets(trabajos); strcpy(aux,cliente.trabajo.descripcion); strcat(aux,"n"); strcat(aux,trabajos); strcpy(cliente.trabajo.descripcion,aux); fwrite(&cliente,sizeof(struct CLIENTE),1,faux); printf("nnTarea incluida con exito"); enc='s'; } fread(&cliente,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } } if(enc=='n'){ printf("nnFallo al aadir trabajos"); } fclose(f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } fclose(faux); if(ferror(faux)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(-1); } remove(ruta); rename(ruta2,ruta); } void visualizar_fichero_clientes(char *ruta){ struct CLIENTE visualizacion; FILE *f; int resp; f=fopen(ruta,"rb"); if(f==NULL){ printf("error al realizar la operacion"); getch(); exit(-1); } fread(&visualizacion,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("error al realizar la operacion"); getch(); exit(-1); } printf("nn========================================================= ===========n"); textcolor(RED+BLINK);

cprintf(" REGISTRO CLIENTES SENATINO n"); printf("rr========================================================= ===========n"); while(!feof(f)){ resp=comprobar_existencia_trabajos(ruta,visualizacion.dni); if(resp>1){ Sleep(300); textcolor(YELLOW); cprintf("Numero Cliente: "); cprintf("%d",visualizacion.numero_cliente); printf("n=================================================n"); printf("Nombre y apellidos del cliente: "); puts(visualizacion.nombre); printf("DNI/NIE cliente: %d",visualizacion.dni); printf("nFecha de registro: "); visualizar_Fecha(visualizacion.fecha_registro); printf("nModelo del coche: "); puts(visualizacion.modelo_coche); printf("Matricula: "); puts(visualizacion.matricula); printf("=================================================n"); textcolor(RED); cprintf("--->TRABAJO PENDIENTE"); printf("n=================================================n") ; }else{ Sleep(300); printf("nn=================================================n" ); textcolor(YELLOW); cprintf("Numero Cliente: "); cprintf("%d",visualizacion.numero_cliente); printf("n=================================================n"); printf("Nombre del cliente: "); puts(visualizacion.nombre); printf("DNI/NIE cliente: %d",visualizacion.dni); printf("nFecha de registro: "); visualizar_Fecha(visualizacion.fecha_registro); printf("nModelo del coche: "); puts(visualizacion.modelo_coche); printf("Matricula: "); puts(visualizacion.matricula); printf("=================================================n"); } fread(&visualizacion,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("error al realizar la operacion"); getch(); exit(-1); } } fclose(f); if(ferror(f)!=0){ printf("error al realizar la operacion"); getch(); exit(-1); } } int contar_registros_clientes(char *ruta){

struct CLIENTE contador; FILE *f; int cont_cli=0; f=fopen(ruta,"rb"); if(f==NULL){ printf("n!ERROR INESPERADO"); getch(); exit(-1); } fread(&contador,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("nnNo se puedo contar el nuemro de clientes registrados en el sistema"); getch(); exit(-1); } while(!feof(f)){ cont_cli++; fread(&contador,sizeof(struct CLIENTE),1,f); } fclose(f); if(ferror(f)!=0){ printf("error al realizar la operacion"); getch(); exit(-1); } return(cont_cli); } void borrar_trabajo(char *ruta, char *ruta2, long int clave){ struct CLIENTE borrador; struct CLIENTE modificacion; FILE *f; FILE *faux; //char aux[1000]; f=fopen(ruta,"rb"); if(f==NULL){ printf("n!ERROR INESPERADO"); getch(); exit(-1); } faux=fopen(ruta2,"wb"); if(f==NULL){ printf("n!ERROR INESPERADO"); getch(); exit(-1); } fread(&borrador,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("nnERROR INESPERADO"); getch(); exit(-1); } while(!feof(f)){ if(borrador.dni!=clave){ fwrite(&borrador,sizeof(struct CLIENTE),1,faux); if(ferror(f)!=0){ printf("nnERROR INESPERADO"); getch(); exit(-1); }

} fclose(f); if(ferror(f)!=0){ printf("error al realizar la operacion"); getch(); exit(-1); } fclose(faux); if(ferror(faux)!=0){ printf("error al realizar la operacion"); getch(); exit(-1); } remove(ruta); rename(ruta2,ruta); }

}else{ modificacion.fecha_registro.dia=borrador.fecha_registro.dia; modificacion.fecha_registro.dia=borrador.fecha_registro.dia; modificacion.fecha_registro.dia=borrador.fecha_registro.dia; modificacion.dni=borrador.dni; strcpy(modificacion.nombre,borrador.nombre); modificacion.numero_cliente=borrador.numero_cliente; strcpy(modificacion.modelo_coche,borrador.modelo_coche); strcpy(modificacion.matricula,borrador.matricula); fwrite(&modificacion,sizeof(struct CLIENTE),1,faux); if(ferror(f)!=0){ printf("nnERROR INESPERADO"); getch(); exit(-1); } } fread(&borrador,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("nnERROR INESPERADO"); getch(); exit(-1); }

int comprobar_existencia_trabajos(char *ruta, long int clave){ struct CLIENTE comprobacion; int tamano; FILE *f; f=fopen(ruta,"rb"); if(f==NULL){ printf("error al realizar la operacion"); getch(); exit(-1); } fread(&comprobacion,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("error al realizar la operacion"); getch(); exit(-1); } while(!feof(f)){ if(comprobacion.dni==clave){ tamano=strlen(comprobacion.trabajo.descripcion); } fread(&comprobacion,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){

} fclose(f); if(ferror(f)!=0){ printf("error al realizar la operacion"); getch(); exit(-1); } return(tamano);

printf("error al realizar la operacion"); getch(); exit(-1); }

void crear_historial(char *ruta_historial){ FILE *f; f=fopen(ruta_historial,"wb"); if(f==NULL){ printf("Error al crear el fichero %s",ruta_historial); getch(); exit(-1); } fclose(f); if(ferror(f)!=0){ printf("Se ha producido un error al cerrar"); getch(); exit(1); } } void guardar_datos(char *ruta_historial, char *ruta_historial2, long i nt clave, char *trabajo){ struct HISTORIAL cli; struct HISTORIAL alta; FILE *f; FILE *faux; f=fopen(ruta_historial,"rb"); if(f==NULL){ printf("ERROR INESPERADO"); getch(); exit(-1); } faux=fopen(ruta_historial2,"wb"); if(faux==NULL){ printf("ERROR INESPERADO"); getch(); exit(-1); } fread(&cli,sizeof(struct HISTORIAL),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(1); } while(!feof(f)){ fwrite(&cli,sizeof(struct HISTORIAL),1,faux); if(ferror(faux)!=0){ printf("Se ha producido un error al realizar la operaci on"); getch(); exit(1);

} fread(&cli,sizeof(struct HISTORIAL),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(1); } } alta.clave_acceso=clave; alta.fecha_finalizacion=leer_Fecha(); strcpy(alta.descripcion_trabajo,trabajo); fwrite(&alta,sizeof(struct HISTORIAL),1,faux); if(ferror(faux)!=0){ printf("Se ha producido un error al realizar la operaci on"); getch(); exit(1); } while(!feof(f)){ fwrite(&cli,sizeof(struct HISTORIAL),1,faux); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(1); } fread(&cli,sizeof(struct HISTORIAL),1,f); if(ferror(f)!=0){ printf("Se ha producido un error al realizar la operacion"); getch(); exit(1); } } fclose(f); if(ferror(f)!=0){ printf("Se ha producido un error al cerrar"); getch(); exit(1); } fclose(faux); if(ferror(faux)!=0){ printf("Se ha producido un error al cerrar"); getch(); exit(1); } remove(ruta_historial); rename(ruta_historial2,ruta_historial);//ruta 2 pasa a llamarse "ru ta". } int comprobar_existencia_historial(char *ruta_historial){ FILE *f; int resp; f=fopen(ruta_historial,"rb"); if(f==NULL){ resp=-1; }else{ if(f!=NULL){ resp=1; fclose(f);

} } return(resp); }

if(ferror(f)!=0){ getch(); printf("nERROR INESPERADO"); }

long int sacar_clave(char *ruta, long int clave, char *trabajo){ struct CLIENTE detective; FILE *f; long int muestra_del_crimen; f=fopen(ruta,"rb"); if(f==NULL){ printf("nERROR INESPERADO"); getch(); exit(-1); } fread(&detective,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); } while(!feof(f)){ if(detective.dni==clave){ muestra_del_crimen=detective.dni; strcpy(trabajo,detective.trabajo.descripcion); } fread(&detective,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); } } fclose(f); if(ferror(f)!=0){ printf("Se ha producido un error al cerrar"); getch(); exit(1); } return(muestra_del_crimen); } void visualizar_historial_cliente(char *nombre_cliente, char *extensio n){ struct HISTORIAL consulta; char ruta_historial[200]="C:\Users\BRICPADES SL\Documents\"; strcat(ruta_historial,nombre_cliente); strcat(ruta_historial,extension); FILE *f; f=fopen(ruta_historial,"rb"); if(f==NULL){ textcolor(RED); cprintf("n!LO SENTIMOS ESTE CLIENTE NO ESTA REGISTRADO EL PROGR AMA TENDRA QUE CERRARSE"); getch(); exit(-1); } fread(&consulta,sizeof(struct HISTORIAL),1,f); if(ferror(f)!=0){

printf("nERROR INESPERADO"); getch(); exit(-1); } textcolor(RED+BLINK); cprintf(" %s n",nombre_clie nte); printf("rrrrrDNI/NIE: %ld",consulta.clave_acceso); while(!feof(f)){ textcolor(RED); printf("nn"); printf("n===================================================n"); cprintf("FECHA DE FINALIZACIONDE ESTE TRABAJO---> "); visualizar_Fecha(consulta.fecha_finalizacion); printf("n===================================================n"); cprintf("TRABAJO REALIZADO: "); printf("n"); puts(consulta.descripcion_trabajo); printf("===================================================n"); fread(&consulta,sizeof(struct HISTORIAL),1,f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); exit(-1); } } fclose(f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); exit(-1); } } void devolver_nombre_cliente(char *ruta, long int clave, char *nombre_ cliente){ struct CLIENTE nombre; char enc='n'; FILE *f; f=fopen(ruta,"rb"); if(f==NULL){ printf("nERROR FATAL"); getch(); exit(-1); } fread(&nombre,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); exit(-1); } while((!feof(f))&&(enc=='n')){ if(nombre.dni==clave){ strcpy(nombre_cliente,nombre.nombre); enc='s'; } fread(&nombre,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); exit(-1);

} } fclose(f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); exit(-1); }

void buscar_nombre_cliente(char *ruta, char *nombre_cliente, long int clave){ struct CLIENTE busqueda; FILE *f; char enc='n'; f=fopen(ruta,"rb"); if(f==NULL){ printf("nERROR INESPERADO"); getch(); exit(-1); } fread(&busqueda,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); exit(-1); } while((!feof(f))&&(enc=='n')){ if(busqueda.dni==clave){ strcpy(nombre_cliente,busqueda.nombre); enc='s'; } fread(&busqueda,sizeof(struct CLIENTE),1,f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); exit(-1); } } fclose(f); if(ferror(f)!=0){ printf("nERROR INESPERADO"); getch(); exit(-1); } }

2 comentarios | Etiquetas: c++, registros, jhonny666 La verdad amigo q buen programa subiste, te felicito por crear ese programa ya q me ayudo para mi proyecto, lo hice un poco mas sencillo pero en base a tu programa me

dirigi por nuevas alternativas para crear un men tan detallado. Espero q compartas ms programas te lo agradecera mucho.. (^_^) (elitehacker 2010-04-27 21:06:57) amigo necesito ayuda, lo k pasa es k no se mucho y el programa lo necesito para c++ y me marca algunos errores por las declaraciones de algunas lineas no lo tendras ese programa pero c++ de verdad lo necesito

Potrebbero piacerti anche