Red de conocimiento informático - Computadora portátil - Estándares de programación de Devc

Estándares de programación de Devc

#¿Incluir? & ltstdio.h & gt

¿#Contiene? & ltstring.h & gt

#¿Contiene? & ltmalloc.h & gt

¿Archivo? *fp

Ciel? ¿Nombre del archivo [50]? =?{""};

typedef? estructura? ¿mensaje? {

¿Ciel? Nombre[16];

¿Carácter? Número de teléfono【16】;

¿Carácter? Correo electrónico[24];

¿Carácter? Dirección[24];

int? Código postal;

estructura? ¿mensaje? *Siguiente;

}?*Lista vinculada, *pNodo

¿No es válido? LeerDatos(pNodo?p)? {

Printf ("\ tnombre?:?");

scanf("%s ",p->nombre);

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

scanf("%s ",p->Teléfono);

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

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

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

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

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

scanf("%d " ,&p->;Código postal);

}

¿No es válido? MostrarLínea(int?n)? {

int? i;

for (i?=?0;?i?<?n;?++i)

printf(" * ");

printf(" \ n ");

}

¿No es válido? ¿Mostrar datos (pNodo? p)? {

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

printf("%-16s ", p-& gt; número de teléfono

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

printf("%-24s ", p-& gt; dirección); > printf("%-8d\n ",p-& gt; código postal);

}

¿No es válido? ¿Mostrar todo (lista? encabezado)? {

pNodo? p;

ShowLine(88);

Para (p?=?head->;siguiente;?p;?p?=?p->;siguiente)

ShowData(p);

ShowLine(88);

}

¿Lista enlazada? ¿Obtener lista vacía()? {

¿Lista enlazada? ¿cabeza? =?(pNode)malloc(sizeof(struct? message));

head->;¿Siguiente? =?NULL

cabeza->;nombre[0]? =?0;

cabeza->;Dirección[0]? =?0;

head->;¿Código postal? =?0;

cabeza->;Teléfono[0]? =?0;

head->;Correo electrónico[0]? =?0;

¿Volver? encabezado;

}

¿No es válido? Addmember (¿lista vinculada? ¿encabezado)? {?//?Agregado en orden ascendente por teléfono, se puede usar para crear una nueva lista vinculada.

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

leer datos(p);

q? =?cabeza;

mientras(q->;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-> next-> teléfono, p-> ;Teléfono)? & gt?{

p->;Siguiente?=?q->;Siguiente? p;

Volver;

}

}

q->;Siguiente? =?p;

p->;Siguiente? =?NULL

}

pNode? SearchName(LinkList? Head, Char? Name[])? >pNode?p;

Si (head?==?NULL)? ?=?cabeza->; siguiente;?p;?p ? =?p->; siguiente)? ?{

MostrarDatos(p );

Devolver? p;

}

}

Devolver NULL

}

¿pNode? Buscar teléfono(¿Lista de contactos? ¿Encabezado? Teléfono[])? {

pNode? (cabeza? ==? NULL )? retorno? NULL

para (p?=?head->;?p;?p?=?p->;siguiente)? gt; teléfono, teléfono)?==?0)?{

ShowData(p);

Devolver p;

}

}

Volver a NULL

}

¿Invalidar? ModificarNombreDeLista(lista?cabeza)? >pNodo?p;

¿Carácter? Nombre[24];

printf("\t¿El nombre de la persona modificada?:?");

scanf("%s ", nombre);

p? =?SearchName(head, nombre);

If (p?==?NULL)? printf("\tXXXXX? ¡No se puede encontrar el registro llamado %s! \n ", nombre );

¿Qué más? {

ShowData(p);

leer datos (p);

}

¿Invalidar? ModifyListTelephone(¿Encabezado LinkList?) {

pNode?

p>

¿Ciel? Teléfono【16】;

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

scanf("%s ", teléfono);

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

If (p?==?NULL)? printf("\t*****? ¡No se puede encontrar el registro con el número de teléfono %s!\n", teléfono);

¿Qué más? {

Mostrar datos(p);

leer datos(p);

}

}

