Trabalho Prático 1 - Controle de Alunos
Descrição Geral do Problema
Este trabalho, que deverá ser feito individualmente ou em duplas, consiste em modelar e implementar um sistema simples para controle de alunos em uma faculdade, contendo 3 estruturas principais: alunos, disciplinas e turmas.
Cada estrutura citada acima deve ser implementada como uma classe. A seguir serão detalhadas essas classes:
Alunos
Um aluno é definido por um número de matrícula e um nome. Deve ser possível realizar as seguintes operações:
- Construtor, que recebe o número e o nome;
- Alterar o número de matrícula;
- Alterar o nome do aluno;
- Obter o número de matrícula;
- Obter o nome do aluno;
Obs: cada aluno pode estar matriculado em uma ou mais turmas.
Disciplinas
Uma disciplina consiste em um código e um nome. Deve ser possível realizar as seguintes operações:
- Construtor, que recebe o código e o nome;
- Alterar o código da disciplina;
- Alterar o nome da disciplina;
- Obter o código da disciplina;
- Obter nome da disciplina;
Turmas
Uma turma é definida por um número, o código da disciplina e um conjunto de alunos. Deve ser possível realizar as seguintes operações:
- Construtor, que recebe o número da turma e o código da disciplina;
- Alterar o número da turma;
- Alterar o código da disciplina;
- Obter o número da turma;
- Obter o código da disciplina;
- Adicionar um aluno à turma;
- Obter o total de alunos matriculados na disciplina;
- Retornar um aluno pelo sua posição na turma (de 0 ao total-1);
Para adicionar um aluno à turma, deverá ser criado um método que receba um objeto Aluno já criado e inicializado externamente, ou seja, não devem ser recebidos os dados do aluno individualmente:
void Turma::adicionaAluno(Aluno novo) { ... }
Para armazenar os alunos, pode ser utilizado um vetor de Aluno, bastando controlar quantos já foram criados - para este trabalho, limitaremos o vetor em 10 alunos.
Funcionamento do Programa
Para que não seja preciso criar uma interface mais complexa com o usuário, com funções para acrescentar alunos, turmas e disciplinas, faremos a entrada de dados diretamente no código-fonte.
Alunos:
Matrícula | Nome |
1 | Sean Connery |
2 | Cameron Diaz |
3 | Kate Winslet |
4 | Anthony Hopkins |
5 | Jackie Chan |
6 | Lucie Liu |
Disciplinas:
Código | Nome |
4612A | Programação II |
4613A | Alg. e Prog. I |
4610R | Computação Gráfica |
Turmas:
Número | Código disciplina | Alunos |
490 | 4612A | Sean, Kate, Lucie |
590 | 4612A | Cameron, Anthony, Jackie |
128 | 4613A | Anthony, Jackie, Lucie |
168 | 4610R | Sean, Anthony |
A lista de disciplinas e de turmas também podem ser armazenadas em vetores criados no programa principal. O sistema deverá então oferecer duas opções para consulta dos dados:
Consulta de Disciplinas
Dado o número de matrícula de um aluno, o sistema deverá mostrar todas as turmas em que este esteja matriculado. Essa listagem deve ser feita em forma de uma tabela, exibindo o código de cada disciplina, o seu número e o número da turma. Exemplo:
Aluno: Sean Connery Codigo Disciplina Turma 4612A Programação II 490 4610R Computação Gráfica 168
Consulta de Alunos
Dado o código de uma disciplina e o número da turma, mostrar uma lista com todos os alunos presentes nesta. Também deve ser apresentada em forma de tabela, contendo o número de matrícula e o nome de cada aluno. Por exemplo:
Disciplina: 4612A - Programação II - Turma 590 Matrícula Nome 2 Cameron Diaz 4 Anthony Hopkins 5 Jackie Chan
Avaliação
Devem ser criadas as classes Aluno, Disciplina e Turma. A criação de classes adicionais fica dependente da sua implementação - um dos objetivos deste trabalho é a modelagem adequada dos atributos e métodos dessas classes.
O código-fonte deve estar adequadamente comentado (nas suas partes/algoritmos principais, pelo menos) e no seu início deve haver um comentário com o nome do(s) aluno(s).
Apresentação
O trabalho será apresentado no laboratório. Durante a apresentação, todos os alunos devem estar presentes e aptos a responder quaisquer perguntas. Respostas insatisfatórias ou a ausência do aluno acarretarão em anulação da nota final.
No momento da apresentação, cada aluno ou dupla já deverá ter submetido um arquivo .cpp pelo sistema MOODLE, contendo o programa-fonte (.cpp). O programa deverá ser nomeado da seguinte forma: nome_sobrenome.cpp. No caso de uma dupla, usar a forma: sobrenome1_sobrenome2.cpp.
O programa deverá ser executado no sistema operacional Linux. Não serão aceitos trabalhos que não compilem corretamente no g++, sob hipótese nenhuma.
Todos os trabalhos deverão ser entregues até o dia da apresentação, e apresentados na data marcada - não serão aceitos trabalhos fora do prazo.
Trabalhos copiados resultarão em nota zero para todos os alunos envolvidos.