Agenda telefonica en C++ PDF

Title Agenda telefonica en C++
Author Christian Bryan Camacho Villegas
Course Programación Estructurada
Institution Universidad de Guayaquil
Pages 16
File Size 73.6 KB
File Type PDF
Total Downloads 19
Total Views 127

Summary

en este documento se encuentra el código en lenguaje de programación C++ de una agenda telefónica que me permite ingresar agregar eliminar guardar modificar un contacto y guardar toda la información en un archivo de texto plano (txt)...


Description

Pede dar de alta, baja , modificar registros; ordenar por nombre, apellidos , edad. Guarda los contenidos en un archivos binario y los puede leer tambien puede exportar en csv. corre perfecto en linux, pero para que funcione en windows hay que quitar la funcion sleep. /* Creado Por Vicente Mendoza */ # include # include # define FICHERO "datos" # define MAX 25 # define ESCAPE ((char)27) FILE *fichero;

struct agenda{ int clave;

//

Esctructura con

char nom[20];

//

la forma de

char ApPat[15];

//

los datos registro*

char ApMat[15];

//*************************

int edad; long int tel; long int cel; char calle[15]; char col[15]; char mun[15]; char estado[15]; int sw; char mail[25]; }r[MAX];

int

//*************************

menu (void);

void agregar(void); void mostrar(struct agenda); void buscarnom(char[]);

* *

void buscaredad(int);

//********************

void apertura(void);

//Prototipos de las

void m_todo(void);

//

void borrar(int);

//********************

Funciones

void borrartodo(void); void ordena(void); void SaveToDisk(struct agenda); struct agenda ReadToDisk(int); int ReadAllToDisk(void); void OrdenaOnMemory(int,int); void clavesdisponibles(void); void actualizar(struct agenda,int); void exportar(void);

int main (){ int op,opc=0,opcls=0,clave=0,edades=0,i; int numreg=0; char expresion[20]; struct agenda reg; printf("Creado por Vicente Mendoza"); apertura(); menu: op = menu(); switch (op){ case 1: agregar(); //********* goto menu; //AGREGAR break; //********* case 2:

printf("Dame la clave a borrar: "); scanf ("%d",&clave); //********* borrar(clave); //BORRAR printf("tRegistro Borrado: %d",clave); //********* goto menu; break; case 3: printf ("t Como prefiere hacer la busqueda ?"); printf ("n"); printf ("tt1. Por Nombre, Apellido Paterno y Ma terno"); printf ("n"); //*********** printf ("tt2. Por Edad"); //BUSQUEDA printf("ntOpcion: "); //*********** scanf("%d",&opc); if(opc==1){ printf ("Escribe el Nombre o Apellidos a buscar: "); scanf

("%s",expresion);

buscarnom(expresion); }else if(opc=2){ printf ("Escribe la edad para buscar "); scanf

("%d",&edades);

buscaredad(edades); } goto menu; break; case 4: m_todo();

//*************

goto menu; break;

//MOSTRAR_TODO //*************

case 5: ordena(); goto menu; break; case 6: printf("n 1)Nombret2)Ap. Paternot3)Ap. Maternot 4)Edadt5)Calle"); printf("nOpcion: "); scanf("%d",&opcls); numreg=ReadAllToDisk(); //****************** OrdenaOnMemory(numreg,opcls); //LISTAR for(i=0;i= r[i+1].edad && tipo==4){ aux=r[i]; r[i]=r[i+1]; r[i+1]=aux; }else if(strcmp(r[i].calle,r[i+1].calle)>0 && t ipo==5){ aux=r[i]; r[i]=r[i+1]; r[i+1]=aux;

} } } ////////////////////////////////////////////////////////////////////// / void apertura(void){ //********************************* if((fichero=fopen(FICHERO,"r+"))==NULL) //Metodo para abrir el archivo fichero=fopen(FICHERO,"w"); de error crea el archivo

//En caso

} **************************

//*******

////////////////////////////////////////////////////////////////////// / int menu(void){ int opmenu=0; printf("%c[1;34m",ESCAPE); //********************************* printf ("ntM E N U"); que muestra el Menu

//Fucion

printf("n"); un entero con el valor

//retorna

printf("%c[2;36m",ESCAPE); pcion elegida

//de la o

printf ("1)Agregar"); //********************************* printf (" 2)Borrar"); printf (" 3)Buscar"); printf (" 4)M.Todo"); printf (" 5)OrdenarArchivo"); printf (" 6)Listar"); printf (" 7)Modificar Registro"); printf (" 8)Exportar"); printf (" 9)Salir"); printf ("n");

printf ("Opcion: "); scanf("%d",&opmenu); printf("%c[0m",ESCAPE); return opmenu; } ////////////////////////////////////////////////////////////////////// / void SaveToDisk(struct agenda registro){ //**************************************** fseek(fichero,(registro.clave-1)*sizeof(registro),SEEK_SET); //Funcion para Salvar 1 registro en disco fwrite(®istro,sizeof(registro),1,fichero); //recibe el registro y lo guarda dependiendo de su } clave en el archivo

//

////////////////////////////////////////////////////////////////////// //********************************************** void agregar(void){ int clave; struct agenda registro,aux; printf("%c[31m",ESCAPE); clavesdisponibles(); printf("%c[0m",ESCAPE); do{ printf (" Dame tu clave: "); //****************************** scanf ("%d",&clave); //Codigo para validar la clave if(clave>MAX) { //debe de ser menor que MAX printf("%c[31m",ESCAPE); //Y no puede usar una con datos printf("Tu clave debe ser menor que %dn",MAX); //asociados printf("%c[0m",ESCAPE); //****************************** }

aux=ReadToDisk(clave); if(aux.sw==1){ printf("%c[31m",ESCAPE); printf("La clave ya esta en uso n"); printf("%c[0m",ESCAPE); } }while(clave>MAX || aux.sw==1); registro.clave=clave; printf (" Cual es tu nombre ? "); //****************************** scanf ("%s",registro.nom); //Metodo para Pedir datos printf (" Cual es tu Apellido Paterno ? "); //y despues agregarlos a disco scanf ("%s",registro.ApPat); //****************************** printf (" Cual es tu Apellido Materno ? "); scanf

("%s",registro.ApMat);

printf (" Cual es tu edad ? "); scanf

("%d",®istro.edad);

printf (" Cual es tu telefono ? "); scanf

("%ld",®istro.tel);

printf (" Cual es tu telefono celular? "); scanf

("%ld",®istro.cel);

printf (" Cual es tu calle ? "); scanf

("%s",registro.calle);

printf (" Cual es tu colonia ? "); scanf

("%s",registro.col);

printf (" Cual es tu Municipio ? "); scanf

("%s",registro.mun);

printf (" En que Estado vives ? "); scanf

("%s",registro.estado);

printf (" Cual es tu e-mail ? "); scanf

("%s",registro.mail);

registro.sw=1; SaveToDisk(registro); printf ("Se ha agregado otro elemento a la agenda"); } ////////////////////////////////////////////////////////////////////// / void buscarnom(char expresion[20]){ //************************************ int i=2; que sirve para buscar una expresion (NOMBRE)

//Funcion

struct agenda registro; //en todos los registros. registro = ReadToDisk(1); //************************************ do{ if((strcmp(registro.nom,expresion))==0 || (strcmp(regis tro.ApPat,expresion))==0 || (strcmp(registro.ApMat,expresion))==0) mostrar(registro); registro=ReadToDisk(i); i++; }while(!feof(fichero)); } ////////////////////////////////////////////////////////////////////// / void buscaredad(int edades){ int i=2; struct agenda registro; //********************************* registro=ReadToDisk(1); //Funcion que sirve para buscar do{ //una edad en todos los registros if(registro.edad == edades) //*********************************

mostrar(registro); registro=ReadToDisk(i); i++; }while(!feof(fichero)); } ////////////////////////////////////////////////////////////////////// / int ReadAllToDisk(void){ struct agenda registro; int i=2,c=0; registro=ReadToDisk(1); do{ if(registro.sw==1){ //************************************* r[c]=registro; que lee todos los registros c++;

//Funcion //del arc

hivo } ******************************

//*******

registro=ReadToDisk(i); i++; }while(!feof(fichero)); return c; } ////////////////////////////////////////////////////////////////////// / struct agenda ReadToDisk(int clave){ struct agenda registro; //********************************************* fseek(fichero,(clave-1)*sizeof(registro),SEEK_SET); que recibe una clave ,se diige a ella

//funcion

fread(®istro,sizeof(registro),1,fichero); rchivo la lee y retorna la estructura

//en el a

return registro; //*********************************************

} ////////////////////////////////////////////////////////////////////// / void m_todo(void){ int i=2; struct agenda registro; registro=ReadToDisk(1); //************************** do{ trar todos

//Metodo para mos if(registro.sw==1)

//los registros d

el archivo mostrar(registro); //*************************** registro=ReadToDisk(i); i++; }while(!feof(fichero)); } ////////////////////////////////////////////////////////////////////// / void mostrar(struct agenda registro){ printf ("n"); printf (" Clave: tt %d ",registro.clave); printf ("n"); printf (" Nombre: tt %s",registro.nom); printf ("n"); printf (" Apellido Paterno: t %s",registro.ApPat); printf ("n"); printf (" Apellido Materno: t %s",registro.ApMat); //******************************* printf ("n"); que recibe un registro

//Funcion

printf (" Edad: ttt %d",registro.edad); ra sus campos

//y muest

printf ("n"); //******************************* printf (" Telefono: tt %ld",registro.tel); printf ("n"); printf (" Telefono Celular:t %ld",registro.cel); printf ("n"); printf (" Calle: tt %s",registro.calle); printf ("n"); printf (" Colonia: tt %s",registro.col); printf ("n"); printf (" Municipio: tt %s",registro.mun); printf ("n"); printf (" Estado: tt %s",registro.estado); printf ("n"); printf (" Mail: ttt %s",registro.mail); printf ("n"); sleep(1); } ////////////////////////////////////////////////////////////////////// / void borrar(int clave){ struct agenda aux={0,"","","",0,0,0,"","","","",0,""}; //****************************** fseek (fichero,(clave-1)*sizeof(aux),SEEK_SET); //Funcion que guarda un registro fwrite(&aux,sizeof(aux),1,fichero); //vacio para borrar el anterior } ******************************

//

////////////////////////////////////////////////////////////////////// / void borrartodo(void){ int i; ******

//***********************

for (i=1;i...


Similar Free PDFs