Sistema de gestión de libreta de direcciones móvil
Tengo uno aquí, échale un vistazo y califícalo si estás satisfecho (ejecutándose en Visual C++6.0)
#include
#include
#include #include #include int i /*Definir una variable global i */ struct addr /*Definir estructura de dirección de comunicación*/ { char post_num[10] /*Código postal*/ char addr[60 ]; *Dirección particular*/ }; estructura nacimiento /*Definir estructura de mes y año de nacimiento*/ { int año /*Año */ int mes; /*mes*/ int día; /*fecha*/ }; struct record1 /*Definir estructura de la libreta de direcciones electrónica*/ { int número; /*Número de serie*/ char nombre[20]; ; /*género*/ struct nacimiento nacimiento /*fecha de nacimiento*/ struct addr addr /*dirección de correspondencia*/ char teléfono [13]; /*Número de contacto*/ }registros[50]; FILE *fp /*Definir una variable de puntero que apunte a una estructura de tipo de archivo*/ p> void Data_Load() /*Definir la función de carga de datos*/ { int j; long k; fp= fopen( "record.txt","r+t"); /*Abre el archivo record.txt para lectura y escritura*/ if(fp!=NULL) /*Si el archivo no está vacío* / { for(i=1;i<50;i++) { j=fgetc(fp); /*Leer números enteros del archivo "records.txt" * / if(j==EOF) /*Determinar si se llega al final del archivo*/ return /*Si se llega al final, regresar*/ p> k=i-1; fseek(fp,k*sizeof(struct record1),SEEK_SET); /*Mover el puntero de posición a los bytes contenidos en la estructura record1 En el késimo byte*/ fread(&records[i],sizeof(struct record1),1,fp /*Leer un registro*/ } } else { fp=fopen("record.txt","w"); /*Abre el archivo record.txt, solo escribe * / i=1; } } void Data_Show(int j) /*Definir la función de visualización de datos* / { printf("\n\n\tNo:%3d\n",records[j].number /*número de serie*/ printf("\n\tnombre:%2s\n",registro s[j].nombre); /*nombre*/ printf("\n\tcumpleaños (y/m/d):%4d%2d%2d", registros[j].nacimiento. año, registros[j].nacimiento.mes, registros[j].nacimiento.día /*Imprime el año, mes y día de nacimiento del miembro j*/ printf ("\n\tcódigo postal:%-10s",registros[j].addr.post_num); /*Código postal*/ printf("\n\taddress:%-40s ",records[ j].addr.addr); /*Dirección particular*/ printf("\n\tphone%-13s",records[j].teléfono); /*Número de contacto* / } void Data_Input(int j) /*Definir la función para agregar datos*/ { fflush(stdin ); /*Borrar el búfer de entrada*/ records[j].number=j; printf("\n\n\n\tinputNo %d ",j) ; printf("\n\tname:"); /*Ingrese el nombre*/ scanf("%s",records[j].name); fflush( stdin); /*Borrar el búfer de entrada*/ printf("\tsex(m/f):" /*Ingrese el género*/ scanf("%c ",&records[j].sex); printf("\t---cumpleaños---"); /*Ingrese el año y mes de nacimiento*/ printf(" \n\taño:"); scanf("%d",&records[j].nacimiento.año); printf( "\tmes:"); p> scanf("%d",&records[j].nacimiento.mes); printf("\tday:"); scanf("%d ",&records[j].birth.day); printf("\tpost code:" /*Ingrese el código postal*/ scanf("%s",records [j].addr.post_num); printf("\taddress:" /*Ingrese la dirección particular*/ scanf("%s",records[j] .addr.addr); printf("\tphone:"); /*Ingrese el número de contacto*/ scanf(" %s",records[j].telephone) ; } void Data_Save() /*Definir función de guardar*/ { int j; fp=fopen("record.txt","w"); /*Abre el archivo record.txt, solo escribe*/ for( j=1;j<=i;j++) { fwrite(&records[j],sizeof(struct record1),1,fp /*Ingrese un cierto número de bytes de los registros de variables de estructura; para grabar.txt En el archivo, el número es el número de bytes contenidos en la estructura amigo1*/ } } vacío principal( ) /*Función principal*/ { int j,k; char ch; char nombre_búsqueda[40]; /*Definir variables de cadena*/ Data_Load(); /*Declarar la función de carga de datos*/ i--; do { printf("************************************ MENÚ ******** *****************************\n"); printf("---- --------------------! ¡BIENVENIDO AL SISTEMA!------------------------ ------"); printf("\n*\tSeleccionar función: *"); printf("*\t1.Agregar nuevo *"); printf("*\t2.Ver los datos *"); printf("*\t3.Delete *"); printf(" *\t4.Search *"); printf("*\t5.Insert *"); printf("*\t6.Guardar y salir *"); printf("*\t7.Salir *"); printf("\n******************** ************ MENÚ ************************************* ***\n"); printf("\tPor favor, elija la opción que necesita:"); ch=getche(); /*Ingrese caracteres*/ p> interruptor(ch) { caso '1': { int p; printf(" \n\tIngrese el número de personas que desea agregar:"); scanf("%d",&p);/*Agregar registro*/ printf(" \tPor favor presione ENTER nuevamente"); while(getch()!=0x1b&&i { i++; Data_Input(i); p> p> printf("Presione Enter nuevamente para continuar\n"); } if(i==p)printf("\n\tEl los datos están llenos\n"); } /*La libreta de direcciones está llena después de la grabación*/ interrupción; caso '2': j= 1 ; /*Imprimir todos los registros*/ while(getch()!=0x1b&&j<=i) Data_Show(j++); /*Declarar la función de impresión de datos*/ if (j >i) printf("\n\tEl sistema ha finalizado\n"); /*Mostrar el final del registro*/ pausa; case '3' : /*Eliminar registros de comunicación en el registro*/ if(i<1) { printf("\n\tno record\n"); */< /p> break; } printf("\n\tpor favor ingrese el número que desea eliminar:"); scanf( "%d",&k); printf("\tsucceed!\n"); for(j=k;j { strcpy(records[j].name,records[j +1].nombre); registros[j].sex=registros[j+1].sex; registros[j].nacimiento.año=registros[ j+1].nacimiento.año; registros[j].nacimiento.año=registros[j+1].nacimiento.año; registros[j]. nacimiento.mes=registros[j+1].nacimiento.mes; registros[j].nacimiento.día=registros[j+1].día de nacimiento; strcpy. (registros[j].addr.post_num,registros[j+1].addr.post_num strcpy(registros[j].addr.addr, registros[j+1].addr.addr); strcpy(records[j].telephone,records[j+1].telephone); } i--; el número total de elementos se reduce en 1*/ break; case '4': /*Función de búsqueda en libreta de direcciones*/ printf("\ n\tPor favor ingrese el nombre:"); /*Ingrese el nombre*/ scanf("%s", search_name); /*Obtenga el nombre de una variable de cadena de puntero*/ for(j=1;j<=i;j++) { if(strcmp(search_name,records[j].name)== 0) /* Compare cadenas para ver si son los mismos que los nombres en el registro */ { Data_Show(j printf("\n "); ; /*La búsqueda se realizó correctamente, el registro de impresión finaliza el ciclo*/ interrupción; } } if(j> i); ) /*La búsqueda falló*/ printf("\n\tNo hay registro "); /*No se muestra dicho registro*/ break; case '5': printf("\n\tInsertar número:" /*Ingrese la posición de inserción*/ scanf("%d",&k);< / p> for(j=k+1;j { strcpy(registros[j].nombre,registros[j-1].nombre); registros[j].sex=registros[j-1].sex; registros[j].nacimiento.año=registros[j-1].nacimiento.año; registros[j].nacimiento.mes=registros[j-1].nacimiento.mes; registros[j].día.nacimiento=registros[j-1].día.nacimiento; strcpy(registros[j].addr.post_num,registros[j-1].addr.post_num); strcpy(registros[j].addr.addr,registros[j-1] .addr.addr); strcpy(registros[j].teléfono,registros[j-1].teléfono); } Data_Input(k ); /*Declarar la función para agregar datos*/ i++;/*Aumentar el número de registros en uno*/ break; case ' 6': Data_Save (); printf("\n"); /*Declarar la función de guardar*/ exit(0); / case '7': printf("\n\tsave or not?:(s/n)"); ch=getch() /*Obtener caracteres de entrada; */ if(ch=='y') Data_Save(); fclose(fp); /*Cerrar el archivo record.txt*/ exit(0); /*Salir del programa*/ predeterminado: printf("Por favor elija1-4\n"); -enter*/ } } while(1); /*Comienza desde la primera función cada vez y repite la operación*/ } Por favor apóyame aceptando la respuesta.