El Guru Programador :: V A X N U :: Dominios - Hosting - Aplicaciones Web
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Crear Archivo En Modo BInario Para c++
Autor [cypress_hill] Calificacion
Este programa Utiliza un menu tipico de una base de datos en el cual se manipulan los archivos de tipo binario dar de altas, consultar etc.
checalo

/*PROGRAMA REALIZADO POR EL ALUMNO FERNANDO GARCIA DEL BACHILLERATO CETIS 43 Morelos, MEXICO*/
#include<stdio.h>
#include<string.h>
#include<conio.h>

#define archivo "c:\\Datos.txt"
#define bien 1
#define mal -1
#define NOMBRE 2
#define CLAVE 1

struct informacion{
char clave[5];
char nombre[20];
char grado,grupo;
char especialidad[20];
char domicilio[30];
char telefono[20];
int e_teorica,e_practica;
};

int registrar(struct informacion);
int consultar(struct informacion *,int);
long int total();
int checar(char [],struct informacion *,int);
int modificar(struct informacion);
void informe(struct informacion *);
void mostrar_datos(struct informacion);
int eliminar(char []);

int main()
{
struct informacion datos;
int opt,num;
char clave[5];
do{
clrscr();
printf("\n\t\t\t\t===MENU===");
printf("\n\t\t1.-Registrar Informacion..");
printf("\n\t\t2.-Consultar Por Clave..");
printf("\n\t\t3.-Modificar Registro..");
printf("\n\t\t4.-Eliminar Registro..");
printf("\n\t\t5.-Informe Del Registro..");
printf("\n\t\t6.-Salir");
printf("\n\t\t\tElige La Opcion A Operar...");
scanf("%d",&opt);
switch(opt)
{
case 1:
clrscr();
printf("\n\t\tDame La Clave Del Alumno:");
fflush(stdin);
gets(clave);
if(checar(clave,&datos,CLAVE)!=-2){ /*Checamos si LA CLave No Existe En El Archivo*/
strcpy(datos.clave,clave);
printf("\n\t\tDame El Nombre Del Alumno:");
fflush(stdin);
gets(datos.nombre);
printf("\n\t\tDame El Grado:");
fflush(stdin);
datos.grado=getche();
printf("\n\t\tDame El Grupo:");
datos.grupo=getche();
printf("\n\t\tDame La Especialidad:");
fflush(stdin);
gets(datos.especialidad);
printf("\n\t\tDame El Domicilio:");
fflush(stdin);
gets(datos.domicilio);
printf("\n\t\tDame El Telefono:");
fflush(stdin);
gets(datos.telefono);
printf("\n\t\tDame La Evaluacion Teorica:");
scanf("%d",&datos.e_teorica);
printf("\n\t\tDame La Evaluacion Practica:");
scanf("%d",&datos.e_practica);
if(registrar(datos)==bien){/*SILOS DATOS SE REGISTRAN BIEN*/
printf("\n\n\t\t\tLos Datos Se Han Registrado Correctamente");
getch();
}
else{
printf("\n\n\t\t\tHa Ocurrido Un Error Durante La Operacion");
getch();
}
}
else{
printf("\n\n\t\tLa Clave Ya Existe Carnal Intentalo Nuevamente...");
getch();}
break;
case 2:
clrscr();
printf("\n\t\tDame LA CLave Del Registro Que Deseas Consultar...");
fflush(stdin);
gets(clave);
if(checar(clave,&datos,CLAVE)==-2){ /*CHECAMOS QUE LA CLAVE EXISTA EN EL ARCHIVO*/
mostrar_datos(datos);
printf("\n\t\t\tConsulta Bien Realizada...");
getch();
}
else{
printf("\n\t\t\tEl Registro COn Esta Clave No Existe...");
getch();
}
break;
case 3:
clrscr();
printf("\n\n\t\tDame La Clave Del Registro Que Deseas Modificar..");
fflush(stdin);
gets(clave);
if(checar(clave,&datos,CLAVE)==-2){
mostrar_datos(datos);
printf("\n\n\t\t\tDame Nueva Clave:");
gets(datos.clave);
printf("\n\t\t\tDame Nuevo Nombre Del Alumno:");
fflush(stdin);
gets(datos.nombre);
printf("\n\t\t\tDame El Grado:");
fflush(stdin);
datos.grado=getche();
printf("\n\t\t\tDame El Grupo:");
datos.grupo=getche();
printf("\n\t\t\tDame La Especialidad:");
fflush(stdin);
gets(datos.especialidad);
printf("\n\t\t\tDame El Domicilio:");
fflush(stdin);
gets(datos.domicilio);
printf("\n\t\t\tDame El Telefono:");
fflush(stdin);
gets(datos.telefono);
printf("\n\t\t\tDame La Evaluacion Teorica:");
scanf("%d",&datos.e_teorica);
printf("\n\t\t\tDame La Evaluacion Practica:");
scanf("%d",&datos.e_practica);
if(modificar(datos)==bien){
printf("\n\n\t\tLos Datos Se Han Modificado Correctamente...");
getch();
}
else{
printf("\Los Datos No Se Han Podido Modificar...");
getch();
}
}
else{
printf("LA CLave No EXiste..."); getch();}
break;
case 4:
clrscr();
printf("\n\n\t\tDAME LA CLAVE DEL REGISTRO QUE DESEAS ELIMINAR...");
fflush(stdin);
gets(clave);
if(eliminar(clave)==bien){
printf("\n\n\t\tEl Registro Fue Eliminado Satisfactoriamente...");
getch();}
else
{
printf("\n\n\t\tOcurrio Un Error Durante La Operacion...");
getch();
}
break;
case 5:
informe(&datos);
break;
case 7:
clrscr();
printf("HAy %d Registros",total());
getch();
}
}while(opt!=6);
return 0;
}

