|
|
| Home / Docencia / Ing. Telecomunicación / Software de Comunicaciones, Práctica 1 | |
|
|
|
|
|
|
| Software de Comunicaciones | |||||||||||
|
|
||||||||||
|
|||||||||||
|
|
El objetivo fundamental de esta práctica es aprender a modelar e implementar el nivel de datos de una aplicación típica. Para ello se propone una aplicación concreta que se debe resolver. En relación con este objetivo se deben conseguir las siguientes metas:
|
|||
|
|
En esta práctica se debe realizar una aplicación con interfaz de línea de comandos que modele un sistema Gestor de Actividades deportivas. La aplicación a realizar debe modelar un sistema en el cual hay un conjunto de actividades deportivas disponibles que se ofrecen a un determinado precio, tienen un número limitado de plazas, se desarrollan en un determinado pabellón y a las cuales diferentes clientes se pueden inscribir. Clientes, actividades y pabellones se pueden crear y eliminar por medio de la persona que representa la figura del gestor. A la aplicación se podrá acceder con dos tipos diferente de perfil: gestor o cliente.
A través de la aplicación se podrá elegir el perfil deseado o, alternativamente, el usuario podrá registrarse como nuevo cliente. Seguidamente se mostrarán las opciones asociadas a cada perfil o las opciones de registro. La aplicación deberá comunicarse con la base de datos para efectuar las operaciones que se vayan seleccionando al introducirlas por pantalla. Al ejecutar la aplicación a través de su main, se debe mostrar por pantalla lo siguiente:
Seguidamente el cliente debe introducir por teclado una A, una B, o bien una C. En caso de que introduzca una A, la aplicación en primer lugar le pedirá la contraseña de gestor y en caso de que sea correcta deberá mostrar por pantalla otro menú, que tenga las opciones que puede tomar un Gestor. Dicho menú debe ser como sigue:
Quien esté ejecutando la aplicación y haya elegido el perfil de gestor y haya podido acceder deberá introducir por teclado una de las siguientes opciones (de la 1 a la 11). Para cada elección particular se deberán realizar las operaciones oportunas en la base de datos. Si se elige la opción 1, entonces se deberán pedir seguidamente todos los campos necesarios de la tabla de clientes para crear ese nuevo cliente. Si se elige la opción 3, del mismo modo se deberán pedir todos los campos necesarios de la tabla de actividades para crear la nueva actividad y si se elige la opción 5 se deberán pedir todos los datos necesarios de la tabla de pabellones para crear un nuevo pabellón en la tabla. Para las opciones de eliminar clientes (2), actividades (4) y pabellones (6), la aplicación pedirá el valor de aquel campo que es la clave primaria de la tabla respectiva. En cualquiera de las otras opciones que son listar clientes (7), actividades (8), pabellones (9) y listar actividades con plazas disponibles (10), no se deberá pedir más información por teclado y se deberá mostrar por pantalla el resultado de la acción seleccionada, mostrando todos los campos de cada tabla. En cualquiera de las opciones seleccionadas (excepto en la de "Salir de la aplicación"), una vez ejecutada deberá volver al mismo menú del gestor. En caso de que introduzca una B, la aplicación en primer lugar le pedirá el nombre de cliente y su password y en caso de que los datos de login sean correctos (de acuerdo con la tabla de clientes) deberá mostrar por pantalla otro menú, que tenga las opciones que puede tomar un cliente. Dicho menú debe ser como sigue:
Quien esté ejecutando la aplicación y haya elegido el perfil de cliente y haya podido acceder mediante un login y password de cliente válido, deberá introducir por teclado una de las siguientes opciones (del 1 al 10). Para cada elección particular se deberán realizar las modificaciones oportunas en la base de datos. Si se elige la opción 1, 3, 4, 5, 6, o 7 se deberán visualizar aquellas actividades que reúnan el requisito especificado y en la visualización se deben poder observar todos los campos relacionados con la tabla de actividades. Además, para las opciones 4, 5, 6, y 7, tras la elección se deberá pedir al cliente el dato sobre el cual se realizará la búsqueda. Por otro lado si se elige la opción 8 u opción 9 se deberá pedir al usuario el identificador de la actividad en la que se quiere inscribir o de la que se quiere eliminar procediendo a hacer el procesado adecuado en la base de datos. Obviamente, la opción 8 requerirá que el usuario no esté ya suscrito en la actividad, y la 9, por el contrario, que esté previamente suscrito. En cualquiera de las opciones seleccionadas (excepto en la de "Salir de la aplicación"), una vez ejecutada deberá volver al mismo menú del usuario. Finalmente, si un usuario introduce la opción C, la aplicación le pide su información de registro, que incluye login, contraseña, nombre, apellido, dirección y número de teléfono, y seguidamente la aplicación debe almacenar esa información del usuario en la base de datos. Adicionalmente, como requisito de la práctica, la solución debe mostrar una clara separación entre el control, la vista en forma de texto, y el modelo de la base de datos. Esta modularidad facilita la reutilización; de hecho en la próxima práctica (sobre el nivel de presentación) reutilizaremos la parte de código relativa a la interacción con la base de datos para la aplicación basada en web. Para simplificar la práctica, no es obligatorio tratar las excepciones, en particular, las de la base de datos. Sin embargo, se debería utilizar el valor de retorno para comprobar que las operaciones de insert, update y delete se realizan bien. |
|||
|
|
El modelo de la base de datos, con los detalles de las tablas y sus campos debe ser el siguiente: Tabla CLIENTES
Tabla ACTIVIDADES
Tabla PABELLONES
Tabla INSCRIPCIONES
En los campos de tipo autoincremento se debe dejar el valor a NULL, la base de datos se encarga de generar y asignar los valores consecutivos. En la tabla INSCRIPCIONES, los dos campos que forman la clave primaria, LOGIN_CLIENTE y ID_ACTIVIDAD, son a su vez claves externas que definen las relaciones con las otras dos tablas. Esto se expresa de la siguiente forma:
..., PRIMARY KEY (LOGIN_CLIENTE, ID_ACTIVIDAD),
FOREIGN KEY (LOGIN_CLIENTE) REFERENCES CLIENTES(LOGIN),
FOREIGN KEY (ID_ACTIVIDAD) REFERENCES ACTIVIDADES(ID))
En la tabla ACTIVIDADES también hay una relación que debe ser expresada correctamente de forma similar. La relación implica al campo NOMBRE_PABELLON con el campo PABELLON de la tabla de PABELLONES. Recordad que sólo funcionarán las claves externas si el motor de la base de datos (database engine) está puesto como "InnoDB". Con la idea de usarlos en la siguiente práctica, también puede ir experimentando con los comandos: ON UPDATE {CASCADE | SET NULL} y ON DELETE {CASCADE | SET NULL} después del texto REFERENCES tabla_referenciada(atributo referenciado). Más información sobre dichos comandos puede encontrarse en el manual de MySQL. La creación de estas tablas iniciales puede realizarse fuera del programa Java (conectándose directamente a la base de datos desde el cliente MySQL), utilizando las sentencias SQL necesarias. Es relevante notar que la creación de una tabla de gestores no es necesaria ya que en la aplicación suponemos que sólo hay un gestor, cuya password está puesta a mano en el código de programa. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Existe un servidor de bases de datos MySQL instalado en la máquina mysql.lab.it.uc3m.es Dentro de ese servidor, se han abierto las cuentas de usuario, cuyos datos de acceso (login y password) se proporcionarán en clase. Para cada usuario, está ya creada una base de datos con el mismo nombre que el login. Se deberá trabajar sobre esa base de datos. La asignación de cuentas a grupos de dos personas se hará en el laboratorio. Si no puedes asistir al laboratorio, entonces debes pedir un número de cuenta por e-mail al profesor de prácticas Norberto Fernández. Para conectaros a la base de datos mediante el cliente de MySQL, deberéis hacer:
Seguidamente el sistema pedirá la contraseña para dicha cuenta, de acuerdo con lo indicado un poco más arriba en el texto del enunciado. Una vez conectados podéis introducir las sentencias SQL directamente sobre la base de datos y así ver el resultado. Así podéis ver el comportamiento de una instrucción SQL antes de insertarla en vuestro programa Java. Podráis encontrar útiles los siguientes comandos de MySQL: Para conectaros a la base de datos desde vuestro programa Java, os hará falta un driver de JDBC. Podéis usar MySQL Connector/J5 para tal fin. Debéis descargarlo en vuestra máquina y colocarlo en el CLASSPATH. El nombre del driver que debéis utilizar en vuestro código es com.mysql.jdbc.Driver y la URL del servidor MySQL que debéis utilizar es jdbc:mysql://mysql.lab.it.uc3m.es/nombre_basedatos. No hace falta utilizar el comando CREATE DATABASE schema_name porque, como ya se ha dicho anteriormente, hay abierto una esquema (o "database" en terminología de MySQL) por cada grupo. |
|||
|
|
Para ayudaros en la resolución de esta práctica, se proporcionan un conjunto de ficheros, los cuales contienen un esqueleto de las clases que debéis usar. En la práctica debéis completar lo que falta de código y además comentarlo apropiadamente. Se proporcionan tres paquetes java (activities.model, activities.view y activities.control), que conforman una solución completa del enunciado descrito. Se proporciona el código de todos los ficheros con la excepción del DBInteraction.java que es el fichero que debéis completar en esta práctica.
ReutilizaciónEs importante notar que en esta solución existe una clara separación entre:
Esta modularidad facilita la reutilización; de hecho en la próxima práctica (sobre nivel de presentación) reutilizaremos el código de interacción con la base de datos para la aplicación Web. Algunas observaciones
|
|||
|
|
Esta práctica se llevará a cabo en grupos de dos. ¿Por qué? Véase la noción de pair programming de la metodología de desarrollo de software XP (Xtreme Programming). La solución se debe entregar a través de Aula Global 2, concretamente, a través de la página web siguiente: página de entrega, nivel de datos, grupo español (91) Se deberá entregar el fichero DBInteraction.java tal que junto con todos los ficheros Java que se proporcionan como código implementen una solución correcta del sistema propuesto en esta práctica (no se deben incluir ficheros .class). El programa debe compilar y funcionar correctamente en el entorno de los laboratorios de telemática para todos los diferentes casos y de acuerdo a las instrucciones dadas en la sección de Descripción de la Práctica. Vuestra entrega debe incluir el nombre y NIA (los nombres y NIA) del autor (de los autores) como comentario al principio del fichero. Puede también incluir cualquir otra clarificación adicional que consideréis de importancia, también como comentario, pero no será normalmente necesario. Fecha límite para entrega: 29/10/2009. Hora límite: 11:00 h. |
|||
|
|
Véanse: en la página Web de la asignatura y: en la página Web de la asignatura bilingüe.
|
|
|