Está en la página 1de 25

República Dominicana

UNIVERSIDAD AUTÓNOMA DE SANTO DOMINGO


Recinto Santiago
Facultad de ciencias
Escuela de informática.

Licenciatura en informática.
Algoritmos Computacionales.

Sección W02

Tema de la tarea
Proyecto Final: Caso Word’s Train.
Sustentantes:
Randy Antonio Marmol Tavares
100457506
Eulise Mauricio Matías Martínez.
100472000

Profesor:
Francisco Acosta

Santiago de los Caballeros


República Dominicana
Los conceptos emitidos en el
Fecha 16/05/2021 presente trabajo, es de la
exclusiva responsabilidad del
estudiante.
índice de contenido

INTRODUCCIÓN…………………………………………………………………………………
…………………1
CAPITULO I: PLANTEAMIENTO DEL
PROBLEMA………………………………………………….2
1.1 Descripción de la situación
…………………………………………………………………………3
1.2 Describir la actividad principal de la empresa……………………………………………….4
1.3 Posible solución a la
situación………………………………………………………………………5
1.4 Identificación de las variables y sus
tipos……………………………………………………..6
1.5 Alcance del
proyecto…………………………………………………………………………………….7
CAPITULO II: MARCO
CONCEPTUAl……………………………………………………………………..8
2.1 Definición de conceptos utilizados en este proyecto………………………………….9
2.1.1 Estructura de
datos…………………………………………………………………………………….10
2.1.2 Tipo de archivo
utilizado……………………………………………………………………………..11
2.1.3 Estrategia para el diseño del
algoritmo………………………………………………………12
2.1.4 Objeto utilizado (Lista, Pilas, Filas, Árbol)
…………………………………………………..13
2.1.5 Método de ordenación y
búsqueda…………………………………………………………….14
CAPITULO III: SOLUCIÓN DEL PROBLEMA
……………………………………………………………15
3.1 Análisis del
problema……………………………………………………………………………………..16
3.2 Diseño del
algoritmo……………………………………………………………………………………….17
3.3 Verificación del
algoritmo………………………………………………………………………………..18
3.4 Codificación del algoritmo y lenguaje de programación………………………………..19
3.5 Ejecución del
programa…………………………………………………………………………………….20
3.6 Verificación del
programa………………………………………………………………………………..21
3.7 Programa de
trabajo…………………………………………………………………………………………22
CAPITULO IV: PRESENTACIÓN DE LA
APLICACIÓN…………………………………………………..23
4.1 Pantalla principal y su
descripción……………………………………………………………………24
4.2 Pantalla de captura de
datos…………………………………………………………………………….25
4.3 Pantalla de despliegue de
información……………………………………………………………..26
4.4 Muestra de los archivos
creados……………………………………………………………………….27
CAPITULO V: EXPERIENCIA ADQUIRIDA EN LA MATERIA Y EN EL
PROYECTO……………28
CONCLUSIÓN……………………………………………………………………………………
……………………….29
REFERENCIAS
BIBLIOGRÁFICAS……………………………………………………………………………….
30
Introducción

El siguiente trabajo es producto de la investigación, análisis y diseño de un algoritmo para la


solución a un problema que se presenta en el ejercicio 2 de los casos para analizar y entregar
en el proyecto de la asignatura Algoritmos computacionales.

Dicho trabajo presenta todos los pasos dados para diseñar un algoritmo eficiente que
solucione el problema presentado en la empresa, desde el planteamiento del problema hasta
el algoritmo final para resolver el problema.
CAPITULO I: PLANTEAMIENTO DEL PROBLEMA

1.1 Descripción de la situación

Empresa World’s Tren

Crear un sistema que pueda almacenar datos para la División de

Catalogo y que cuando se añade un cliente inicialmente solo se añade la información conocida.
Los saldos actualizados, fecha de transacción y otra información referente al archivo de
almacén de datos de cliente se añadirán cuando el negocio ha avanzado. Los registros de
archivo maestro de clientes son copiados a un archivo de historia y purgados si el cliente no ha
comprado un artículo en los últimos cinco años. Un cliente puede ser conservado aunque no
haya hecho compras si ha pedido un catálogo.
1.2 Describir la actividad principal de la empresa

Word´s trains es una empresa dedicada a la venta de boletos de tren, la empresa ofrece una
amplia variedad de catálogos a los cuales los clientes pueden acceder y comprar. La empresa
trabaja de forma física y cada cliente puede ir a una de sus oficinas y adquirir dichos boletos. La
empresa también vende paquetes de viajes que los clientes pueden adquirir.
1.3 Posible solución a la situación
Creación de un sistema que ayude a mejorar la venta y la seguridad de la venta de servicio en la
empresa además ayuda a tener un control de venta y contabilidad exacta a tiempo récord.
1.4 Identificación de las variables y sus tipos