int registrar(struct informacion registro)
{
FILE *ar;
if ((ar=fopen(archivo,"a+b"))!=NULL){
fwrite(&registro,sizeof(struct informacion),1,ar);
fclose(ar);
return bien;
}
else
return mal;
}

int consultar(struct informacion *registro,int num)
{
FILE *ar;
if((ar=fopen(archivo,"r+b"))!=NULL){
fseek(ar,sizeof(struct informacion)*(num-1),SEEK_SET);
fread(registro,sizeof(struct informacion),1,ar);
fclose(ar);
return bien;
}
else
return mal;
}

long int total()
{
FILE *ar;
long int numero;
if((ar=fopen(archivo,"r+b"))!=NULL){
fseek(ar,0L,SEEK_END);
numero=ftell(ar)/sizeof(struct informacion);
fclose(ar);
return numero;
}
else
return mal;
}

int checar(char cadena[],struct informacion *registro,int who)
{
int i;
FILE *ar;
if((ar=fopen(archivo,"r+b"))!=NULL){
for(i=0;i<total();i++)
{
fseek(ar,sizeof(struct informacion)*i,SEEK_SET);
fread(registro,sizeof(struct informacion),1,ar);
if(who==CLAVE){
if(strcmp(registro->clave,cadena)!=0)
continue;
else
i=-2;
break;
}
else{
if(strcmp(registro->nombre,cadena)!=0)
continue;
else
i=-2;
break;
}
}
fclose(ar);
return i;
}
else
return mal;
}
int modificar(struct informacion registro)
{
FILE *ar;
if((ar=fopen(archivo,"r+b"))!=NULL){
fwrite(&registro,sizeof(struct informacion),1,ar);
fclose(ar);
return bien;
}
else
return mal;
}

void informe(struct informacion *dat)
{
int opt,n;
char nombre[20],clave[5];
do{
clrscr();
printf("\n\t\t\t\t===REALIZAR INFORME POR:===");
printf("\n\n\n\t\t1.-Nombre Del Alumno...");
printf("\n\n\t\t2.-Por Clave...");
printf("\n\n\t\t3.-Lista De Todos Los Registros...");
printf("\n\n\t\t4.-Regresar Al Menu Principal...");
printf("\n\n\n\t\t\tELIGE UNA OPCION...");
scanf("%d",&opt);
switch(opt){
case 1:
clrscr();
printf("\n\n\tDame El Nombre Del Registro A Buscar...");
fflush(stdin);
gets(nombre);
if(checar(nombre,dat,NOMBRE)==-2){ /*SE MANDA A BUSCAR POR NOMBRE*/
mostrar_datos(*dat);
}
else{
printf("\n\n\t\t\tEl Registro con este nombre no existe...");getch();
}
break;
case 2:
clrscr();
printf("Dame La CLave Del Registro a Buscar...");
fflush(stdin);
gets(clave);
if(checar(clave,dat,CLAVE)==-2){ /*SE MANDA A BUSCAR POR CLAVE*/
mostrar_datos(*dat);
}
else{
printf("\n\n\t\t\tEl Registro Con Esa Clave No Existe..."); getch();
}
break;
case 3:
clrscr();
for(n=1;n<=total();n++)
{
if(consultar(dat,n)==bien){
printf("\n\n\tREGISTRO %d de %d",n,total());
mostrar_datos(*dat); /*MOSTRAMOS LOS DATOS*/
clrscr();}
else{
printf("\n\n\t\tERROR...");getch();break;
}
}
getch();
}
}while(opt!=4);
}

void mostrar_datos(struct informacion datos)
{
printf("\n\t\tLa Clave Del Alumno Es: %s",datos.clave);
printf("\n\t\tEl Nombre Del Alumno Es: %s",datos.nombre);
printf("\n\t\tEl Grado Es: %c",datos.grado);
printf("\n\t\tEl Grupo Es: %c",datos.grupo);
printf("\n\t\tLa Especialidad Es: %s",datos.especialidad);
printf("\n\t\tEl Domicilio Es: %s",datos.domicilio);
printf("\n\t\tEl Telefono Es: %s",datos.telefono);
printf("\n\t\tLa Evaluacion Teorica Es: %d",datos.e_teorica);
printf("\n\t\tLa Evaluacion Practica Es: %d",datos.e_practica);
getch();
}

int eliminar(char clave[])
{
FILE *ar,*a;
struct informacion reg;
int i;
if((ar=fopen("temporal.tmp","w+b"))!=NULL){
if((a=fopen(archivo,"r+b"))!=NULL){
i=1;
while(!feof(a)){
fread(&reg,sizeof(struct informacion),1,a);
if(!feof(a) && strcmp(reg.clave,clave)){
fwrite(&reg,sizeof(struct informacion),1,ar);
}
i++;
}
fclose(a);
fclose(ar);
remove(archivo);
rename("temporal.tmp",archivo);
return bien;
}
else
return mal;
}
else return mal;

}
 
Terminos de Uso

1 - Copiar o Descargarse este contenido implica aceptar los terminos aqui detallados.

2 - Usted puede utilizar este contenido en sus propios programas y puede compilarlo en un programa y modificarlo a su gusto.

3 - Usted NO PUEDE redistribuir este contenido tal como se presenta aqui sin el permiso del autor original del mismo.

4 - Usted seguirá cualquier restricción adicional del copyright que el autor pudo haber puesto en la descripción del contenido.

 

Contactos myStudio Network