//Bianca Del Duca
// 2o. Engenharia da Computacao A - Noturno
include "conio.h"
#include "stdio.h"
#include "ctype.h"
#include "dir.h"
#include "stdlib.h"
# define TAM 300
void cadastrar();
void alterar();
void imprimir();
struct banco
{
int matricula;
char nome[30];
char tel[10];
};
struct banco dados[TAM];
struct banco dado;
int n,matr;
FILE *pt;
FILE *pt1;
void limpa( void )
{
int i,j,x;
for(i=0;i<TAM;i++)
{
for(j=0;j<30;j++)
dados[i].nome[j]=NULL;
dados[i].matricula=0;
for(x=0;x<10;x++)
dados[i].tel[x]=NULL;
}
}
void main()
{
int i;
char op,resp,op1,resp1;
clrscr();
limpa();
printf("Deseja come‡ar novo arquivo? (S/N): ");
resp=getche();
if(toupper(resp)=='S')
{
if((pt1=fopen("testen.bin","wb"))==NULL)
{
printf("Erro na abertura do arquivo");
getch();
exit(1);
}
else
{
n=0;
fwrite(&n,sizeof(n),1,pt1);
fclose(pt1);
}
}
if((pt1=fopen("testen.bin","rb"))==NULL)
{
printf("Erro na abertura do arquivo");
getch();
exit(1);
}
else
fread(&n,sizeof(n),1,pt1);
fclose(pt1);
// printf("%d",n);
// getch();
do
{
clrscr();
for(i=25;i<=55;i++)
{
gotoxy(i,10);printf("*");
gotoxy(i,17);printf("*");
}
for(i=11;i<=16;i++)
{
gotoxy(25,i);printf("*");
gotoxy(55,i);printf("*");
}
gotoxy(33,4);printf("Menu Principal");
gotoxy(29,12);printf("1- Incluir registro");
gotoxy(29,13);printf("2- Alterar registro");
gotoxy(29,14);printf("3- Imprimir (tela)");
gotoxy(29,15);printf("ESC- Encerrar programa");
gotoxy(31,19);printf("Escolha uma opcao: ");
fflush(stdin);
op=getch();
switch(op)
{
case '1':
{
cadastrar();
getch();
break;
}
case '2':
{
alterar();
getch();
break;
}
case '3':
{
imprimir();
getch();
break;
}
case 27:
{
clrscr();
printf("Deseja apagar o arquivo? (S/N):");
scanf("%c",&resp1);
if(toupper(resp1)=='S')
{
if (remove("teste.dat") == 0)
{
printf("Arquivo removido!");
getch();
}
else
{
perror("remove");
getch();
}
}
break;
}
default:
{
printf("Digite somente opcoes validas!");
getch();
}
};
}while(op!=27);
}
void cadastrar()
{
clrscr();
char op;
if(n==TAM)
{
printf("Banco de dados cheio");
getch();
exit(1);
}
do
{
matr=n+1;
dado.matricula=matr;
printf("\nMatricula: %d",dado.matricula);
printf("\nDigite nome: ");
gets(dado.nome);
printf("Digite telefone: ");
gets(dado.tel);
printf("Confirma dados? (S/N): ");
op=getche();
printf("\n");
}while(toupper(op)!='S');
if((pt=fopen("teste.dat","ab"))==NULL)
{
printf("\nErro na abertura do arquivo");
getch();
exit(1);
}
else
fwrite(&dado,sizeof(dado),1,pt);
fclose(pt);
n++;
printf("\n\nRegistro %d gravado",n);
if((pt1=fopen("testen.bin","wb"))==NULL)
{
printf("\nErro na abertura do arquivo");
getch();
exit(1);
}
else
fwrite(&n,sizeof(n),1,pt1);
fclose(pt1);
}
void imprimir()
{
clrscr();
int i,numreg;
char op;
if(n==0)
printf("Banco de dados vazio");
else
{
do
{
printf("Deseja visualizar todos os registros ou somente um?(T/S): ");
fflush(stdin);
op=getch();
clrscr();
if(toupper(op)=='T')
{
if((pt=fopen("teste.dat","rb"))==NULL)
{
printf("\nErro na abertura do arquivo");
getch();
exit(1);
}
else
i=0;
while(fread(&dados[i],sizeof(dados[i]),1,pt)==1)
i++;
// fread(&dados,sizeof(dados),1,pt);
for(i=0;i<n;i++)
{
printf("\nMatricula: %d\n",dados[i].matricula);
printf("Nome: %s\n",dados[i].nome);
printf("Telefone: %s\n",dados[i].tel);
}
fclose(pt);
break;
}
if(toupper(op)=='S')
{
if((pt=fopen("teste.dat","rb"))==NULL)
{
printf("\nErro na abertura do arquivo");
getch();
exit(1);
}
else
{
printf("\nDigite o numero do registro: ");
scanf("%d",&numreg);
if(numreg>n)
printf("\nRegistro inexistente");
else
{
fread(&dados,sizeof(dados),1,pt);
printf("\nMatricula: %d\n",dados[numreg-1].matricula);
printf("Nome: %s\n",dados[numreg-1].nome);
printf("Telefone: %s\n",dados[numreg-1].tel);
}
}
fclose(pt);
break;
}
}while((toupper(op)!='T')||(toupper(op)!='S'));
}
}
void alterar()
{
clrscr();
int i,numreg;
if(n==0)
printf("Banco de dados vazio");
else
{
printf("\nDigite o numero do registro: ");
scanf("%d",&numreg);
if(numreg<=n)
{
if((pt=fopen("teste.dat","rb"))==NULL)
{
printf("\nErro na abertura do arquivo");
getch();
exit(1);
}
else
{
i=0;
while(fread(&dados[i],sizeof(dados[i]),1,pt)==1)
//fread(&dados,sizeof(dados),1,pt);
i++;
printf("\nMatricula: %d\n",dados[numreg-1].matricula);
printf("Nome: %s\n",dados[numreg-1].nome);
printf("Telefone: %s\n",dados[numreg-1].tel);
}
fclose(pt);
printf("\nMatricula: %d",dados[numreg-1].matricula);
printf("\nDigite novo nome: ");
fflush(stdin);
gets(dados[numreg-1].nome);
printf("Digite novo telefone: ");
fflush(stdin);
gets(dados[numreg-1].tel);
if((pt=fopen("teste.dat","wb"))==NULL)
{
printf("\nErro na abertura do arquivo");
getch();
exit(1);
}
else
for(i=0;i<n;i++)
fwrite(&dados[i],sizeof(dados[i]),1,pt);
fclose(pt);
printf("\nRegistro %d foi alterado",numreg);
} //fecho if
else
printf("\nRegistro inexistente");
} //fecho else
}
|