• Nenhum resultado encontrado

IF71A S /2 Computação I

N/A
N/A
Protected

Academic year: 2021

Share "IF71A S /2 Computação I"

Copied!
9
0
0

Texto

(1)

IF71A – S83 – 2015/2 – Computação I

Projeto da disciplina (versão 0.1 – sujeita a alterações)

Tema

Uma grande empresa de mídias está promovendo um concurso mundial para saber quem é a pessoa com o maior conhecimento agregado sobre jogos, filmes e músicas. Ao vencedor será dado um prêmio de 5 milhões de dólares, logo está acontecendo um grande movimento nas redes sociais. Os 10 participantes que competirão pelo prêmio serão selecionados a partir de competições locais, que definirão 2 participantes por continente.

A sua equipe percebeu neste cenário uma oportunidade de criar uma

startup para apoiar brasileiros que desejam participar da competição. Para

isso vocês criarão um aplicativo que gerará automaticamente questões sobre os temas jogos, filmes e músicas para os participantes. O nome da aplicação será AutoQuizzer, chamada no restante deste texto pelo seu acrônimo AQ.

(2)

Tela inicial

Ao iniciar o AQ o sistema exibe o texto “AutoQuizzer” e, logo abaixo, os nomes dos desenvolvedores do sistema.

Em seguida o usuário tem duas opções:

 Acessar como competidor

 Acessar como administrador

 Sair do AutoQuizzer

Acessar como competidor

Ao selecionar estão o AQ deve apresentar ao usuário o “Menu principal” do sistema.

Acessar como administrador

Ao selecionar esta opção, o AQ deve pedir o nome do usuário e a senha de administrador. O usuário somente poderá acessar o menu principal do AQ, caso ele informe o usuário e a senha correta. Caso contrário o AQ, deve voltar à “Tela inicial”. O nome de usuário administrador deve SEMPRE ser admin e a senha inicial é euQsei (esta pode ser alterada após acessar o sistema). Armazene a senha do administrador no arquivo binário config.dat.

Sair do AutoQuizzer

Ao selecionar esta opção, o sistema deve pedir uma confirmação do usuário antes de encerrar a execução do programa.

(3)

Menu principal

O menu principal contém todas as funcionalidades disponíveis no AQ. Todas as ações feitas no menu principal são relacionadas ao competidor selecionado ou ao administrador. As ações de um competidor não devem afetar os demais competidores.

Toda vez que o usuário encerrar uma operação em uma das funcionalidades disponíveis, o sistema deve retornar ao menu principal.

As funcionalidades que compõem o menu principal são: 1. Alterar senha do administrador [*]

2. Cadastro geral [*] 2.1. Novo gênero 2.2. Apagar gênero 2.3. Novo artista 2.4. Apagar artista 3. Cadastro de mídias [*] 3.1. Nova mídia 3.2. Apagar mídia 4. Treinar [**] 4.1. Ver mídia 4.2. AutoQuizzer Simulator 5. Sair do AutoQuizzer

ATENÇÃO 1: Menus e seus respectivos submenus marcados com [*] só podem ser visualizados pelo administrador.

ATENÇÃO 2: Menus e seus respectivos submenus marcados com [**] só podem ser visualizados por competidores.

ATENÇÃO 3: use uma função para limpar a tela após a conclusão de cada operação.

As próximas seções apresentam detalhes de cada funcionalidade do menu.

Alterar senha do administrador (menu 1)

Ao selecionar esta opção o sistema deve pedir a senha atual e, se esta for informada corretamente, o sistema deve pedir para o usuário informar 2 vezes a nova senha. Se ambas forem iguais e alfanuméricas, a senha será alterada. Em qualquer caso, o sistema deve voltar para a “Tela inicial”. Uma mensagem deve informar o usuário se a operação foi ou não bem-sucedida.

(4)

Novo gênero (menu 2.1)

Na funcionalidade “Novo gênero” o usuário poderá cadastrar um novo gênero (ex. “Comédia”, para filmes, “Corrida”, para jogos, “Samba”, para músicas) que poderá ser usado posteriormente no cadastro de uma mídia. Um mesmo gênero pode ser utilizado para mais de um tipo de mídia (ex. “Terror”, para filmes e jogos). Todos os gêneros DEVEM ser armazenados no arquivo binário chamado genero.dat. O sistema AQ deverá ter capacidade para armazenar até 60 gêneros.

