Skip to content

garcyv/ABP_CRUD

Repository files navigation

Proyecto CRUD de Gestión de Contactos (Python MVC)

Este proyecto es una aplicación de consola en Python que permite gestionar una lista de contactos mediante operaciones CRUD (Crear, Leer, Actualizar, Eliminar). Está diseñado siguiendo el patrón de diseño Modelo-Vista-Controlador (MVC) y aplicando principios de Programación Orientada a Objetos (POO).

Los contactos se almacenan temporalmente en una lista de diccionarios en memoria RAM.

Características

  • CRUD Completo: Permite crear, ver, actualizar y eliminar contactos.
  • Búsqueda Avanzada: Búsqueda por nombre (parcial e insensible a mayúsculas) y por teléfono (exacta).
  • POO y Herencia: Utiliza clases Persona y ContactoModelo con herencia.
  • Validaciones: No permite valores nulos en campos obligatorios (nombre, teléfono, email).
  • Interfaz de Usuario: Menú interactivo con limpieza de pantalla automática y visualización de datos en formato tabular.
  • Actualización Inteligente: Permite presionar Enter durante la actualización para mantener el valor existente del campo.

Estructura del Proyecto

El proyecto está dividido en 3 archivos principales siguiendo el patrón MVC, más el archivo punto de entrada:

  • /Proyecto_CRUD_Contactos/
    • ├── app_contacto.py: El punto de entrada principal de la aplicación.
    • ├── ModeloContacto.py: Gestión de datos y clases (Modelo)
    • ├── VistaContacto.py: Interfaz de usuario y visualización (Vista)
    • ├── ControladorContacto.py: Lógica de control (Controlador)
    • ├── doc/: Documentos o presentaciones acerca del desarrollo del proyecto.
    • ├── Pruebas/: Directorio que contiene las pruebas funcionales del sistema.
      • └──PruebaContactos.py: Pruebas funcionales del sistema.
    • └── README.md: Documentación del proyecto

Requisitos

Se requiere una librería externa de Python para el formato tabular:

  • tabulate

Instálala usando pip:

bash pip install tabulate

Ejecución

Para ejecutar la aplicación, navega hasta el directorio raíz del proyecto en tu terminal y ejecuta el archivo principal app_contacto.py con Python:

bash python app_contacto.py

Uso de la aplicación

Al iniciar la aplicación, se mostrará el menú principal. Puedes navegar usando las opciones numéricas o la letra 'B' para buscar:

--- Gestión de Contactos (CRUD MVC) ---

  • 1. Crear Contacto
  • 2. Ver Contactos
  • 3. Actualizar Contacto
  • 4. Eliminar Contacto
  • B. Buscar Contacto
  • 5. Salir

Seleccione una opción: Ejemplo de Visualización Tabular La opción "2. Ver Contactos" utiliza la librería tabulate para mostrar los datos de manera ordenada:

--- Lista de Contactos ---

Índice Nombre Teléfono Email Dirección
0 Ana García 123456789 ana@ejemplo.com Calle A
1 Luis Pérez 987654321 luis.p@ejemplo.com Calle B

Diagrama de Clases Simplificado

El modelo de datos sigue un enfoque de herencia:

classDiagram
    class Persona {
        +String nombre
        +String telefono
        +get_info_basica()
    }
    class ContactoModelo {
        +String email
        +String direccion
        +to_dict() Dict
    }
    Persona <|-- ContactoModelo
Loading

Módulo de pruebas funcionales

Se ha incorporado un conjunto de pruebas funcionales para asegurar la integridad y el correcto funcionamiento de la lógica del Modelo (GestorContactos).

Archivo de pruebas

El archivo clave es Pruebas/PruebaContactos.py.

Descripción de las pruebas

Las pruebas utilizan la librería estándar de Python unittest y se centran en el flujo de trabajo del usuario (pruebas funcionales) interactuando directamente con el GestorContactos:

  1. test_creacion_y_lectura_contacto: Verifica que un nuevo contacto añadido pueda ser leído correctamente y que la lista aumente su tamaño.
  2. test_flujo_actualizacion: Asegura que la información de un contacto existente pueda ser modificada (ej. cambiar teléfono) y que el cambio se persista.
  3. test_flujo_eliminacion: Confirma que un contacto puede ser eliminado de la lista y que ya no se puede acceder a él.
  4. test_busqueda_por_nombre: Valida que la función de búsqueda por nombre parcial (buscar_contactos(criterio='nombre')) devuelva los resultados esperados (ej. buscar "Luis" devuelve 2 contactos).
  5. test_busqueda_por_telefono: Valida que la búsqueda por número de teléfono exacto (buscar_contactos(criterio='telefono')) funcione correctamente.

Como ejecutar las pruebas

Para ejecutar el conjunto completo de pruebas funcionales, sigue estos pasos desde tu terminal:

  1. Asegúrate de estar en el directorio raíz del proyecto (Proyecto_CRUD_contactos).
  2. Ejecuta el siguiente comando:

bash python Pruebas/PruebaContactos.py

Desarrollado por:

About

Proyecto CRUD de Contactos aplicando patrón MVC y POO

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors