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 | |
Total Downloads | 19 |
Total Views | 127 |
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)...
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...