Ir ao conteúdo
  • Cadastre-se

Gerar código de matrícula


Posts recomendados

void cadastrar(){    fseek(arq,0,SEEK_SET);    fread(&linhas,sizeof(linhas),1,arq);    do    {        cout<<"\n\nCADASTRO";        cin.ignore();        cout<<"\n\nNome do aluno: ";        cin.getline(d.nome,40);        cout<<"\n\nIdade do aluno: ";        cin>>d.idade;        cout<<"\n\nNome: "<<d.nome;        cout<<"\nIdade: "<<d.idade;        cout<<"\n\nOs dados estao corretos ? (S/N)";        cin>>op2;        if (op2=='S')        {            salto=sizeof(d)*linhas,sizeof(linhas);            fseek(arq,salto,SEEK_SET);            d.matricula++;            fprintf(arq,"%d",d.matricula);            fwrite(&d,sizeof(d),1,arq);            fseek(arq,0,SEEK_SET);            linhas++;            fwrite(&linhas,sizeof(linhas),1,arq);            cout<<"O numero de matricula de "<<d.nome<<" e "<<d.matricula;        do        {            cout<<"\n\nDeseja cadastrar um outro aluno ? (S/N)"; cin>>op;        }while ((op != 'S')&&(op != 'N'));        }    }while (op != 'N');}

Acho quo que só com essa parte do programa já da pra explicar o que quero.

Meu programa cadastra o aluno no sistema e gera um numero de matricula para ele. Eu declarei que d.matricula=0, para começar em 0 e sempre ser incrementado em +1 toda vez que uma matrícula é realizada. O programa faz isso perfeitamente enquanto está rodando, porém, se eu fechar o programa e abri de novo, ele começa a cadastrar de novo a partir da matricula numero 1. Eu queria que por exemplo, eu cadastrei um aluno (o numero de matricula dele é 1) e fechei o programa. Quando eu abrisse o programa de novo e cadastrasse outro aluno, o numero de matricula dele fosse 2. Mas isso não acontece, sempre que eu fecho o programa, ele zera o numero das matriculas.

O que eu faço ?

RESOLVIDO

Link para o comentário
Compartilhar em outros sites

Esse resolvido aí é que já resolveu? Entenda o seguinte. Se você não gravar os valores das matrículas em algum lugar, toda vez que o sistema for iniciado, ele sempre começará do zero e isso está correto. Esses valores devem ser gravados antes. Outra coisa que eu percebi é que a variável que gera o código inicia em zero, isso significa que para cada vez que ela for iniciada(começar de novo), ela sempre vai começar do zero. A solução é: Deves ter uma instrução do tipo IF que teste se há ou não algum número gerado. Caso haja, a sua variável teria o valor inicial de: 

Código_do_Matricula_Atual + 1

 e depois continuaria o normal que já existe. Não conheço C e nem C++, minha praia é o C#, mas o que eu estou te dizendo é lógica pura.

Link para o comentário
Compartilhar em outros sites

O que sempre faço quando quero gravar dados para utilizar mais tarde no programa é:

Peço a entrada de dados, vou criar o arquivo com todas as informações, se ele não existir eu crio um novo começo em 1, porém se ele já existir eu lerei a última matrícula e somar um ao próximo número da matrícula.

Pseudo Código:<<entrada de dados;Se (!abrir arquivo) //ele ainda não foi criado{Criar arquivo;>>gravar dados no arquivo;}Senao{Percorrer arquivo até última matrícula;pegar número da última matrícula;>>gravar dados da próxima. //número da última matrícula + 1;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...