PFC 2016:Gerenciador de Tabelas Esportivas

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar

Projeto de Final de Curso

Curso
Técnico Integrado em Informática
Equipe
Gabriel Garcia da Rocha, Gabriel Severo e Leonardo Zapola
Orientador
Evandro Cantú
Tema
Gerenciador de Tabelas Esportivas
Orientações
Terças-feiras: 14h00 as 15h00

Especificações do Sistema

Usuários do sistema

Descrição dos usuários do sistema e os campos de devem ser armazenados no banco de dados:

Usuário
  • Nome de login
  • Senha
  • Nome Completo
  • Dada Nascimento
  • RG
  • CPF
  • Email
  • Telefone
  • Sexo
Status de Usuários
  • Administrador (Um no sistema)
  • Organizador do Evento (Promovido pelo Administrador)
  • Capitão de Equipe (Promovido pelo Organizador do Evento)
  • Atletas

Tabelas

Chaves e formato da competição em função do número de inscritos
Rodízio
Até 5 inscritos, todos contra todos:
  • 3 inscritos: 3 partidas
  • 4 inscritos: 6 partidas
  • 5 inscritos: 10 partidas
2 grupos
Classificam 1º e 2º de cada chave.
  • 6 inscritos -> 2 chaves de 3
  • 7 inscritos -> 1 chave de 4 e 1 chave de 3
  • 8 inscritos -> 2 chaves de 4
3 grupos
Classificam 1º e 2º de cada Grupo e os dois melhores 3º.
  • 9 inscritos -> 3 chaves de 3 (classificam 1º e 2º de cada chave)
  • 10 inscritos -> 1 chave de 4 e 2 chaves de 3 (classificam 1º e 2º de cada chave)
  • 11 inscritos -> 2 chaves de 4 e 1 chave de 3 (classificam 1º e 2º de cada chave)
4 grupos
Classificam 1º e 2º de cada chave.
  • 12 inscritos -> 4 chaves de 3
  • 13 inscritos -> 1 chave de 4 e 3 chaves de 3
  • 14 inscritos -> 2 chaves de 4 e 2 chaves de 3
  • 15 inscritos -> 3 chaves de 4 e 1 chave de 3
  • 16 inscritos -> 4 chaves de 4
  • 17 inscritos -> 3 chaves de 4 e 1 chave de 5
6 grupos
Classificam 1º e 2º de cada chave.
O 1º dos grupos 1, 2, 3 e 4 entram como avulsos nas quartas de final.
  • 18 inscritos -> 6 chaves de 3
  • 19 inscritos -> 5 chaves de 3 e 1 chave de 4
  • 20 inscritos -> 4 chaves de 3 e 2 chave de 4
Tabelas para jogos em função dos inscritos

Algoritmo Competições

Algoritmo

Inscritos
vetor [2 a N inscritos]
Sorteio Chaves
Escolhe aleatoriamente os integrantes de cada chave, se inscritos >= 6 (menos o cabeça de chave, se houver)
Função Rodízio
Recebe vetor [2 a 5 elementos] e define confrontos do rodízio.
Exemplo:
vetor[A, B, C, D]
A _ x _ B
C _ x _ D
A _ x _ C
B _ x _ D
A _ x _ D
B _ x _ C
Função Eliminatórias
Recebe vetor [2 a M elementos] e define confrontos eliminatórios.
Exemplo:
vetor[A, B, C, D]
A --+
    |--+
B --+  | 
       |--
C --+  |
    |--+
D --+

Algoritmos em C

#include <stdio.h>
#include <string.h>

int entraJogador (char *novoJogador)
{
  int tam;
  printf ("\n  Entre com novo JOGADOR ou tecle Enter para finalizar:\n");
  gets(novoJogador);
  tam = strlen(novoJogador);
  printf ("Jogador: %s\n", novoJogador);
  return (tam);
}

void rodizio (int n, char vetorJogador[32][20])
{
  int c = 0;
  int i, j;
  printf ("\nPARTIDAS: \n");
  for (i=0;i<n;i++)
    for (j=i+1;j<n;j++)
      printf (" %2d: %10s x %-10s\n", ++c, vetorJogador[i], vetorJogador[j]);
}

void matamata (int n, char vetorJogador[32][20])
{
  switch (n)
  {
    case 3:
      printf ("\nPARTIDAS ELIMINATÓRIASS: \n");
      printf("\n%10s\t-------+", vetorJogador[0]);
      printf("\n\t\t       |---");
      printf("\n%10s\t---+   |", vetorJogador[1]);
      printf("\n\t\t   |---+");
      printf("\n%10s\t---+\n", vetorJogador[2]);
      break;
    case 4:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
      printf("\n%10s\t---+", vetorJogador[0]);
      printf("\n\t\t   |---+");
      printf("\n%10s\t---+   |", vetorJogador[3]);
      printf("\n\t\t       |---");
      printf("\n%10s\t---+   |", vetorJogador[1]);
      printf("\n\t\t   |---+");
      printf("\n%10s\t---+\n", vetorJogador[2]);
      break;
    case 5:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
      printf("\n%10s\t-------+", vetorJogador[0]);
      printf("\n\t\t       |---+");
      printf("\n%10s\t---+   |   |", vetorJogador[3]);
      printf("\n\t\t   |---+   |");
      printf("\n%10s\t---+       |---\n", vetorJogador[4]);
      printf("\t\t           |");  
      printf("\n%10s\t---+       |", vetorJogador[1]);
      printf("\n\t\t   |-------+");
      printf("\n%10s\t---+\n", vetorJogador[2]);
      break;
    case 6:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
      printf("\n%10s\t-------+", vetorJogador[0]);
      printf("\n\t\t       |---+");
      printf("\n%10s\t---+   |   |", vetorJogador[3]);
      printf("\n\t\t   |---+   |");
      printf("\n%10s\t---+       |---\n", vetorJogador[4]);
      printf("\t\t           |");
      printf("\n%10s\t-------+   |", vetorJogador[1]);
      printf("\n\t\t       |---+");
      printf("\n%10s\t---+   |", vetorJogador[2]);
      printf("\n\t\t   |---+");
      printf("\n%10s\t---+       \n", vetorJogador[5]);
      break;
    case 7:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
      printf("\n%10s\t-------+", vetorJogador[0]);
      printf("\n\t\t       |---+");
      printf("\n%10s\t---+   |   |", vetorJogador[3]);
      printf("\n\t\t   |---+   |");
      printf("\n%10s\t---+       |\n", vetorJogador[4]);
      printf("\t\t           |---");
      printf("\n%10s\t---+       |", vetorJogador[1]);
      printf("\n\t\t   |---+   |");
      printf("\n%10s\t---+   |   |", vetorJogador[5]);
      printf("\n\t\t       |---+");
      printf("\n%10s\t---+   |", vetorJogador[2]);
      printf("\n\t\t   |---+");
      printf("\n%10s\t---+\n", vetorJogador[5]);
      break;
    case 8:
      printf ("\nPARTIDAS ELIMINATÓRIAS: \n");
      printf("\n%10s\t---+", vetorJogador[0]);
      printf("\n\t\t   |---+");
      printf("\n%10s\t---+   |", vetorJogador[7]);
      printf("\n\t\t       |---+");
      printf("\n%10s\t---+   |   |", vetorJogador[3]);
      printf("\n\t\t   |---+   |");
      printf("\n%10s\t---+       |\n", vetorJogador[4]);
      printf("\t\t           |---");
      printf("\n%10s\t---+       |", vetorJogador[1]);
      printf("\n\t\t   |---+   |");
      printf("\n%10s\t---+   |   |", vetorJogador[6]);
      printf("\n\t\t       |---+");
      printf("\n%10s\t---+   |", vetorJogador[2]);
      printf("\n\t\t   |---+");
      printf("\n%10s\t---+\n", vetorJogador[5]);
      break;
  }
}

void copa (int n, char vetorJogador[32][20])
{
  switch (n)
  {
    case 6:
      printf("\nDUAS CHAVES -> TRÊS JOGADORES CADA\n");      
      break;
    case 7:
      printf("\nDUAS CHAVES -> UMA COM TRÊS E OUTRA COM QUATRO JOGADORES\n");            
      break;
    case 8:
      printf("\nDUAS CHAVES -> QUATRO JOGADORES CADA\n");            
      break;
  }
}

void main ()
{
  int tam;
  char novoJogador[20];
  char vetorJogador[32][20];
  int n = 0; //número de jogadores cadastrados
  int i;
  char resposta;
  printf ("\nCADASTRO DE JOGADORES\n");
  printf ("\nCadastre jogadores de acordo com o RANKING ou CABEÇAS DE CHAVE.\n");
  do
  {
    tam = entraJogador (novoJogador);
    if (tam > 0)
    {
      strcpy(vetorJogador[n], novoJogador);
      n++;
      printf ("n: %d\n", n);
    }
  } while (tam > 0);
  printf ("\nJOGADORES CADASTRADOS:\n");
  for (i=0; i<n; i++)
    printf ("Jogador %2d: %10s\n", i + 1, vetorJogador[i]);

  if (n <= 2)
  {
    printf ("\n");
    rodizio (n, vetorJogador);
  }
  if (n >= 3 && n <= 5)
  {
    printf ("\nESCOHA FORMATO DA COMPETIÇÃO: \n");
    printf (" (0) Rodízio simples\n");
    printf (" (1) Eliminatória simples\n");
    resposta = getchar();
    if (resposta == '0')
      rodizio (n, vetorJogador);
    if (resposta == '1')
      matamata(n, vetorJogador);
  }
  if (n >= 6 && n <= 8)
  {
    printf ("\nESCOHA FORMATO DA COMPETIÇÃO: \n");
    printf (" (0) Rodízio simples\n");
    printf (" (1) Eliminatória simples\n");
    printf (" (2) Copa\n");
    resposta = getchar();
    if (resposta == '0')
      rodizio (n, vetorJogador);
    if (resposta == '1')
      matamata(n, vetorJogador);
    if (resposta == '2')
      copa(n, vetorJogador);
  }
}

Modelo Relacional do Banco de Dados

--Leonardo.zapola (discussão) 14h11min de 7 de julho de 2016 (BRT)