O cadastro de um gênero envolve as informações:

 Código do gênero (inteiro). Gerado automaticamente pelo sistema. Deve ser um código diferente para cada gênero;

 Nome do gênero (até 30 caracteres);

 Filme (Sim/Não). Indica se o gênero pode ser usado para categorizar filmes;

 Jogo (Sim/Não). Indica se o gênero pode ser usado para categorizar jogos;

 Música (Sim/Não). Indica se o gênero pode ser usado para categorizar músicas.

ATENÇÃO: Um gênero deve obrigatoriamente pode ser usado para ao menos uma mídia.

DICA: Use um vetor de struct para o cadastro de gêneros. Dessa maneira você poderá cadastrar todas as informações de gêneros, independentemente do tipo de dados.

Apagar gênero (menu 2.2)

Ao selecionar esta opção, o AQ deve apresentar a lista de gêneros já cadastrados. Em seguida o usuário deve informar o código do gênero que deseja apagar. O sistema deve apresentar uma mensagem confirmando se ele deseja realmente apagar o gênero. Em caso positivo, o gênero deve ser apagado.

ATENÇÃO: Um gênero não poderá ser apagado enquanto houver uma mídia cadastrada usando-o.

DICA: Para facilitar a atividade de apagar um gênero, considere somente alterar o código do gênero para -1. Assim, você saberá que esses códigos indicam que não há nada cadastrado naquela posição do vetor.

(5)

Novo artista (menu 2.3)

Na funcionalidade “Novo artista” o usuário poderá cadastrar um novo artista. Como artistas são pessoas dinâmicas que podem variar suas funções entre interpretação de papeis, direção, entre outros, é importante um cadastro unificado de artistas, de maneira a identificar todas as funções exercidas por um mesmo artista. Todos os artistas DEVEM ser armazenados no arquivo binário chamado artista.dat. O sistema AQ deverá ter capacidade para armazenar até 1000 artistas.

O cadastro de um gênero envolve as informações:

 Código do artista (inteiro). Gerado automaticamente pelo sistema. Deve ser um código diferente para cada artista;

 Nome do artista (até 60 caracteres);

 Dia do nascimento (inteiro). Valores permitidos entre 1 e 31, de acordo com o mês;

 Mês do nascimento (inteiro). Valores permitidos entre 1 e 12;

 Ano do nascimento (inteiro).

DICA: Use um vetor de struct para o cadastro de artistas. Dessa maneira você poderá cadastrar todas as informações de artistas, independentemente do tipo de dados.

Apagar artista (menu 2.4)

Ao selecionar esta opção, o AQ deve apresentar a lista de artistas já cadastrados. Em seguida o usuário deve informar o código do artista que deseja apagar. O sistema deve apresentar uma mensagem confirmando se ele deseja realmente apagar o artista. Em caso positivo, o artista deve ser apagado.

ATENÇÃO: Um artista não poderá ser apagado enquanto houver uma mídia cadastrada usando-o.

DICA: Para facilitar a atividade de apagar um artista, considere somente alterar o código do artista para -1. Assim, você saberá que esses códigos indicam que não há nada cadastrado naquela posição do vetor.

(6)

Nova mídia (menu 3.1)

Na funcionalidade “Nova mídia” o usuário poderá cadastrar uma nova mídia, que pode ser um filme, um jogo, ou uma música. Mídias DEVEM ser armazenadas no arquivo binário chamado midia.dat. O sistema AQ deverá ter capacidade para armazenar até 500 mídias.

O cadastro de uma mídia envolve as informações:

 Código da mídia (inteiro). Gerado automaticamente pelo sistema. Deve ser um código diferente para cada mídia;

 Título da mídia (até 150 caracteres);

 Ano (inteiro). Ano em que a mídia foi criada/lançada;

 Tipo da mídia (caractere). Informe ‘F’ para filmes, ‘J’ para jogos ou ‘M’ para músicas;

 Gênero (inteiro). Deve ser apresentada a lista de gêneros já cadastrados para o usuário escolher. A lista deve conter somente gêneros do tipo de mídia selecionado;

 Artista (vetor de inteiros). Deve ser apresentada a lista de artistas já cadastrados para o usuário escolher. O vetor deve permitir armazenar até 10 artistas para cada mídia;

 Álbum (caractere). Nome do álbum em que a música foi lançada. Informá-lo somente para MÚSICAS;

 Duração (inteiro). Tempo, em segundos, de duração da música ou filme. Informá-lo somente para MÚSICAS ou FILMES;

 Fabricante (caractere). Nome da empresa fabricante do jogo. Informá-lo somente para JOGOS;

