Proyecto del curso de Programación III, realizado por Sergio Sebastian Lezama Orihuela, Felix Alberto Martinez Olivos, Milton Joel Cordova Navarro, y Angel Toshio Tribeño Hurtado.
ChavezNet implementa un sistema de recomendación de películas utilizando un Árbol Binario de Búsqueda (ABS). Los usuarios pueden registrar sus gustos y obtener recomendaciones basadas en las películas que les gustan. Para entender mejor como funciona este proyecto, en el siguiente enlace se encuentra un video de explicación: link del video
- Inserción de películas en el árbol binario de búsqueda.
- Búsqueda de películas por título, sinopsis y tags.
- Recomendación de películas basadas en los gustos del cliente.
- Serialización de los likes de los clientes en un archivo y carga de los mismos desde un archivo.
- Patrón de diseño Factory Method para la creación de clientes.
- Patrón de diseño Singleton para la creación de la instancia del árbol binario de búsqueda.
- Uso de programación concurrente para la eficiencia de la lectura de datos.
- Uso de programación Genérica para la implementación del árbol.
- C++17 o superior
- Compilador compatible con C++17 (g++, clang++, etc.)
- CMake para la gestión de la compilación
- Clona este repositorio:
git clone https://github.com/SergioSLO/ChavezNet.git
- Navega al directorio del proyecto:
cd ChavezNet - Compila el proyecto:
mkdir build cd build cmake .. make
- Ejecuta el programa.
- El programa permite agregar likes de películas a los clientes y generar recomendaciones basadas en esos gustos.
main.cpp: Contiene la función principal del programa.include/: Contiene los archivos de encabezado para las clasesCliente,Pelicula,Arbol, y las fábricas.Cliente.h: Definición de la claseCliente.Pelicula.h: Definición de la clasePelicula.Arbol.h: Definición de la claseArbol.ClienteFactory.h: Definición de la interfaz de la fábrica de clientes.ClienteConcreteFactory.h: Implementación concreta de la fábrica de clientes.
src/: Contiene las implementaciones de las clases.Cliente.cpp: Implementación de la claseCliente.Pelicula.cpp: Implementación de la clasePelicula.Arbol.cpp: Implementación de la claseArbol.ClienteConcreteFactory.cpp: Implementación de la fábrica concreta de clientes.
data/: Directorio donde se guardan los datos serializados de los likes de los clientes.RawData.csv: Archivo CSV con datos de películas.RawData_fixed.csv: Archivo CSV con datos de películas corregidos.
CMakeLists.txt: Archivo de configuración para la compilación con CMake.README.md: Este archivo de documentación.
-
Design Patterns: Elements of Reusable Object-Oriented Software - Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
- Esta referencia cubre los patrones de diseño que se han utilizado en este proyecto, como Factory Method y Singleton.
-
The C++ Programming Language - Bjarne Stroustrup
- Un recurso esencial para comprender las características avanzadas de C++ utilizadas en este proyecto.
-
Effective Modern C++ - Scott Meyers
- Este libro proporciona una guía sobre las mejores prácticas y técnicas modernas en C++11 y C++14, muchas de las cuales son relevantes para este proyecto.
-
Introduction to Algorithms - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
- Un recurso fundamental para comprender los algoritmos y estructuras de datos, como el árbol binario de búsqueda (ABS), utilizado en este proyecto.
Este proyecto está licenciado bajo la Licencia MIT. Para más detalles, consulta el archivo LICENSE.