Escribir un sistema de gestión de libreta de direcciones en lenguaje C. Los requisitos de diseño son los siguientes.
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 << "-------------------------- -------- ----- ------------------------------------------" p>
<< "1 Agregar información de contacto"
<< "2 Insertar información de contacto" << endl
<< <<<" 3 Buscar información de contacto" p>
<< " 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; p >
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:"; p> 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; p> 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; p> 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; p> 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; p > 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; 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: " < << 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]; 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; p > free(t); } Volver al encabezado; } //guardar archivo CONT *saveFileCONT(CONT *head ) { char *fileName; ARCHIVO *fp; CONT *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 )); 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> p> fprintf(fp, p ->qq); fprintf(fp,"\n"); cout << endl; cout << "------------------------------------------- ----- -------- ---------------------------"; cout << " "< < "Nombre:" < << 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:" < << 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: " < << p->Mobi <<" qq número:" << p->qq << endl; cout <<"--------- ------------------------------------------------- - --------------------"; p = p->siguiente; } while(p!= NULL ); } cout << "****************************** **** formulario de contacto ****************************************"; cout << endl; }