Sei sulla pagina 1di 3

#include<stdio.

h>
#include<windows.h>
#include<iostream>
#include<string.h>
#include<conio.h>
using namespace std;
struct encabezado{
int numrege;
int largoreg;
}e;
struct registro{
int nro;
char nombre[20];
char email[20];
}r;
FILE *fd;
int encbytes=sizeof(struct encabezado);
int regbytes =sizeof(struct registro);

void escribir()
{
char rpta;
if((fd=fopen("tony.txt","wt"))==NULL) { return;}
//separo esapcio para tamao en bytes de mi encabezado
fseek(fd,encbytes,0);
cout<<"ENCABEZADO: NUM REG: "<<e.numrege;
e.numrege=0;
cout<<"TAMAO ENCBYTES"<<encbytes;
cout<<"TAMAo REGBYTES"<<regbytes;
cout<<"ENCABEZADO: NUM REG: "<<e.numrege;

do{
fflush(stdin);
e.numrege=e.numrege+1;
r.nro=e.numrege;

cout<<"ENCABEZADO: NUM REG: "<<e.numrege;
cout<<"INGRESE NOMBRE: ";cin.getline(r.nombre,20);
cout<<"INGRESE EMAIL: ";cin.getline(r.email,20);
fwrite(&r,1,regbytes,fd);
cout<<"Desea ingresar otro registro?(s/n)"<<endl; cin>>rpta;
}while(rpta!='n');

fseek (fd,0,0);
e.largoreg= regbytes;
fwrite(&e,1,encbytes,fd);
fclose(fd);
}

void imprimir()
{
if((fd=fopen("tony.txt","rt"))==NULL) {return; }
fread(&e,1,encbytes,fd);
cout<<"NUMERO DE REGISTROS ENCABEZADO:
"<<e.numrege;
cout<<"LARGO DE REGISTRO ENCABEZADO: "<<e.largoreg;

while(fread(&r,1,regbytes,fd))
{
cout<<"Nro:"<<r.nro<<"\t";
cout<<"NOMBRE: "<<r.nombre;
cout<<"EMAIL: "<<r.email<<"\n\n";
}
fclose(fd);
}


void nuevo()
{
if((fd=fopen("tony.txt","ra+"))==NULL){return;}
fseek(fd,0,2);
e.numrege=e.numrege+1;
r.nro=e.numrege;
fflush(stdin);
cout<<"INGRESE NOMBRE: ";cin.getline(r.nombre,20);
cout<<"INGRESE EMAIL: ";cin.getline(r.email,20);
fwrite(&r,1,regbytes,fd);
fseek(fd,0,0);
fwrite(&e,1,encbytes,fd);
fclose(fd);
}

void nesimo()
{
if(( fd=fopen("tony.txt","rt"))==NULL ) {return; }
fread(&e,1,encbytes,fd);
cout<<"NRO REGISTROS ENCABEZADOS: "<<e.numrege;
cout<<"LARGO REGISTROS ENCABEZADO:"<<e.largoreg;
int n, pos;
cout<<"INGRESE NRO DE REGISTRO A MOSTRAR: ";cin>>n;

pos=(n-1)*regbytes+encbytes;
fseek(fd,pos,0);
fread(&r,1,regbytes,fd);
cout<<"Nro: "<<r.nro;
cout<<" NOMBRE: "<<r.nombre;
cout<<"EMAIL: "<<r.email;
fclose(fd);
}

void totalreg()
{
if(( fd=fopen("tony.txt","rt")) ==NULL) { return ; }
fread(&e,1,encbytes,fd);
cout<<"NUMERO TOTAL DE REGISTROS: "<<e.numrege;
cout<<"LARGO DE REGISTROS: "<<e.largoreg;
fclose(fd);
}

void buscarhotmail()
{
if((fd=fopen("tony.txt","r+t"))==NULL) {return;}
fread(&e,1,encbytes,fd);
cout<<"NUM REGISTROS: "<<e.numrege;
cout<<"LARGO REG: "<<e.largoreg;
char subcadena[]="hotmail";
cout<<"LOS USUARIOS DE CUENTA "<<subcadena<<" son: ";
while( fread(&r,1,regbytes,fd) )
{ if( strstr(r.email,subcadena) !=0 ){
cout<<"NRO: "<<r.nro;
cout<<"NOMBRE: "<<r.nombre;
cout<<"EMAIL: "<<r.email;
}
}
fclose(fd);
}

void Buscar_email_segun_nombre()
{
if((fd=fopen("tony.txt","rt"))==NULL) {return; }
char buscado[20];
fflush(stdin);
fread(&e,1,encbytes,fd);
cout<<"NUMERO DE REGISTROS ENCABEZADO: "<<e.numrege;
cout<<"LARGO DE REGISTRO ENCABEZADO: "<<e.largoreg;
cout<<"INGRESE NOMBRE A BUSCAR: ";cin.getline(buscado,20);

while( fread(&r,1,regbytes,fd) )
{
if(strcmp((r.nombre),buscado)==0)
{
cout<<"EL EMAIL ES: "<<r.email;
fclose(fd); return;
}
}
cout<<"NO SE HA ENCONTRADO EL NOMBRE ";
fclose(fd);
}

void modificar()
{
if((fd=fopen("tony.txt","r+t"))==NULL) {return;}
fread(&e,1,encbytes,fd);
cout<<" numero registos: "<<e.numrege;
cout<<"largo de registro: "<<e.largoreg;
int pos;
char buscar[20];fflush(stdin);
cout<<"INGRESE NOMBRE A MODIFICAR EMAIL:
";cin.getline(buscar,20);
while(fread(&r,1,regbytes,fd))
{
if(strcmp(r.nombre,buscar)==0)
{
cout<<"Email:"<<r.email<<endl; fflush(stdin);
cout<<"INGRESE NUEVO EMAIL DE USUARIO
"<<(r.nombre)<<" : "; cin.getline(r.email,20);
//pos=(r.nro-1)*regbytes+encbytes;
// fseek(fd,pos,0);
fwrite(&r,1,regbytes,fd);break;
}
}
fclose(fd);
}








