Red de conocimiento informático - Material del sitio web - Programación de desarrollo universitario, consulte a un maestro

Programación de desarrollo universitario, consulte a un maestro

#include?lt;stdio.hgt;

#include?lt;string.hgt;

#include?lt;malloc.hgt;

p>

ARCHIVO?*fp;

char?nombre de archivo[50]?=?{""};

typedef?struct?message?{

char?nombre[16];

char?teléfono[16];

char?correo electrónico[24]; ?dirección[24] ;

int?código postal;

estructura?mensaje?*siguiente;

}?*LinkList, *pNode;

void? ReadData(pNodo?p)?{

printf("\tNombre?:?");

scanf("s",p-gt;nombre) ;

printf("\tNúmero de teléfono?:?");

scanf("s", p-gt;teléfono);

printf(" \tNúmero de correo electrónico?:?");

scanf("s",p-gt;correo electrónico);

printf("\tDirección?:?");

scanf("s",p-gt;dirección);

printf("\tCódigo postal?:?");

scanf("d",amp ; p-gt;código postal);

}

void?ShowLine(int?n)?{

int?i;

for(i?=?0;?i?lt;?n;? i)

printf("*");

printf("\n");< / p>

}

void?ShowData(pNode?p)?{

printf("-16s", p-gt; nombre);

printf("-16s", p-gt; teléfono);

printf("-24s", p-gt; correo electrónico);

printf("-24s" , p-gt; dirección);

printf("-8d\n", p-gt; código postal);

}

void?ShowAll( Lista de enlaces); ?head)?{

pNode?p;

ShowLine(88);

for(p?=?head-gt;next;?p ; ?p?=?p-gt;siguiente)

ShowData(p);

ShowLine(88);

}

LinkList?GetEmptyList()?{

LinkList?head?=?(pNode)malloc(sizeof(struct?message));

head-gt;

head-gt;nombre[0]?=?0;

head-gt;dirección[0]?=?0;

cabeza

-gt;código postal?=?0;

head-gt;teléfono[0]?=?0;

head-gt;correo electrónico[0]?=?0;

return?head;

}