En el análisis y diseño de este algoritmo podemos identificar cuales tipos de variables podemos
usar para que nos ayuden a darle mejor solución al problema.
Entre las Variables mas comunes que vamos a utilizar están las variables de tipo cadena
(String), estas nos van a servir para almacenar todos los datos de tipo texto del programa como
los datos del clientes, o la información básica de los catálogos como nombre y descripción.

También Vamos a usar variables de tipo entrada y salida de información como son las ofstream
o ifstrem que nos van a servir para guardar datos en ficheros para luego visualizarlos.
Además vamos a guardar datos numéricos en variables tipo INT y Float para hacer cálculos
numéricos.
1.5 Alcance del proyecto
Este proyecto puede abarcar lo que es el catálogo, registro de cliente, transacciones del cliente,
selección de compras de boletas, operación de saldo y detalle del catalogo.
CAPITULO II: MARCO Conceptual
2.1 Definición de conceptos utilizados en este proyecto

Catálogo: Lista o relación ordenada con algún criterio de libros, documentos, monedas,
objetos en venta, etc., de una persona, empresa o institución, que generalmente contiene una
breve descripción del objeto relacionado y ciertos datos de interés.

Cliente: persona que utiliza los servicios de un profesional o de una empresa,


especialmente la que lo hace regularmente.

Dirección: Línea imaginaria establecida entre dos puntos; en especial cuando indica
orientación o destino.

Monto: Suma final de varias partidas o cantidades

Artículo de catálogo: Un catálogo de productos es una recopilación de productos con la


información sobre los precios.
2.2Estructura de datos

La estructura de datos que decidimos utilizar se basa en guardar los datos ingresados por el
usuario y guardarlos en arreglos que luego procedimos a guardar en archivos de textos para
ser consultados luego.

Nos ayudamos de pilas y colas para tratar de manera correcta con los datos ingresados y así
manejar todo de manera mas fácil.
2.1.2 Tipo de archivo utilizado

El tipo de archivo utilizado para diseñar de manera correcta este algoritmo fue el sistema de
ficheros ya que es un método sencillo que nos permitía manejar los datos de manera correcta
y sin muchas complicaciones, trabajamos con dos ficheros uno para guardar los datos de los
clientes y otro para guardar los datos de los catalogos
2.1.3 Estrategia para el diseño del algoritmo

Usar un algoritmo capaz de garantizar la ejecución rápida para poder ayudar al equipo a la hora
de ejecución, para eso creamos un algoritmo que sea simple y que a su vez cumpla con lo
demandado del cliente además que incluya una parte innovadora e intuitiva .
2.1.4 Objeto utilizado (Lista, Pilas, Filas, Árbol)
Dentro de los objetos utilizados las pilas fueron la mejor opción ya que permite manipular el
orden de los datos cosa que es muy conveniente para desplegar la información en un orden
especifico. Además las pilas a nivel de programación tienen una sintaxis mas cómoda y su
lógica es más fácil de entender que el de otro tipo de objetos.
Método de ordenación y búsqueda

Ordenamiento con árbol binario es un algoritmo de ordenamiento, el cual ordena sus


elementos haciendo uso de un árbol binario de búsqueda. Se basa en ir construyendo poco a
poco el árbol binario introduciendo cada uno de los elementos, los cuales quedarán ya
ordenados. Después, se obtiene la lista de los elementos ordenados recorriendo el árbol en
orden.

Insertar elementos en un árbol binario de búsqueda tiene una complejidad O(log n). Entonces,
agregar n elementos a un árbol cualquiera da como resultado una complejidad O(n log n).
Además, recorrer los elementos del árbol en orden tiene complejidad O(n).
CAPITULO III: SOLUCIÓN DEL PROBLEMA
Análisis del problema.

Empresa World’s Tren Almacenar datos para la División de Catalogo. Cuando se añade un
cliente inicialmente solo se añade la información conocida. Los saldos actualizados, fecha de
transacción y otra información referente al archivo de almacén de datos de cliente se añadirán
cuando el negocio ha avanzado. Los registros de archivo maestro de clientes son copiados a un
archivo de historia y purgados si el cliente no ha comprado un artículo en los últimos cinco
años. Un cliente puede ser conservado aunque no haya hecho compras si ha pedido un
catalogo.

El problema principal de la empresa es que necesita un programa para administrar la


información de los clientes y catálogos.

Diseño del algoritmo

Idea general

