[EDD]Proyecto2

8
Objetivo Que el estudiante aplique los conocimientos obtenidos sobre Estructuras de Datos en memoria a lo largo del laboratorio, así como algoritmos optimizados en diferentes lenguajes de programación en el desarrollo de una aplicación de control para una biblioteca. Descripción general En el ámbito de una biblioteca, existen diferentes problemas a solucionar, uno de ellos es la gestión de libros y usuarios de la misma. Con este proyecto se busca realizar una aplicación móvil en la que los empleados puedan llevar el control, de una forma sencilla e intuitiva, del estado de los diferentes libros de una biblioteca. Además, dicha aplicación, debe permitir administrar el material que se encuentra disponible, como los usuarios, en este caso estudiantes. Se tendrá una base de datos en memoria, formada por diferentes estructuras de datos, buscando con ellas la optimización en el acceso a la información. Se requiere también que la comunicación entre la base de datos en memoria y la aplicación móvil se haga a través de servicios web, esto para implementar una alta disponibilidad en el servicio. PROYECTO 2 ESTRUCTURAS DE DATOS A PRIMER SEMESTRE 2015 AUXILIAR: JOSÉ VARGAS

description

proyecto

Transcript of [EDD]Proyecto2

  • Objetivo Que el estudiante aplique los conocimientos obtenidos sobre Estructuras de Datos en memoria a lo largo del

    laboratorio, as como algoritmos optimizados en diferentes lenguajes de programacin en el desarrollo de una

    aplicacin de control para una biblioteca.

    Descripcin general En el mbito de una biblioteca, existen diferentes problemas a solucionar, uno de ellos es la gestin de libros y

    usuarios de la misma. Con este proyecto se busca realizar una aplicacin mvil en la que los empleados puedan

    llevar el control, de una forma sencilla e intuitiva, del estado de los diferentes libros de una biblioteca. Adems,

    dicha aplicacin, debe permitir administrar el material que se encuentra disponible, como los usuarios, en este

    caso estudiantes.

    Se tendr una base de datos en memoria, formada por diferentes estructuras de datos, buscando con ellas la

    optimizacin en el acceso a la informacin.

    Se requiere tambin que la comunicacin entre la base de datos en memoria y la aplicacin mvil se haga a travs

    de servicios web, esto para implementar una alta disponibilidad en el servicio.

    PROYECTO 2 ESTRUCTURAS DE DATOS A PRIMER SEMESTRE 2015 AUXILIAR: JOS VARGAS

  • Visin general A continuacin se muestra el esquema que se desea tenga la solucin.

    Arquitectura requerida:

    InternetBase de datos en memoria

    C/C++

    S1

    Web ServicesASP.net && C#

    S2

    APP MovilAndroid

    APP

    De ac en delante, como se muestra en el diagrama, por facilidad vamos a llamar al servidor de base de datos en

    memoria como S1, al servidor de servicios web como S2 y a la aplicacin Android APP.

    Descripcin de elementos: S1: estar basado en lenguaje C/C++, dicha aplicacin debe tener interfaz grfica intuitiva, y es donde va a estar

    almacenada la base de datos en memoria formada por estructuras de datos, luego se detallan las estructuras de

    datos a implementar.

    S2: estar basado en lenguaje ASP.net y C#, dicho servidor debe proveer un set de servicios web listos para ser

    consumidos por APP.

    APP: estar basada en lenguaje Android, dicha aplicacin deber brindar una interfaz sencilla e intuitiva para

    realizar operaciones referentes al prstamo y devolucin de libros.

    Comunicacin entre elementos: S1 se comunicara de manera bidireccional con S2 por medio de SOCKETs.

    S2 se comunicara de manera bidireccional con APP por medio de WEBSERVICES.

  • Implementacin Una biblioteca cuenta con libreras, las cuales tienen asociado un tipo de libro (Ciencias Naturales, Ciencias

    Sociales, Matemtica, etc.), cada una de las libreras posee una cantidad de libros.

    Es necesario implementar un sistema de prstamos y devoluciones, llevando un log de transacciones de cada una

    de las operaciones que se realicen.

    Funcionalidad S1

    Se busca implementar una base de datos en memoria formada por diferentes estructuras de datos

    interrelacionadas entre s, la funcionalidad que se requiere tenga la aplicacin es la siguiente:

    Cargar archivos de entrada: a continuacin se muestran los diferentes archivos de entrada que se podrn

    cargar, para realizar la insercin de los primeros datos en las estructuras de datos.

    o Estudiantes:

    Encabezado

    carnet,nombres,apellidos,carrera,semestre

    Atributo Tipo Ejemplo

    carnet Numrico 201100000

    Nombres Alfabtico Armando Patito

    Apellidos Alfabtico Ramrez Blanco

    Carrera Alfabtico Ingeniera en Ciencias y Sistemas

    Semestre Numrico 1, 5, 6, 10, etc.

    o Empleados:

    Encabezado

    registro,nombres,apellidos,identificacion,contrasea

    Atributo Tipo Ejemplo

    Registro Numrico 2011000

    Nombres Alfabtico Armando Patito

    Apellidos Alfabtico Ramrez Blanco

    Identificacin Alfanumerico 00291-0293a-b0

    Contrasea Alfanumrico 123@abc

    o Libros:

    Encabezado

    Id_libro,titulo,autor,paginas,numero_ejemplares

    Atributo Tipo Ejemplo

    Id_libro Numrico 1, 5, 10, etc.

    Titulo Alfanumrico Estructuras de datos en memoria 5ta Ed.

    Autor Alfabtico Ramrez Castillo

    Paginas Numrico 200, 100, 150, etc.

    Numero_ejemplares Numrico 1, 5, 6, 10, etc.

    Observaciones:

    Todos los archivos son csv, y el caractr de separacin ser la coma ,.

  • Agregar o borrar empleado: agregar o borrar un empleado en la base de datos, solo los empleados

    agregados pueden hacer uso de APP

    Generar reportes: se deben generar los siguientes reportes:

    o Graphviz:

    rbol B por librera N: se debe graficar el rbol B asociado a una librera N.

    Libreras: se debe graficar la estructura de datos en donde estn almacenadas las

    libreras.

    Lista de estudiantes: se debe mostrar la estructura de datos en donde estn

    almacenados los estudiantes.

    Lista de empleados: se debe mostrar la estructura de datos en donde estn almacenados

    los empleados.

    Tabla hash completa: graficar la tabla hash de manera completa

    rbol AVL: se deber graficar el rbol AVL completo

    o En la aplicacin:

    Estudiantes: cuantos estudiantes se han registrado, cuantos estudiantes se han

    eliminado y la diferencia entre ambos

    Libros: cuantos libros se han agregado, cuntos libros se han eliminado y la diferencia

    entre ambos

    Libreras: cuantas libreras se han agregado, cuantas libreras se han eliminado y la

    diferencia entre ambos

    Prstamos y devoluciones: cuantos prestamos han habido, cuantas devoluciones han

    habido y la diferencia entre ambos

    Bsquedas de libros: cuantas bsquedas de libros se han realizado

    Bsquedas de estudiantes: Cuantas bsquedas de estudiantes se han realizado

    Log de transacciones por id: presentar log de transacciones por id_transaccion

    Log de transacciones completo: presentar todo el log de transacciones

    Observaciones:

    El primer paso es la carga de archivos, esto para tener datos iniciales en S1.

    Se debe tener una opcin para poner a escuchar a S1 aceptando as peticiones desde S2.

    Durante todo el transcurso de la aplicacin es posible seguir agregando, eliminando, etc., sobre

    las diferentes estructuras de datos en S1, as como generar reportes en S1.

    S2

    Se busca implementar un set de servicios web. APP debe consumir dichos servicios web para realizar las

    funcionalidades que posee. Los servicios web a implementar en este servidor estn a discrecin del estudiante, es

    decir, el estudiante debe crear tantos servicios web y funcionalidad interna como lo necesite.

    APP

    Implementar una aplicacin para sistema operativo Android, en la cual se pueda llevar el control de todas las

    transacciones que se pueden realizar dentro de la biblioteca. A continuacin se muestra la funcionalidad que se

    requiere tenga dicha aplicacin:

  • Login: en esta opcin, un empleado ingresara sus credenciales para hacer uso de la aplicacin.

    [1] Registrar un estudiante: esta opcin registra un nuevo estudiante en el sistema para que este pueda

    hacer uso de los servicios de la biblioteca, dgase prstamos y devoluciones de libros.

    [2] Agregar libro: en esta opcin registra un nuevo libro en la base de datos de la biblioteca.

    [3] Eliminar libro: en esta opcin se elimina un libro de la base de datos de la biblioteca.

    [4] Agregar librera: en esta opcin se agrega una nueva librera a la base de datos de la biblioteca.

    [5] Eliminar librera: se retira una librera de la base de datos de la biblioteca.

    [6] Realizar prstamo: se realiza el prstamo de un libro a un estudiante registrado.

    [7] Realizar devolucin: se realiza la devolucin de un libro prestado anteriormente por un estudiante

    registrado.

    Buscar libro: en esta opcin se realiza la bsqueda de libros en la base de datos una vez encontrado el

    libro que se busca, se deber tener la opcin de ver la informacin del libro buscado, mostrando: Datos

    del libro, nmero de ejemplares disponibles, y adems se debe tener la opcin de prestarlo a un

    estudiante registrado, a continuacin se muestra los criterios de bsqueda:

    o [8] Por autor: se debe buscar todos los libros pertenecientes a un autor X, y presentar todas las

    coincidencias encontradas.

    o [9] Por nombre: se debe buscar todos los libros que coincidan con el nombre X proporcionado.

    o [10] Por nombre y tipo: se debe buscar todos los libros que coincidan con el nombre X

    proporcionado en la librera Y proporcionada.

    o [11] Por id_libro y tipo: se debe buscar el libro asociado al id_libro proporcionado y al tipo X

    proporcionado.

    o [12] Todos los libros: se debe mostrar todos los libros disponibles.

    Observacin:

    Los resultados mostrados solo deben ser libros con disponibilidad, es decir

    numero_ejemplares-numero_ejemplares_prestados > 0.

    Buscar estudiante: en esta opcin se realiza la bsqueda de estudiantes dentro de la base de datos, una

    vez encontrado el estudiante buscado, se deber tener la opcin de ver la informacin de dicho

    estudiante, mostrando: Datos del estudiante, total libros prestados y total de libros en su poder. A

    continuacin se muestra los criterios de bsqueda:

    o [13] Por carnet: se busca a un estudiante por su nmero de carnet.

    o [14] Por nombre: se deber buscar entre todos los estudiantes registrados las coincidencias con

    el nombre X requerido y presentar todas las coincidencias encontradas.

    o [15] Todos: se deber buscar a todos los estudiantes registrados.

    Observaciones:

    En todas las transacciones realizadas se deben mostrar notificaciones de informacin, advertencia y/o

    error.

    De la lista de funcionalidades anterior, se debe registrar en S1 un elemento en el log de operaciones por

    cada una de las operaciones que tenga asociado un [id].

    Estructuras de datos A continuacin se presentan las estructuras de datos que se requiere tenga S1 y que en conjunto formaran una

    base de datos en memoria:

  • 1. Libreras (Lista doblemente enlazada ordenada): en esta estructura se almacenara un elemento por cada

    una de las libreras que posee la biblioteca, los datos mnimos necesarios para dichos elementos son:

    a. Id_librera: numero entero que se auto genera al momento de agregar una nueva librera.

    b. Tipo_librera: nombre del tipo de libros contenidos en la librera (Historia, Matemtica,

    Estadstica, etc.).

    c. Cantidad_libros: nmero que denota la cantidad de libros que contiene la librera.

    d. Libros (rbol B[5]): en esta estructura se almacenaran los libros que contiene la librera.

    Librosrbol B[5] Libros

    rbol B[5]

    Librosrbol B[5]

    Id: 1Tipo: Estadstica

    Cantidad_libros: 10

    Id: 1Tipo: Matemtica

    Cantidad_libros: 12

    Id: 1Tipo: Sociales

    Cantidad_libros: 20

    Ejemplo grafico lista doblemente enlazada ordenada de libreras

    2. Libro (Nodo dentro de un rbol B[5]): se almacena la informacin referente a un libro, los datos mnimos

    necesarios para dichos elementos son:

    a. Id_libro: numero entero que se auto genera al momento de agregar un nuevo libro a una librera.

    b. Ttulo: ttulo del libro.

    c. Autor: autor del libro.

    d. Pginas: nmero de pginas que contiene el libro.

    e. Numero_ejemplares: nmero de ejemplares de dicho libro.

    f. Numero_ejemplares_prestados: nmero de ejemplares de dicho libro que se encuentran

    prestados.

    3. Estudiantes (lista doblemente enlazada circular): se almacena la informacin referente a los estudiantes

    registrados, los datos mnimos necesarios para los elementos son:

    a. Carnet: nmero de carnet del estudiante.

    b. Nombres: nombres del estudiante.

    c. Apellidos: apellidos del estudiante.

    d. Carrera: carrera del estudiante.

    e. Semestre: semestre que est cursando el estudiante al momento de registrarse.

    4. Empleados (lista doblemente enlazada circular): se almacena la informacin referente a los empleados de

    la biblioteca, los datos mnimos necesarios para los elementos son:

  • a. Registro: nmero de registro de personal del empleado.

    b. Nombres: nombres del empleado.

    c. Apellidos: apellidos del empleado.

    d. Identificacin: nmero de identificacin el empleado.

    e. Contrasea: clave de acceso del empleado para utilizar APP.

    5. Log de transacciones (Tabla hash): se almacena los elementos del log de transacciones generados por

    APP, los datos mnimos necesarios para los elementos son:

    a. Llave: llave generada para cada elemento de la tabla hash. El modo de generacin de dicha llave

    es: la suma de (carnet||registro)+id_transaccion.

    b. Carnet || registro: dependiendo de a quin va dirigida la transaccin.

    c. Id_transaccion: se almacena el [id] de la transaccin que genero el elemento en el log.

    Observacin:

    Tanto fecha_transaccion como hora_transaccion son datos que se tomaran de S1 (la hora y

    fecha del servidor).

    La solucin a utilizar para solucionar colisiones es una lista doblemente enlazada para cada

    elemento de la tabla hash. Los datos mnimos necesarios para cada elemento de dicha lista

    son:

    o Fecha_transaccion: se almacena la fecha en que se realiz la transaccin.

    o Hora_transaccion: se almacena la hora en que se realiz la transaccin.

    o Descripcin de la transaccin: se almacena una breve descripcin sobre la

    transaccin realizada.

    201100001Carnet: 201100000Id_transaccion: 1

    201100003Carnet: 201100000Id_transaccion: 3

    201100005Carnet: 201100000Id_transaccion: 5

    20/04/201514:50 Hrs

    Se registro al estudiante 201100010

    20/04/201514:55 Hrs

    Se registro al estudiante 201100011

    20/04/201515:50 Hrs

    Se elimino el libro 10 de Sociales

    20/04/201515:30 Hrs

    Se elimino la librera de Estadstica

    Ejemplo grafico tabla hash log de transacciones

    6. Llaves de hash (rbol AVL): se almacenan todas las llaves generadas para la tabla hash, a modo de tener

    una referencia para realizar iteraciones sobre la tabla hash, los datos mnimos necesarios para los

    elementos son:

    a. Llave: nmero que representa una llave en la tabla hash.

  • Entregables Un archivo con extensin .rar con nombre [EDD]Proyecto2_.rar, que contenga:

    o Cdigo fuente

    o Ejecutables

    o Manual Tcnico

    o Manual de Usuario

    Ejemplo del nombre [EDD]Proyecto2_201100000.rar

    Observaciones Lenguaje de programacin a utilizar: C/C++, Android, ASP.net, C#

    Sistema(s) Operativo(s): A eleccin del estudiante

    IDE(S): A eleccin del estudiante

    Para tener derecho a calificacin es obligatorio realizar:

    o Carga de archivos.

    o Implementar las Estructuras de datos 1, 5 y 6.

    o Todas las estructuras deben de ser realizadas por el estudiante, sin el uso de libreras especficas

    de ningn IDE o Framework.

    o Para el uso de las estructuras se debe hacer uso de struct y punteros.

    Las grficas deben mostrarse dentro de la aplicacin, no buscarse en carpetas ajenas. La aplicacin que

    no genera grfica no podr ser calificada.

    La aplicacin ser compilada y ejecutada al momento de la calificacin.

    Fecha y modo de entrega:

    o Sbado 14 de mayo antes de las 23:59 va DROPBOX.

    o Si no se entrega va DROPBOX, no se calificar.

    Copias tendrn nota de 0 puntos y sern reportadas al catedrtico y a la Escuela de Sistemas.