void?Addmember(LinkList?head)?{?//?Agregar en orden creciente por teléfono, que se puede utilizar para crear una nueva lista enlazada

pNode?q, p?=?(pNode)malloc(sizeof(struct?message));

q?= ?cabeza;

while(q-gt;siguiente)?{

if(strcmp(q-gt;siguiente-gt;teléfono, p-gt ;teléfono)?== ?0)?{

ShowData(p);

printf("\t*****?Este número de teléfono ya existe.

\n");

return;

}

if(strcmp(q-gt;next-gt;teléfono,p-gt;teléfono)? gt;?0)?{

p-gt;siguiente?=?q-gt;siguiente;

q-gt;siguiente?=?p;

regresar;

}

}

q-gt; siguiente?=?p;

p-gt; =?NULL;

}

pNode?SearchName(LinkList?head, char?name[])?{

pNode?p;

if(head?==?NULL)?return?NULL;

for(p?=?head-gt;next;?p;?p?=?p-gt;next) ?{

if(strcmp(p-gt; nombre, nombre)?==?0)?{

ShowData(p);

¿regresar? p;

}

}

return?NULL;

}

pNode?SearchTelephone(LinkList? head, char?telephone[])?{

pNode?p;

if(head?==?NULL)?return?NULL;

para (p?=?head-gt;siguiente;?p;?p?=?p-gt;siguiente)?{

if(strcmp(p-gt;teléfono,teléfono)?==? 0)?{

ShowData(p);

return?p;

}

}

return?NULL;

}

void?ModifyListName(LinkList?head)?{

pNode?p;

char?name [24];

printf("\t¿El nombre de la persona que se está modificando?:?"

scanf("s", nombre

p?=?SearchName(head, nombre);

if(p?==?NULL)?printf("\tXXXXX?¡No se encontró ningún registro llamado s!\n", nombre);< / p>

más?{

ShowData(p);

ReadData(p);

}

}< / p>

void?ModifyListTelephone(LinkList?head)?{

pNode?p;

char?telephone[16];

printf( " \t¿Número de teléfono modificado?:?");

scanf("s",teléfono);

p?=?BuscarTeléfono(cabeza,teléfono);

p>

if(p?==?NULL)?printf("\t****?¡No se encontró ningún registro con el número de teléfono!\n",teléfono);<

/p>

más?{

ShowData(p);

ReadData(p);

}

}

void?ModifyList(LinkList?head)?{

int?select;

¿hacer?{

printf("\t1, Modificar por nombre, 2. Modificar por número de teléfono, 0, return\n");

printf("\tPor favor seleccione: ");

scanf("d", amp ; seleccionar);

cambiar(seleccionar)?{

caso?1?:?ModifyListName(head);

caso?2?:?ModifyListTelephone ( cabeza);

}

} while(select);

}

int?EraseTelephone(LinkList?head, char? teléfono [])?{?//?Eliminar el nodo cuyo número de teléfono es teléfono

int?an;

pNode?p, q;

if ( head-gt; next?==?NULL)?{

printf("\tEl libro de números está vacío.

\n");

return?0;

}

for(p?=?head;?p-gt;next;?p?= ?p-gt;siguiente)?{

if(strcmp(p-gt;next-gt;teléfono,teléfono)?==?0)?{

ShowData(p

printf("\t1.Delete,?0.No eliminar?:?");

scanf("d",amp;an);

if(an?==?1)?{

q?=?p-gt;siguiente;

p-gt;siguiente?=?q-gt ; siguiente;

gratis(q);

retorno?1;

}

más?retorno?0;

}

}

printf("\t*****? ¡No se encontró ningún registro con el número de teléfono!\n",teléfono);

return?0;

}

void?LoadData(LinkList?head)?{?//?Transferir el contenido del archivo a la memoria

pNodo ?p, tmp;

int?an, bandera

if(nombre de archivo[0]?==?'\0')?{

printf ("\t¿El nombre del archivo de datos a transferir?:?");

scanf("s", nombre de archivo);

}

else?{

printf("\t¿Cargar archivos? 1. ¿Sí, 0 no lo es?:", nombre de archivo

scanf("d", amp; an) ;

if(an?==?1)?{

fp?=?fopen(nombre de archivo, "rb");

if(fp? ==?NULL )?{

printf("\tXXXXX? Error al abrir el archivo s.\n", nombre de archivo

return

}

}

else?{

printf("\tFilename?:?");

scanf("s", nombre de archivo );

fp?=?fopen(nombre de archivo, "rb");

if(fp?==?NULL)?{

printf(" \tXXXXX? No se pudo abrir el archivo s.

\n", nombre de archivo);

return;

}

}

}

if(head -gt; ¿siguiente?==?NULL)?{

p?=?head;

tmp?=?(pNode)malloc(sizeof(struct?message));

while(fread((void?*)tmp,sizeof(struct?message),1,fp)?==?1)?{

p-gt;next?= ?tmp;

p?=?p-gt;siguiente;

tmp?=?(pNode)malloc(sizeof(struct?message));

}

fclose(fp);

p-gt; siguiente?=?NULL

gratis(tmp); return

}

printf("\t1. Agregar, 2. ¿Sobrescribir?:?"

scanf("d", amp; an); );

if(an?==?1)?{

tmp?=?(pNode)malloc(sizeof(struct?message));

while(fread(tmp, sizeof(struct?message),1,fp)?==?1)?{

flag?=?1;

for(p? =?head;?p-gt;siguiente?amp;amp;?flag;?p?=?p-gt;siguiente)?{

if(strcmp(p-gt;next-gt; teléfono,tmp-gt;teléfono)?==?0)?{

printf("\t*****?Debido a que el número de teléfono es el mismo, esta información no se agrega:\n ");

ShowData(tmp);

bandera?=?0;

descanso;

}

if( strcmp(p-gt;siguiente-gt;teléfono,tmp-gt;teléfono)?gt;?0)?{

tmp-gt;siguiente?=?p-gt;siguiente ;

p-gt; siguiente?=?tmp;

bandera?=?0;

descanso

}

}

if(bandera)?{

p-gt; siguiente?=?tmp

tmp-gt; ?NULL;

}

tmp?=?(pNode)malloc(sizeof(struct?message));

}

fclose(fp) ;

gratis(tmp);

retorno;

}

if(an?==?2) ?{

p?=?head-gt;siguiente;

mientras(p)?{

tmp?=?p;

p?=?p-gt;siguiente;

gratis(tmp);

}

p?=?head;

tmp?=?(pNode)malloc(sizeof(struct?message));

while(fread(tmp, sizeof(struct?message)) , 1, fp)?==?1)?{

p-gt; siguiente?=?tmp;

p?=?p-gt;siguiente;

tmp?=?(pNode)malloc(sizeof(struct?message));

}

free(tmp);

p- gt ;siguiente?=?NULL;

fclose(fp);

}

}

void?SaveData(LinkList?head ) ?{?//?Guardar memoria en el archivo

int?an;

char?mode[5];

pNode?p;

if(nombre de archivo[0]?==?0)?{

printf("\t¿Por favor ingrese el nombre del archivo?:?");

scanf(" s ", nombre de archivo);

fp?=?fopen(nombre de archivo, "wb");

if(fp?==?NULL)?{

printf("\tXXXXX? Error al abrir el archivo s.\n", nombre de archivo);

return

}

for(p?=? head- gt; siguiente;?p;?p?=?p-gt;siguiente)

fwrite(p, sizeof(struct?message),1,fp);

fclose( fp);

return

}

else?{

printf("\t1. Sobrescribir archivo s\n2 Agregar archivo s\n3. Nuevo\n4. Ninguna operación devuelve\n", nombre de archivo, nombre de archivo);

printf("\t¿Por favor seleccione?:?");

scanf. ( "d",amp; an);

if(an?lt;?1?||?an?gt;?3)?return;

if(an? = =?3)?{

printf("\t¿Por favor ingrese el nombre del archivo?:?");

scanf("s", nombre de archivo);

fp?=?fopen(nombre de archivo, "wb");

if(fp?==?NULL)?{

printf("\tXXXXX?Error al abrir el archivo s.

\n", nombre de archivo);

return;

}

for(p?=?head-gt; siguiente; ?p; ?p?= ?p-gt; siguiente)

fwrite(p, sizeof(struct?message), 1, fp

fclose(fp); ;

}

else?{

if(an?==?1)?strcpy(mode, "wb");

else?if(an?==?2)?strcpy(modo, "ab");

fp?=?fopen(nombre de archivo, "wb");

if(fp?==?NULL)?{

printf("\tXXXXX? No se pudo abrir el archivo s.

\n", nombre de archivo);

return;

}

for(p?=?head-gt; siguiente; ?p; ?p?= ?p-gt; siguiente)

fwrite(p, sizeof(struct?message), 1, fp

fclose(fp); ;

}

}

}

void?Sort(LinkList?head)?{?//?Ordenar por nombre creciente

pNode?p, q, pt;

if(head?==?NULL)?return;

p?=?head;

while(p-gt; siguiente)?{

q?=?p-gt; siguiente-gt; siguiente;

while(q-gt; siguiente) ?{

if(strcmp(p-gt;next-gt;teléfono, q-gt;next-gt;teléfono)?gt;?0)?{

pt? =?p-gt;siguiente;

p-gt;siguiente?=?q-gt;siguiente;

q-gt;siguiente?=?q-gt;siguiente- gt; siguiente;

p-gt; siguiente?=?pt;

}

más?q?=?q-gt; siguiente;

}

p?=?p-gt; siguiente

}

}

void?FreeList(LinkList?head)?{

pNode?p?=?head, q;

while(p)?{

q?= ?p;

p?=?p-gt; siguiente;

libre(q); p>

void?menu(LinkList?head)?{

int?choice;

do?{

printf("┌─── ─────────────────────────────┐\n");

printf("│?│\ n ");

printf("│?¿Bienvenido al software de gestión de libretas de direcciones?│\n");

printf("│?│\n");

printf("│Escribir│\n");

printf("│?│\n");

printf("└────── ─ ─────────────────────────┙\n");

printf("\n\n\n\ n ");

printf("\t1, Nuevo\n");

printf("\t2, Explorar\n");

printf ( "\t3, Modificar\n");

printf("\t4, Agregar\n");

printf("\t5, Ordenar\n"); p>

printf("\t6, cargar\n");

printf("\t7, guardar\n");

> printf("\t0, salir\n");

printf("\n\t¿Por favor seleccione?:?";

scanf("d", amp; elección );

cambiar(elección)?{

caso?1?:?Addmember(head);?break;

caso?2?:? (cabeza);?break;

case?3?:?ModifyList(head);?break;

case?4?:?Addmember(head);?break; /p>

caso?5?:?Sort(head);?break;

case?6?:?LoadData(head);?break;

case ? 7?:?SaveData(head);?break;

}

} while(choice);

}

int ? principal()?{

LinkList?head?=?GetEmptyList();

menú(head);

FreeList(head);

¿regresar?0;

}