public string AddDisciplina(int matricula, string nome, int code, double nota) { string mensagem = ""; Aluno aluno = GetAluno(matricula); if (aluno != null) { if (aluno is AlunoExterno) { AlunoExterno externo = (AlunoExterno)aluno; Disciplina disc = new Disciplina(nome, code, nota); externo.AddDisciplina(disc); mensagem = "Disciplina inserida com sucesso!"; } else { mensagem = "Matrícula de um aluno interno.\nFuncionalidade exclusiva para alunos externos!"; } } else { mensagem = "Matrícula inválida!"; } return(mensagem); }
public void CriarAluno(int matricula, string nome, int cc, DateTime dataNasc) { Aluno aluno = new AlunoExterno(matricula, nome, cc, dataNasc); alunos.Add(aluno); }
private Aluno GetAluno(int matricula) { //Aluno que será devolvido Aluno aluno = null; //Conexão à BD cn.Open(); //Select que une as tabelas Alunos e AlunosInternos de modo a juntar todos os alunos da BD cmd = new SqlCommand("select * from Alunos left join AlunosInternos on Alunos.matricula = AlunosInternos.matricula where Alunos.matricula = @matricula;", cn); //Associa ao parâmetro @matricula a variável matricula cmd.Parameters.AddWithValue("@matricula", matricula); //Executa a consulta e a referência dr passa a conter os resultados da consulta dr = cmd.ExecuteReader(); //Se resultarem linhas da consulta if (dr.HasRows) { //Ciclo para ler todas as linhas resultantes da consulta while (dr.Read()) { //campos comuns a todos os alunos int mat = int.Parse(dr["matricula"].ToString()); string nome = dr["nome"].ToString(); int cc = int.Parse(dr["cc"].ToString()); DateTime dataNasc = Convert.ToDateTime(dr["datanasc"].ToString()); //Se o campo curso estiver vazio indica que temos um externo if (dr["curso"].ToString() == "") { /* * Instanciação do AlunoExterno usando a informação recolhida * e associação do objeto à referência aluno que será retornada */ aluno = new AlunoExterno(matricula, nome, cc, dataNasc); } else //caso contrário um Interno { //Campos do interno string curso = dr["curso"].ToString(); string turma = dr["turma"].ToString(); int media10 = int.Parse(dr["media10"].ToString()); int media11 = int.Parse(dr["media11"].ToString()); int media12 = int.Parse(dr["media12"].ToString()); /* * Instanciação do AlunoInterno usando a informação recolhida * e associação do objeto a uma nova referência de AlunosInternos * com o intuito de invocar o método AddMediaAno que é exclusivo à classe */ AlunoInterno alunoi = new AlunoInterno(matricula, nome, cc, dataNasc, curso, turma); //Verifica se o aluno tem alguma das 3 médias if (media10 > 0) { //adiciona a media encontrada ao objeto alunoi.AddMediaAno(media10); if (media11 > 0) { alunoi.AddMediaAno(media11); if (media12 > 0) { alunoi.AddMediaAno(media12); } } } //Associação do objeto à referência aluno que será retornada aluno = alunoi; } } } //Fechar conexões dr.Close(); cn.Close(); //Devolve o aluno encontrado ou null return(aluno); }