DICA: Use um vetor de struct para o cadastro de mídia. Dessa maneira você poderá cadastrar todas as informações de mídias, independentemente do tipo de dados.

Apagar mídia (menu 3.2)

Ao selecionar esta opção, o AQ deve apresentar a lista de mídias já cadastradas. Em seguida o usuário deve informar o código da mídia que deseja apagar. O sistema deve apresentar uma mensagem confirmando se ele deseja realmente apagar a mídia. Em caso positivo, a mídia deve ser apagada.

DICA: Para facilitar a atividade de apagar uma mídia, considere somente alterar o código da mídia para -1. Assim, você saberá que esses códigos indicam que não há nada cadastrado naquela posição do vetor.

(7)

Ver mídia (menu 4.1)

Antes de testar suas habilidades no AutoQuizzer Simulator, o competidor tem a oportunidade de estudar as mídias cadastradas no AQ. Ao selecionar esta opção, o sistema deve permitir ao competidor selecionar o tipo de mídia desejada (filme, jogo ou música). Após a seleção, o sistema deve apresentar uma lista dos código e nomes das mídias do tipo selecionado. O competidor deve ter a opção de escolher uma dessas mídias e, em seguida, o sistema deve apresentar TODAS as informações relacionadas a ela.

AutoQuizzer Simulator (menu 4.2)

Agora que tudo está cadastrado e o competidor já teve oportunidades para estudar as mídias, chegou a hora de testar suas habilidades!

O AutoQuizzer Simulator (AQS) é um simulador de eventos de competição no estilo perguntas e respostas. Para tornar as perguntas e respostas mais interessantes, elas são geradas automaticamente pelo AQS, com base nos dados cadastrados sobre as mídias.

Ao selecionar esta opção o competidor inicia um ciclo de perguntas/respostas. O competidor pode responder quantas perguntas ele desejar. Quando não mais desejar responder a perguntas, o sistema deve apresentar duas informações:

 Pontuação total alcançada, que é calculada da seguinte maneira: o 100 pontos a cada acerto;

o -50 pontos a cada erro;

o Bônus cumulativo de 30 pontos, caso acerte duas perguntas em seguida

o Exemplo: se o competidor responder a 10 perguntas, sendo 6 acertos e 4 erros, na sequência [A, A, E, A, E, A, A, A, E, E], a pontuação será: [100 + 100 + 30 – 50 + 100 – 50 + 100 + 100 + 30 + 100 + 30 - 50 - 50] = 490 pontos;

 Ranking dos Top 3. Toda vez que um competidor alcançar a pontuação suficiente para estar entre os 3 melhores competidores, ele tem o direito de registrar seu nome no ranking. O ranking deve conter a pontuação e os nomes dos três melhores competidores e ser atualizado cada vez que um competidor a alcança, mesmo que seja um empate. Os dados devem ser armazenados em um arquivo binário chamado rank.dat.

Ao final de cada jogo, independente da pontuação do competidor, o AQ deve apresentar o ranking dos Top 3 atualizado.

(8)

Há diversos tipos de questões que podem ser feitas, mas há um conjunto mínimo de tipos de questões que o AQS deve ser capaz de gerar automaticamente. São elas:

 Em que ano a mídia “[TÍTULO DA MÍDIA]” foi lançado(a)?

 Qual, entre as opções, é a mídia com maior tempo de duração?

 Qual, entre as opções, é a mídia mais antiga?

 Qual, entre as opções, é a mídia mais recente?

 Qual, entre as opções, é o artista que já participou como ator e cantor?

 Qual, entre as opções, é o gênero da mídia “[TÍTULO DA MÍDIA]”?

 Qual, entre as opções, é o Álbum no qual a música “[TÍTULO DA MÚSICA]” foi lançada?

 Qual, entre as opções, é um jogo da fabricante “[NOME DA FABRICANTE]”?

 Qual, entre as opções, é o(a) artista mais velho(a)?

 Qual, entre as opções, é o(a) artista mais jovem(a)?

