Ir ao conteúdo
  • Cadastre-se

Sistema de Gestao Academica


Zeca_jcr

Posts recomendados

Pessoal,

Estou desenvolvendo um sistema de gestao academica( em c++ ). Estou com um problema quando leio em arquivo os dados.


void SGA::GravarArquivo( Pessoa* pessoa ) {
fstream fcout ( "alunos.dat", ios::out | ios::app );

fcout << pessoa->getTipo() << "\n";
fcout << pessoa->getNome() << "\n";
fcout << pessoa->getNascimento() << "\n";
fcout << pessoa->getSexoInt() << "\n";
fcout << pessoa->getRG() << "\n";
fcout << pessoa->getTel() << "\n";

fcout << pessoa->getEnder()->getRua() << "\n";
fcout << pessoa->getEnder()->getBairro() << "\n";
fcout << pessoa->getEnder()->getCidade() << "\n";
fcout << pessoa->getEnder()->getEstado() << "\n";
fcout << pessoa->getEnder()->getNum() << "\n";
fcout << pessoa->getEnder()->getCep() << "\n";

fcout << ((Aluno*)pessoa)->getMatricula() << "\n";
fcout << ((Aluno*)pessoa)->getNumParcelas() << "\n";

switch ( pessoa->getTipo() ) {
case 1:
fcout << ((AlunoEnsinoMedio*)pessoa)->getValorAnuidade() << "\n";
//"Aluno de Ensino Medio";
break;
case 2:

fcout << ((AlunoGraduacao*)pessoa)->getCargaHoraria() << "\n";
fcout << ((AlunoGraduacao*)pessoa)->getValorHoraAula() << "\n";
//"Aluno de Graduacao";
break;
}

fcout.close();
}

void SGA::CarregarArquivo() {
fstream fcin ( "alunos.dat", ios::in );

int tipo, sexo, rg, tel, matricula, num, cep, id;
string nome, nascimento, rua, bairro, cidade, estado;

if ( fcin != NULL ) {
do {
fcin >> tipo;
fcin >> nome;
fcin >> nascimento;
fcin >> sexo;
fcin >> rg;
fcin >> tel;

fcin >> rua;
fcin >> bairro;
fcin >> cidade;
fcin >> estado;
fcin >> num;
fcin >> cep;

switch ( tipo ) {
case 1:
{
int numParcelas;
float valorAnuidade;
fcin >> matricula;
fcin >> numParcelas;
fcin >> valorAnuidade;
addAlunoSemGravar( new AlunoEnsinoMedio ( new HistoricoEscolar(), new Endereco( rua, bairro, cidade, estado, num, cep),
tipo, nome, nascimento, sexo, rg, tel,
matricula, numParcelas, valorAnuidade ) );
//"Aluno de Ensino Medio";
}
break;
case 2:
{
int numParcelas, cargaHoraria, valorHoraAula;
fcin >> matricula;
fcin >> numParcelas;
fcin >> cargaHoraria;
fcin >> valorHoraAula;
//"Aluno de Graduacao";
addAlunoSemGravar( new AlunoGraduacao ( new HistoricoEscolar(), new Endereco( rua, bairro, cidade, estado, num, cep),
tipo, nome, nascimento, sexo, rg, tel,
matricula, numParcelas, cargaHoraria, valorHoraAula ) );

}
break;
}
} while ( !fcin.eof());

sgp->Ordena();
}

fcin.close();

}

Estes são meus métodos de gravar e ler arquivo. Está funcinando, o problema é que quando ele lê o último Aluno do arquivo, este mesmo Aluno é duplicado nos meus dados.

Alguém tem alguma ideia porque ele faz isso?

Obs.: O resto do código está funcionando perfeitamente bem. Quando executo o programa somente pela memoria principal, sem carregar do arquivo; não há duplicata de dados!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!