You are on page 1of 30

Working Adult

PROYECTO FINAL ANALISIS Y DISEO DE


ALGORITMOS
Integrantes

Cachi Coronado, Claudia


Chvez Alcntara, Alex John
Flores Rujel, Carlos Ignacio
Spray Fernndez, Oscar

Profesor
4 Ciclo Analisis y Diseo de Algoritmos

INTRODUCCIN
Debido a las actuales polticas de Seguridad de la Empresa CLARO, un Usuario
debe tener la menor cantidad de acceso requerido a los Sistemas Informticos
para desempear sus labores.

Este Principio incluye la limitacin de los recursos y aplicaciones accesibles por


el usuario, as como el acceso en tiempo permito, por tal motivo el usuario en
caso necesitase algunos recursos adicionales a los que corresponde por su ROL
o CARGO actual, deber tramitarlos a travs de un requerimiento de solicitud de
accesos.

Mediante este proyecto se propone instalar una solucin informtica que permita
a los usuarios realizar dichos requerimientos y ser atendidas eficazmente sin
contradecir las polticas de Seguridad, por tal motivo algunos requerimientos
podrn ser ATENDIDOS y otros RECHAZADOS.

2
4 Ciclo Analisis y Diseo de Algoritmos

OBJETIVO GENERAL:

Disear un Algoritmo que permita a los usuarios de la Empresa CLARO registrar sus diferentes
solicitudes de peticin de Accesos a los Sistemas y Recursos Informticos, luego enviarlas a
una cola de atencin para que finalmente estas sean Atendidas por el rea de Administracion y
Control de Accesos.

OBJETIVOS ESPECIFICOS:

Analisis del Problema.


Diseo y Desarrollo de un Algoritmo.
o Tcnicas a Usar:
Estructura de Datos: Listas Enlazadas (Simple y Cola).
Ordenamiento: BUBBLESORT (Burbuja).
Bsqueda: Secuencial (Con y Sin Recursividad).
Transformacin del algoritmo en un programa (codificacin).
o Software: Visual Studio 2012.
o Lenguaje de Programacin: C++.
Ejecucin y validacin del programa.

3
4 Ciclo Analisis y Diseo de Algoritmos

MARCO TERICO
ESTRUCTURA DE DATOS

En programacin, una estructura de datos es una forma particular de organizar datos en una
computadora para que pueda ser utilizado de manera eficiente.
Las estructuras de datos se basan generalmente en la capacidad de un ordenador para
recuperar y almacenar datos en cualquier lugar de su memoria.

COLA (INFORMTICA)

La particularidad de una estructura de datos de cola es el hecho de que slo podemos acceder
al primer y al ltimo elemento de la estructura. As mismo, los elementos slo se pueden
eliminar por el principio y slo se pueden aadir por el final de la cola.

LISTAS ENLAZADAS
Una lista enlazada o estructura ligada, es una estructura lineal que almacena una coleccin de
elementos generalmente llamados nodos, en donde cada nodo puede almacenar datos y ligas a
otros nodos. De esta manera los nodos pueden localizarse en cualquier parte de la memoria,
utilizando la referencia que lo relaciona con otro nodo dentro de la estructura.

Las listas enlazadas permiten almacenar informacin en posiciones de memoria que no sean
contiguas; y se almacena en los elementos nodos. Estos nodos poseen dos campos uno para
almacenar la informacin o valor del elemento y otro para el enlace que determina la posicin
del siguiente elemento o nodo de la lista.

ORDENAMIENTO BUBBLESORT

La idea bsica de este algoritmo consiste en comparar pares de elementos adyacentes e


intercambiarlos entre s hasta que todos se encuentren ordenados. Se realizan N-1 pasadas,
transportando en cada una de las mismas el menor o mayor elemento (Segn sea el caso) su
posicin ideal. Al final de las N-1 pasadas los elementos del arreglo estarn ordenados.

BUSQUEDA SECUENCIAL

Este algoritmo inicia en el principio de la lista y va buscando el registro deseado en forma


secuencial hasta que lo encuentra o hasta que ha llegado al fin de la lista y entonces termina.
Este mtodo es aplicable a tablas, arreglos, listas, archivos, etc. que se encuentran en
desorden.

