Вы находитесь на странице: 1из 5

El siguiente cdigo est hecho en C++, es totalmente funcional, lo nico es que fue escrito en un IDE, diferente a los que

conocemos en la actualidad, por lo que su actividad consistir en que lo hagan funcionar. Apegndose a las reglas del Dev C++ o Zinjai, o IDE favorito. As mismo, documente el programa y entregarlo al docente, va USB, no correo electrnico. #include #include #include #include #include #include #include <iostream> <conio.h> <stdio.h> <fstream.h> <iomanip.h> <stdlib.h> <ctype.h>

struct Datos{ int control; char nombre[40]; int edad; char telefono[15]; }; int *arrayCont; char *rutaArch = {"c:\test.TXT"}; char *rutaTemp = {"c:\temp.txt"}; char *letrerosMenu[] = {"[1] ESCRIBIR.","[2] LEER.","[3] BUSCAR.","[4] ELIMINAR.","[5] MODIFICAR.","[6] SALIR."}; void escribeArchivo(Datos dat,char ruta[]){ ofstream esc(ruta,ios::app); esc <<setw(5)<<setiosflags(ios::right)<<dat.control<<" " <<setw(40)<<setiosflags(ios::left)<<dat.nombre<<" " <<setw(5)<<setiosflags(ios::right)<<dat.edad<<" " <<setw(15)<<setiosflags(ios::left)<<dat.telefono<<endl; esc.close(); } Datos LeerDato(ifstream &leer){ Datos dat; leer >>dat.control; leer.ignore(1,'n'); leer.getline(dat.nombre,40); leer.ignore(2,'n'); leer >>dat.edad; leer.ignore(1,'n'); leer.getline(dat.telefono,15); leer.ignore(2,'n'); return dat; }

int BuscarRegistro(Datos &dat,int cont){ ifstream leer(rutaArch); while(leer.peek()!=EOF){ dat = LeerDato(leer); if(dat.control==cont) return 1; } leer.close(); return 0; } void Mostrar(Datos dat,int Tipo){ if(Tipo == 0){ cout <<"Num. de control: "<<dat.control<<endl <<" Nombre: "<<dat.nombre<<endl <<" Edad: "<<dat.edad<<endl <<" Telefono: "<<dat.telefono<<endl; }else if(Tipo == 1){ cout <<setw(5)<<setiosflags(ios::right)<<dat.control<<" " <<setw(40)<<setiosflags(ios::left)<<dat.nombre<<" " <<setw(5)<<setiosflags(ios::right)<<dat.edad<<" " <<setw(15)<<setiosflags(ios::left)<<dat.telefono<<endl; } } Datos capturaDatos(int cont){ Datos dat; dat.control = cont; cout <<" Nombre: "; gets(dat.nombre); cout <<" Edad: "; cin >>dat.edad; cout <<" Telefono: "; gets(dat.telefono); return dat; } Datos Altas(){ Datos dat; int cont; clrscr(); do{ cout <<"Num. de control: "; cin >>cont; if(BuscarRegistro(dat,cont)){ cout <<"El registro ya existe..."<<endl; Mostrar(dat,0); getch(); } else break;

}while(1); return capturaDatos(cont); } void Buscar(){ int cont; Datos dat; cout <<"Num. control: "; cin >>cont; if(BuscarRegistro(dat,cont)) Mostrar(dat,0); else cout <<"No se encontro el registro..."; getch(); } void consultaArchivo(){ ifstream leer(rutaArch); clrscr(); cout <<setw(5)<<setiosflags(ios::right)<<"No."<<" " <<setw(40)<<setiosflags(ios::left)<<"Nombre:"<<" " <<setw(5)<<setiosflags(ios::right)<<"Edad:"<<" " <<setw(15)<<setiosflags(ios::left)<<"Telefono:"<<endl; while(leer.peek()!=EOF) Mostrar(LeerDato(leer),1); leer.close(); getch(); } void eliminarRegistro(){ ifstream leer(rutaArch); Datos dat,aux; int cont,bandEncontrado = 0; cout <<"Num. control: "; cin >>cont; while(leer.peek()!=EOF){ dat = LeerDato(leer); if(dat.control==cont){ bandEncontrado = 1; aux = dat; continue; } escribeArchivo(dat,rutaTemp); } leer.close(); if(bandEncontrado){ Mostrar(aux,0); cout <<"seguro que deseas eliminar el registro S/N : "; if(toupper(getch())== 'S'){ remove(rutaArch);

rename(rutaTemp,rutaArch); return; }else{ cout <<"n accion cancelada..."; remove(rutaTemp);} }else cout <<"No se encontro el registro..."; getch(); } void modificarRegistro(){ ifstream leer(rutaArch); Datos dat; int cont; cout <<"Num. control: "; cin >>cont; if(BuscarRegistro(dat,cont)){ Mostrar(dat,0); while(leer.peek()!=EOF){ dat = LeerDato(leer); if(dat.control==cont) escribeArchivo(capturaDatos(cont),rutaTemp); else escribeArchivo(dat,rutaTemp); } leer.close(); cout <<"seguro que deseas modificar el registro S/N : "; if(toupper(getch())== 'S'){ remove(rutaArch); rename(rutaTemp,rutaArch); return; }else{ cout <<"n accion cancelada..."; remove(rutaTemp);} }else cout <<"No se encontro el registro..."; getch(); } void burbujaMejorada(int totalReg){ for(int x=0; x<totalReg-1; x++) for(int y=0; y<(totalReg-x)-1; y++) if(arrayCont[y]>arrayCont[y+1]){ int aux = arrayCont[y]; arrayCont[y] = arrayCont[y+1]; arrayCont[y+1] = aux; } } void ordenarRegistros(){ ifstream leer(rutaArch); Datos dat; leer.seekg(0L,ios::end); int x = 0,totalReg = leer.tellg()/70; leer.seekg(0L,ios::beg);

arrayCont = new int[totalReg]; while(leer.peek()!=EOF){ dat = LeerDato(leer); arrayCont[x++] = dat.control; } burbujaMejorada(totalReg); for(x=0; x<totalReg; x++) if(BuscarRegistro(dat,arrayCont[x])) escribeArchivo(dat,rutaTemp); leer.close(); remove(rutaArch); rename(rutaTemp,rutaArch); } int main () { textmode(C80); do{ clrscr(); for(int men = 0; men < 6; men++) cout <<letrerosMenu[men]<<endl; switch(getch()){ case '1': escribeArchivo(Altas(),rutaArch); ordenarRegistros(); break; case '2': consultaArchivo(); break; case '3': Buscar(); break; case '4': eliminarRegistro(); break; case '5': modificarRegistro(); break; case '6': exit(0); } }while(1); }

Вам также может понравиться