#include <cstdlib>
#include <stdio.h>
#include <iostream>
#include <IO.h>
#include <string.h>
#include <sys\STAT.h>
#include <FCNTL.h>
#include<conio.h>
using namespace std;
long int pos=0;

struct encabezado{
int NRS;
int PR;
int URE;
}e,e2;
struct registro{
int NR;
char NOM[20];
int PTJE;
int SR;
int ARE;
}n,a,s,s2;
int fd = 0,sgte;
FILE *f,*fd1,*fd2;
int lr = sizeof(struct registro);
int le = sizeof(struct encabezado);

void leer_ordenado_LOGICO()
{
if((fd = open("lista.txt",O_TEXT)) < 0)//devuelve un entero si es q lo logra
crear
{
cout<<"No se pudo abrir"<<endl;
system("PAUSE");
exit(0);
}
read(fd,&e,le);
cout<<"PR : "<<e.PR<<" NRS : "<<e.NRS<<" URE : "<<e.URE<<endl;
cout<<"NR\t\t " << "Nombre\t\t" << "Ptje\t\t"<<"SR\t\t"<<"URE"<<endl;
sgte=e.PR;
while(sgte!=-1)
{
pos=(sgte-1)*lr + le;
lseek(fd,pos,0);
read(fd,&s,lr);
cout<<s.NR<<""<<s.NOM<<""<<s.PTJE<<""<<s.SR<<""<<s.ARE;
sgte=s.SR;
}
close(fd);
}




void escribir()
{
char rpta, band;
if((fd = creat("lista.txt",S_IWRITE | S_IREAD)) < 0)//devuelve
un entero si es q lo logra crear
{
cout<<"No se pudo crear"<<endl;
system("PAUSE"); exit(0);
}
lseek(fd,le,0);
e.PR = -1; e.NRS = 0; e.URE = -1;

do{
band='F';
fflush(stdin);
n.NR = ++e.NRS;
cout<<"Nombre: ";gets(n.NOM);
fflush(stdin);
cout<<"Puntaje: ";cin>>n.PTJE; n.ARE = 0;
if(e.PR==-1)
{ n.SR=e.PR;
e.PR=n.NR;
}
else
{
sgte=e.PR;
while(sgte!=-1)
{
pos=(sgte-1)*lr + le;
lseek(fd,pos,0);
read(fd,&s,lr);
if(strcmp(n.NOM,s.NOM)>0)
{band='V'; a=s; sgte=s.SR; continue;}
break;
//if(strcmp(n.NOM,s.NOM)<0)sgte=-1;
};
if(band=='F')//se debe actualizar el encabezado
{n.SR=e.PR;
e.PR=n.NR;
lseek(fd,0,2);
}
else //se debe actualizar el anterior
{ n.SR=a.SR;
a.SR=n.NR;
pos=(a.NR-1)*lr + le;
lseek(fd,pos,0);
write(fd,&a,lr);
lseek(fd,0,2);
}
}
write(fd,&n,lr);
cout<<"INGRESAR MAS REGISTROS (s/n): "<<endl;
cin>>rpta;
}while(rpta == 's');

lseek(fd,0,0);
write(fd,&e,le);
close(fd);
}

void eliminar_MARCANDO()
{ char nom_eliminado[20],band,flag='F';
if((f = fopen("lista.txt","r+t"))==NULL)//devuelve un entero si es
q lo logra crear
{cout<<"No se pudo abrir"<<endl;
system("PAUSE");
exit(0);
}
fread(&e,1,le,f); fflush(stdin);
cout<<"nombre:"; gets(nom_eliminado);
sgte=e.PR; band= 'F';
while(sgte!=-1)
{ pos=(sgte-1)*lr + le;
fseek(f,pos,0);
fread(&s,1,lr,f);//s es el regS del archivo a eliminar
if(strcmp(nom_eliminado,s.NOM)!=0)
{band='V'; a=s; sgte=s.SR; continue;}
flag='V'; break; ;//nombre encontrado
//if(strcmp(n.NOM,s.NOM)<0)sgte=-1;
};
if(flag=='F') {cout<<"no existe el nombre";fclose(f);return;}
s.ARE = e.URE; e.URE =s.NR;
if(band=='F')//se debe actualizar el encabezado
{
e.PR=s.SR;
}
else//se debe actualizar el anterior
{
a.SR=s.SR;
pos=(a.NR-1)*lr + le;
fseek(f,pos,0);
fwrite(&a,1,lr,f);
}
pos = (s.NR-1)*lr + le;
fseek(f,pos,0);
fwrite(&s,1,lr,f);
fseek(f,0,0);
fwrite(&e,1,le,f);
fclose(f);
}


void ver_archivo_FISICO()
{
if((f = fopen("lista.txt","rt"))==NULL ; { return; }
fread(&e,1,le,f);
cout<<"PR : "<<e.PR<<" NRS : "<<e.NRS<<" URE : "<<e.URE<<endl;
cout<<"NR\t " << "Nombre\t" << "\tPtje\t"<<"SR\t"<<"URE"<<endl;
while(fread(&s,1,lr,f)!=NULL)
{
cout<<s.NR<<"\t"<<s.NOM<<"\t\t"<<s.PTJE<<"\t"<<s.SR<<"\t"<<s.ARE<<endl;
}
fclose(f);
}

Potrebbero piacerti anche