Estou com problemas. Estou tentando salvar, em um arquivo, dados de um código programado em C++ orientado a objetos. Quero que toda vez que o arquivo abra, ainda estejam os dados que eu alterei anteriormente.
Cadastro de um aluno:
Mostrando os dados cadastrados:
O programa, escreve no arquivo txt:
Mas, depois disso, o programa não roda mais:
** CÓDIGOS: **
COMENTÁRIOS:
1. As variáveis que possuem ‘2’ após sua descrição são variáveis auxiliares (espaço).
2. Aqui está o código, no Github, para uma visão melhor: https://github.com/danielcassiano/Academia_Atletica
Abertura de arquivo:
ifstream arquivo;
arquivo.open("academia.txt");
//LEITURA DE ARQUIVO
whereas(!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.shut();
Fechamento de arquivo:
case 8:{//Quando o programa fecha:
fstream arquivo;
arquivo.open("academia.txt", ios::out | ios::trunc);
for(unsigned int i=0; i < manager->alunos.dimension(); i++){//ALUNOS is a vector
if(!manager->alunos[i]->ativo){
proceed;
}
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.shut();
return 1;
}
Partes do código:
class Aluno : public Dados
{
public:
Aluno();
Aluno(string nome,string cpf,string cidade, string endereco, string telefone);
digital ~Aluno();
vector<Dados*> alunos;
protected:
non-public:
};
** COMENTÁRIO: A herança foi usada por opção. Eu não usei polimorfismo. Deixei as variáveis como * public *. **
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;
non-public:
};
Registro de alunos:
void SistemaAlunos::cadastraAluno(Aluno *al){
alunos.push_back(al);
}
Como indicado, se você precisar de qualquer outra parte do código:
https://github.com/danielcassiano/Academia_Atletica/tree/grasp/take a look at
Os arquivos * .cpp * estão em * src * e os arquivos * .h * estão em * embrace *
Obrigado!