Proyecto¶
Se quiere crear una base de datos y un sistema gestor de la misma para trabajar con los exámenes tipo test de una universidad de prestigio. Para ello, se quiere almacenar información de los siguientes datos:
Se desea almacenar información de los exámenes que se van a realizar, almacenando los siguientes datos:
- Título del examen (por ejemplo, "Examen parcial del patrón MVC").
- Materia a la que va dirigida el examen.
- Profesor/a titular del examen.
- Tiempo del examen (la ley obliga que un examen no pueda ser superior a 2 horas y media).
- Puntuación máxima a obtener.
De las preguntas solo se desea guardar su título y su puntuación. Has de tener en cuenta que una pregunta solo puede pertenecer a un examen. Dentro de un mismo examen. También se desea saber si la pregunta es de múltiple opción o no.
De las respuestas se desea conocer, el valor de la respuesta como un indicador de sí la respuesta es correcta o no.
Ejercicio 1
Una vez definida la estructura de los datos, realiza el modelo entidad relación y el modelo de datos. Además crea las clases POJOs necesarias haciendo uso del diagrama de clases.
Ejercicio 2
Crea la estructura de datos nuestra aplicación haciendo uso del patrón Repository.
Ejercicio 3
Crea un menú que tenga las siguientes opciones:
- Crear un examen. Debe solicitar los datos necesarios del examen al usuario, crear e insertarlo en la base de datos.
- Añadir preguntas a un examen. El usuario deberá insertar todas las preguntas que sean necesarias hasta que indique como título de la pregunta que ya no desea insertar ninguna pregunta más (haciendo uso de la palabra exit). Para insertar una pregunta se le solicitará al usuario:
- La información relevante para la pregunta. Debes tener en cuenta la puntuación del examen, en caso de que la nota supere el máximo esperado, dejando como nota la cantidad necesaria hasta llegar al máximo sin importar lo indicado por el usuario, es decir, si el examen tiene una puntuación máxima de 10 y tiene 3 preguntas con 3 puntos cada una, la pregunta a insertar no puede superar el 1, en caso de hacerlo, hará caso omiso, y escribirá 1.
- El número de respuestas a introducir y el valor de la respuesta, teniendo en cuenta que si la pregunta es de una sola respuesta correcta y se inserta más respuestas correctas, solo tomará como correcta, la primera de ellas.
- El examen a insertar.
- Consultar examen. Podrá ver las pregunta (sin respuestas) del examen solicitado por el usuario.
- Actualizar pregunta. Podrá modificar preguntas del examen solicitado. Solo puede modificar el título y la puntuación.
- Eliminar pregunta. Eliminará la pregunta indicada.
- Consultar pregunta. Mostrará las respuestas del examen solicitado.
- Actualizar respuesta. Podrá actualizar una respuesta de la pregunta solicitada, pudiendo modificar tanto el valor de la respuesta como si es correcta o no.
- Añadir respuesta. Solicitará información de una respuesta y la introducirá en la pregunta.
- Eliminar respuesta. Eliminará la respuesta de la pregunta eliminada.
- Ver examen completo. Se le solicitará el usuario el examen a ver y el modo de verlo, alumno o profesor. Si elige la opción modo alumno, mostrará el examen imprimido con el formato (indicado después), mientras que si el usuario elige el modo profesor, mostrará el examen con las respuestas correctas indicadas en verdes.
- Realizar back up. Se almacenará en un fichero JSON, una copia de seguridad de la base de datos.
- Imprimir examen. Imprimirá el examen en su formato en un fichero de texto. Ten en cuenta, que el examen no será imprimido si le faltan preguntas o si una pregunta no tiene respuestas.