Proyecto Final

Desarrollo de proyecto para integrar los conceptos aprendidos

Descripción del Proyecto:

Crear un programa en C que gestione una lista de contactos. Cada contacto tiene un nombre, número de teléfono y dirección.

Funcionalidades del Proyecto:

  1. Agregar un contacto: Permite al usuario ingresar un nuevo contacto con nombre, número de teléfono y dirección.
  2. Buscar un contacto: Busca un contacto por nombre y muestra su información (nombre, teléfono, dirección).
  3. Listar todos los contactos: Muestra todos los contactos almacenados en el sistema.
  4. Eliminar un contacto: Elimina un contacto existente por su nombre.

Estructura del Programa:

				
					#include <stdio.h>
#include <string.h>

#define MAX_CONTACTS 100

// Estructura para almacenar un contacto
struct Contact {
    char name[50];
    char phone[15];
    char address[100];
};

// Prototipos de funciones
void addContact(struct Contact contacts[], int *count);
void searchContact(struct Contact contacts[], int count);
void listContacts(struct Contact contacts[], int count);
void deleteContact(struct Contact contacts[], int *count);

int main() {
    struct Contact contacts[MAX_CONTACTS];
    int count = 0;
    char choice;

    do {
        printf("\nGestión de Contactos\n");
        printf("1. Agregar contacto\n");
        printf("2. Buscar contacto\n");
        printf("3. Listar contactos\n");
        printf("4. Eliminar contacto\n");
        printf("5. Salir\n");
        printf("Seleccione una opción: ");
        scanf(" %c", &choice);

        switch (choice) {
            case '1':
                addContact(contacts, &count);
                break;
            case '2':
                searchContact(contacts, count);
                break;
            case '3':
                listContacts(contacts, count);
                break;
            case '4':
                deleteContact(contacts, &count);
                break;
            case '5':
                printf("Saliendo del programa.\n");
                break;
            default:
                printf("Opción inválida. Por favor, seleccione de nuevo.\n");
                break;
        }
    } while (choice != '5');

    return 0;
}

void addContact(struct Contact contacts[], int *count) {
    if (*count < MAX_CONTACTS) {
        printf("\nIngrese el nombre del contacto: ");
        scanf(" %[^\n]", contacts[*count].name);

        printf("Ingrese el número de teléfono: ");
        scanf(" %s", contacts[*count].phone);

        printf("Ingrese la dirección: ");
        scanf(" %[^\n]", contacts[*count].address);

        (*count)++;
        printf("Contacto agregado exitosamente.\n");
    } else {
        printf("No se pueden agregar más contactos. Limite alcanzado.\n");
    }
}

void searchContact(struct Contact contacts[], int count) {
    char searchName[50];
    int found = 0;

    printf("\nIngrese el nombre del contacto a buscar: ");
    scanf(" %[^\n]", searchName);

    for (int i = 0; i < count; i++) {
        if (strcmp(contacts[i].name, searchName) == 0) {
            printf("\nNombre: %s\n", contacts[i].name);
            printf("Teléfono: %s\n", contacts[i].phone);
            printf("Dirección: %s\n", contacts[i].address);
            found = 1;
            break;
        }
    }

    if (!found) {
        printf("Contacto no encontrado.\n");
    }
}

void listContacts(struct Contact contacts[], int count) {
    if (count == 0) {
        printf("No hay contactos para mostrar.\n");
    } else {
        printf("\nLista de contactos:\n");
        for (int i = 0; i < count; i++) {
            printf("\nContacto %d:\n", i + 1);
            printf("Nombre: %s\n", contacts[i].name);
            printf("Teléfono: %s\n", contacts[i].phone);
            printf("Dirección: %s\n", contacts[i].address);
        }
    }
}

void deleteContact(struct Contact contacts[], int *count) {
    char deleteName[50];
    int found = 0;

    printf("\nIngrese el nombre del contacto a eliminar: ");
    scanf(" %[^\n]", deleteName);

    for (int i = 0; i < *count; i++) {
        if (strcmp(contacts[i].name, deleteName) == 0) {
            // Mover el último contacto al lugar del contacto eliminado
            contacts[i] = contacts[*count - 1];
            (*count)--;
            found = 1;
            printf("Contacto eliminado correctamente.\n");
            break;
        }
    }

    if (!found) {
        printf("Contacto no encontrado.\n");
    }
}

				
			

Este programa gestiona una lista de contactos utilizando estructuras y funciones en C. Proporciona un menú interactivo donde el usuario puede agregar, buscar, listar y eliminar contactos. Es un proyecto básico pero completo para practicar diferentes aspectos del lenguaje C.