Universidad Técnica Federico Santa María Departamento de Informática Campus SAntiago TAREA 2 Almacenamiento y Recuperación de la Información Profesor Ayudantes : : José Luis Martí L. Alberto Maluje, Boris Blanco, Guido González Objetivos: • Conocer el sistema de archivos XML y sus potencialidades básicas • Conocer el lenguaje C# y algunas de sus características • Conocer y aplicar el lenguaje nativo de consultas LINQ del Framework .Net 3.5 • Conocer el trabajo en ambientes visuales Introducción: Al parecer a Sansanito’s le gustó el sistema implementado por los alumnos. Los ayudantes contentos con esto deciden mejorar su trabajo ofreciéndole al VideoClub una versión mejorada. Esta incluiría un entorno gráfico más decente que el anterior, sin dudarlo deciden nuevamente abusar de su poder y decirle a los alumnos de ARI que se pongan a trabajar lo antes posible. Desarrollo: La tarea consiste en la implementación de el programa descrito en la Tarea 1. La implementación se realizará en varios archivos XML que contienen los datos del sistema y será escrita en lenguaje C# utilizando la herramienta Microsoft Visual Studio 2008 que trabaja con el framework .NET 3.5. Para el desarrollo de esta tarea se utilizarán los siguientes archivos: Peliculas.xml: Archivo de tipo secuencia ordenado en base al atributo id_pelicula (atributo primario autoincremental) que contenga todos los datos de esta. <Peliculas> … <película id = “1”> <nombre>Saw1</nombre> <año>2004</año> <genero>Terror</genero> <clasificación>14+</clasificación> <stock>3</stock> <elenco>…</elenco> <id_local>1</id_local> <costo>790</costo> </película> <película id = “2”> <nombreTransformers</nombre> <año>2007</año> <genero>Ficción</genero> <clasificación>TE</clasificación> <stock>4</stock> <elenco>Megan Fox…</elenco> <id_local>1</id_local> <costo>1200</costo> </película> … </Peliculas> Clientes.xml: Archivo secuencial desordenado, que contenga los datos de cada cliente con el fin de que cada cliente pueda ser socio. <Clientes> … <cliente rut =”1134567”> <nombres>Guido González</nombres> <dirección>Av.Blanco Encalada #xxxx</dirección> <comúna>Santiago</comuna> <teléfono>3456778</teléfono> <fechanac>13/09/1989</fechanac> </cliente> … </Clientes> Empleados.xml: Archivo secuencial ordenado en base a id_empleado (primaria y autoincremental), cada empleado debe estar asociado a un Local. <Empleados> … <empleado id=”1”> <nombre>Alberto Maluje</nombre> <teléfono>3456788</teléfono> <id_local>1</id_local> </empleado> … </Empleados> Arriendos.xml: Archivo secuencial ordenado en base a id_arriendo (primaria y autoincremental), cada arriendo debe estar asociado a una película, a un empleado y a un cliente, además debe tener un rango de devolución (0 si esta arrendada/ 1 si ya fue devuelta) cada vez que la película es arrendada en el stock la película se debe restar 1 y cuando es devuelta se debe sumar 1. <Arriendos> … <arriendo id =”1”> <id_pelicula> 1</id_pelicula> <id_empleado>2</id_empleado> <rut_cliente>1234567</rut_cliente> <fecha>20/10/2010</fecha> <devolución>0</devolución> </arriendo> … </Arriendos> Locales.dat: Archivo secuencial ordenado en base a Id_local (primaria y autoincremental). Con los datos de cada local. <Locales> … <local id =”1”> <dirección>Av. Vicuña Mackena 3939</dirección> <teléfono>3456788</teléfono> <sector>oriente</sector> </local> … </Locales> El sistema debe contestar a las siguientes consultas usando las funciones de LINQ: 1. Stock de película con nombre “XXX” en el Local 2. Listado de películas del género “YYY” en todos los locales 3. “Top Five” Empleados que han realizado mas arriendos en el último mes donde se muestren sus datos y los datos del local al cual pertenece. 4. “Top Ten” Películas arrendadas. 5. Listado de Películas asociadas a cliente de RUT “XXX”. Para agilizar la respuesta de algunas de las consultas se les solicita a los alumnos crear un índice de grupos en base al género de las películas. <IndiceGrupos> … <index genero = Terror> <id_peliculas>1 2 3 5 7 11</id_peliculas> </index> … </IndiceGrupos> Requerimientos: • • • • • • • • • Ingreso, modificación y eliminación de Películas en el Sistema (10%) Ingreso, modificación y eliminación de Clientes en el Sistema (10%) Ingreso, modificación y eliminación de Empleados en el Sistema (10%) Ingreso, modificación y eliminación de Locales en el Sistema (10%) Registro de Arriendos (10%) Creación y uso de índices (10%) Uso de LINQ para responder las consultas (10%) Consultas requeridas (20%) Orden y buena programación (10%) Entrega: La tarea se realizará en grupos de 2 personas máximo. La entrega de la tarea tiene plazo máximo el día 26 de Octubre de 2010 a las 23:59:59. Luego de esa hora, se descuentan 10 puntos por cada hora de atraso. La tarea debe ser enviada al mail [email protected] indicando claramente el número de grupo y los integrantes. Posterior a la entrega se realizará un control para evaluar lo aprendido. Este control será tomado la clase siguiente a la fecha de entrega de la tarea. La nota de la tarea será NF = 0,75*NT + 0,25*NC si Nota Control > 39. En caso contrario, la nota final de la tarea será 0. Nota: La tarea debe ser enviada desde una casilla USM (@alumnos.inf.utfsm.cl o @alumnos.usm.cl), no desde la universidad GMAIL o similares. Se deben enviar los siguientes archivos: - Código fuente de la tarea. Por favor enviar la carpeta donde trabajaron, con la solución y el código fuente. Sin las carpetas DEBUG o RELEASE. Esto a fin de reducir el tamaño del envío. - La tarea será revisada en Visual Studio 2008, este IDE está disponible para todos los alumnos en el Laboratorio de Programación Avanzada (LPA). - Un archivo README.TXT con todos los supuestos, comentarios y detalles que deseen agregar al desarrollo de su tarea. - La tarea debe ser enviada en un archivo .rar con el nombre tarea2-ARI-XX.rar, donde XX es el número de grupo correspondiente. - Por cada warning obtenido en la compilación de su proyecto, se descontaran 5 puntos. Si la tarea NO compila, será evaluada con nota 0. Nota 2: dado que la creatividad genera tareas de tamaño poco razonable (dado el peso de las imágenes) se solicita que envíen la tarea partida en archivos de tamaño no superior a 1 MB no en un mismo correo, esto con fin de no tener problemas con el servidor de correo. Las consultas deben ser enviadas al mail [email protected] .La información sobre correcciones, notas y nuevas fechas estará disponible en el sitio Web http://www. arisantiago.blogspot.com Anexo: LINQ para XML Para mayor información sobre este lenguaje embebido en .NET 3.5, consultar: http://en.wikipedia.org/wiki/Linq http://www.hookedonlinq.com/MainPage.ashx http://msdn.microsoft.com/netframework/future/linq/ http://msdn.microsoft.com/en-us/library/bb387098.aspx Diseño del problema: