Red de conocimiento informático - Conocimiento de la instalación - Escribir un sistema de gestión de libreta de direcciones en lenguaje C. Los requisitos de diseño son los siguientes.

Escribir un sistema de gestión de libreta de direcciones en lenguaje C. Los requisitos de diseño son los siguientes.

Se realiza principalmente con listas enlazadas, y debes dominar las operaciones básicas de las listas enlazadas (creación, inserción, eliminación, etc.). Yo mismo escribí uno antes, que es similar a tu función, pero con diferentes variables puedo darte una referencia para modelarlo. Si no lo entiendes, puedes volver a preguntar.

El código es el siguiente:

#include "stdafx.h"

usando el espacio de nombres std;

/struct

struct contaxt

{

nombre de char[10];

sexo de char[ 5];

char Adrre[50];

char Class[20];

char Mobi[20];

char qq[10];

struct contaxt *next;

};

/Declaración de función

typedef struct contaxt CONT;

CONT *InsertCon(CONT *head);

CONT * AddContaxt(int n);

CONT *FindCon(CONT *head);

CONT *AmendMessage(CONT *head);

CONT * EliminarMensaje(CONT *head);

void showmessage(CONT *head);

int menu(CONT *head).

CONT *saveFileCONT(CONT * head );

CONT *readFileCONT(CONT *head);

int elegir;

//entrada

void main()

{

//system("color F4");

CONT *cabeza;

cabeza = NULL;

menu(head );

}

//menú principal del sistema

int menu(CONT *head)

