1
resposta

Hora da Prática: SistemaEscola - Part 01

{
    public string Nome { get; set; }
    public int Idade { get; set; }
    public float Nota { get; set; }
    public string Disciplina { get; set; }

}
class Professor
{
    public string Nome { get; set; }
    public string Disciplina { get; set; }
}
class Disciplina
{
    public List<string> disciplinas = new List<string> { "Português", "Matemática", "Ciências", "Geográfia", "Quimíca"};

}
   
   using System.Collections.Generic;

Disciplina disciplina = new Disciplina();
Professor professor = new Professor();
Aluno aluno = new Aluno();

List<Aluno> alunosMatriculados = new List<Aluno>();
List<Professor> professoresCadastrados = new List<Professor>();
List<Disciplina> disciplinas = new();

Menu();
void Menu()
{
    Console.Clear();

    Console.WriteLine("Digite 1 para matricular um aluno\n");
    Console.WriteLine("Digite 2 para cadastrar um professor\n");
    Console.WriteLine("Digite 3 para atribuir uma disciplina a um professor\n");
    Console.WriteLine("Digite 4 para dar nota a um aluno\n");
    Console.WriteLine("Digite 5 para atribuir uma disciplina a um aluno\n");
    Console.WriteLine("Digite 6 para pesquisar\n");

    int escolhaUsuario = int.Parse(Console.ReadLine()!);

    switch (escolhaUsuario)
    {
        case 1: MatricularAluno();
            break;
        case 2:CadastrarProfessor();
            break;
        case 3: AtribuirDisciplinaAUmProfessor();
            break;
        case 4: DarNotaAluno();
            break;
        case 5:AtribuirDisciplinaAUmAluno();
            break;
        case 6: Pesquisar();
            break;
    }

    void MatricularAluno()//funcionando
    {
        Console.Clear();
        Aluno novoAluno = new Aluno();
        Console.Write("Digite o nome do aluno: \n");
        novoAluno.Nome = Console.ReadLine()!;
        Console.Write("Digite a idade: \n");
        novoAluno.Idade = int.Parse(Console.ReadLine()!);
        alunosMatriculados.Add(novoAluno);

        Console.WriteLine($"O aluno {novoAluno.Nome} de {novoAluno.Idade} anos, foi cadastrado com sucesso");
        Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
        Console.ReadKey();
        Menu();
    }
    void CadastrarProfessor()
    {
        Professor professor = new Professor();

        Console.Write("Digite o nome do novo professor: \n");
        professor.Nome = Console.ReadLine()!;
        professoresCadastrados.Add(professor);

        Console.WriteLine($"O {professor.Nome} foi cadastrado com sucesso!");
        Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
        Console.ReadKey();
        Menu();

    }
    void DarNotaAluno()//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;
                break;
            }
        }
        if (alunoEncontrado != null)
        {
            Console.Write($"Digite o valor da nota do aluno {alunoPesquisado}: \n");
            alunoEncontrado.Nota = float.Parse(Console.ReadLine()!);
            Console.WriteLine("Nota atribuida com sucesso\n");
            Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
            Console.ReadKey();
            Menu();
        }
       
        else
        {
            Console.WriteLine("Nome de aluno nao encontrado\n");
            Console.WriteLine("Pressione qualquer tecla para voltar ao menu\n");
            Console.ReadKey();
            Menu();

        }
        
    }
  
1 resposta

Oii, Rafael! Tudo bem?

Uau, parabéns pela dedicação! Achei sensacional que você não se limitou a criar apenas as classes e já partiu para desenvolver um Menu interativo no console. Isso é excelente pra treinar a lógica de programação e o uso do C# na prática.

Analisando o seu código e o objetivo do desafio (que é focado em relacionamentos entre classes), tenho algumas dicas para te ajudar a estruturar ainda melhor o seu sistema escolar.

O ponto principal da atividade é modelar como um objeto se conecta ao outro. Vamos ver dois pontos importantes:

1. Listas vs. Variáveis únicas
Na sua classe Aluno, você colocou public float Nota { get; set; }. Num cenário real, um aluno costuma ter várias notas, certo? Por isso, o ideal é usar uma lista (List<double> ou List<float>) pra armazenar todas elas. O mesmo vale para o relacionamento com as disciplinas.

2. O papel da classe disciplina
Você criou uma lista de strings dentro da classe Disciplina. Na Orientação a Objetos, a ideia é que a Classe Disciplina seja o molde, e cada matéria (Matemática, Português) seja um Objeto instanciado a partir desse molde. E, a disciplina precisa saber quem são os alunos matriculados nela.

Uma dica de como ficaria:

class Aluno
{
    public string Nome { get; set; }
    public int Idade { get; set; }
    // uma lista para guardar várias notas
    public List<double> Notas { get; set; } = new List<double>();
}

class Disciplina
{
    public string NomeDisciplina { get; set; }
    // o relacionamento: a disciplina tem uma lista de objetos do tipo Aluno
    public List<Aluno> AlunosMatriculados { get; set; } = new List<Aluno>();
}

class Professor
{
    public string Nome { get; set; }
    // um professor pode dar várias aulas, então usamos uma lista de strings ou de objetos Disciplina
    public List<string> DisciplinasLecionadas { get; set; } = new List<string>();
}

Continue praticando assim, você está no caminho certo! Bons estudos!

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