Skip to content

emanuelrichieri/trivia-app

Repository files navigation

Trivia App

Aplicación para exámenes virtuales desarrollada con fines académicos, en el marco de la materia Taller de Programación de la carrera Ingeniería en Sistemas de Información de la Facultad Regional Concepción el Uruguay de la Universidad Tecnológica Nacional.

Autor: Emanuel Richieri

Descripción general

La aplicación presenta al usuario distintas preguntas con opciones de múltiples respuestas o multiple choice, donde el usuario deberá seleccionará una respuesta para continuar con la próxima pregunta. Al final del examen se le muestra el puntaje obtenido en base a diferentes conceptos.

Tecnologías y herramientas

  • C# / .NET - Lenguaje de programación / Plataforma de desarrollo
  • Git - Control de versiones
  • Entity Framework - Framework ORM para .NET
  • MonoDevelop - Entorno de desarrollo
  • GTK# - GUI Toolkit para MonoDevelop y .NET
  • PostgreSQL - Base de Datos

Instalación

Pre-requisitos

  • Tener instalado PostgreSQL > 9.4

Ejecución directa

  • Si se va a utilizar directamente el archivo ejecutable TdP2019-TPFinal-Richieri.exe, asegurarse:
    • Que postgresql corra de manera local en el puerto 5432
    • Que exista un usuario postgres con password postgres
    • En el gestor de bd postgres, ejecutar el script de creación de db /sql/Create_database.sql
    • Ejecutar el script /sql/Init_data.sql

Ejecución medidante IDE (con configuración personalizada de base de datos)

  • En el gestor de bd postgres, ejecutar el script de creación de db /sql/Create_database.sql
  • Ejecutar el script /sql/Init_data.sql
  • Configurar los parámetros de conexión a la base de datos en el archivo TdP2019-TPFinal-Richieri/App.config como este ejemplo:

<connectionStrings> <add name="TriviaDb" connectionString="Server=localhost;Port=5432;Database=trivia-app;User Id=postgres;Password=postgres;CommandTimeout=0;InternalCommandTimeout=0;Include Error Detail=true" providerName="Npgsql"/> </connectionStrings>

  • Compilar y ejecutar

Funcionalidades

Funcionalidad administrativa

El objetivo de la funcionalidad administrativa es gestionar en la aplicación los diferentes conjuntos de preguntas/respuestas a ser utilizados en la funcionalidad operativa. Un conjunto es una agrupación de preguntas/respuestas con el mismo origen. Las preguntas pertenecen a una categoría (por ejemplo deportes, artes, etc.), tienen niveles de dificultad (alto, medio, bajo) y múltiples respuestas asociadas. Las categorías y niveles están relacionadas a un conjunto de datos particular.

En la aplicación podría haber muchos conjuntos, pero inicialmente se incluye el conjunto de preguntas del sitio Opentdb Opentdb (Open Trivia DataBase - https://opentdb.com/) -un sitio de internet el cual posee datos de diferentes trivias las que pueden ser inspeccionadas y también modificadas en forma online-. Este sitio permite además descargar las trivias mediante una API que devuelve los datos en formato JSON (JavaScript Object Notation).

A continuación se encuentra el link de acceso a la documentación de la API: https://opentdb.com/api_config.php.

Mediante esta API un usuario administrativo de la aplicación puede realizar la importación de datos de las trivias disponibles (categorías, preguntas y niveles), persistiénolas internamente y asociándolas al conjunto de preguntas Opentdb.

Instrucciones

  1. Ingresar con un usuario con rol administrador (en los datos iniciales se incluye user: admin / pass: admin)
  2. Seleccionar un conjunto de preguntas
  3. Seleccionar la opción "Settings"
  4. Allí se pueden realizar dos operaciones: a. Actualizar datos: seleccionar la opción "Update Data". Esto disparará el proceso de actualización de los datos del conjunto de preguntas seleccionado, lo cual implica en el caso de Opentdb consultar la API de categories y almacenar nuevas categorías en la base de datos. Luego, por cada categoría en la base de datos, almacena nuevas preguntas que se hayan agregado al conjunto. b. Actualizar tiempo esperado de respuesta: cambiando este parámetro se establece cuál será el tiempo límite (en segundos) que dispondrán los usuarios para contestar cada pregunta del conjunto seleccionaddo

Funcionalidad operativa

La funcionalidad operativa tiene como objetivo mostrar las preguntas al usuario e ir registrando las respuestas. Además, el usuario puede visualizar el ranking de sesiones para cada conjunto de preguntas, ordenados de mayor a menor por puntaje.

Instrucciones

  1. Ingresar con cualquier usuario (previamente puede registrar un nuevo usuario, haciendo click en el botón "SignUp" de la pantalla principal)

  2. Seleccionar un conjunto de preguntas

  3. Examen

    a. Seleccionar la opción "Start new Session"

    b. Elegir categoría, nivel de dificultad y cantidad de preguntas

    c. Se mostrarán las preguntas una por una. Para responder cada una de ellas se dispondrá del tiempo esperado de respuesta configurado para el conjunto de preguntas seleccionado. Una vez cumplido el tiempo, la respuesta se registra tal cual está (con el valor seleccionado o vacía).

    d. Al finalizar la sesión, se muestra el puntaje (ver sección cálculo el puntaje).

    Ranking

    a. Seleccionar la opción "Show ranking"

    b. Se mostrará una tabla con los mejores puntajes obtenidos para el conjunto de preguntas seleccionado.

Cálculo del puntaje de la sesión

El cálculo del puntaje es específico de cada conjunto de preguntas. Si se agrega un nuevo conjunto de preguntas a la aplicación, debe desarrollarse el calculador de puntaje propio del conjunto. Lo mismo sucede con el proceso de importación.

En el caso del conjunto Opentdb, el puntaje se calcula de acuerdo a la siguiente fórmula:

Puntaje = cantidad respuestas correctas / cantidad de preguntas * factor dificultad * factor tiempo. donde:

Factor dificultad:

◦ alto: 5 puntos.
◦ medio: 3 puntos.
◦ bajo: 1 punto.

Factor tiempo: si tiempo total insumido / cantidad de preguntas

◦ menor a 5 segundos: 5 puntos.
◦ entre 5 y 20 segundos: 3 puntos.
◦ mayor a 20 segundos: 1 punto.

About

Aplicación para exámenes virtuales desarrollada con fines académicos.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages