/* miniAgenda.c, ejemplo de aestructura , mini-agenda ecabrera intec ingenieria sistemas mayo 2006 */ #include #include #include #define MAX 20 struct contactos { char tipCon[15]; // tipo de contacto char nombre[12]; // nombre incompleto char telRes[12]; // telefono residencia char telMov[12]; // telefono movil char direcc[40]; // direccion breve int activo; // 1 = activo, 0 = inactivo }; int menu(int); void agrega(struct contactos *, int, int *); void muestra(struct contactos *, int); void modifica(struct contactos *, int); // void inactiva(struct contactos *, int int main(void) { struct contactos contac[MAX]; // arrglo-estructura contactos int opc; // opcion del menu elegida int numReg = 0; // numero actual de registros int numOpc = 4; // numero de opciones disponibles do { system("cls"); printf("Maneja una mini-agenda.\n\n"); printf("1. Salir.\n"); printf("2. Agregar.\n"); printf("3. Mostrar.\n"); printf("4. Modificar.\n\n"); //printf("5. Inactivar.\n\n"); printf("Elija una opcion: "); opc = menu(numOpc); switch (opc) { case 1: break; case 2: agrega(contac, MAX, &numReg); break; case 3: muestra(contac, numReg); break; case 4: modifica(contac, numReg); break; default : printf("Opcion no valida.\n\n"); } } while (opc != 1); //getch(); return 0; } // menu int menu(int n) { int e; // opcion elegida do { scanf("%d", &e); } while (e < 1 || e > n); return e; } // agrega contactos void agrega(struct contactos *cnt, int m, int *nr) { char txt[15]; // texto temporal tipo contacto int sf = 0; // si fin printf("\nAgrega contactos\n"); do { printf("\nTipo contacto (* = fin): "); scanf("%s", txt); if (txt[0] == '*') sf = 1; if (!sf) { strcpy(cnt[*nr].tipCon, txt); printf("Nombre : "); scanf("%s", cnt[*nr].nombre); printf("Telefono residencia : "); scanf("%s", &cnt[*nr].telRes); printf("Telefono movil : "); scanf("%s", &cnt[*nr].telMov); printf("Direccion : "); scanf("%s", cnt[*nr].direcc); cnt[*nr].activo = 1; (*nr)++; } } while (!sf && *nr <= MAX); } // muestra contactos void muestra(struct contactos *cnt, int nc) { int i; // numero contacto actual printf("\nContactos: \n\n"); if (!(nc < 1 || nc > MAX)) { for (i = 0; i < nc; i++) if (cnt[i].activo == 1) { printf("%d:\n", i+1, cnt[i].activo); printf("Tipo contacto : %s\n", cnt[i].tipCon); printf("Nombre : %s\n", cnt[i].nombre); printf("Telefono casa : %s\n", cnt[i].telRes); printf("Telefono movil : %s\n", cnt[i].telMov); printf("Direccion breve: %s\n\n", cnt[i].direcc); } } else printf("No hay contactos!!!\n\n"); getch(); } // modifica contactos void modifica(struct contactos *cnt, int nc) { int sf = 0; // si fin int ce, cr; // contacto elegido, real printf("\nModifica contactos\n\n"); do { printf("Numero contacto a modificar (%d a %d) (0 = Fin): ", 1, nc); scanf("%d", &ce); if (!(ce < 1 || ce > nc)) { cr = ce-1; printf("%d .\n", ce); printf("Tipo contacto : %s\n", cnt[cr].tipCon); printf("Nombre : %s\n", cnt[cr].nombre); printf("Telefono residencia: %s\n", cnt[cr].telRes); printf("Telefono movil : %s\n", cnt[cr].telMov); printf("Direccion breve : %s\n", cnt[cr].direcc); printf("Activo : %d\n\n", cnt[cr].activo); printf("Tipo contacto : "); scanf("%s", cnt[cr].tipCon); printf("Nombre : "); scanf("%s", cnt[cr].nombre); printf("Telefono residencia: "); scanf("%s", &cnt[cr].telRes); printf("Telefono movil : "); scanf("%s", &cnt[cr].telMov); printf("Direccion : "); scanf("%s", cnt[cr].direcc); printf("Activo : "); scanf("%d", &cnt[cr].activo); } } while (!(ce < 1 || ce > nc)); }