Para as questões que contém o texto “entre as opções”, o sistema deve oferece 2 opções adicionais além da opção correta. Somente uma das opções deve estar correta. As duas opções adicionais devem ser obtidas ALEATORIAMENTE entre as mídias cadastradas.

DICA: Para gerar números aleatórios utilizem a função RandomInteger tal como apresentado no exemplo a seguir. No AQ, de acordo com a pergunta e as opções disponíveis, basta ajustar os valores das variáveis min e max para que a função escolha aleatoriamente qual delas incluir na pergunta.

#include <stdio.h>

//Exemplo de programa para gerar números aleatórios com valor entre os definidos pelas variáveis min e max.

int main() {

int min = 0, max = 10; srand(time(NULL));

printf("%d", RandomInteger (min, max)); }

int RandomInteger (int min, int max) { return min+rand()%max;

}

Sair do AutoQuizzer (menu 5)

Ao selecionar esta opção, o sistema deve pedir uma confirmação do usuário antes de encerrar a execução do programa.

(9)

Requisitos de entrega

Apresentação. A qualidade e criatividade na apresentação é um critério importante para esse projeto. Assim busquem tornar o programa fácil de usar. Por exemplo, usem cores e apresentem as informações de maneira clara e organizada.

Organização:

 O projeto deverá ser desenvolvido em trios;

 Cada projeto será apresentado em laboratório pelo grupo;

 Cada membro do grupo deverá mostrar conhecimento do funcionamento do projeto.

O código:

 Deverá ser documentado com comentários;

 Deverá estar indentado;

 Atenção nos nomes de variáveis e tipos de dados;

Cada funcionalidade deverá ser codificada em funções separadas;

 A apresentação dos dados deve ser clara e estruturada;

A função main deve conter somente as chamadas para as funções do sistema;

Funcionalidades:

 O grupo tem liberdade para implementar a apresentação do programa da maneira que considerar mais criativa;

 Requisitos do sistema devem ser respeitados;

 Todo dado informado pelo usuário deve ser validado e, caso o dado não esteja correto, ele deve ter a oportunidade de alterá-lo ou cancelar a operação;

 O usuário deve ter a possibilidade de realizar quantas operações desejar sem a necessidade de reiniciar/fechar o programa.

Entrega:

O grupo apresentará o projeto em execução em laboratório;

 O professor fará perguntas aleatórias para os membros da equipe sobre o funcionamento e detalhes do código;

 O código-fonte do projeto será entregue ao professor por pen-drive logo após a apresentação.

Sobre a nota:

 Composta de duas partes: nota do grupo e nota individual;

 Nota do grupo corresponde à parcela da especificação coberta pelo grupo (valores de 1 a 10);

 Nota individual corresponde à participação do aluno em relação ao projeto (1 a 100);

 Assim a nota do aluno dá-se por: (nota do grupo * nota do aluno) / 100.

Referências

Documentos relacionados

No caso de proposta de criação de Liga Acadêmica que venha a desenvolver atividades de pesquisas com seres humanos, será necessário o encaminhamento do projeto

Para os arrematantes Pessoa Física, fora do Estado de São Paulo após 15 dias úteis a contar da data da confirmação por parte da LUT quanto ao pagamento (crédito/compensação

i) A reciclagem crustal foi o principal mecanismo na génese dos granitóides durante os dois eventos magmáticos do Paleozóico nesta região do SW do Maciço Ibérico (“rifting”

Para o presente Plano Curricular, considra-se como área de Concentração Maior a formação na Gestão de Empresas sendo complementado pela área de Gestão

[r]

Escola 3 – rede particular: Este regimento trata um pouco sobre a questão da inclusão, apesar de não prever o atendimento com profissionais especializados à crianças com

O enfoque nos métodos de descrição e análise quantitativos não somente considera a análise estatística não-paramétrica de variáveis de natureza nominal e ordinal, utilizadas

Com o fomento de políticas voltadas o contexto da Língua de Sinais nos cursos de Ensino Superior tem como fator de observação a prática docente e o uso de