Ingeniería del software de gestión Caso práctico: diseño Enunciar las mejoras que se podrían realizar sobre la implementación descrita informalmente en este documento. Discutir ventajas e inconvenientes del diseño planteado. Objetivos del programa cuya implementación se describe Se trata de un sitio web que recoge las preferencias de los alumnos de una asignatura en cuanto a los horarios de los grupos de prácticas a los que quieren asistir. En total hay 17 horarios de prácticas diferentes, aunque ese dato puede variar de año en año. En la asignatura hay entre 120 y 150 alumnos matriculados todos los años. Pantallas (interacción con el usuario) Formulario inicial Los alumnos accederán inicialmente a la página nuevoalumno.asp, que contendrá un formulario en el que deberán rellenar sus datos personales y las preferencias de horarios. Desde dicha página se podrá consultar la lista de horarios disponibles (enlace a horarios.html). Al pulsar el botón “Aceptar los datos”, la información introducida se enviará (POST) a la página confirmacion.asp. Pantalla: Formulario inicial Pantalla: Confirmación de los datos Confirmación de los datos confirmacion.asp mostrará en pantalla los datos previamente introducidos para que el usuario confirme que son correctos. Para realizar dicha confirmación, debe pulsar un botón denominado “Los datos son correctos”, este botón envía de nuevo los datos (de nuevo un POST) a la página guardarpreferencias.asp. En caso de que haya habido un error, se permitirá volver al formulario inicial pulsando el botón “Cambiar los datos”. Confirmación del guardado Finalmente, guardarpreferencias.asp ejecuta el código necesario para insertar la información en la BD. Si la inserción se realiza de manera correcta, se indica al usuario con un mensaje. También se emite un mensaje de error en caso de que no se haya podido conectar con la BD. Página 1 Pantalla: Confirmación del guardado Código Se implementa en ASP.NET con cuatro unidades (ficheros): • nuevoalumno.asp • confirmacion.asp • guardarpreferencias.asp • horarios.html (no se muestra, es un html “estático” con la información de los horarios) nuevoalumno.asp <head> <title> Formulario preferencias de grupo - Ingeniería del Software I </title> </head> <body> <h2> Ingeniería del Software I </h2> <h1> Formulario: preferencias de grupo </h1> Consulta los horarios de los grupos <a href="horarios.html">aquí</a>. <br> <form action=confirmacion.asp method=post> DNI: <input type="text" name="dni" maxlength="10" size="10" value=""> <br> Nombre: <input type="text" name="nombre" maxlength="70" size="30" value=""> <br> Apellidos: <input type="text" name="apellidos" maxlength="90" size="50" value=""> <br> Marca este checkbox si ya te matriculaste en la asignatura en cursos anteriores: <input type="checkbox" name="repetidor" value="s"> <br> Marca este checkbox si estás pendiente del PFC para matricularte en la asignatura: <input type="checkbox" name="pfc" value="s"> <br> <h2>Preferencias de grupo</h2> Preferencia 1 (el grupo que prefieres) <select name="pr1"> <option value="0">-- Elegir grupo --</option> <option value="1">Grupo 1</option> <option value="2">Grupo 2</option> <option value="3">Grupo 3</option> <option value="4">Grupo 4</option> <option value="5">Grupo 5</option> <option value="6">Grupo 6</option> <option value="7">Grupo 7</option> <option value="8">Grupo 8</option> <option value="9">Grupo 9</option> <option value="10">Grupo 10</option> <option value="11">Grupo 11</option> <option value="12">Grupo 12</option> <option value="13">Grupo 13</option> <option value="14">Grupo 14</option> <option value="15">Grupo 15</option> <option value="16">Grupo 16</option> <option value="17">Grupo 17</option> </select> <br> Preferencia 2 <select name="pr2"> <option value="0">-- Elegir grupo --</option> <option value="1">Grupo 1</option> <option value="2">Grupo 2</option> Página 2 <option <option <option <option <option <option <option <option value="3">Grupo 3</option> <option value="4">Grupo 4</option> value="5">Grupo 5</option> <option value="6">Grupo 6</option> value="7">Grupo 7</option> <option value="8">Grupo 8</option> value="9">Grupo 9</option> <option value="10">Grupo 10</option> value="11">Grupo 11</option> <option value="12">Grupo 12</option> value="13">Grupo 13</option> <option value="14">Grupo 14</option> value="15">Grupo 15</option> <option value="16">Grupo 16</option> value="17">Grupo 17</option> </select> <br> Preferencia 3 <select name="pr3"> <option value="0">-- Elegir grupo --</option> <option value="1">Grupo 1</option> <option value="2">Grupo 2</option> <option value="3">Grupo 3</option> <option value="4">Grupo 4</option> <option value="5">Grupo 5</option> <option value="6">Grupo 6</option> <option value="7">Grupo 7</option> <option value="8">Grupo 8</option> <option value="9">Grupo 9</option> <option value="10">Grupo 10</option> <option value="11">Grupo 11</option> <option value="12">Grupo 12</option> <option value="13">Grupo 13</option> <option value="14">Grupo 14</option> <option value="15">Grupo 15</option> <option value="16">Grupo 16</option> <option value="17">Grupo 17</option> </select> [...] repetido dieciseis veces [...] <br><br> <input name="aceptar" type="submit" value="Aceptar los datos"> </form> </body> confirmacion.asp <head> <title> Confirmación de preferencias de grupo - Ingeniería del Software I </title> </head> <body> <h2> Ingeniería del Software I </h2> <h1> Confirmación de preferencias de grupo </h1> <b>Por favor, confirma que la siguiente información es correcta pulsando el botón "Los datos son correctos".</b> <br> <br> Tu DNI es: <b><%=request.form("dni")%></b> <br> Tu nombre es: <b><%=request.form("nombre")%></b> <br> Tus apellidos son: <b><%=request.form("apellidos")%></b> <br> <% if request.form("repetidor")="s" then %> <b>Ya has estado matriculado en cursos anteriores.</b> <% else %> Es la primera vez que te matriculas en la asignatura. <% end if %> <br> <% if request.form("pfc")="s" then %> <b>Estás pendiente del proyecto fin de carrera para poder matricularte en la asignatura.</b> <% else %> NO estás pendiente del proyecto fin de carrera para poder matricularte en la asignatura. <% end if %> Página 3 <br> Tus <b>preferencias de grupos</b> son las siguientes (ordenadas de mayor a menor preferencia): <br> <%if request.form("pr1")<>"0" then <br> <%if request.form("pr2")<>"0" then <br> <%if request.form("pr3")<>"0" then <br> <%if request.form("pr4")<>"0" then <br> <%if request.form("pr5")<>"0" then [...]repetido dieciseis veces [...] <br> <br> response.write(request.form("pr1"))%> response.write(request.form("pr2"))%> response.write(request.form("pr3"))%> response.write(request.form("pr4"))%> response.write(request.form("pr5"))%> <form action="guardarPreferencias.asp" method=post> <input type=hidden name="dni" value="<%=request.form("dni")%>"> <input type=hidden name="nombre" value="<%=request.form("nombre")%>"> <input type=hidden name="apellidos" value="<%=request.form("apellidos")%>"> <input type=hidden name="repetidor" value=<%=request.form("repetidor")%>> <input type=hidden name="pfc" value=<%=request.form("pfc")%>> <input type=hidden name="pr1" value=<%=request.form("pr1")%>> <input type=hidden name="pr2" value=<%=request.form("pr2")%>> <input type=hidden name="pr3" value=<%=request.form("pr3")%>> <input type=hidden name="pr4" value=<%=request.form("pr4")%>> <input type=hidden name="pr5" value=<%=request.form("pr5")%>> [...]repetido dieciseis veces [...] <input name="guardar" type="submit" value="Los datos son correctos"> </form> <form action="nuevoalumno.asp"> <input name="cambiar" type="submit" value="Cambiar los datos"> </form> </body> guardarpreferencias.asp <head> <title> Guardar preferencias de grupo - Ingeniería del Software I </title> </head> <body> <h2> Ingeniería del Software I </h2> <br> <h1> Resultado </h1> <% sql = "INSERT INTO preferenciasAlumnos (nombre, apellidos, dni, pendientePFC, repetidor, pref1, pref2, pref3, pref4, pref5, pref6, pref7, pref8, pref9, pref10, pref11, pref12, pref13, pref14, pref15, pref16) " sql = sql & "VALUES ('" & request.form("nombre") & "','" & request.form("apellidos") & "','" & request.form("dni") & "'," if request.form("pfc")="s" then sql = sql & "'Si'" & "," else sql = sql & "'No'" & "," end if if request.form("repetidor")="s" then sql = sql & "'Si'" & "," else sql = sql & "'No'" & "," end if sql = sql & request.form("pr1") & "," & request.form("pr2") & "," & request.form("pr3") & "," & request.form("pr4") & "," & request.form("pr5") & "," & request.form("pr6") & "," & request.form("pr7") & "," & request.form("pr8") & "," & request.form("pr9") & "," & request.form("pr10") & "," & request.form("pr11") & "," & request.form("pr12") & "," & request.form("pr13") & "," & request.form("pr14") & "," & request.form("pr15") & "," & request.form("pr16") sql = sql & ")" ' **Depuración** response.write(sql) on error resume next set conexion = server.createobject("ADODB.Connection") conexion.provider="Microsoft.Jet.OLEDB.4.0" conexion.open "C:\laBaseDeDatos\200506-asignaGruposIsof1.mdb" Página 4 set comando = server.createobject("ADODB.Command") comando.activeconnection = conexion comando.commandtext = sql comando.execute hayerror = 0 for each errorbd in conexion.errors hayerror = 1 next if hayerror = 1 then response.write ("<b>Ha ocurrido un error. Por favor, vuelve a intentarlo en otro momento.</b>") else response.write ("<b>Se han guardado correctamente tus preferencias.</b>") end if conexion.close %> </body> Implantación En el servidor serv.lsi.uniovi.es, dentro de un directorio virtual denominado gruposalumnos. La url de acceso al programa será, entonces: http://serv.lsi.uniovi.es/gruposalumnos/nuevoalumno.asp Diseño de datos La información se almacena en una base de datos ACCESS con una única tabla denominada “preferenciasAlumnos” que tiene el siguiente diseño de atributos: Id es la clave principal y la tabla cuenta con 16 campos para recoger las preferencias de los alumnos, cuyo nombre es prefX (con X entre 1 y 16). Página 5