Сохранение архива данных - процесс вернул -1073741819 <0xC0000005> - PullRequest
0 голосов
/ 07 апреля 2020

У меня проблемы. После написания полностью ориентированного объектного программирования на C ++ я пытаюсь сохранить данные в архиве, чтобы использовать их снова каждый раз, когда программа открывается.

В первой строке подтверждается: " Студент Даниэль Кассиано был успешно зарегистрирован ". (PT-BR)

cadastroefetuado

Отображение зарегистрированных данных.

dadosdousuariocadastrado

Программа записывает в текстовый файл:

arquivo

Но после этого программа больше не запускается.

neveropens

** КОДЫ: ** КОММЕНТАРИИ: 1. Переменные, имеющие 2 после описания, являются вспомогательными (пробел). 2. Вот код на Github для лучшего просмотра: https: //github.com/danielcassiano/Academia_Atletica

Открытие архива:

ifstream arquivo;
arquivo.open("academia.txt");

//LEITURA DE ARQUIVO
while(!arquivo.eof()){
        Aluno *p = new Aluno();
        Dados dados = Dados();

        //_____________________________

        arquivo >> Ativo2;
        p->ativo = Ativo2;

        getline(arquivo, nome2);
        p->nome = nome2;

        getline(arquivo, cpf2);
        p->cpf = cpf2;

        getline(arquivo,cidade2);
        p->cidade = cidade2;

        getline(arquivo, endereco2);
        p->endereco = endereco2;

        getline(arquivo, telefone2);
        p->telefone = telefone2;

        //__________________________

        arquivo >> Ano2;

        p->Ano = Ano2;

        arquivo >> AnoOriginal2;

        p->AnoOriginal = AnoOriginal2;

        arquivo >> Mes2;

        p->setMes(Mes2);

        arquivo >> MesOriginal2;

        p->MesOriginal = MesOriginal2;

        arquivo >> Dia2;

        p->Dia = Dia2;

        arquivo >> DiaOriginal2;

        p->DiaOriginal = DiaOriginal2;

        //________________________

        arquivo >> Janeiro2;

        p->Janeiro = Janeiro2;

        arquivo >> Fevereiro2;

        p->Fevereiro = Fevereiro2;

        arquivo >> Marco2;

        p->Marco = Marco2;

        arquivo >> Abril2;

        p->Abril = Abril2;

        arquivo >> Maio2;

        p->Maio = Maio2;

        arquivo >> Junho2;

        p->Junho = Junho2;

        arquivo >> Julho2;

        p->Julho = Julho2;

        arquivo >> Agosto2;

        p->Agosto = Agosto2;

        arquivo >> Setembro2;

        p->Setembro = Setembro2;

        arquivo >> Outubro2;

        p->Outubro = Outubro2;

        arquivo >> Novembro2;

        p->Novembro = Novembro2;

        arquivo >> Dezembro2;

        p->Dezembro = Dezembro2;

        //___________________________ 

        arquivo >> JaneiroPago2;
        p->Janeiro = JaneiroPago2;

        arquivo >> FevereiroPago2;
        p->Fevereiro = FevereiroPago2;

        arquivo >> MarcoPago2;
        p->Marco = MarcoPago2;

        arquivo >> AbrilPago2;
        p->Abril = AbrilPago2;

        arquivo >> MaioPago2;
        p->Maio = MaioPago2;

        arquivo >> JunhoPago2;
        p->Junho = JunhoPago2;

        arquivo >> JulhoPago2;
        p->Julho = JulhoPago2;

        arquivo >> AgostoPago2;
        p->Agosto = AgostoPago2;

        arquivo >> SetembroPago2;
        p->Setembro = SetembroPago2;

        arquivo >> OutubroPago2;
        p->Outubro = OutubroPago2;

        arquivo >> NovembroPago2;
        p->Novembro = NovembroPago2;

        arquivo >> DezembroPago2;
        p->Dezembro = DezembroPago2;

        //_____________________________

        manager->alunos.push_back(p); //*alunos* is a vector
    }
arquivo.close();

Закрытие архива:

case 8:{//When the program closes:
            fstream arquivo;
            arquivo.open("academia.txt",  ios::out | ios::trunc);
            for(unsigned int i=0; i < manager->alunos.size(); i++){//ALUNOS is a vector

                if(!manager->alunos[i]->ativo){
                    continue;
                }

                arquivo << manager->alunos[i]->ativo  << endl;
                arquivo << manager->alunos[i]->nome  << endl;
                arquivo << manager->alunos[i]->cpf  << endl;
                arquivo << manager->alunos[i]->cidade  << endl;
                arquivo << manager->alunos[i]->endereco  << endl;
                arquivo << manager->alunos[i]->telefone  << endl;

                arquivo << manager->alunos[i]->Ano  << endl;
                arquivo << manager->alunos[i]->AnoOriginal  << endl;
                arquivo << manager->alunos[i]->Mes  << endl;
                arquivo << manager->alunos[i]->MesOriginal  << endl;
                arquivo << manager->alunos[i]->Dia  << endl;
                arquivo << manager->alunos[i]->DiaOriginal  << endl;

                arquivo << manager->alunos[i]->Janeiro << endl;
                arquivo << manager->alunos[i]->Fevereiro << endl;
                arquivo << manager->alunos[i]->Marco << endl;
                arquivo << manager->alunos[i]->Abril << endl;
                arquivo << manager->alunos[i]->Maio << endl;
                arquivo << manager->alunos[i]->Junho << endl;
                arquivo << manager->alunos[i]->Julho << endl;
                arquivo << manager->alunos[i]->Agosto << endl;
                arquivo << manager->alunos[i]->Setembro << endl;
                arquivo << manager->alunos[i]->Outubro << endl;
                arquivo << manager->alunos[i]->Novembro << endl;
                arquivo << manager->alunos[i]->Dezembro << endl;

                arquivo << manager->alunos[i]->JaneiroPago << endl;
                arquivo << manager->alunos[i]->FevereiroPago << endl;
                arquivo << manager->alunos[i]->MarcoPago << endl;
                arquivo << manager->alunos[i]->AbrilPago << endl;
                arquivo << manager->alunos[i]->MaioPago << endl;
                arquivo << manager->alunos[i]->JunhoPago << endl;
                arquivo << manager->alunos[i]->JulhoPago << endl;
                arquivo << manager->alunos[i]->AgostoPago << endl;
                arquivo << manager->alunos[i]->SetembroPago << endl;
                arquivo << manager->alunos[i]->OutubroPago << endl;
                arquivo << manager->alunos[i]->NovembroPago << endl;
                arquivo << manager->alunos[i]->DezembroPago  << endl;
                }
                arquivo.close();
                return 1;
        }

Кодовые части:

class Aluno : public Dados

{publi c: Aluno ();

    Aluno(string nome,string cpf,string cidade, string endereco, string telefone);

    virtual ~Aluno();

    vector<Dados*> alunos;

protected:

private:

};

** КОММЕНТАРИЙ: Наследование был использован по выбору. Я не использовал полиморфизм. Я оставил переменные как * publi c *. **

class Dados : public Pagamentos{
public:
    Dados();
    Dados(string nome,string cpf,string cid,string ende, string telefone);
    string nome;
    string cpf;
    string cidade;
    string endereco;
    string telefone;
    bool ativo;
private:

};

Регистрация студента:

void SistemaAlunos::cadastraAluno(Aluno *al){
alunos.push_back(al);

}

Как указано, если вам нужна какая-либо другая часть кода : https://github.com/danielcassiano/Academia_Atletica/tree/master/test

Файлы *. cpp * находятся в * sr c *, а файлы * .h * в * включают *

Спасибо!

...