1- Registrar clientes

2- Ver información de los clientes

3- Registrar Catálogos

4- Ver Información de catálogos

Algoritmo especifico

1- Definir variables

2- Ingresar información de cliente

3- Guardar información de cliente

4- Ver información cliente

5- Salir del menú de clientes

6- Ingresar nuevo catalogo

7- Guardar catalogo

8- Ver información del catalogo

9- Realizar operaciones cliente-catalogo

10- Guardar resultados

codificación del Algoritmo.

//Nombres: Randy Marmol & Eulise Matias


//Matriculas: 100457506 & 100472000

//Proyecto Final de Algoritmos Computacionales

//Caso: Empresa words train

//Programa que registra los clientes y catalogos de la empresa con archivos

//Fecha: 16/05/2021 9:58:00 PM

//ProyectoFinal.cpp

#include<iostream>

#include<windows.h>

#include <unistd.h>

#include<stdio.h>

#include <string>

#include <time.h>

#include<fstream>

using namespace std;

//datos clientes

string Codigo;

string Rnc;

string Nombre;

string Apellidos;

string Direccion;
string Telefono;

string Correo;

int Opcion;

//datos catalogo

string NombreCatalogo;

string NombreArticulo;

float PrecioArticulo;

float Cantidad;

float Impuesto;

float Descuento;

float total = (Cantidad*PrecioArticulo)+(Impuesto)-Descuento;

void PantallaPrincipal(){

system("color 5B");

time_t rawtime; struct tm * timeinfo;

time ( &rawtime );

timeinfo = localtime ( &rawtime );

printf ( "\t\t\t\t\t\t\t\t\t\tFecha %s", asctime (timeinfo) );


cout<<"\t\t\t____________\n";

cout<<"\t\t\t----------------------------------\n";

cout<<"\t\t\t| Empresa World's Tren |\n";

cout<<"\t\t\t____________\n";

cout<<"\t\t\t¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n\n";

cout<<"\n\t<<Programa para almacenar datos para la division de catalogo>>\n";

cout<<"\n\tP R E S I O N E C U A L Q U I E R T E C L A P A R A \n";

cout<<"\t\t\t [C O N T I N U A R] \n";

cout<<"\n\n\
t>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n";

system("pause>nul");

system("cls");

void DatosClientes(){

ofstream Guardar;

ifstream Mostrar;

ofstream GuardarCatalogo;

ifstream MostrarCatalogo;

GuardarCatalogo.open("Catalogo.txt",ios::app);

MostrarCatalogo.open("Catalogo.txt",ios::in);
Guardar.open("fichero.txt",ios::app);

Mostrar.open("fichero.txt",ios::in);

cout<<"\n\n... D A T O S D E L C L I E N T E...";

do{

cout<<"\n\n\n ** M E N U D E O P C I O N E S **";

cout <<"\n\nOpcion 1: Registrar cliente..";

cout <<"\n\nOpcion 2: ver cliente..";

cout <<"\n\nOpcion 3: Registrar Catalogo..";

cout <<"\n\nOpcion 4: Ver Catalogos..";

cout<<"\n\nIngrese Opcion: ";cin>>Opcion;

system("cls");

if(Opcion==1){

cout<<"\n\n R E G I S T R A R C L I E N T E S ";

cout<<"\n\n1..Nombre: "; cin>>Nombre;

cout<<"\n2..Apellidos: ";cin>>Apellidos;

cout<<"\n3..RNC: ";cin>>Rnc;

cout<<"\n4..Codigo: ";cin>>Codigo;

cout<<"\n5..Direccion: ";cin>>Direccion;

cout<<"\n6..Te…
CAPITULO IV: PRESENTACIÓN DE LA APLICACIÓN

4.1 Pantalla principal y su descripción


4.2 Pantalla de captura de datos
4.3 Pantalla de despliegue de información
4.4 Muestra de los archivos creados
CAPITULO V: EXPERIENCIA ADQUIRIDA EN LA MATERIA Y EN EL PROYECTO

CONCLUSIÓN
El proyecto nos ayudó mucho a implementar todo ese conocimiento que fuimos adquiriendo a
lo largo del semestre, tanto así que pusimos en práctica lo que es trabajar con algoritmo eficaz
que nos ayuden a crear programas de manera profesional, además utilizamos lo que son los
métodos de búsquedas, que nos ayudaron a recolectar nuestros datos de manera mas concreta y
por último también implementamos la pila.
En conclusión, veo lo importante que es esta materia para la carrera de informática, nos ayuda a
tener una idea de cómo trabajar con nuestros programas y tener una mejor estructura de estos .

También podría gustarte