Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

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

×