[edd]proyecto2
DESCRIPTION
proyectoTRANSCRIPT
-
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.