Red de conocimiento informático - Aprendizaje de código fuente - Sistema de gestión de libreta de direcciones móvil

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 /*Usar funciones de cadena*/

#include /*Usar funciones para entrada y salida de datos a través de la consola*/

#include

#include /*Usar funciones de DOS*/

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*/

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*/

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:");

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*/

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>

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);

p>

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;

p>

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.