Estándares de programación de Devc
¿#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 ); p >
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)?{ p>
¿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 ;? p>
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 p>
tmp-& gt;Siguiente? =?NULL
}
tmp ? =?(pNode)malloc(sizeof(struct? message));
}
fclose(FP);
gratis(tmp);
p>Devolver;
} p>
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;
}