Ejemplo de un totogol

Propósito: Crear un software que ayude a un organizador a vender totogoles y determinar los ganadores de cada jornada.

Proyecto01: línea de comandos

Fecha límite de entrega 07 de noviembre a la medianoche en repositorio individual de control de versiones.

  1. [5%] Buen uso de control de versiones (commits, ignores). Estructura de directorios.

  2. [10%] Análisis (readme): problema a resolver, compilación de la solución (build), manual de usuario.

  3. [10%] Apego a una convención de estilos (linting).

  4. [10%] Documentación de interfaces (javadoc): propósito, parámetros, supuestos (contratos). Documentación de implementaciones: comentarios en los cuerpos de subrutinas de lo que no es trivial.

  5. [10%] Crea al menos 5 casos de prueba acordes a la convención del grupo en el repositorio de ejemplos.

Diseña (algoritmo en pseudocódigo, clases UML, o híbrido) e implementa una solución que:

  1. [10%] Trabaja en lote. Invoca subrutinas para leer totogoles de la entrada estándar. Invoca subrutinas para imprimir ganadores en la salida estándar. Reporta mensajes de error si los datos son inválidos o incompletos. Pasa los casos de prueba.

  2. [15%] Trabaja en modo interactivo. Invoca subrutinas para cargar el archivo de totogoles a la memoria. Presenta repetitivamente el menú al usuario. Sólo permite accionar opciones del menú que tienen sentido:

    1. registrar jornada cuando no la hay en el archivo,

    2. vender totogoles cuando hay jornada sin resultado,

    3. registrar el resultado de la jornada si no estaba registrada y si hay totogoles vendidos.

  3. [5%] Implementa suburtinas para cargar correctamente la jornada del archivo de datos o entrada estándar, si existe. Permite registrar una jornada de forma interactiva y la almacena en el archivo siguiendo la estructura acordada.

  4. [10%] Carga los totogoles vendidos del archivo o entrada estándar, si existen. Usa estructuras de datos (ej.: arreglos, registros) para repesentar los totogoles. Permite interactivamente vender totogoles y registrarlos en el archivo.

  5. [15%] Carga el resultado de la jornada, si está disponible. Registra el resultado de la jornada interactivamente (si no lo está ya). Si ya se tiene el resultado de la jornada, lista los ganadores y sus premios. Puntúa cada totogol. Escoge al ganador o ganadores. Utiliza las estructuras de datos en memoria para determinar los ganadores.

Proyecto02: interfaz gráfica de usuario

En parejas. Fecha límite de entrega 02 13 de diciembre a la medianoche en repositorio nuevo de control de versiones, propio para el proyecto 02.

  1. [5%] Buen uso de control de versiones (commits, ignores). Estructura de directorios. Construcción automática (Makefile). Manual de usuario en el readme.ext.

  2. [10%] Apego a una convención de estilos (linting).

  3. [10%] Documentación de interfaces (javadoc): propósito, parámetros, supuestos (contratos). Documentación de implementaciones: comentarios en los cuerpos de subrutinas de lo que no es trivial.

  4. [15%] Registrar jornada en GUI cuando no la hay en el archivo. Agregar y eliminar encuentros. Reflejar cambios en el archivo.

  5. [20%] Permitir vender totogoles si hay jornada. Impide modificar la cantidad de encuentros de la jornada. Agregar totogoles. Registra jugadores y predicciones por encuentros. Eliminar totogoles. Refleja cambios en el archivo.

  6. [20%] Permitir registrar el resultado de la jornada (si hay totogoles vendidos). Impide agregar totogoles o modificar la jornada. Reporta ganadores y sus premios. Reflejar resultado en el archivo.

  7. [10%] Buscar y filtrar totogoles por jugador o su número de teléfono.

  8. [10%] Ordenar totogoles por orden de venta o puntaje de mayor a menor.