Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Zeca_jcr

Sistema de Gestao Academica

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×