Informe Trabajo Parcial 2024-1)

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

Universidad Peruana de Ciencias Aplicadas

INFORME DEL TRABAJO PARCIAL

CURSO ALGORITMO Y ESTRUCTURA DE DATOS

Carrera de: Ingeniería de Software y Ciencias de la computación

Sección: CC35

Proyecto: 10 - RENIEC

Alumnos:
Código Nombres y apellidos Valoración
(0-20)
u202211920 Arce Saavedra, José Francisco 20
u202311469 Arroyo Gonzales, Emily Juliette 20
u202319563 Muñiz Huayanca, Percy Alonso 20

2024
1. Introducción

En el mundo actual, la gestión eficiente de datos de documentos de identidad es crucial en


una variedad de entornos, desde empresas hasta instituciones gubernamentales. Sin
embargo, el manejo manual de estos datos puede ser propenso a errores y consumir
mucho tiempo.

El objetivo de nuestro proyecto es desarrollar un programa en C++ que simplifique y agilice


la gestión de datos de documentos de identidad. Buscamos proporcionar una solución
robusta y eficiente que permita almacenar, buscar, modificar y eliminar datos de
documentos de manera intuitiva y segura.

Nuestro programa utiliza una combinación de arreglos, lambdas y templates para gestionar
los datos de los documentos de identidad. Los arreglos se utilizan para almacenar los datos
de manera estructurada, mientras que las lambdas se emplean para implementar
funciones de búsqueda y modificación de forma flexible. Además, los templates se utilizan
para hacer que el programa sea genérico y adaptable a diferentes tipos de documentos de
identidad.

En este proyecto, hemos demostrado cómo el uso de arreglos, lambdas y templates en C++
puede facilitar significativamente la gestión de datos de documentos de identidad. Nuestra
solución ofrece una interfaz fácil de usar y eficiente, lo que permite a los usuarios manejar
grandes volúmenes de datos de manera rápida y precisa. En conclusión, nuestro programa
proporciona una herramienta valiosa para mejorar la eficiencia y la precisión en la gestión
de datos de documentos de identidad en diversos contextos.

2. Diseño
2.1. Diagrama de clase en UML
3. Estructuras de datos
3.1. Implementación de estructuras de datos (listas simples, dobles enlazadas e iteradores)
con sus métodos respectivos por cada integrante.
Clase Carneordenado:
● Clase DNI ordenado
4. Codificación
4.1. Análisis de Complejidad de 3 métodos que consideren más importantes, desarrollo del
diagrama de clases UML.
● Clase DNI_datos: Esta clase se encarga de mostrar los datos del DNI que el usuario ha
ingresado.

La complejidad de esta clase, su Big(O), es de O(1).

● Clase dniOrdenado: Esta clase se encarga de ordenar los datos de los DNI y luego
retorna el arreglo de todos los datos.

La complejidad de esta clase es de O(n log n) principalmente por la función


ordenarYMostrar.

Presenta un Big O(1) constante.

4.2. Lambdas y templates en cada estructura de datos justificados.

● Clase Cantidad:
En esta clase se usan templates para poder hacer el código más abstracto y flexible al momento
de usar datos. Esto permite trabajar con diferentes datos y tipos de datos para no tener que
escribir más de una sola clase. El uso de templates también nos ayuda a que el código sea
menos propenso a errores.

4.3. Implementación de al menos un método por estudiante con uso de recursividad.

En esta parte de la clase Calidad se usa recursividad para comprobar si es que hemos llegado al
límite del arreglo de datos. Tomando en cuenta el string Calidad para la calidad migratoria de
un individuo con Carnet de Extranjería e index que es el índice del arreglo, estas dos variables
se comparan para contar la cantidad de elementos que tienen calidad migratoria. La función se
llama a sí misma hasta que recorra todo el arreglo.

4.4. Implementación de algoritmos de ordenamiento

En esta clase se usa la función sort para ordenar los arreglos de todos los datos de un DNI por
número de DNI de mayor a menor. compararDNIs compara si el valor del DNI de diferentes
arreglos es mayor o menor entre ellos y ordenarYMostrar muestra los datos de los DNI ya
ordenados.

4.5. Interfaz de usuario para verificar la funcionalidad, con una buena estética.

Nuestro proyecto se enfoca en tener una interfaz simple de entender y que también sea
atractiva para los usuarios. Algunos ejemplos se ven a continuación:
Nuestro código ha sido diseñado para abrir archivos de texto (.txt), leer su contenido y
utilizarlos dentro de las diversas clases del programa, siempre y cuando el archivo en cuestión
siga una sintaxis correcta y esté ordenado de manera adecuada

5. Conclusión

Después de analizar detenidamente el tema, como grupo llegamos a la conclusión de que

diversas instituciones podrían obtener grandes beneficios al implementar programación y

estructuras de datos para organizar sus bases de datos, facilitando así la búsqueda de datos

específicos de manera eficiente. Además, hemos observado que el uso de plantillas y funciones

anónimas (lambdas) resulta muy conveniente en este contexto, ya que posibilitan la interacción

con diversos tipos de datos sin la necesidad de crear una clase o función para cada uno de

ellos. Por último, tenemos la expectativa de que el código que hemos desarrollado nos sea útil

en el futuro, permitiéndonos aplicarlo en los ámbitos específicos en los que nos

especialicemos.
6. Referencias bibliográficas

● ASCII (1960) American Standard Code for Information Interchange recuperado de:
https://elcodigoascii.com.ar

López, E. (2022, 7 julio). Concepto de recursividad en C++ - C++ avanzado 2 [Vídeo]. LinkedIn

https://es.linkedin.com/learning/c-plus-plus-avanzado-2/concepto-de-recursividad-en-c-plus-plus

Raffo Lecca, E. (2007). GENERIC PROGRAMMING IN C++, USING METAPROGRAMMING.

https://alicia.concytec.gob.pe/vufind/Record/REVUNMSM_e96dc63c991c71d9c33f5e6eda4c8545/Descript

ion#tabnav

También podría gustarte