Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Apagar informações de um vetor que esta em outra classe C+


FabricioAC
 Share

Question

Olá, sou novo aqui no fórum e tenho uma duvida em relação a classes em C++, espero que alguém possa me ajudar. Desde já obrigado!

Estou desenvolvendo um trabalho pra faculdade em que preciso cadastrar alunos, disciplinas e notas e no final exibir alguns relatórios, tudo isso usando o conceito de classes e orientação a objetos. O programa esta 99% pronto só encontrei problemas para implementar o seguinte:

Tenho 6 classes implementadas (Não vou postar o codigo da Disciplina pois não vem ao caso):

Alunos

#ifndef ALUNOS_HPP_INCLUDED
#define ALUNOS_HPP_INCLUDED

#include "Bibliotecas.hpp"

class Aluno {
public:
    Aluno();

    string nome;
    string cpf;
    string bairro;
    string cidade;
    string endereco;
    string identidade;
    string estadoCivil;
    string dataNascimento;
    int numeroMatricula;
};

#endif // ALUNOS_HPP_INCLUDED

Cadastro Alunos

#ifndef CADASTROALUNOS_HPP_INCLUDED
#define CADASTROALUNOS_HPP_INCLUDED

#include "Alunos.hpp"
#include "CadastroNotas.hpp"

//class CadastroNotas;

class CadastroAlunos {
public:
    CadastroNotas cadNotas;

    Aluno alunos[100];
    int indice;

    CadastroAlunos() {indice = 0;}

    void cadastrarAlunos();
    void alterarAlunos();
    void excluirAlunos(CadastroNotas cadNotas);
    void listarAlunos();
    int pesquisar(int numMatricula);
};

#endif // CADASTROALUNOS_HPP_INCLUDED

Notas

#ifndef NOTAS_HPP_INCLUDED
#define NOTAS_HPP_INCLUDED

#include "Bibliotecas.hpp"
class Nota {
public:
    Nota();

    int codigoNota;
    int codigoMatricula;
    int codigoDisciplina;
    double media1;
    double media2;
    double media3;
    double media4;
    double mediaFinal;
    string nomeAluno;
    string nomeDisciplina;
};

#endif // NOTAS_HPP_INCLUDED

Cadastro Notas

#ifndef CADASTRONOTAS_HPP_INCLUDED
#define CADASTRONOTAS_HPP_INCLUDED

#include "Notas.hpp"
//#include "CadastroAlunos.hpp"
#include "CadastroDisciplinas.hpp"

class CadastroAlunos;

class CadastroNotas {
public:
    //CadastroAlunos cadAlunos;
    CadastroDisciplinas cadDisciplinas;

    Nota notas[100];
    int indice;

    CadastroNotas() {indice = 0;}

    void cadastrarNotas(CadastroAlunos cadAlunos, CadastroDisciplinas cadDisciplinas);
    void alterarNotas();
    void excluirNotas();
    void listarNotas();
    void excluirNotas(int numMatricula);
    int pesquisarMatricula(int pos);
    int pesquisarDisciplina(int pos);
    int comparaPosicao(int matricula, int disciplina);
    string aprovado_reprovado(int pos);
};

#endif // CADASTRONOTAS_HPP_INCLUDED

Nelas eu declaro meus vetores, as variaveis que tenho dentro de cada vetor e os prototipos da funções.

O programa funcionam 100%, mas falta implementar uma função que ao excluir um aluno do vetor de alunos que esta na classe Cadastro Alunos também tenho que excluir todas as notas cadastradas para este mesmo aluno, mas as notas estão em um vetor dentro de outra classe, a classe Cadastro Notas. Consigo excluir o aluno e as notas separadamente pois em cada classe tenho uma função excluir, mas de dentro da classe Cadastro Aluno não consigo apagar as notas na classe Cadastro Notas.

Minha função para exclur as notas (Ela esta no Notas.cpp onde estão minhas funções referentes as notas):

void CadastroNotas::excluirNotas(int numMatricula) {
    int pos = 0;
    do {
        pos = pesquisarMatricula(numMatricula);
        if(pos >= 0){
            for(int i = pos; i < indice; i++) {
                notas[pos] = notas[pos + 1];
                indice--;
            }
        }
    } while(pos >= 0);
}

Chamo esta função no meu arquivo Alunos.cpp em que tenho minhas funçoes para classe Aluno e Cadastro Aluno, consigo obter as informações do vetor mas não consigo altera-las. Se eu chama-la dentro do Notas.cpp onde estão minhas funçoes referentes as notas ele apaga as notas corretamente.

Como devo proceder para que consiga chamar de dentro do meu Alunos.cpp esta função e ela apague os dados do vetor de notas que esta na classe Cadastro Notas?

Se não entenderem alguma coisa ou precisarem de mais informações e só dizer.

Obrigado novamente!

Edited by FabricioAC
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Consegui resolver o problema, fiz o seguinte:

Alterei minha função de "void excluirAluno()" para "int excluirAluno()" me retornando depois do aluno excluído o numero da matricula e dentro do arquivo Menu.cpp onde ficam todos os menus que uso no programa, no "case 3" chamei duas funções a "excluirAluno()" que me retorna a matricula que uso na "excluirNotas()".

 void Menu::menuAluno() {

    Principal principal;

    int op = 0;
    int numMatricula = 0;

    do {
        cout << endl;
        principal.alinhaTexto("Escolha a opção desejada:\n\n", 8, 240);
        principal.alinhaTexto("1. Cadastrar  \n\n", 10);
        principal.alinhaTexto("2. Alterar    \n\n", 10);
        principal.alinhaTexto("3. Excluir    \n\n", 10);
        principal.alinhaTexto("4. Listar     \n\n", 10);
        principal.alinhaTexto("5. Voltar     \n\n", 10);
        principal.alinhaTexto("Opção: ", 10);
        cin >> op;
        system("cls");
        switch(op) {
            case 1:
                cadAlunos.cadastrarAlunos();
            break;
            case 2:
                cadAlunos.alterarAlunos();
            break;
            case 3:
                numMatricula = cadAlunos.excluirAlunos();
                cadNotas.excluirNotas(numMatricula);
            break;
            case 4:
                cadAlunos.listarAlunos();
            break;
            case 5:
                //Voltar
            break;
        }
    } while(op!= 5);
}

Obrigado.

Edited by FabricioAC
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.7k
×
×
  • Create New...