1
resposta

Hora da Prática: SistemaEscola - Part 02

  void AtribuirDisciplinaAUmProfessor()
    {
        Console.Clear();
        Console.Write("Digite o nome do Professor: ");
        string professorPesquisado = Console.ReadLine()!;

        Professor professorEncontrado = null;

        foreach (Professor professor1 in professoresCadastrados)
        {
            if (professor1.Nome == professorPesquisado)
            {
                professorEncontrado = professor1;
                Console.WriteLine($"O Professor {professor1.Nome} foi encontrado");
                break;
            }

        }
        if (professorEncontrado != null)
        {
            Console.WriteLine($"Digite o nome da disciplina para atribuir ao professor {professorEncontrado.Nome} \n");
            string disciplinaPesquisada = Console.ReadLine()!;



            if (disciplina.disciplinas.Contains(disciplinaPesquisada))
            {
                professorEncontrado.Disciplina = disciplinaPesquisada;
                Console.WriteLine($"A disciplina {disciplinaPesquisada} foi atribuida com sucesso ao professor {professorEncontrado.Nome}\n");
                Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
                Console.ReadKey();
                Menu();
            }

            else
            {
                Console.WriteLine("Disciplina nao encontrada\n");
                Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
                Console.ReadKey();
                Menu();
            }
        }
        else
        {
            Console.WriteLine("Aluno nao encontrado\n");
            Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
            Console.ReadKey();
            Menu();
        }
    }
    void AtribuirDisciplinaAUmAluno()//funcionando
    {
        Console.Clear();
        Console.Write("Digite o nome do aluno: ");
        string alunoPesquisado = Console.ReadLine()!;

        Aluno alunoEncontrado = null;

        foreach (Aluno aluno in alunosMatriculados)
        {
            if (aluno.Nome == alunoPesquisado)
            {
                alunoEncontrado = aluno;
                Console.WriteLine($"O aluno {aluno.Nome} foi encontrado");
                break;
            }
            
        }
        if (alunoEncontrado != null)
        {
            Console.WriteLine($"Digite o nome da disciplina para atribuir ao aluno {alunoEncontrado.Nome} \n");
            string disciplinaPesquisada = Console.ReadLine()!;

           

            if (disciplina.disciplinas.Contains(disciplinaPesquisada))
            {
                alunoEncontrado.Disciplina = disciplinaPesquisada;
                Console.WriteLine($"A disciplina {disciplinaPesquisada} foi atribuida com sucesso ao aluno {alunoEncontrado.Nome}\n");
                Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
                Console.ReadKey();
                Menu();
            }

            else
            {
                Console.WriteLine("Disciplina nao encontrada\n");
                Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
                Console.ReadKey();
                Menu();
            }
        }
        else
        {
            Console.WriteLine("Aluno nao encontrado\n");
            Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
            Console.ReadKey();
            Menu();
        }

    }
    void Pesquisar()
    {
        Console.WriteLine("Pressione 1 para pesquisar um aluno");
        Console.WriteLine("Pressione 2 para pesquisar um professor");
        Console.WriteLine("Pressione 3 para pesquisar uma disicplina");
        int escolhaUsuario = int.Parse(Console.ReadLine()!);

        switch (escolhaUsuario)
        {
            case 1: MostrarAluno();
                break;
            case 2: MostrarProfessor();
                break;
            case 3: MostrarDisciplina();
                break;
        }
    }
   
1 resposta

Oi novamente, Rafael!

Que maravilha ver o restante do seu código! É muito legal acompanhar como você estruturou a lógica de pesquisa e validação. Você já tem o domínio do foreach pra encontrar objetos dentro de listas, o que é fundamental.

Tenho alguns pontos pra destacar nessa segunda parte, focando em refinar o seu código e evitar pequenos bugs:

  1. Atenção às mensagens de erro (Copy/Paste)

Na função AtribuirDisciplinaAUmProfessor, notei um detalhe no bloco else final:

else
{
    Console.WriteLine("Aluno nao encontrado\n"); // aqui deveria ser "Professor"
    // ...
}

Isso é super comum quando copiamos a lógica de um método (do Aluno) para outro (do Professor). Vale a pena ajustar para não confundir o usuário do seu sistema.

  1. O conceito de "Sobrescrita" vs "Adição"

Olhando pra esta linha:
professorEncontrado.Disciplina = disciplinaPesquisada;

Aqui temos uma limitação importante da sua modelagem atual. Como a propriedade Disciplina é uma string única, se você atribuir "Matemática" e depois tentar atribuir "Física", a "Física" vai substituir a "Matemática". O professor deixará de dar aula da primeira matéria.

A solução:
Lembra da sugestão que dei no post anterior sobre usar Listas? Se você alterar sua classe para ter uma List<string> Disciplinas, a lógica do seu método mudaria para:

// Em vez de substituir (=), nós ADICIONAMOS (.Add)
professorEncontrado.Disciplinas.Add(disciplinaPesquisada);

Dessa forma, o professor pode acumular várias disciplinas, e o histórico dele não é apagado.

  1. Dica de ouro: validando a disciplina

Você criou uma validação if (disciplina.disciplinas.Contains(disciplinaPesquisada)). Isso foi muito inteligente! Você garantiu que ninguém invente uma matéria que não existe na escola. Mantenha essa lógica de validação, ela é essencial em sistemas reais.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!