4
4 Ciclo Analisis y Diseo de Algoritmos

FUNCION RECURSIVA
Una funcin recursiva es aquella que se llama a s misma para resolverse.

Una funcin recursiva se resuelve con una llamada a s misma, cambiando el valor de un
parmetro en la llamada a la funcin. A travs de las sucesivas llamadas recursivas a la funcin
se van obteniendo valores que, computados, sirven para obtener el valor de la funcin llamada
originalmente.

El proceso de llamadas recursivas siempre tiene que acabar en una llamada a la funcin que se
resuelve de manera directa, sin necesidad de invocar de nuevo la funcin. Esto ser siempre
necesario, para que llegue un momento que se corten las llamadas reiterativas a la funcin y no
se entre en un bucle infinito de invocaciones.

5
4 Ciclo Analisis y Diseo de Algoritmos

PLANTEAMIENTO DEL PROBLEMA

Debido a la limitaciones de los accesos a los Sistemas informticos, los usuarios de CLARO
debern solicitar los accesos adicionales que requieran mediante una Solicitud, para ello se
requiere implementar un Algoritmo donde el usuario pueda registrar una Solicitud, Encolarla y
Luego pueda ser Atendida.

La solicitud debe tener los siguientes campos:


Nmero de registro, Tipo, Area, Usuario, Fecha de Registro, Fecha de Atencion, Estado.

Considerar las siguientes restricciones:


El Nmero de registro debe ser correlativo y NO editable.
Los campos Tipo, Area, Usuario Podrn ser editables si y solo si el Estado del registro
este en Registrado una vez Encolada ya no se podr editar.
La fecha de registro y atencin sern obtenidas de la Hora del PC.
El campo Estado tendr los siguientes valores respectivamente:
o Registrado->Encolado->Atendido o Rechazado
El Sistema debe almacenar la informacin en una Data (criterio del programador) y debe
cargarse cuando inicie el Sistema y guardar todos los cambiar al cerrar el Sistema.
La Atencion funcionara utilizando el Sistema de COLAS, eso quiere decir que se
Atender el 1ero de la COLA, una vez Atendido el SISTEMA Debe retirar de la COLA
dicho registro y colocar el siguiente como primero.
Una vez Atendida se debe actualizar el campo Estado.

El sistema debe permitir:


Registrar Solicitud.
Modificar una Solicitud en estado Registrado.
Encolar una Solicitud Registrada.
Atender una Solicitud y retirarla de la Cola.
Ordenar las solicitudes por nombre de usuario, tipo, rea, usuario, fecha de registro,
fecha atencin y estado.
Lista todas las solicitudes.
Lista solo las Atendidas.
Listar solo las Rechazadas.
Visualizar la Cola.
Buscar por nmero de Solicitud.

6
4 Ciclo Analisis y Diseo de Algoritmos

DESARROLLO DEL ALGORITMO


Para el desarrollo del algoritmo se utilizara el Lenguaje de programacin C++.
Se crearan 2 Estructura de Datos, una Lista Simple Enlazada para guardar todos los registros y
una Estructura de tipo Cola que servir para enlazar las Solicitudes Encoladas.

El desarrollo se Divide en 2 partes, MODELO y VISTA.

Para el MODELO, Iniciamos creando 4 CLASES:


Solicitud, Nodo, ListaSimple, Cola

La Clase Solicitud: Para almacenar las Solicitudes Registradas.

7
4 Ciclo Analisis y Diseo de Algoritmos
La Clase Nodo: Tendr 2 campos, 1 para guardar la Solicitud y otro para guardar la referencia
del siguiente Nodo de la Lista.

La Clase ListaSimple: Esta Clase generara la Estructura

8
4 Ciclo Analisis y Diseo de Algoritmos

Funcin Registrar una nueva Solicitud.

2 Funciones para formatear la Salida (Cabecera y Cuerpo)

9
4 Ciclo Analisis y Diseo de Algoritmos

Lista todas las solicitudes

Listar las Solicitudes Filtrndolas por Estado

10
4 Ciclo Analisis y Diseo de Algoritmos

Algoritmos de bsqueda

Conseguir el mximo registro para la correlacin

