v9 - FILE
#include <stdio.h> | |
#include <malloc.h> | |
#include <string.h> | |
struct aluno | |
{ | |
int codigo; | |
char nome[30]; | |
int nota1; | |
int nota2; | |
int nota3; | |
int nota4; | |
}; | |
FILE *Principal, *Secundario, *Final; | |
void digita(struct aluno *A, bool alterar) | |
{ | |
struct aluno aux; | |
if(!alterar) | |
{ | |
printf("digite o codigo: "); | |
scanf("%d", &aux.codigo); | |
} | |
printf("digite o nome: "); | |
scanf("%s", &aux.nome); | |
printf("digite a nota1: "); | |
scanf("%d", &aux.nota1); | |
printf("digite a nota2: "); | |
scanf("%d", &aux.nota2); | |
printf("digite a nota3: "); | |
scanf("%d", &aux.nota3); | |
printf("digite a nota4: "); | |
scanf("%d", &aux.nota4); | |
A->codigo = aux.codigo; | |
strcpy(A->nome, aux.nome); | |
A->nota1 = aux.nota1; | |
A->nota2 = aux.nota2; | |
A->nota3 = aux.nota3; | |
A->nota4 = aux.nota4; | |
} | |
void grava(struct aluno *A) | |
{ | |
Secundario = fopen("segundo.dat", "a+"); | |
fwrite(A, sizeof(struct aluno), 1, Secundario); | |
fclose(Secundario); | |
} | |
void mostraTodos() | |
{ | |
struct aluno aux; | |
int cont = 0; | |
Secundario = fopen("segundo.dat", "r"); | |
while(fread(&aux, sizeof(struct aluno), 1, Secundario)) | |
{ | |
cont++; | |
printf("\n****************"); | |
printf("\nCodigo: %d\n Nome: %s\n Nota1: %d\n Nota2: %d\n Nota3: %d\n Nota4: %d\n\n", aux.codigo, aux.nome, aux.nota1, aux.nota2, aux.nota3, aux.nota4); | |
printf("****************\n"); | |
} | |
if(cont <= 0) | |
printf("Nenhum registro encontrado.\n"); | |
fclose(Secundario); | |
} | |
void mostra() | |
{ | |
struct aluno aux; | |
int cont = 0; | |
Secundario = fopen("segundo.dat", "r"); | |
while(fread(&aux, sizeof(struct aluno), 1, Secundario)) | |
{ | |
if(aux.codigo >= 0) | |
{ | |
cont++; | |
printf("\n****************"); | |
printf("\nCodigo: %d\n Nome: %s\n Nota1: %d\n Nota2: %d\n Nota3: %d\n Nota4: %d\n\n", aux.codigo, aux.nome, aux.nota1, aux.nota2, aux.nota3, aux.nota4); | |
printf("****************\n"); | |
} | |
} | |
if(cont <= 0) | |
printf("Nenhum registro encontrado.\n"); | |
fclose(Secundario); | |
} | |
void apaga(int codigo) | |
{ | |
struct aluno aux; | |
int pos; | |
Secundario = fopen("segundo.dat", "r+"); | |
while(fread(&aux, sizeof(struct aluno), 1, Secundario)) | |
{ | |
if(aux.codigo == codigo) | |
{ | |
pos = ftell(Secundario) - sizeof(struct aluno); | |
aux.codigo *= -1; | |
fseek(Secundario, pos, SEEK_SET); | |
fwrite(&aux, sizeof(struct aluno), 1, Secundario); | |
printf("Apagado.\n"); | |
break; | |
} | |
} | |
fclose(Secundario); | |
} | |
void deletarArquivo() | |
{ | |
remove("segundo.dat"); | |
printf("Arquivo deletado.\n"); | |
} | |
void alterar(int codigo) | |
{ | |
struct aluno aux; | |
struct aluno Aluno; | |
int pos; | |
Secundario = fopen("segundo.dat", "r+"); | |
while(fread(&aux, sizeof(struct aluno), 1, Secundario)) | |
{ | |
if(codigo == aux.codigo) | |
{ | |
pos = ftell(Secundario) - sizeof(struct aluno); | |
fclose(Secundario); | |
printf("Preencha com as novas informacoes.\n"); | |
Aluno.codigo = codigo; | |
digita(&Aluno, true); | |
Secundario = fopen("segundo.dat", "w+"); | |
fseek(Secundario, pos, SEEK_SET); | |
fwrite(&Aluno, sizeof(struct aluno), 1, Secundario); | |
fclose(Secundario); | |
} | |
} | |
fclose(Secundario); | |
} | |
int main() | |
{ | |
struct aluno Aluno; | |
short op = 0; | |
while(op != 9) | |
{ | |
printf("\n1-incluir\n"); | |
printf("2-excluir/retornar logicamente\n"); | |
printf("3-mostrar clientes.dat\n"); | |
printf("4-apagar clientes.dat\n"); | |
printf("5-mostrar clientes.dat nao excluidos\n"); | |
printf("6-alterar\n"); | |
printf("9-encerrar\n"); | |
scanf("%d", &op); | |
switch(op) | |
{ | |
case 1: | |
digita(&Aluno, false); | |
grava(&Aluno); | |
break; | |
case 2: | |
printf("Digite o codigo: "); | |
scanf("%d", &op); | |
apaga(op); | |
break; | |
case 3: | |
mostraTodos(); | |
break; | |
case 4: | |
deletarArquivo(); | |
break; | |
case 5: | |
mostra(); | |
break; | |
case 6: | |
printf("Digite o codigo: "); | |
scanf("%d", &op); | |
alterar(op); | |
break; | |
case 9: | |
//balancedline(); | |
break; | |
} | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
nenodias commentedOct 29, 2015
include <stdio.h>
include <malloc.h>
include <string.h>
struct aluno
{
int codigo;
char nome[30];
int nota1;
int nota2;
int nota3;
int nota4;
};
FILE *Principal, *Secundario, *Final;
void digita(struct aluno *A, bool alterar)
{
struct aluno aux;
if(!alterar)
{
printf("digite o codigo: ");
scanf("%d", &aux.codigo);
}else{
aux.codigo = A->codigo;
}
printf("digite o nome: ");
scanf("%s", &aux.nome);
printf("digite a nota1: ");
scanf("%d", &aux.nota1);
printf("digite a nota2: ");
scanf("%d", &aux.nota2);
printf("digite a nota3: ");
scanf("%d", &aux.nota3);
printf("digite a nota4: ");
scanf("%d", &aux.nota4);
A->codigo = aux.codigo;
strcpy(A->nome, aux.nome);
A->nota1 = aux.nota1;
A->nota2 = aux.nota2;
A->nota3 = aux.nota3;
A->nota4 = aux.nota4;
}
void grava(struct aluno *A)
{
Secundario = fopen("segundo.dat", "a+");
fwrite(A, sizeof(struct aluno), 1, Secundario);
fclose(Secundario);
}
void mostraTodos()
{
struct aluno aux;
int cont = 0;
Secundario = fopen("segundo.dat", "r");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
cont++;
printf("\n***************");
printf("\nCodigo: %d\n Nome: %s\n Nota1: %d\n Nota2: %d\n Nota3: %d\n Nota4: %d\n\n", aux.codigo, aux.nome, aux.nota1, aux.nota2, aux.nota3, aux.nota4);
printf("***************\n");
}
if(cont <= 0)
printf("Nenhum registro encontrado.\n");
fclose(Secundario);
}
void mostra()
{
struct aluno aux;
int cont = 0;
Secundario = fopen("segundo.dat", "r");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
if(aux.codigo >= 0)
{
cont++;
printf("\n***************");
printf("\nCodigo: %d\n Nome: %s\n Nota1: %d\n Nota2: %d\n Nota3: %d\n Nota4: %d\n\n", aux.codigo, aux.nome, aux.nota1, aux.nota2, aux.nota3, aux.nota4);
printf("***************\n");
}
}
if(cont <= 0)
printf("Nenhum registro encontrado.\n");
fclose(Secundario);
}
void apaga(int codigo)
{
struct aluno aux;
int pos;
Secundario = fopen("segundo.dat", "r+");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
if(aux.codigo == codigo)
{
pos = ftell(Secundario) - sizeof(struct aluno);
aux.codigo *= -1;
fseek(Secundario, pos, SEEK_SET);
fwrite(&aux, sizeof(struct aluno), 1, Secundario);
printf("Apagado.\n");
break;
}
}
fclose(Secundario);
}
void deletarArquivo()
{
remove("segundo.dat");
printf("Arquivo deletado.\n");
}
void alterar(int codigo)
{
struct aluno aux;
struct aluno Aluno;
int pos;
Secundario = fopen("segundo.dat", "r+");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
if(codigo == aux.codigo)
{
pos = ftell(Secundario) - sizeof(struct aluno);
fclose(Secundario);
}
int main()
{
struct aluno Aluno;
short op = 0;
}