Programación en lenguaje C: programación de libreta de direcciones
#Incluir "string.h"
#Incluir "conio.h"
#Incluir "stdio.h"
#Contiene "dos.h"
FILE * fp
int I; //i es una variable global en lugar de la longitud.
Dirección de la estructura
{ char postnum[10];
char a[40]; //Dirección particular
};
Cumpleaños de la estructura
{ int año;
int mes;
int día
}; p>
int p>
Amigo de estructura
{ int num//número de serie
nombre de char[20];
Sexo encantador;
Teléfono público[13];
Estructura cumpleaños cumpleaños;
Estructura dirección dirección;
}
Amigos [50];
Carga no válida()
{
int j
Long k; fp=fopen( "friend.txt", "a+"); //Abre el archivo friend.txt
if(fp!=empty)
{
for(I = 1;i<50;i++)
{
j = fgetc(FP);
If(j==EOF) // Determinar si ha llegado Fin de archivo.
Retorno;
k = I-1;
fseek(fp, k*sizeof(struct ffriend), SEEK _ SET
fred(& ampfriends[i], sizeof(struct ffriend), 1, FP //Leer registros del archivo
}
} p><); p>Otro
{
fp=fopen("friend.txt","w");
I = 1;
}
}
Pantalla vacía (int j)
{
//Amigos[j]. num = I;
printf("\n\n\tNo.-nnumber:%3d", amigo[j].num);
Printf ("\n \ tname -Nombre:%-20s ", amigos[j]. Nombre);
Printf ("\ n \ tGénero -Sexo:%c ", amigos[j]. Sexo);
printf("\n\tTel-Tel-Teléfono:%-13s", amigo[j].Teléfono);
printf("\n\tFecha de nacimiento-Cumpleaños:% 4d-% 2d-%3d ", amigos [j]. Cumpleaños. Año, amigos [j]. Cumpleaños, mes, amigos. Cumpleaños);
printf(" \ n \ tZip code-postnum:%-10s ", amigos[j].dirección.postnum);
printf("\n\dirección-dirección de correo electrónico:%-40s", amigos[j].dirección.a);
}
void append(int j)
{
fflush(stdin); // Borra el búfer del archivo en esta área Cuando el archivo Cuando. abierto en modo de escritura, escribe el búfer en el archivo.
//stdin es un archivo estándar* (puntero de archivo), generalmente apunta al flujo de entrada usando el teclado.
Amigos[j].
num = j;
printf("\n\t\t\tNúmero de serie-número:%d",j);
printf("\n\t\t \ tname-Name: ");
scanf("%s ", amigo[j].Name);
fflush(stdin); //Por qué no existe fflush(stdin ) ;¿El efecto se omitirá automáticamente?
printf(" \ t \ t \ t Gender-Sex(m/w):"); // ¿Por qué los hombres y mujeres que ingresan caracteres chinos omiten automáticamente el número de contacto?
scanf("%c", & amigos[j].sex);
printf("\t\t\ttel-Phone:");
scanf("%s ", amigo[j].teléfono);
Printf("\tFecha-cumpleaños");
printf(" \ n \ t \ t \ tAño: ");
scanf("%d ", & amigos[j].Cumpleaños.Año);
printf(" \t\t\t mes-mes : ");
scanf("%d ", & amigos[j].cumpleaños.mes);
printf(" \ t \ t \-día: ");
scanf("%d ", & ampFriends[j].Cumpleaños.Día);
Printf ("\ t \ tPostcode- Código postal: ");
scanf("%s", amigos[j].address.postnum);
printf("\t\t\tdirección de correo-dirección :");
scanf("%s ", amigos[j]. dirección. a);
getchar();
}
void delete()
{
int k;
printf("\n\tEliminar número de serie-número:");
scanf("%d " , & ampk);
if(k & lt;=i)
{
for( int j = k; j & ltI+1; J++ ) /*El orden de los elementos movidos posteriormente en la posición de inserción*/
{
strcpy(friend[j].Name, friend[ j+1]. Name);/ *Contenido del elemento de intercambio*/
Amigos[j]. Sexo = amigo[j+1]. Sexo;
strcpy(amigo[j].Teléfono, amigo[j+1].
Teléfono);
Amigo[j].Cumpleaños.Año=Amigo[j+1].Cumpleaños.Año;
Amigo[j].Cumpleaños.Mes=Amigo[j+ 1 ].Cumpleaños.Mes;
Amigos[j].Cumpleaños.Día=Amigos[j+1].Cumpleaños.Día;
strcpy(amigos[j].dirección. postnum , amigos[j+1]. dirección. postnum);
strcpy(amigos[j].dirección.a, amigos[j+1]. dirección. a);
}
I-;
}
Otros
{
Printf("Ingrese el número de serie demasiado grande ! ");
}
}
void Modificar(int j)
{
Agregar( j);
}
Guardar no válido()
{
int j;
fp =fopen ("amigo.txt", "w");
for(j = 1; j & lt= I; j++)
{
fwrite( & amigos[j], tamaño de(struct ffriend), 1, FP
}
fclose(FP); p>void main()
{
int j;
Nivel de carbonización;
nombre de búsqueda de caracteres[10 ]; p>
cargar();
Yo-;
Hacer
{
printf(" \ t\t\ t\t\tLibreta de direcciones simple\n\n");
Printf("Selección de función\n");
Printf("1A. Lectura\ n ");
Printf("\2B.append \ n ");
Printf("\6C.insert \ n ");
Printf ("\5D. Eliminar\n");
Printf("\5E.Search\n");
Printf(".Modify\n");
Printf ("\2G.Save\n");
Printf("1h.Exit\n");
Printf ("Por favor elija)\nNota: Ingrese las letras mayúsculas de A~H\ n ");
scanf("%c ", & grade);
Cambiar (nivel)
//Puedes agregar mayúsculas y letras minúsculas.
{
Caso 'A':j = 1; //Mostrar función
while(getchar()!= 0x 1b &&j& lt=i ) //Agregar y presionar Esc para salir.
{
show(j++);
printf("\n¡Presione Enter para continuar!");
}< / p>
If (j-1<1)
{
Printf ("\n\tEmptyNo hay documento documentado - comentario vacío\n"); p>printf("\n¡Presione Enter para continuar!");
getchar();
}
Printf(" \n\t\t \t\t\t\tLa operación ha finalizado");
printf(" \ n \t-\ t \ t \ n ");
Break;
Caso "B"://Agregar función
while(i<=50) //Agregar la función de presionar ESC para salir.
{
i++;
Append (1);
printf("\t¿Continuar aumentando? y/n" );
//Si modifica y agrega más, aparecerá un error o se verá obligado a imprimir.
char a = getchar();
if(a=='n'||a=='N ')
Romper;
}
if(i==51)
printf("\n\tEl documento está lleno, por lo que no se puede agregar el registro; tenga en cuenta que está lleno" );
Printf("\n\t\t\t\t\t\tLa operación ha finalizado");
printf(" \ n \ t-\ t \ t \ n ");
getchar();
Romper;
Caso "C":
int k; p>
printf(" \ n \ tIngrese la posición a insertar: ");
scanf("%d ", & ampk); ;
Amigos[j]. num = j;
for(j;j & gtk;j-)//Insertar función
{
strcpy(Amigo[j].Nombre, Friends[j-1].Name); //Mover datos hacia atrás
Friends[j]. Sexo = amigo[j-1]. Sexo;
strcpy(Amigo[j].Teléfono, Amigo[j-1].Teléfono);
Amigo[j].Cumpleaños.Año=Amigo[j-1] .Cumpleaños.Año;
Amigo[j].Cumpleaños.Mes=Amigo[j-1].Cumpleaños.Mes;
Amigo[j].Cumpleaños.Día=Amigo[ j-1].Cumpleaños.Día;
strcpy(amigos[j]. dirección. postnum, amigos[j-1]. dirección. postnum);
strcpy(amigos[ j].address.a, amigo [j-1]. dirección a);
}
Anexar (k); p>
p>
Printf("\n\t\t\t\t\t\tLa operación ha finalizado");
printf(" \ n \ t-\ t \ t \ n ");
Romper;
Caso 'D'://función de eliminación//Agrega la función de eliminar múltiples registros a voluntad.
delete();
if(i<1)
printf("\nsin registro - sin registro\n");
printf("\n¡Por favor presione Enter para continuar!");
getchar();
getchar();
Printf("\ n\t\ t\t\t\t\tLa operación ha finalizado");
printf(" \ n \t-\ t \t \ n ");
Break; p>
Caso "E"://función de consulta
printf("\n\tIngrese el nombre relevante del registro a consultar:"); //Por columna Agregar consulta p>
scanf("%s ", nombre de búsqueda);
for(j = 1; j & lt= I; j++)
{
If (strcmp (nombre de búsqueda, amigos [j]. nombre) == 0) // Comparar cadenas.
{
Pantalla (j);
Interrupción
}
}
if(i<1)
{
printf("\nNo hay ningún registro que esté buscando - no hay registro");
printf(" \nPor favor presione Ingrese para continuar ");
getchar();
}
Printf("\n\t\t\t\t \t\tThe la operación ha finalizado");
printf(" \ n \ t-\ t \ t \ n ");
getchar();
Break;
Caso "F"://modificar función //Agregar consulta por número de serie.
printf(" \ n \ tIngrese el nombre relevante del registro que desea modificar: "
Obtener (nombre de búsqueda
scanf(); " %s ", nombre de búsqueda);
for(j = 1; j & lt= I; j++)
{
If (strcmp (nombre de búsqueda , amigos [j].name)= = 0)//Comparar cadenas.
{
Modify(j);
//getchar();//¿Agregar salida para confirmar la modificación?
}
}
If (i & lt1) //Modificar función
{ printf("\nNada que modificar Registro - Sin registro");
printf(" \n¡Presione Enter para continuar!");
getchar();
getchar();
}
Printf("\n\t\t\t\t\t\tLa operación ha finalizado");
printf(" \ n\t- \t\t\n");
Pausa;
Caso "G":
save(); //Función de guardado
getchar();
Printf("\n\t\t\t\t\t\tLa operación ha finalizado");
printf( "\n\t -\t\t\n");
Romper;
Caso "H"://función de salida
carácter x;
Printf("¿Quieres guardar? Sí/No\ n ");
scanf("%s ", & ampx
//getchar ();
//getchar();
if(x=='y ')
{
guardar() ; p>
Salir(0);
}
Otro
Salir(0);
Valor predeterminado: p>
printf("\n\tError de entrada, ¡ingrese el número de serie correcto!");
printf("\n¡Presione Enter para continuar!");
getchar();
Printf("\n\t\t\t\t\t\tLa operación ha finalizado");
printf( " \ n \ t- \t\t\n ");
}
} mientras(1);
}