11
4 Ciclo Analisis y Diseo de Algoritmos

Ordenar la lista de solicitudes

12
4 Ciclo Analisis y Diseo de Algoritmos

La Clase Cola: Esta Clase generara la Estructura para la Cola de


Atencin.

Formatear salida

13
4 Ciclo Analisis y Diseo de Algoritmos

Listar colas

14
4 Ciclo Analisis y Diseo de Algoritmos
Para la VISTA crearemos 3 Clases:

Menu
Utils
Pso

La Clase Menu: En esta Clase se crearan las funciones que interactuaran con la VISTA.
Incluimos las libreras y clases necesarias.

15
4 Ciclo Analisis y Diseo de Algoritmos
Mtodo INICIAR: invoca al Men, luego solicita y valida el dato ingresado por el usuario,
dependiendo de qu valor coloco entrara en las diferentes opciones del switch.

16
4 Ciclo Analisis y Diseo de Algoritmos
El mtodo Registrar(): Este mtodo registra la solicitud ingresada por consola, tanto la
ListaSimple como la Cola utilizar este mtodo, y es posible debido a que la Cola es una
Herencia de la ListaSimple ya que manejan la misma estructura.

17
4 Ciclo Analisis y Diseo de Algoritmos
El mtodo Atender(): Desencola el 1er elemento de la Cola, y actualiza su estado y fecha de
atencin.

18
4 Ciclo Analisis y Diseo de Algoritmos
Mtodo Modificar(): Modifica una Solicitud en estado Registrado

19
4 Ciclo Analisis y Diseo de Algoritmos

20
4 Ciclo Analisis y Diseo de Algoritmos
El Mtodo SeleccionarOpcion(): sirve para imprimir lo que se mostrar en el Menu de la
Consola.

21
4 Ciclo Analisis y Diseo de Algoritmos
El Mtodo Encolar(): Sirve para Encolar una Solicitud Registrada

22
4 Ciclo Analisis y Diseo de Algoritmos

MostrarSolicitud(): Muestra cuyo nmero es igual al parmetro que se enva a la funcin e


imprime el resultado encontrado, si no obtiene resultado tambin informa al usuario.

buscarSolicitud() : Solicitud el registro al usuario e invoca al metod anterior para mostrar la


informacin.

ListarxEstado(): Lista las solicitudes siempre y cuando su estado coincida con el filtro.

23
4 Ciclo Analisis y Diseo de Algoritmos

Listar (): Lista todas las solicitudes tanto de la lista como de la cola, el filtro se enva por
parmetro.

finAccion(): Sirve para regresar al men principal.

ordenar(): Muestra la lista de todas las solicitudes ordenada por el criterio indicado.

24
4 Ciclo Analisis y Diseo de Algoritmos

La Clase Utils: Esta clase no es necesaria instanciarla ya que sus mtodos son estticos, son
funciones adicionales de ayuda.

static const string currentDateTime(): esta funcin nos permite obtener la hora actual del PC.

static bool validarEntero(string x): esta funcin nos permite validar si el contenido dentro de
un string es entero.

25
4 Ciclo Analisis y Diseo de Algoritmos

static bool SetWindow(int Width, int Height): esta funcin nos permite redimensionar el
tamao de la consola.

26
4 Ciclo Analisis y Diseo de Algoritmos
static void Grabar(ListaSimple lst): Esta funcin guarda la informacin todos los registros en
archivo llamada Data.txt que se encuentra en la raz del programa.

27
4 Ciclo Analisis y Diseo de Algoritmos
static void Cargar(ListaSimple &lst, Cola &cola): Esta funcin carga la informacin del archivo
Data.txt y la enva a las instancias de las clases ListaSimple y Cola.

28
4 Ciclo Analisis y Diseo de Algoritmos

static int split(string **arr,string cadena,const char * separador): Esta funcin recibe un arreglo
como puntero y lo llena con los datos de una cadena separado por comas, retorna el Size del
arreglo, nos va a servir para la lectura lnea por lnea del Data.txt y separar sus valores por
comas.

29
4 Ciclo Analisis y Diseo de Algoritmos

La Clase pso: Esta Clase contiene el Mtodo Main el cual inicia el programa.

30

You might also like