{

> p>

cout << "¡¡¡Por favor seleccione el menú de operación!!!" << endl ;

do

{

cout < < "- -------------------------- Bienvenido al sistema de gestión de libreta de direcciones -------------- - -------------"

< ;< "---------------------- -- ------ Menú de operación------------------------------------------ ---" ;

cout << "-------------------------- -------- ----- ------------------------------------------"

<< "1 Agregar información de contacto"

<< "2 Insertar información de contacto" << endl

<< <<<" 3 Buscar información de contacto"

<< " 4 Modificar información de contacto" << endl

<< " 5 Eliminar información de contacto"

<< " 6 Mostrar información de contacto" < < fin

p>

<< " 7 Salir del sistema" << endl

<< " 8 Guardar el archivo" << endl

<< " 9 Leer el archivo" < < endl

<< "---------------------- --------- - ------------------------------------" << endl;

cout << "¡¡¡Elija el menú de operación!!!" << endl

int Choose;

//choose = getchar();

fflush(stdin);

//regresar elegir;

cin >> elegir;

if(elegir != 1 && elegir != 2 && elige! = 3 && elige! = 5 && elige! = 6 && elige!= 7 && elige! Error: "<

}

más

{

cambiar(elegir)

{

caso 1:

int n ;

do

{

fflush(stdin);

p>

cout << "Determine cuántos contactos agregar:";

cin >> n;

} while(n <= 0);

head = AddContaxt(n);

break;

caso 2:

system("CLS");

head = InsertCon(head);

break;

caso 3:

cabeza = FindCon(cabeza);

descanso

caso 6:

sistema("CLS ");

showmessage(head);

break;

caso 7:

exit(0);

descanso;

caso 4:

sistema("CLS");

AmendMessage(head);

descanso;

caso 5:

system("CLS");

DeleteMessage(head );

break;

caso 8:

sistema("CLS");

head = saveFileCONT (head );

break;

caso 9:

// cabeza = readFileCONT(cabeza);

default:

system("CLS");

cout << "¡¡¡Ha ingresado incorrectamente, vuelva a seleccionar!!!" >

descanso;

}

}

}mientras(elige != 1 && elige != 2 && elige != 3 && elige != 4 && elige ! = 5 && elige ! = 6 && elige ! >

CONT *AddContaxt(int n)

{

CONT *p,*q,*head;

int i;

sistema ("CLS");

p = (CONT *)malloc(sizeof(CONT));

cout << "Comenzando a agregar información de contacto:" < < endl;

cout << "Ingrese nombre:";

cin > > p->nombre;

cout << "Ingrese apellido:";

cin >> p->sexo ;

cout << "Ingrese categoría:";

cin >> p->Clase;

cout << "Ingrese su dirección:";

cin >> p->Dirección;

cout << "Ingresa tu número de teléfono móvil:";

cin >> p->Mobi;

cout <<."Ingresa el número qq:";

cin >> p->qq;

cabeza = p;

for(i = 2;i <= n;i++)

{

q = (CONT *)malloc(tamañode(CONT) );

p ->siguiente = q

p = q;

system("CLS");

cout< < "Total de **** a ingresar"<< n << "Información sobre el contacto",<< "Ahora que ha ingresado " << i-1< ;< "información de un contacto." << endl << "Por favor, continúe ingresando la primera"<

cout << "Ingrese nombre:";

cin >> p->nombre;

cout << "Ingrese Apellido: ";

c

en >> p->sexo ;

cout << "Categoría de entrada: ";

cin >> p->Clase ;

cout << " Ingrese dirección residencial:";

cin >> p->Adrre;

cout << "Ingrese Mobi:";

cin >> p-> Mobi ;

cout << "Ingrese el número qq:";

cin >> p->qq

}

p; ->siguiente = NULL;

return head;

}

//Insertar información de contacto

CONT *InsertCon(CONT *head )

{

CONT *pc,*p,*q;

int elegir;

nombre de char[ 10];

if(head ==NULL)

{

cout << "El contacto aún no se ha agregado, ¡¡¡agréguelo primero!!!" endl;

Volver al encabezado;

}

pc = (CONT *)malloc(sizeof(CONT));

cout << "Por favor presione Ingrese la información de la persona secuencialmente: nombre / género / clase / dirección / número de celular / número qq" << endl;

cin >> pc->nombre >> pc->sexo >> pc- >Clase > pc->Adrre >> pc->Mobi >> pc- >qq

pc ->next = NULL;

cout << "Seleccione su método de inserción preferido: " << endl< < "1 Insertar antes de sus favoritos" < < endl < < "2 Insertar al final" < < endl < < "3 Insertar al principio" < < endl

hacer {

cin >> elegir;

cambiar(elegir)

{

caso 1:

cout < < "Por favor, ingresa el nombre de tu persona favorita:";

cin >> nombre

if(strcmp(head->nombre,nombre; ) ==0)

{

pc->siguiente = head;

head = pc;

Volver a head;

}

En caso contrario

{

q = cabeza;

p = cabeza->siguiente;

mientras(strcmp(p->nombre,nombre)! =0 &&a

MP;p->siguiente! =NULL)

{

q = p;

p = p->siguiente

}

if(strcmp(p->nombre,nombre)==0)

{

pc->siguiente = p

q = pc;

Volver al encabezado;

}

else

{

p->siguiente = pc;

Volver al encabezado;

}

descanso;

caso 2:

//cout << "Por favor ingresa tu El nombre de la persona favorita: ";

//cin >> nombre ;

p = cabeza;

while(p->siguiente ! = NULL )

p = p->siguiente

p->siguiente = pc;

regresar cabeza;

romper;

p>

caso 3:

//cout << "Por favor ingresa el nombre de tu persona favorita:";

//cin >> nombre;

pc->siguiente = cabeza;

cabeza = pc;

regresar cabeza;

romper;

predeterminado:

cout<<" error"<< endl;

break;

}

} while(elija!= 1 &&choose ! = 2 &&choose ! = 3);

}

//Buscar información de contacto

CONT *FindCon(CONT *head)

{

system("CLS");

char na[20];

CONT *p,*q;

if (head == NULL)

{

cout << "No hay información para encontrar, ¡¡¡agregue información primero!!!" >

Volver al encabezado;

}

cout << "Por favor, introduce el nombre de la persona que buscas:" << endl;

cin >> na;

p = cabeza;

while(p! = NULL)

{

if(strcmp(p->nombre,na)==0)

{

q = p;

cout << "¡¡¡Encontré el contacto con la siguiente información!!!" << endl;

cout << "Nombre:" << q->nombre << "Sexo:" << q->sexo << q->Clase <

;<" Lugar de residencia: " <Adrre <<" Número de teléfono móvil: " <Mobi <<" Número QQ: "

<< q->qq << endl;

romper;

}

más

p = p ->siguiente

}<; /p >

devolver head;

}

/ Modificar información de contacto

CONT *AmendMessage(CONT *head)

{

CONT *p;

char nombre[10];

char sexo[5]; ;

char Clase[20];

char Mobi[20];

char qq[10];

if(cabeza = = NULL)

{

cout<< "¡¡¡No hay información, por favor regresa para agregar información!!!" << endl;

Volver al encabezado;

}

else

p = head;

cout << "Ingrese el nombre de la persona que desea modificar: ";

cin >> nam;

while(p ! = NULL && p->nombre != nam)

{

if(strcmp( p->nombre,nam)==0)

{

strcpy(p->nombre,nam);

int elegir ;

do

{

cout << "¡¡¡Elija qué elemento de información desea cambiar!!!" << endl;

cout < < "1 Modificar género 2 Modificar nivel 3 Modificar dirección 4 Modificar número de teléfono móvil 5 Modificar número QQ" << endl;

cin >> elegir;

cambiar (elegir)

{

caso 1:

cout << "Ingrese el género que desea modificar:";

cin >> sexo ;

strcpy(p->sexo, sexo);

cout << "¡Modificación exitosa! !!" << endl;

system("CLS");

return head;

break;

caso 2:

cout << "Ingrese la clase modificada:";

cin >>.Class;

strcpy(p->Class ,Class);

system("CLS");

cout << "¡¡¡Modificado exitosamente!!! " << endl;

devolver h

ead;

break;

caso 3:

cout << "Ingrese la dirección modificada:";

cin >> Adrre;

strcpy(p-& gt;Adrre ,Adrre);

system("CLS");

cout << "¡Modificación exitosa! ! !" << endl;

return head;

break;

caso 4:

cout << "Por favor, introduzca los cambios. número de teléfono móvil después de: ";

cin >> Mobi;

strcpy(p- >Mobi ,Mobi);

system("CLS");

cout << "¡¡¡Modificación exitosa!!!" << endl;

return head;

break;

caso 5:

cout << "Ingrese el número qq modificado:";

cin >> qq;

strcpy(p-> ;qq,qq) ;

system("CLS");

cout << "¡¡¡Modificación exitosa!!!" << endl;

return head;

break;

predeterminado:

cout << "¡¡¡Error de entrada, volver a seleccionar!!!" << endl;

break;

}

} while(elija ! = 0);

}

else if(p->siguiente ! = NULL && p->nombre ! = nam)

{

p = p->siguiente

}

más

{

cout << "Error de nombre de entrada, vuelva a seleccionar 4 para cambiar!!!!" << endl;

Volver al encabezado;

}

//return head;

}

//Eliminar contacto

CONT *DeleteMessage(CONT head)

{

CONT *p,*q,*t;

nombre de char[20];

elemento de char[10];

p>

cout << "Ingrese el nombre del contacto que desea eliminar:";

cin >> nombre;

if (head == NULL)

{

cout << "No hay información para eliminar, ¡agregue información! !!" << endl;

Volver al encabezado;

}

else if(strcmp(head->nombre,nombre)==0)< / p>

{

t = cabeza;

cabeza = cabeza-> siguiente

retorno;

cabeza;

}

else

{

p = cabeza->siguiente

q = cabeza; ;

}

while(p !=NULL && p->nombre != nombre)

{

q = p;

p = p->siguiente;

}

if(strcmp(p->nombre, nombre)==0)

{

q->siguiente = p-> siguiente

gratis(p);

//t = p;

}

else

{

cout<< "¡No existe tal elemento en la tabla!" << endl;

> Volver al encabezado;

}

if(t)

{

// elem = t->nombre;

free(t);

}

Volver al encabezado;

}

//guardar archivo

CONT *saveFileCONT(CONT *head )

{

char *fileName;

ARCHIVO *fp;

CONT *p;

p>

p = (CONT *) malloc(sizeof(CONT));

if(p=NULL)

{

cout << "Error al asignar memoria"<< endl;

// exit(0);

}

if(head == NULL)

{

cout << "¡¡¡No hay mensajes, agréguelos primero!!!" << endl;

Volver al encabezado;

}

else

{

p = head;

fileName = (char *)malloc(sizeof(char ));

p>

cout < ;< "Por favor, introduzca el nombre del archivo:" << endl;

cin >> fileName;

fileName = strcat (fileName,".txt") ;

if( (fp = fopen(fileName, "a")) == NULL)

cout << "no se puede abrir el archivo " << endl;

hacer

{

//fwrite(head,sizeof(CONT),1,fp);

//fprintf(fp,p ->nombre,p->sexo,p->Clase,p->Adrre,p->Mobi,p->qq );

fprintf(fp," Nombre: ");

fprintf(fp, p->nombre);

fprin

tf(fp," Género:");

fprintf(fp, p->sexo);

fprintf(fp," Clase:");

fprintf(fp, p->Clase);

fprintf(fp, "Dirección:");

fprintf(fp, p->Dirección);

fprintf(fp," Número de celular:");

fprintf(fp, p->Mobi);

fprintf(fp," qq Número:"); p>

fprintf(fp, p ->qq);

fprintf(fp,"\n");

cout << endl;

cout << "------------------------------------------- ----- -------- ---------------------------";

cout << " "< < "Nombre:" <nombre <<" Género: " <sexo <<" Nivel: " << lt;p->Clase<<" Dirección: " << p->Adrre < < "Número de teléfono móvil:"

<< p->Mobi <<" número qq:" << p->qq << endl;

cout <<"--- -------------------------------------------- ------ -----------------------------";

p=p->siguiente ;

} while(p!=NULL);

}

fclose(fp);

devolver cabeza;

}

//readFile

CONT *readFileCONT(CONT *head)

{

char *fileName;

CONT * p;

ARCHIVO *fp;

nombre de archivo = (char *)malloc(sizeof(char)); << "Ingrese el archivo que desea abrir Nombre de archivo: ";

cin >> fileName;

fileName = strcat(fileName,".txt");

fp = fopen(fileName, " r");

if(fp == NULL)

{

cout < & lt; No hay información en el archivo, ¡ingrese la información primero! ! " << endl;

}

más

{

while(!sizeof(fp))

{

p = (CONT *)malloc(sizeof(CONT));

if(p == NULL)

{

cout << "Fai

llevado a asignar memoria!!! " << endl;

return head;

}

fscanf(fp,p->nombre );

fscanf(fp ,p->sexo );

fscanf(fp,p->Clase

fscanf(fp,p->Adrre );

fscanf( fp,p-> Mobi );

fscanf(fp,p->qq );

cout <<"------------- --------------- ---------------------------------- - -----------------";

cout << " "<< "nombre:" <nombre <<" Género: " < sexo << "Clase:" <Clase <<" Dirección residencial:" <Dirección << "Nº de móvil:"

<< p->Mobi <<" qq No:" << p->qq << endl;

cout << "--------------------- -------------------------------------------------- ---------";

p->siguiente = cabeza;

cabeza = p;

p = p->siguiente;

}

fclose(fp);

cout << "¡Leyó la información correctamente! !!" << endl;

}

fclose(fp);

return head;

}

void showmessage(CONT *head)

{

CONT *p;

int i=0;

if(head == NULL )

{

cout << "No hay ningún mensaje para generar, ¡agregue uno!" << endl;

}

else

{

p = cabeza;

cout << "*************** *** **************** El formulario de contacto es el siguiente************************ *** ********** ********";

hacer

{

i++;

cout << "---- ---------------------------------------- ---------- ------- -------------------";

cout << i < < " "<< "Nombre: " <

t;nombre <<" Género: " <sexo << " Clase: " <<<p->Clase <<" Dirección: " <Dirección << "Número de teléfono móvil: "

<< p->Mobi <<" qq número:" << p->qq << endl;

cout <<"--------- ------------------------------------------------- - --------------------";

p = p->siguiente;

} while(p!= NULL );

}

cout << "****************************** **** formulario de contacto ****************************************";

cout << endl;

}