Caso práctico: diseño

Anuncio
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
Descargar