esse código deu um trabalho...
Tentei utilizar tudo o q aprendi até aqui, fiz um código totalmente comentado.
O código ficou extenso, mas acho q deu para eu trabalhar melhor meu cérebro, e por em prática a maior quantidade possível de aprendizado!
- Código: Selecionar tudo
/*
EXERCÍCIO 17
Utilize a classe Pessoa e a classe Sala, desenvolvidas nos exercícios anteriores,
e mais uma classe Escola com atributos nome, CNPJ e salas (máximo de 20 salas ocupadas).
Faça um programa que:
Crie uma escola;
Adicione a esta escola algumas salas,
adicione as salas pessoas(alunos),
transfira um aluno de uma sala para outra
*/
import java.util.Scanner;
class Escola{
//atributos
// private String nome;
private String cnpj;
private int nSalas;
private Sala[] salas=new Sala[20];
private Scanner s=new Scanner(System.in);
private Menu menu;
private Escola escola;
//construtor
public Escola(){
System.out.println("---------------------------");
System.out.println("CRIAR NOVA ESCOLA");
System.out.println("---------------------------");
//Solicitando o nome da escola
System.out.print("nome --> ");
nome=s.nextLine();
//Solicitando o cnpj da escola
System.out.print("cnpj --> ");
cnpj=s.nextLine();
System.out.println("\nEscola criada com sucesso!\n");
}
public String getNome(){
//Retorna o nome da escola
return nome;
}
public void setMenu(Menu menu){
//armazena a referência do menu para voltar
this.menu=menu;
}
public void setEscola(Escola escola){
//armazena a referencia desse objeto para repassar a outro para voltar no menu
this.escola=escola;
}
//Método do menu
public void Menu(){
//Inicializando a variável de opção
int opcao=0;
System.out.println("Escola " + nome + " inicializada com sucesso!");
//Exibindo o menu de opções
do{
System.out.println("----------------------------------------------");
System.out.println("MENU ESCOLA\n");
System.out.println("1. Criar sala");
System.out.println("2. Listar salas");
System.out.println("3. Abrir salas criadas");
System.out.println("4. Transferir aluno de sala");
System.out.println("5. Voltar");
System.out.println("----------------------------------------------");
System.out.print("\nDigite a opcao desejada: ");
opcao=s.nextInt();
s.nextLine();
EncaminharEscolha(opcao);
}while(opcao<=5);
}
private void EncaminharEscolha(int opcao){
//Executa a opção selecionada no menu
switch(opcao){
case 1:
//Cria uma nova sala
CriarSala();
break;
case 2:
//Lista as salas
ListarSalas();
break;
case 3:
//Exibe as salas criadas
ListarSalas();
//Questiona sobre qual abrir
AbrirSalaCriada();
break;
case 4:
//Transfere o aluno de sala
TransferirAluno();
break;
case 5:
menu.Iniciar();
break;
}
}
//metodos
public void CriarSala(){
//Permite criar uma nova sala de aula
//Primeiro verifica-se se o limite de salas para
//esta escola não foi atingido
if(nSalas>=salas.length){
System.out.println("\nO limite de salas para essa escola foi atingido!\n");
return;
}
//Caso não tenha sido atingido, uma nova sala é criada nessa escola
salas[nSalas]=new Sala(nome);
nSalas++; //O atributo nSalas controla a quantidade de salas criadas.
}
public void TransferirAluno(){
int salaAtual=0;
int codAtual=0;
int novaSala=0;
//Permite transferir o aluno
System.out.println("\n---------------------------------");
System.out.println("TRANSFERENCIA DE ALUNO ");
System.out.println("---------------------------------\n");
//Questiona a sala atual
do{
System.out.print("Qual a sala atual do aluno --> ");
salaAtual=s.nextInt();
s.nextLine();
}while(verificarExistenciaSala(salaAtual)==false);
//Questiona o código do aluno
do{
System.out.print("Qual o codigo do aluno --> ");
codAtual=s.nextInt();
s.nextLine();
}while(salas[salaAtual].verificarExistenciaAluno(codAtual)==false);
//Questiona a nova sala
do{
System.out.print("Qual a nova sala do aluno --> ");
novaSala=s.nextInt();
s.nextLine();
}while(verificarExistenciaSala(novaSala)==false);
//Cria um novo aluno na nova classe
if(salas[novaSala].receberTransferencia(salas[salaAtual].getAluno(codAtual))){
//exclui o objeto na sala antiga
salas[salaAtual].excluirAluno(codAtual);
}
}
public void ListarSalas(){
//Exibe todas as salas existentes
System.out.println("\n---------------------------------");
System.out.println("SALAS EXISTENTES NA ESCOLA " + nome);
System.out.println("---------------------------------\n");
for(int i=0;i<salas.length;i++){
//Antes de exibir verifica se a sala realmente existe
if(salas[i]!=null){
System.out.printf("sala %d\n",i);
}
}
}
public void AbrirSalaCriada(){
int cod=0;
do{
//Pede-se para o usuario digitar o numero da sala para abertura
System.out.println("\n---------------------------------");
System.out.println("ABRIR SALA EXISTENTE");
System.out.println("---------------------------------\n");
System.out.print("Digite o numero da sala: ");
cod=s.nextInt();
s.nextLine();
//Verifica se o valor digitado é válido
if(cod>=0&&cod<salas.length){
//O valor é válido
//Verifica-se agora se a sala existe
if (verificarExistenciaSala(cod)){
salas[cod].setSalas(salas[cod]);
salas[cod].setMenu(escola);
salas[cod].Menu();
}
}
}while(cod>=0&&cod<salas.length);
}
public boolean verificarExistenciaSala(int sala){
//Método responsável por verificar a existência da sala solicitada
if(salas[sala]==null){
//Caso a sala não exista
System.out.println("\n A sala solicitada nao existe!\n");
return false;
}else{
//Cao a sala exista
return true;
}
}
}
class Sala{
//atributos
private int nAlunos;
private Aluno[] aluno=new Aluno[20];
private Scanner s=new Scanner(System.in);
private Escola menu;
private Sala salas;
//construtor
public Sala(String escola){
System.out.println("--------------------------------------------");
System.out.println("CRIAR NOVA SALA NA ESCOLA " + escola);
System.out.println("--------------------------------------------");
System.out.println("\nSala criada com sucesso!\n");
}
public void setMenu(Escola menu){
this.menu=menu;
}
public String getAluno(int cod){
return aluno[cod].getNome();
}
public void setSalas(Sala salas){
this.salas=salas;
}
//método do menu da sala
public void Menu(){
//Inicializando a variável de opção
int opcao=0;
System.out.println("Sala aberta com sucesso!");
//Exibindo o menu de opções
do{
System.out.println("----------------------------------------------");
System.out.println("MENU SALA\n");
System.out.println("1. Adicionar Aluno");
System.out.println("2. Listar alunos");
System.out.println("3. Abrir aluno existente");
System.out.println("4. Voltar");
System.out.println("----------------------------------------------");
System.out.print("\nDigite a opcao desejada: ");
opcao=s.nextInt();
s.nextLine();
EncaminharEscolha(opcao);
}while(opcao!=4);
}
private void EncaminharEscolha(int opcao){
//Executa a opção selecionada no menu
switch(opcao){
case 1:
//Cria um novo aluno na sala
criarAluno();
break;
case 2:
//Lista os alunos
ListarAlunos();
break;
case 3:
//Exibe os alunos criados
ListarAlunos();
//Questiona sobre qual abrir
AbrirAlunoExistente();
break;
case 4:
//Volta para o menu principal
menu.Menu();
}
}
public void criarAluno(){
//Verifica se cabe um novo aluno na sala de aula
if(nAlunos<aluno.length){
//Cria um novo aluno
aluno[nAlunos]=new Aluno(nAlunos);
nAlunos++;
}else{
System.out.println("\nA sala ja esta cheia, nao e possivel prosseguir!\n");
}
}
public boolean receberTransferencia(String nome){
//Verifica se cabe um novo aluno na sala de aula
if(nAlunos<aluno.length){
//Cria um novo aluno
aluno[nAlunos]=new Aluno(nAlunos,nome);
nAlunos++;
return true;
}else{
System.out.println("\nA sala ja esta cheia, nao e possivel prosseguir!\n");
return false;
}
}
//Método para excluir objeto
public void excluirAluno(int cod){
if(verificarExistenciaAluno(cod)){
aluno[cod]=null;
}
}
public boolean verificarExistenciaAluno(int cod){
//Verifica a existência de um aluno
if(aluno[cod]==null){
//Se o aluno não existe
System.out.println("\nO aluno nao foi encontrado!\n");
return false;
}else{
//Se o aluno existe
return true;
}
}
private void ListarAlunos(){
//Exibe todos os alunos existentes na sala
System.out.println("\n---------------------------------");
System.out.println("ALUNOS EXISTENTES NA SALA ");
System.out.println("---------------------------------\n");
for(int i=0;i<aluno.length;i++){
if(aluno[i]!=null){
System.out.printf("%d. %s \n",i,aluno[i].getNome());
}
}
}
private void AbrirAlunoExistente(){
int cod=0;
do{
//Pede-se para o usuario digitar o codigo do aluno para abertura
System.out.println("\n---------------------------------");
System.out.println("ABRIR ALUNO EXISTENTE");
System.out.println("---------------------------------\n");
System.out.print("Digite o cod do aluno: ");
cod=s.nextInt();
s.nextLine();
//Verifica se o valor digitado é válido
if(cod>=0&&cod<aluno.length){
//O valor é válido
//verifica se o aluno exite
if (verificarExistenciaAluno(cod)){
aluno[cod].setMenu(salas);
aluno[cod].Menu();
}
}
}while(cod>=0&&cod<aluno.length);
}
}
class Aluno{
//atributos
private int cod;
private String nome;
private Scanner s=new Scanner(System.in);
private Sala menu;
//construtor
public Aluno(int cod){
//Adiciona o código recebido por parâmetro
this.cod=cod;
//Solicita a entrada do nome do aluno
System.out.print("Qual o nome do aluno? ");
nome=s.nextLine();
//Exibe o resultado da operação
System.out.println("\nNovo aluno adicionado na sala!\n");
}
//construtor de transferência
public Aluno(int cod,String nome){
this.cod=cod;
this.nome=nome;
System.out.println("\nTransferência efetuada com sucesso!\n");
}
public void setMenu(Sala menu){
this.menu=menu;
}
//metodos get
public String getNome(){
//retorna o nome do aluno
return nome;
}
//metodo para iniciar o menu
public void Menu(){
int opcao=0;
do{
System.out.println("----------------------------------------------");
System.out.println("MENU ALUNO\n");
System.out.println("1. Exibir propriedades doa aluno");
System.out.println("2. Voltar");
System.out.println("----------------------------------------------");
System.out.print("\nDigite a opcao desejada: ");
opcao=s.nextInt();
s.nextLine();
EncaminharEscolha(opcao);
}while(opcao!=2);
}
private void EncaminharEscolha(int opcao){
//Executa a opção selecionada no menu
switch (opcao){
case 1:
//Exibe as propriedades do aluno
Apresentar();
case 2:
menu.Menu();
break;
}
}
//Metodo de apresentacao do aluno
public void Apresentar(){
System.out.println("\n---------------------------------");
System.out.println("codigo --> " + cod);
System.out.println("nome --> " + nome);
System.out.println("---------------------------------\n");
}
}
class Menu{
//atributos
private int opcao;
private int nEscolas;
private Scanner s=new Scanner(System.in);
private Escola[] escolas=new Escola[20];
private Menu menu;
//Métodos
public void Iniciar(){
//Inicia com o menu
do{
System.out.println("----------------------------------------------");
System.out.println("MENU PRINCIPAL\n");
System.out.println("1. Criar uma escola");
System.out.println("2. Listar escolas");
System.out.println("3. Abrir escola criada");
System.out.println("4. Sair");
System.out.println("----------------------------------------------");
System.out.print("\nDigite a opcao desejada: ");
opcao=s.nextInt();
s.nextLine();
EncaminharEscolha();
}while(opcao!=4);
}
public void setMenu(Menu menu){
//armazena a variável menu para retorno
this.menu=menu;
}
private void EncaminharEscolha(){
//Executa a opção selecionada no menu
switch (opcao){
case 1:
//Cria uma nova escola
criarEscola();
break;
case 2:
ListarEscolas();
break;
case 3:
//Primeira lista-se as escolas
ListarEscolas();
//Pede-se para o usuario escolher uma e abre
AbrirEscolaExistente();
break;
case 4:
//Finalizando a aplicação
System.out.println("\n\nEncerrado!\ncriado por Tiago Jose\nprog.tiago@gmail.com");
System.exit(0);
}
}
private void criarEscola(){
//Cria uma nova escola
//Antes verifica-se se ainda há espaço
if (nEscolas<20){
escolas[nEscolas]=new Escola();
nEscolas++;
}else{
System.out.println("\nNao ha espaco para novas escolas!\n");
}
}
private void ListarEscolas(){
//Exibe todas as escolas existentes
System.out.println("\n---------------------------------");
System.out.println("ESCOLAS EXISTENTES");
System.out.println("---------------------------------\n");
for(int i=0;i<escolas.length;i++){
if(escolas[i]!=null){
System.out.printf("%d. %s\n",i,escolas[i].getNome());
}
}
}
private void AbrirEscolaExistente(){
int cod=0;
do{
//Pede-se para o usuario digitar o codigo da escola para abertura
System.out.println("\n---------------------------------");
System.out.println("ABRIR ESCOLA EXISTENTE");
System.out.println("---------------------------------\n");
System.out.print("Digite o cod da escola: ");
cod=s.nextInt();
s.nextLine();
//Verifica se o valor digitado é válido
if(cod>=0&&cod<escolas.length){
//O valor é válido
if(verificarExistenciaEscola(cod)){
escolas[cod].setMenu(menu);
escolas[cod].setEscola(escolas[cod]);
escolas[cod].Menu();
}
}
}while(cod>=0&&cod<escolas.length);
}
public boolean verificarExistenciaEscola(int escola){
//verifica se a escola existe
if(escolas[escola]==null){
System.out.println("\nA escola nao existe!\n");
return false;
}else{
return true;
}
}
}
public class Exercicio17{
public static void main(String[] args){
//Exibindo o título
System.out.println("--------------------------------------------------");
System.out.println("Exercicio 17 - modulo 4");
System.out.println("--------------------------------------------------\n\n");
//Criando um objeto Menu
Menu menu=new Menu();
//informando a variável menu
menu.setMenu(menu);
//Iniciando o menu
menu.Iniciar();
}
}
Abraços e boa noite
