/Projeto-Restaurante-GMR-

Repositório relacionado ao projeto-restaurante (trabalho final da disciplina de Engenharia de Software na UFC no semestre 2021.1)

Primary LanguageJava

Gerencimento de Mesas de Restaurante (GMR)

Sobre * Funções * Instalação * Feedback * Tecnologias * Features * Colaboradores *

Projeto Finalizado em 03/09/2021!

Sobre

Solução de software para reserva de mesas no comércio de varejo alimentício.

Modelo de Processo usado para a criação da aplicação foi Prototipagem Rápida, que é uma coleção de técnicas formais e informais para desenvolvimento, desmonstração e avaliação do design de interfaces de úsuarios, que dá suporte a interações rápidas.

Em tempos de pandemia originada pela COVID-19 há uma preocupação muito grande com o distanciamento social e com os protocolos de segurança sanitária.

Tendo isso em vista, é notório que os restaurantes são locais bastante frequentados e com risco de contágio maior, pensando nisso, este software visa manter o distanciamento social em restaurantes, baseando-se no gerenciamento de mesas presentes no local, e assim proporcionar um local seguro, que esteja de acordo com os protocolos sanitários, e que seja ideal para as pessoas aproveitarem ao máximo seu momento de lazer.

Funções

Algumas funções implementadas na aplicação.

Chamada da função para verificar se a mesa está livre .

public static boolean mesaLivre(Mesa matMesa[][], int linha, int coluna){
        if(matMesa[linha][coluna].estadoAtual == LIVRE){
            return true;
        }else{
            return false;
        }
}

Função que verirfica se a mesa está livre (em execução).

Chamada da função para a reserva de uma mesa .

 public static void reservarMesa(Mesa matMesa[][], int linha, int coluna){
        
        if(mesaLivre(matMesa, linha, coluna) == true){ 
            matMesa[linha][coluna].setReserva(true);
            matMesa[linha][coluna].setEstadoAtual(RESERVADA);
        }else{
            System.out.println("\nErro: A mesa nao pode ser reservada no momento!\n");
        }
    }

Função de reserva de mesa em excução.

Chamada da função que faz a principal função do codigo, promover o distanciamento seguro das mesas com etiqueta de "SEGURANÇA".

public static void distanciamentoMesa(Mesa matMesa[][], int numeroMesa){ 
        int i, j;
       
        if(numeroMesa >= 1 && numeroMesa <= 30){ // este if chega se o número da mesa está entre 1 e 30, caso não esteja uma mensagem de erro será mostrada
            for(i = 0; i < 5; i++){
                 for(j = 0; j < 6; j++){
                     
                     if (matMesa[i][j].getEstadoAtual() != SEGURANÇA && matMesa[i][j].getNumeroMesa() == numeroMesa){
                         
                        switch (j){
                            case 0:
                                if (matMesa[i][j].getNumeroMesa() == numeroMesa){
                                    
                                    if (numeroMesa == 1){ 
                                        matMesa[i][(j + 1)].setEstadoAtual(SEGURANÇA);//bloquear mesa seguinte
                                        matMesa[i+1][j].setEstadoAtual(SEGURANÇA);//bloquear mesa inferior
                                    }
                                    
                                    else if (numeroMesa == 25){
                                        matMesa[i-1][j].setEstadoAtual(SEGURANÇA);//bloquear mesa superior
                                        matMesa[i][j+1].setEstadoAtual(SEGURANÇA);//bloquear mesa seguinte
                                     
                                    } else {
                                        matMesa[i-1][j].setEstadoAtual(SEGURANÇA);//bloquear mesa superior
                                        matMesa[i][(j + 1)].setEstadoAtual(SEGURANÇA);//bloquear mesa seguinte
                                        matMesa[(i + 1)][j].setEstadoAtual(SEGURANÇA);//bloquear mesa inferior
                                    }
                                }
                                break;
                            case 5:
                                if (matMesa[i][j].getNumeroMesa() == numeroMesa){
                                    if (numeroMesa == 6){
                                        matMesa[i][(j - 1)].setEstadoAtual(SEGURANÇA);//bloquear mesa anterior
                                        matMesa[i+1][j].setEstadoAtual(SEGURANÇA);//bloquear mesa inferior
                                    }
                                    else if (numeroMesa == 30){
                                        matMesa[i-1][j].setEstadoAtual(SEGURANÇA);//bloquear mesa superior
                                        matMesa[i][j-1].setEstadoAtual(SEGURANÇA);//bloquear mesa anterior
                                    } else {
                                        matMesa[i-1][j].setEstadoAtual(SEGURANÇA);//bloquear mesa superior
                                        matMesa[i][(j + 1)].setEstadoAtual(SEGURANÇA);//bloquear mesa seguinte
                                        matMesa[(i + 1)][j].setEstadoAtual(SEGURANÇA);//bloquear mesa inferior
                                    }
                                }
                                break;
                        }
                        switch (i){
                            case 0:
                                if ((j > 0 && j < 5) && matMesa[i][j].getNumeroMesa() == numeroMesa){
                                    matMesa[i][j-1].setEstadoAtual(SEGURANÇA);
                                    matMesa[i+1][(j)].setEstadoAtual(SEGURANÇA);
                                    matMesa[i][j+1].setEstadoAtual(SEGURANÇA);
                                }
                                break;
                                // o mesmo acontece com a linha 4, com a diferença das posições das mesas
                            case 4:
                                if ((j > 0 && j < 5) && matMesa[i][j].getNumeroMesa() == numeroMesa){
                                    matMesa[i][j-1].setEstadoAtual(SEGURANÇA);
                                    matMesa[i-1][j].setEstadoAtual(SEGURANÇA);
                                    matMesa[i][j+1].setEstadoAtual(SEGURANÇA);
                                }
                                break;
                        }
                        if((j != 0 && j != 5) && (i != 0 && i != 4) && matMesa[i][j].getNumeroMesa() == numeroMesa){
                            matMesa[i][(j - 1)].setEstadoAtual(SEGURANÇA);
                            matMesa[i][(j + 1)].setEstadoAtual(SEGURANÇA);
                            matMesa[(i + 1)][j].setEstadoAtual(SEGURANÇA);
                            matMesa[(i - 1)][j].setEstadoAtual(SEGURANÇA);
                        }
                    }
                }
            }
        } else{
            System.out.println("\nErro: O numero de mesa digitado é invalido!\n");
        }
    } 

Após a função de ocupar mesa ser chamada, o distanciamento seguro das mesas com etiqueta de "SEGURANÇA" (principal função do codigo) é aplicado.

Chamada da função que faz a ocupação da mesa desejada.


 public static void ocuparMesa(Mesa matMesa[][], int numeroMesa){
        int i, j;
        
        if(numeroMesa >= 1 && numeroMesa <= 30){ // se o numero da mesa fornecido estiver entre 1 e 30, o restante do codigo é executado
            for(i = 0; i < 5; i++){
                for(j = 0; j < 6; j++){
                    /* se o numero da mesa fornecido corresponder ao numero de mesa em alguma posição da matriz e ela estiver livre, 
                       entao seu estado é trocaddo para OCUPADA e, em seguida, a função de distanciamento é chamada
                       para bloquear aas mesas ao redor para distanciamento social*/
                    if(matMesa[i][j].getNumeroMesa() == numeroMesa){
                        if(mesaLivre(matMesa, i, j) == true){
                            matMesa[i][j].setEstadoAtual(OCUPADA);
                            distanciamentoMesa(matMesa, numeroMesa);
                            break;
                         /* caso a mesa esteja reservada, então seu estado atual sera trocado para OCUPADA
                            a variavel reserva de Mesa será atualizada para false e, por fim, a função de distanciamento é chamada
                            e para efetuar o distanciamento das mesas ao redor da mesa que sera ocupada*/
                        } else if (matMesa[i][j].isReserva() == true){
                            matMesa[i][j].setEstadoAtual(OCUPADA);
                            matMesa[i][j].setReserva(false);
                            distanciamentoMesa(matMesa, numeroMesa);
                        // caso não seja nenhuma das opções anteriores, entao uma msg de erro sera mostrada e a mesa não podera ser ocupada
                        } else {
                            System.out.println("\nErro: A mesa solicitada não pode ser ocupada no momento! Por favor, verique se ela não está OCUPADA, RESERVADA, bloqueada por SEGURANÇA ou se é para DESINFECTAR.");
                        }
                    }
                }
            }
        }else{
            System.out.println("\nErro: O numero de mesa digitado é invalido!\n");
        }
    }

Função de ocupar mesa em execução

Instalação

Passos para executar o software GMR já compilado (arquivo .jar):

  1. Acessar a página da internet: https://github.com/MateusMotams/Projeto-Restaurante-GMR-
  2. Clicar no botão verde "Code"
  3. No menu aberto pelo botão do passo anterior, clique em "Download ZIP"
  4. Descompacte o arquivo .ZIP chamado "Projeto-Restaurante-GMR--master" com o uso do software de sua preferência (por exemplo: WinRAR, 7-Zip etc).
  5. Se após clicar com o botão direito do mouse no arquivo .ZIP do passo anterior, você selecionar a opção de "Extract Here/Extrair Aqui", você terá acesso à uma pasta chamada "Projeto-Restaurante-GMR--master", abra-a. Ou se você selecionar a opção "Extract to/Extrair para Projeto-Restaurante-GMR--master" abra a pasta de mesmo nome (Projeto-Restaurante-GMR--master), neste método haverá uma subpasta com o mesmo nome antes de chegar aos arquivos principais.
  6. Abra a pasta "dist".
  7. Dentro da pasta "dist" clique duas vezes no ícone (ou no nome) do arquivo "Gerenciamento_de_Mesas_de_Restaurante__GMR_". Agora você pode usar o software GMR.
  8. (OPCIONAL) Caso você não tenha conseguido seguir o 1º Passo, provavelmente é preciso instalar o Java Runtime Environment (JRE) no link: https://www.java.com/pt-BR/download/manual.jsp
  9. (OPCIONAL) Abrir a IDE que ofereça suporte a Java de sua preferência e abrir o projeto da pasta "Projeto-Restaurante-GMR--master". Agora, você pode analisar os códigos-fontes produzidos pelos membros desta equipe de desenvolvimento e fazer novas compilações e/ou alterações na programação feita.

Feedback

Após o software ser testado (por terceiros não envolvidos com trabalho e de forma voluntária) foi constatado por parte dos usuários a falta da função de cancelar a reserva de uma mesa. Após feita a respectiva alteração e atualização dos códigos-fontes, pode-se ver a função abaixo em execução.

Tecnologias

Features

  • Cliente
  • Gerenciamento de mesas
    • ocupar mesa
    • distanciamento das mesas
    • reservar mesa
    • cancelar reserva de mesa
    • desocupar mesa
    • desinfectar mesa
    • outras
  • Mesa
  • Interface gráfica (em Java)

Colaboradores

Raniery Alves Vasconcelos (Matrícula: 473532)

Kossi Dominique (Matrícula: 422707)

Luan Gomes (Matrícula: 473008)

Mateus Mota (Matrícula: 432342)

Yara Braga (Matrícula: 433931)

Kenedy (Matrícula: 478937)