PROGRAMA ARQUITECTONICO DE UNA BIBLIOTECADescripción completa
DeustoDescripción completa
la biblioteca de la uceDescripción completa
estacio01
Descripción completa
Descripción completa
trata los grimorios mas importantes i prohibidos en el mundo entero con los cuales puedes ser un excelente brujoDescripción completa
Descripción completa
biblioteca taoistaDescripción completa
biblioteca DHTDescripción completa
Descrição completa
Análisis de la situación de la Biblioteca del IES FEDERICO GARCÍA LORCA de Churriana de la Vega ( Granada) Justificación del proyecto. Solicitud de dotación material y económica al ISE par…Descripción completa
Introducción Introducción ...................................................... ............................................................................................................... ...................................................................... ............. 2 El sistema................................................. ........................................................ ............................................................................... ....................... 2 El sitio Web ..................................................................................................... ....................... 2 Aspecto general de la aplicación aplicación ..................................................................... ....................... 4 Creación Creación de una página maestra ......................................................................................... 4 Páginas principal principal y de registro. .................... ......................................................... ...................................................................... ............. 6 La seguridad seguridad ............................................ ........................................................ ............................................................................... ....................... 6 Seguridad Seguridad .NET para el sitio s itio Web ..................................................... ...................................................................................... ................................. 6 Los controles de seguridad .................................................................................... ............. 8 La base de datos ................................................ ......................................................... ...................................................................... ............. 8 Modificación Modificación de la base de datos autogenerada ................................................................. 8 El módulo de mantenimiento mantenimiento a libros y autores. ................................................................ .. 10 Generación Generación de los objetos de negocio que controlan controlan las tablas ........................................ 10 Creación Creación de la página que muestra los catálogos de libros y autores............................... 12 Formulario Formulario de solicitud y entrega de libros. .................................................... ......................................................................... ..................... 15 Módulo de entrega y solicitud de libros ........................................................................... 15 El menú de navegación ......................................................... ......................................................................................................... ................................................ 19
Introducción Este material se crea tomando como base el tutorial “Creando una aplicación en C# de principio a fin”, material que alguna vez encontré en la Universidad .NET. Aquel material usaba técnicas del
.NET Framework 1.1 con el que aprendí en un instante casi todo lo más importante del desarrollo con esa versión de la tecnología .NET. Ahora, es tiempo de migrar a .NET Framework 2.0. Así que sin más ni más m ás comencemos.
El sistema En resumen, se trata de un sistema de biblioteca que permite hacer préstamos de libros a la vez que actualiza el inventario con cada préstamo o devolución. Es posible dar mantenimiento al catálogo de autores, al catálogo de libros y también es posible administrar usuarios. Cuenta con seguridad, de manera que solo el usuario administrador puede dar mantenimiento a libros y autores. Cualquier usuario puede darse de alta, pero no será autorizado a pedir libros a menos que un usuario asistente o administrador lo active.
El sitio Web Antes que nada, necesitamos un sitio Web que aloje nuestro sistema, así que generemos uno. Antes de comenzar 1. 2.
El sitio se va a montar montar en una carpeta del sistema sistema y no no en http. http. De esta esta manera podemos llevarnos llevarnos la aplicación aplicación a cualquier otro sistema. Usaremos el nombre Default.aspx para nombrar nombrar a las páginas principales de cada módulo.
1. Iniciar Visual Studio 2005 2. Generar un nuevo proyecto a. En el menú File, seleccionar “New Project” y seleccionar solución en blanco, guardarla en la carpeta C:\Comun\Biblioteca2005 y darle el nombre Biblioteca2005. Observar la figura para más detalles
Ilustración 1. Creación de una solución
b. Presiona Ok. (Ya se, ya se, este paso está de más…, pero alguna vez estaba ya en el paso 10 de 4 de un tutorial tutorial en una clase y un alumno me llama y dice - ¿Ya le doy ? - … apenas estaba en el paso 1 )
c. En el explorador de soluciones solo hay un elemento Solution, selecciona “New Web Site” de la primera opción del menú contextual de este elemento. (o sea, “selecciona el elemento solution que dice „Biblioteca 2005‟ con el derecho del ratón, luego Add y luego New Web Site”). Y esto ¿para qué? Bueno, si y luego
se me ocurre añadir un proyecto de Windows o un Servicio Web o Windows solo lo añado a la solución y así esto forma parte de un solo producto. d. Nómbralo como se muestra:
Ilustración 2. Creación de un sitio web
e. No olvides seleccionar el lenguaje C# y crearlo en File System 3. Elimina la página Default.aspx que aparece en forma predeterminada. (No sirve, vamos a generar una página maestra que aloje a otra Default.aspx) 4. Generemos 3 carpetas en el sitio web seleccionando New Fólder del menú contextual del sitio Web. Van a contener los elementos visibles a cada rol de usuario.
Ilustración 3. Creación de folders para la aplicación
Aspecto general de la aplicación Para que la aplicación tenga un aspecto uniforme en todas sus páginas vamos a usar Páginas principales o “Master Pages” que funcionan como una plantilla. Procedamos.
Creación de una página maestra Antes de comenzar 3. Crearemos una página maestra usando marcas div en vez de tablas, ¿porqué? Porque el estandar www indica que el uso de tablas debe ser únicamente para presentar datos tabulados y no para el ajustar el aspecto de la página. Además los lectores de Internet par discapacitados leen el elemento table con un nombre, eso es un mal diseño (y una descortesía)
1. Genera un tema con una hoja de estilo Este tema contiene la configuración para cada área marcada con la propiedad id de cada div. Así que habrá una regla de estilo por cada id en cada div. a. Crea una nueva carpeta en el sitio con Menu contextual – Add ASP.NET folder – b.
Theme, Nómbralo como “Biblioteca2005” Agrega un elemento Style Sheet al f ólder creado en el inciso “a” no im porta el
nombre que le pongas, todas las hojas de estilo que pongas ahí son cargadas. Esto abre un editor de estilos que contiene “body”
c. En el menú contextual de área de trabajo selecciona “Add Style Rule” d. Selecciona la marca Element ID y escribe el nombre “Titulo”, agrega esto con el botón “ > “ y presiona OK
e. Ahora en el menú contextual del texto “#T itulo” selecciona “Build St yle”, en Position ajusta las propiedades como se muestra:
Ilustración 4. Propiedades del estilo #Titulo
Aquí está el resto de la hoja de estilo: body { } #Titulo { left: 0px; width: 100%; position: absolute; top: 0px; height: 150px; background-color: sienna; } #ColumnaIzquierda { left: 0px; width: 150px; position: absolute; top: 150px; height:400px; background-color: chocolate; } #ContenidoPrincipal { left: 150px; width: 100%; position: absolute; top: 150px; height: 400px; background-color: transparent; } #PieDePagina { left: 0px; width: 100%; position: absolute; top: 550px;
Añade al sitio un nuevo elemento de tipo “M aster page” con el nombre predeterm inado en
C# y con código en archivo separado.
Ilustración 5. Crear una página maestra 3.
4.
Vamos a crear cuatro áreas: Encabezado, ColumnaIzquierda, Contenido y AreaDeRegistro. Abre el modo “Source” de MasterPage.m aster y trabajemos con algo de HTML. Cambia su
contenido por lo que se muestra a continuación:
<%@ Master Language="C#" AutoEventWireup ="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" EnableTheming="true"%> Sistema de biblioteca con Visual Studio 2005
Páginas principal y de registro. La página principal es Default.aspx. Genera dos nuevas formas Web seleccionando “Add new item” del menú contextual del sitio. Una se va a llamar Default.aspx y la otra Login.aspx (esta última es necesaria debido al contenido con seguridad de la aplicación), márcales la opción seleccionar Master Page y selecciona la única Master Page que hay, esto hace que tengan e l mismo aspecto. Del menú contextual de Default.aspx selecciona “Set As Start Page”
La seguridad La seguridad que vamos a generar contiene una base de datos en SQLServer, tablas, roles, usuarios, permisos, encriptación y reglas de integridad. Comúnmente todo esto toma varios días o semanas en estar listo, (Bueno, tal vez unas horas, pero de que es tardado es tardado. Tiempo estimado para este paso: 10 minutos. ¿Va? C uéntale… Más notas sobre esto al final de este Paso a paso.
Seguridad .NET para el sitio Web Antes de comenzar 4. La seguridad se va a montar en una carpeta de la propia aplicación, esto significa que la base de datos será local y estará en en la carpeta App_Data. No es obligatorio que así sea, así que si prefieres usar un Server de Oracle, de SQLServer 2005, de MySQL, etc.. solo tienes que correr asp_regsql.exe desde el indicador de comandos de Visual Studio y configurar esta opción.
1. Ir al sitio de administración de la aplicación con: 2. Seleccionar ASP.NET Configuration del menú Website
Ilustración 6. Menú de configuración de ASP.NET
a. O más fácil, presiona el botón
del explorador de soluciones.
b. Una vez en este sitio se ve algo como:
Ilustración 7. Herramienta de administración del sitio
3. Selecciona “Security” (se tarda un rato después de esto, en el fondo se está creando una base de datos, tablas, etc.) 4. Selecciona y marca 5. En el paso 3 presiona Next 6. En el paso 4 activa la casilla “Enable roles for this Web site” 7. Añade 2 roles: Administrador y Asistente. (No añadimos Usuario porque ese no necesita rol) 8. Ahora aparece un elemento para crear nuevo usuario. Crea 3 usuarios: Administrador, Asistente1 y Usuario1 (anota las contraseñas por algún lado, luego se te olvidan...y observa que la primer letra va con MAYÚSCULA) 9. Una vez creados los usuarios, presiona Next 10. Asignemos permisos a las carpetas, observa que al expandir el árbol se ven. a. A la carpeta de Administrador agrega: (Es muy importante que se haga en el orden que se indica) i. Anonymous Users – Deny – Add This Rule ii. Role Administrador – Allow – Add This Rule iii. All Users – Deny – Add This Rule b. A la carpeta de Asistente agrega: i. Anonymous Users – Deny – Add This Rule ii. Role Asistente – Allow – Add This Rule iii. Role Administrador – Allow – Add This Rule iv. All Users – Deny – Add This Rule c. A la carpe de Usuario solo deniega a Anonymous Users d. Presiona Finish e. Selecciona ahora el link Manage Users f. De cada usuario selecciona su link Edit roles g. Administrador es Administrador y Asistente, márcalos h. Asistente1 solo es asistente, marca solo asistente i. Usuario1 no tiene rol, es un simple usuario no anónimo. j. Presiona Back y cierra el explorador. Terminamos. La seguridad en .NET 2.0 es una maravilla ahorradora de tiempo, si se utiliza esta herramienta dejamos el trabajo a .NET. Ahora, se ha creado una base de datos ASPNETDB.MDF y algunos archivos web.config en cada carpeta que necesite seguridad1. De esta manera solo los usuarios autorizados pueden acceder a ciertas partes de la aplicación, ver partes del menú, usar controles, abrir páginas, etc. Esta seguridad ya incluye encriptación y capacidad de recuperación de contraseñas y añadir usuarios. Además de lo anterior es 1 Los cambios en Ilustración 8. Seguridad
el explorador de soluciones solo serán visibles hasta que refresques el contenido con
.
posible usar la base de datos como cualquier base común, podemos añadirle más tablas o más campos a las tablas que ya existen, crear vistas, procedimientos almacenados, etc. Si al final es necesario migrar esta base de datos un servidor, basta con cambiar la cadena de conexión y configurar el sitio para que lea la base desde otro lado, pero eso ya es otro tema.
Los controles de seguridad 1. Abre la Master Page 2. Arrastra un control LoginView de la paleta Login hasta el “area de registro. 3. Del smart tag de este control selecciona view: Anonymous template, esta será la plantilla que se mostrará a un usuario que no ha iniciado sesión en el sistema. 4. Arrastra un control Login al interior del LoginView 5. Añade al control LoginView de la Master Page un control HyperLink justo debajo del control Login.Cambia sus propiedades Text: “Soy nuevo usuario”, NavigateURL:”~/Registro.aspx”. 6. Ahora selecciona la vista “LoggedIn template” d el LoginView 7. Escribe dentro: “Bienvenido” 8. Añade a la derecha del texto un control LoginName. Esto pondrá el nombre del usuario ahí. 9. Justo debajo del LoginName arrastra un control LoginStatus el cual nos va a permitir cerrar sesión en el sistema. 10. Alinea todos los componentes de esta sección a la derecha. 11. Terminamos.
La base de datos Es momento de modificar la base de datos que generó el asistente de seguridad para que contenga los datos necesarios. Los datos que se necesitan son: Id del usuario (o matrícula de alumno/profesor/usuario), nombre del usuario, apellidos paterno y materno del usuario, dirección del usuario, teléfono del usuario, cargo del usuario, permisos del usuario, rol del usuario, nombre completo de autor, id del autor, id del libro, isbn, cantidad en el inventario (libros totales con los que cuenta la biblioteca), cantidad en estantes (libros disponibles), título del libro, fecha del préstamo.
Modificación de la base de datos autogenerada Antes de comenzar Como veremos, no todos los datos van en una sola tabla, hay que normalizar y generar datos en las tablas correspondientes.
1. Abre el explorador de servidores y selecciona la base ASPNETDB.MDF 2. Generemos la tabla biblio_autores, selecciona el nodo “tables” y con el menú contextual añade una nueva tabla. 3. Modifícala como se muestra y marca el id como identity.(en las propiedades de abajo):
Ilustración 9. La creación de la tabla biblio_autores
4. Crear la tabla biblio_libros como se muestra:
Ilustración 10. Creación de la tabla biblio_libros
5. Crear la tabla solicitudes como se muestra:
Ilustración 11. Creación de la tabla biblio_solicitudes
6. Ahora modificaremos la tabla aspnet_Users ya que .NET la generó pero faltan algunas
columnas como nombre, apaterno, amaterno, direccion, telefono. (Sin acentos ¡eeeeh!).
7. Modifica esa tabla como se muestra:
Ilustración 12. Tabla aspnet_Users modificada
8. ¡Listo! Tenemos ya la base de datos completa.
El módulo de mantenimiento a libros y autores. Este módulo servirá para añadir autores y libros (recuerda que hasta el momento la base de datos no tiene nada). Usaremos técnicas de .NET 2.0 como ObjectDataSource, DataSet, GridView y FormView.
Generación de los objetos de negocio que controlan las tablas Antes de comenzar Anteriormente se usaba el modelo adapter, command, conection. Ahora se trabaja de una manera diferente, un poco más ágil, pero que internamente sigue usando adapters.
1. Con el menú contextual de la aplicación añadir un nuevo elemento de tipo DataSet y
ponerle de nombre ds_autores, cuando pregunte si lo pone en la carpeta App_Code, aceptar. (Realmente lo que se va a agregar es una clase)
Ilustración 13. Creando un DataSet
2. Aparece la siguiente pantalla:
Ilustración 14. Pantalla que muestra el nombre de la conexión
3. 4. 5. 6.
Presiona Next y acepta el nombre de la conexión predeterminada, vuelve a presionar Next De las tres opciones selecciona, Create New Stored Procedures. Next Presiona el botón Query Builder para crear una sentencia en diseño. De la lista, selecciona biblio_autores y presiona Add y luego Close, marca todos los campos menos el de *. Modifica el Query para que ahora sea: SELECT FROM WHERE
idautor, nombre biblio_autores (nombre LIKE „%‟ + @nombreAutor + '%')
Si copias y pegas este texto es necesario reescribir l as comillas en el QueryBuilder debido a que la s comillas de Word son otro caracter diferente
7. Presiona Next, cambia los nombres de los procedimientos almacenados a biblio_InsertarAutores en vez de NewInsertCommand (con los otros nombres haz lo mismo) 8. Presiona Next, Quita la marca de Fill, (es para llenar, no queremos llenar). 9. El nombre del método que se generará cámbialo de “GetData” a “ObtenerAutoresPorNombre”, presiona Next , y luego Finish. 10. Edita el procedimiento almacenado “biblio_ActualizarAutores” en la base de datos ASPNETDB.MDF que está en el explorador de servidores en el nodo “stored procedures” para que quede así:
11. Elimina el parámetro @idautor de la colección de parámetros de UpdateParameters de UpdateCommand en las propiedades del dataAdapter del DataSet ds_autores.xsd 12. Guarda los cambios y cierra el DataSet. 13. Genera otro DataSet ds_libros pero ahora usa la tabla biblio_libros y cambia el WHERE por “idautor= @idDelAutor”, intuye los nombres de cada elemento ;) 14. El procedimiento almacenado biblio_ActualizarLibros de ds_libros se muestra:
15. Elimina el parámetro @idlibro de la colección de parámetros de UpdateParameters de UpdateCommand en las propiedades del dataAdapter del DataSet ds_libros.xsd 16. Terminamos.
Creación de la página que muestra los catálogos de libros y autores Antes de comenzar 1. Crea un archivo Catalogos.aspx en la carpeta Administrador. (No olvides la Master Page) 2. Agrega los siguiente componentes en ese orden a. Un TextBox, id:txtNombreAutor, Text:”Inserta aquí tu criterio de búsqueda” b. Un botón id:btnBuscarAutores, Text: “Buscar autores” c. Un botón btnAgregarUnAutor, Text: “Agregar autor” d. Un GridView gvAutores, Width:100px, PageSize: 5 e. Un FormView fvAutores 3. Selecciona el smart tag (El triangulito en la esquina superior derecha) y selecciona “Choose Data Source” y del DropDown selección 4. De la lista de tipos de Data Source selecciona Object y especifia como nombre “DsAutores”. Este será la fuente de datos de nuestro GridView
Ilustración 15. Tipos de data source (Object)
5. Cuando pida seleccionar el objeto de negocios selecciona el TableAdapter de ds_autores. Presiona Next 6. Deja los valores de los métodos como están y presiona Next 7. Te pide definir la forma de llenar el parámetro “nombreAutor”, lo vamos a llenar con el TextBox txtNombreAutor, así que selecciona a. Parameter source: Control b. Control ID: txtNombreAutor c. Default Value: * 8. Presiona Finish. 9. Del smart tag de gvAutores marca a. Enable Paging b. Enable Editing
c. Enable Deleting d. Enable Sorting e. Enable Selection 10. Del smart tag del fvAutores selecciona Cose Data Source y selecciona DsAutores 11. Cambia las propiedades del fvAutores a: a. DefaultMode: Insert b. Visible: false 12. En el código del evento clic de btnBuscarAutores escribe “DataBind();” 13. Modifica el código del evento clic del btnAgregarAutor como sigue: (no lo escribas tal como está, primero haz doble clic sobre el botón para generar el método)
14. En el método ItemInserted de fvAutores poner el siguiente código: (El área para teclear este método aparece cuando haces doble clic sobre el nombre del método ItemInserted de las propiedades de fvAutores [F4 + clic en el icono del rayo])
15. Ahora que ya tenemos el módulo de autores generemos el módulo de libros. (En la misma forma Catalogos.aspx solo que más abajo)
16. 17. 18. 19. 20. 21. 22. 23. 24.
Agrega los siguientes elementos: a. Un botón btnAgregarUnLibro, Text: “Agregar libro” b. Un GridView gvLibros, Width:100px, PageSize: 5 c. Un FormView fvLibros Selecciona el smart tag de gvLibros(El triangulito en la esquina superior derecha) y selecciona “Choose Data Source” y del DropDown selección Selecciona Object como el tipo de Data Source y nómbralo DsLibros. Presiona Next y deja los métodos como están, presiona Next Enlaza el parámetro idDelAutor con el control gvAutores. (observa que automáticamente se activa la propiedad SelectedValue, esto permitirá seleccionar los libros del autor seleccionado en el grid de autores). Presiona Finish. Habilita paging, sorting, editing y deleting. Cambia las propiedades de fvLibros así: a. DefaultMode: Insert b. Visible: false Activa la plantilla InsertItem de fvLibros y cambia el primer TextBox por un DropDownList Con smart tag del DropDown cambi su DataSource a dsAutores con data field en nombre y valuefield en idautor. Luego con el menú contextual del DropDown activa SelectedValue como propiedad “Custom binding” con la expresión Bind("idautor").
25. Copia de fvLibros el contenido de IntemInserting template a EmptyTemplate 26. En el evento clic de btnAgregarLibro escribe:
27. En el evento ItemInserted de fvLibros y en evento clic de “Cancelar” de la plantilla Insert escribe:
28. En el evento Load de la forma escribe:
29. Ponle un poco de imaginación al acomodo, colores, y otros adornos que hagan tu página más agradable. (Por favor… no uses colores chillantes ni tipos de letras raras, solo sé simple y práctico). Así se ve mi página en el explorador después de agregar algunos autores y libros:
Ilustración 16. El módulo de catálogos funcionando
30. Y así se ve el modo diseño:
Ilustración 17. El diseño del módulo de catálogos
31. Terminamos
Formulario de solicitud y entrega de libros. Para este formulario necesitaremos presentar al usuario una lista de los libros que ha solicitado, cada uno con un botón “Entregar” que permita realizar la entrega. También se presentará la lista de autores con caja de búsqueda y libros de cada autor con un botón “Solicitar” en cada libro que
permita hacer la solicitud de préstamo. Hay dos condiciones que cumplir: a) No se debe prestar el libro a alguien que ya lo tiene solicitado. b) Si ya no hay ejemplares disponibles, indicárselo al usuario.
Módulo de entrega y solicitud de libros 1. Genera un nuevo dataset llamado ds_solicitudes que genere nuevos procedimientos almacenados y con el Query builder genera la siguiente sentencia (o escríbela en el área correspondiente):
2. Llama “Biblio_SeleccionarLibrosSolicitados” al Query creado. 3. El nombre del método de selección es: ConsultarLibrosSeleccionados 4. Selecciona el nodo “Stored Procedures” de la base ASPNETDB.MDF y en su menú contextual selecciona “New Procedure”.
5. Inserta el siguiente código:
6. Genera otro procedimiento almacenado y escribe lo siguiente:
7. 8. 9. 10. 11.
Genera en la carpeta Usuarios una nueva forma llamada “SolicitarLibro”. Copia los controles de “Aministrador/Catalogos.aspx” en esta forma Elimina los botones btnAgregar y btnAgregarLibro En gvAutores y gvLibros solo deja activa la opción “Allow Selection” y “Allow Paging”. Cambia la leyenda del botón “Select” del grid de libros a “Solicitar” desde la opción “Edit colums” del smart tag de gvLibros
12. Añade al principio de la forma un grid gvLibrosSolicitados y ajusta Width a 100% 13. Selecciona el smartTag y genera un nuevo datasource 14. Acepta los valores predeterminados y asigna el enlace del parámetro nombreUsuario a la variable de sesión “nombreUsuario”. Cambia la leyenda del botón “Select” a “Entregar”
15. 16. Añade el siguiente campo a la clase de la forma:
17. Añade lo siguiente al manejador del evento load: Session["nombreUsuario"] = this.User.Identity.Name;
18. En el manejador del evento clic del botón btnBuscaAutores escribe: DataBind();
19. Selecciona gvLibrosSolicitados y muestra la lista de eventos en la ventana de propiedades. 20. Haz doble clic sobre el evento SelectedIndexChanged 21. En este manejador escribe el siguiente código:
22. En el manejador del evento SelectedIndexChanged del gridView gvLibros escribe lo siguiente:
23. Aspecto del modo diseño de la forma:
24. Y corriendo…
25. Terminamos
El menú de navegación
1. Añade un elemento Site Map a la raiz del sitio 2. Modifícalo para que se vea como sigue (observa el atributo roles):
3. Abre el archivo de configuración general web.config y modifícalo para que incluya lo siguiente dentro de la propiedad
4. Añade un elemento SiteMapDataSource (smdsMapaDelSitio) a la Master Page 5. Añade en la columna izquierda un control TreeView tvMenuDelSitio 6. Selecciona “Cose Data Source” del smart tag de tvMenuDelSitio, selecciona smdsMapaDelSitio. 7. Modifica algunas propiedades de tvMenuDelSitio. a. ShowLines: True b. ExpandDepth : 1 Ejecuta el sistema. Y Listo. Terminamos. Ahora te toca ponerle detalles…
Si tienes comentarios sobre este tutorial… (errores de dedo, lógicos o de código) contáctanos.
¿Necesitas asesoría, desarrollo, entrenamiento o personal entrenado en .net y java? [email protected] Descargar proyecto en *.zip