No válido ? ModifyList (¿lista vinculada? ¿Encabezado)? {

int? Elige;

¿Qué hacer? {

Printf("\t1, modificar por nombre, 2, modificar por número de teléfono, 0, devolver \ n ");

printf(" \ tPor favor seleccione: ");

scanf("%d ", & amp select);

¿Cambiar (seleccionar)? {

¿Caso? 1?:?modificar nombre de lista(head);

¿Caso? 2?:?ModifyListTelephone(head);

}

}mientras(seleccionar);

}

p>

}

int? borrar teléfono(LinkList? encabezado, char? teléfono[])? {?//?Eliminar el nodo con el número de teléfono.

int? Un;

pNodo? p, q;

if(head->Siguiente?==?NULL)? {

printf("\tEl directorio está vacío.\n");

¿Regresión? 0;

}

¿Para (p?=?head;?p->;siguiente;?p?=?p->;siguiente)? {

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

ShowData(p);

Printf("\t1. ¿Eliminar,? 0. ¿No eliminar?:?");

scanf("%d ", &'an);

Si (¿An?==?1)?{

q? =?p->;Siguiente;

p->;Siguiente? =?q->;Siguiente;

Gratis (q);

¿Devolver? 1;

}

¿Y si? ¿devolver? 0;

}

}

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

¿Volver? 0;

}

¿Nulo? LoadData(lista?cabeza)? {?//?Transfiere el contenido del archivo a la memoria.

pNodo? p,tmp

int? An, flag;

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

printf("\t¿El nombre de archivo de los datos que se van a transferir? : ?");

scanf("%s ", nombre de archivo);

}

¿Y si? {

printf("\tCargando archivo %s1. Sí, 0 no?:", nombre del archivo);

scanf("%d ",&

Si (安?==?1)?{

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

if(fp?==?NULL)? {

printf("\tXXXXX? No se puede abrir el archivo % s, \n ", nombre del archivo

Regresar

}

}

¿Y si? {

printf(" \tNombre de archivo?:?");

scanf("%s ", nombre de archivo);

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

if(fp?==?NULL)? {

printf("\tXXXXX? No se puede abrir el archivo % s, \n ", nombre del archivo

Regresar

}

}

}

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

p? =?cabeza;

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

Y (fread((void?*)tmp,sizeof(struct?Message),1,fp?==?1) ?{

p->;¿Siguiente? =?tmp

p? =?p->;Siguiente;

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

}

fclose(FP);

p->;¿Siguiente? =?NULL

Gratis(tmp);

Retorno;

}

Printf("\t1. Suplementario, 2.

¿cubrir? :?");

scanf("%d ", & amp安);

If (安?==?1)?{

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

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

¿Bandera?=?1;

Para (p?=?head;?p->;siguiente?&&?flag;?p?=?p->;siguiente? a) ?{

if(strcmp(p->siguiente->teléfono,tmp->teléfono)?==?0)?{

printf("\t* ****? Este mensaje no se agregó porque el número de teléfono es el mismo:\n ");

ShowData(tmp);

Flag? =?0 ;

Break;

}

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

tmp-& gt;Siguiente?=?p->;Siguiente;

p->;Siguiente? p>

¿Marcar?

Romper;

}

}

if(bandera)? /p>

p->;¿Siguiente? =?tmp

tmp-& gt;Siguiente? =?NULL

}

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

}

fclose(FP);

gratis(tmp);

p>

Devolver;

}

Si (An?==?2)?{

p? =?head->;Siguiente ;

mientras (p)?

tmp? =?p;

p? siguiente;

gratis(tmp);

}

p?= ?head;

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

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

p->;Siguiente? =? tmp

p? =?p->; siguiente;

tmp ? =?(pNodo)malloc(tamañode(estructura? Mensaje));

}

Gratis (tmp);

p->;¿Siguiente? =?NULL

fclose(FP);

}

}

¿No es válido? ¿Guardar datos (lista vinculada? Encabezado)? {?//?Guardar memoria en el archivo

int? Ann;

¿Ciel? Modo[5];

pNodo? 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? No se puede abrir el archivo % s, \n ", nombre del archivo

Regresar

}

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

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

fclose(FP);

Retorno;

}

¿Y si? {<

/p>

Printf("\t1. Sobrescribir el archivo %s\n2. Agregar el archivo %s\n3. Crear\n4.

Si no se realiza ninguna operación, devuelve\n ", nombre de archivo, nombre de archivo);

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

scanf("%d ",& amp An);

Si (An?& lt?1?||?An?& gt?3)?Return;

Si (An?==? 3)?{

printf("\t¿Ingrese el nombre del archivo?:?");

scanf("%s ", nombre del archivo);

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

if(fp?==?NULL)? {

printf("\tXXXXX? No se puede abrir el archivo % s,\n ", nombre de archivo);

Regresar;

}

Para (p?=?head->;Siguiente;?p;? p?= ?p->; siguiente)

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

fclose(FP);

Retorno;

}

¿Qué pasa si? {

If (An?==?1)?strcpy(mode, "WB");

¿Qué pasa si (An?==?2)?strcpy(mode, "ab");

fp? =?fopen(filename, "WB");

if(fp?==?NULL)? {

printf("\tXXXXX? No se puede abrir el archivo % s,\n ", nombre del archivo);

Regresar ;

}

Para (p?=?head->;siguiente;?p;?p?=?p->;siguiente)

fwrite (p, tamaño de (estructura? mensaje), 1, FP

fclose(FP

Retorno

}

}

}

¿Ordenar (lista? encabezado)? {?//?Ordenar por nombre

pNode ;

Si (cabeza?==?NULL)? retorno;

p? =?cabeza;

mientras(p->;Siguiente)? =?p->;Siguiente;

while(q->;Siguiente)? ​​if(strcmp(p->Siguiente->Teléfono, q->Siguiente->Teléfono)?> ?0)?{

pt? =?p ->Siguiente;

p->¿Siguiente? =?q->;Siguiente;

q->;Siguiente? =?q->Siguiente->Siguiente;

p->Siguiente->Siguiente? =?pt;

}

¿Y si? q? =?q->;Siguiente;

}

p? =?p->;Siguiente;

}

}

¿Anulado? FreeList (¿lista vinculada? ¿encabezado)? {

pNodo? ¿pag? =?Cabeza, q;

mientras(p)? {

q? =?p;

p? =?p->;Siguiente;

Gratis (q);

}

}

¿Anulado? Menú (¿lista de enlaces? ¿encabezado)? {

int? Elige;

¿Qué hacer? {

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

printf("││\ n ");

Printf("│Bienvenido al software de gestión de libreta de direcciones│\ n "); "││\ 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 "); \t4, agregar \ n ");

Printf("\t5, ordenar \ n ");

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

p>

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

Printf("\t0, salir \ n "); \ n \ t ¿Seleccionar? :?");

scanf("%d ", & amp select);

¿Cambiar (seleccionar)? {

¿Caso? 1?:?añadir miembro(jefe);? Rotura;

¿Caso? 2?:?Mostrar todo(encabezado);? Rotura;

¿Caso? 3?:?modificar lista(cabeza);? Rotura;

¿Caso? 4?:?añadir miembro(jefe);? Rotura;

¿Caso? 5?:?Ordenar(cabeza);? Rotura;

¿Caso? 6?:?cargar datos(cabeza);? Rotura;

¿Caso? 7?:?Guardar datos(encabezado);? romper;

}

}mientras(seleccionar);

}

int? principal()? {

¿Lista enlazada? ¿cabeza? =?GetEmptyList();

Menú(encabezado);

FreeList(encabezado);

¿Volver? 0;

}