/************************************************************************
* UNIVAP - UNIVERSIDADE DO VALE DO PARAIBA *
* FCC - FACULDADE DE CIENCIA DA COMPUTACAO *
* PROGRAMACAO ORIENTADA A PROCEDIMENTOS II *
* PROF¦ SILENE DE FREITAS FERNANDES *
* ENGENHARIA DA COMPUTACAO - 39U2A *
* *
* NOME: JOSE EDUARDO SANTOS PEREIRA MATRICULA: 39020207 *
* RAFAEL OLIVEIRA DE SOUZA 39020086 *
************************************************************************/
#include
#include
#include
#include
#include
#include
void menu1() //CRIANDO MENU PRINCIPAL
{
clrscr();
for(int x=24;x<=50;x++)
{
gotoxy(x,10); printf("*");
gotoxy(x,17); printf("*");
}
for(x=11;x<=17;x++)
{
gotoxy(24,x); printf("*");
gotoxy(50,x); printf("*");
}
gotoxy(29,11); printf("TIPO DO ARQUIVO");
gotoxy(26,13); printf("1-Texto");
gotoxy(26,14); printf("2-Bin rio");
gotoxy(26,15); printf("ESC - Sair");
}
void menu2() //CRIANDO SUB-MENU
{
clrscr();
for(int x=24;x<=50;x++)
{
gotoxy(x,10); printf("*");
gotoxy(x,17); printf("*");
}
for(x=11;x<=17;x++)
{
gotoxy(24,x); printf("*");
gotoxy(50,x); printf("*");
}
gotoxy(31,11); printf("APLICA€OES");
gotoxy(26,13); printf("1-Criar arquivo");
gotoxy(26,14); printf("2-Cadastrar dados");
gotoxy(26,15); printf("3-Visualizar dados");
gotoxy(26,16); printf("ESC - Voltar");
}
int testadirarq(char dirtest[14],char tipo, char narq[14]) //TESTES
{
char resp;
clrscr();
if (chdir(dirtest)!=0) //TESTANDO DIRETORIO
{
printf("\nDiretorio inexistente.");
do{
printf("\nDeseja criar o Diretorio(S/N): ");
resp=getche();
if((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'))
{
printf("Opcao Invalida!!!\n");
delay(2000);
}
if((resp=='s')||(resp=='S'))
{
if(mkdir(dirtest)!=0)
{
printf("\nNao foi possivel Criar Diretorio.");
delay(2000);
return 0;
}
else
{
chdir(dirtest);
printf("\nDiretorio criado com sucesso.");
fflush(stdin);
getch();
}
}
if((resp=='n')||(resp=='N'))
{
clrscr();
printf("\nO diretorio indicado nao e valido e nao foi criado.");
printf("\nTente novamente.");
delay(3000);
return 0;
}
}while((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'));
}
clrscr();
if(tipo=='b') //TESTE PARA ARQUIVO BINARIO
{
FILE *arqb;
if ((arqb = fopen(&narq[0], "rb"))== NULL)
{
fprintf(stderr, "\nArquivo binario de dados nao encontrado.\n");
do{
printf("\nDeseja criar o Arquivo Binario (S/N): ");
resp=getche();
if((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'))
{
printf("\nOpcao Invalida!!!\n");
delay(2000);
}
if((resp=='s')||(resp=='S'))
{
if ((arqb = fopen(&narq[0], "wb"))== NULL)
{
fprintf(stderr, "\nNao foi possivel criar arquivo binario.\n");
delay(2000);
return 0;
}
else
{
printf ("\nArquivo binario criado com sucesso.");
fflush(stdin);
getch();
fclose (arqb);
return 1;
}
}
if((resp=='n')||(resp=='N'))
{
printf("\nArquivo binario nao encontrado.Tente novamente.\n");
delay(2000);
return 0;
}
}while((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'));
}
else
{
fclose(arqb);
do{
printf("\nDeseja criar(C) novo Arquivo ou atualizar(A) o existente(C/A): ");
resp=getche();
if((resp!='c')&&(resp!='C')&&(resp!='a')&&(resp!='A'))
{
printf("\nOpcao Invalida!!!\n");
delay(2000);
}
if((resp=='c')||(resp=='C'))
{
if ((arqb = fopen(&narq[0], "wb"))== NULL)
{
fprintf(stderr, "\nNao foi possivel criar novo arquivo binario.\n");
delay(2000);
return 0;
}
else
{
printf("\nNovo arquivo binario criado com sucesso.");
fflush(stdin);
getch();
fclose(arqb);
return 1;
}
}
if((resp=='a')||(resp=='A'))
{
printf("\nArquivo sera atualizado.");
fflush(stdin);
getch();
return 1;
}
}while((resp!='a')&&(resp!='A')&&(resp!='c')&&(resp!='C'));
}
}
if(tipo=='t') //TESTE PARA ARQUIVO TEXTO
{
FILE *arqt;
if ((arqt = fopen(&narq[0], "rt"))== NULL)
{
fprintf(stderr, "\nArquivo texto de dados nao encontrado.\n");
do{
printf("\nDeseja criar o Arquivo Texto (S/N): ");
resp=getche();
if((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'))
{
printf("\nOpcao Invalida!!!\n");
delay(2000);
}
if((resp=='s')||(resp=='S'))
{
if ((arqt = fopen(&narq[0], "wt"))== NULL)
{
fprintf(stderr, "\nNao foi possivel criar arquivo texto.\n");
delay(2000);
return 0;
}
else
{
printf ("\nArquivo texto criado com sucesso.");
fflush(stdin);
getch();
fclose(arqt);
return 1;
}
}
if((resp=='n')||(resp=='N'))
{
printf("\nArquivo texto nao encontrado. Tente novamente.");
delay(2000);
return 0;
}
}while((resp!='s')&&(resp!='S')&&(resp!='n')&&(resp!='N'));
}
else
{
fclose(arqt);
do{
printf("\nDeseja criar(C) novo Arquivo ou atualizar(A) o existente(C/A): ");
resp=getche();
if((resp!='c')&&(resp!='C')&&(resp!='a')&&(resp!='A'))
{
printf("\nOpcao Invalida!!!\n");
delay(2000);
}
if((resp=='c')||(resp=='C'))
{
if ((arqt = fopen(&narq[0], "wt"))== NULL)
{
fprintf(stderr, "\nNao foi possivel criar novo arquivo texto.\n");
delay(2000);
return 0;
}
else
{
printf("\nNovo arquivo texto criado com sucesso.");
fflush(stdin);
getch();
fclose(arqt);
return 1;
}
}
if((resp=='a')||(resp=='A'))
{
printf("\nArquivo sera atualizado.");
fflush(stdin);
getch();
return 1;
}
}while((resp!='a')&&(resp!='A')&&(resp!='c')&&(resp!='C'));
}
}
return 0;
}
void grava_dados(char tipo,char narq[14], char dire[14])
{
char nome [100];
int idade;
clrscr();
chdir(dire);
printf ("Digite seu nome: ");
fflush(stdin);
gets(nome);
printf ("Digite sua idade: ");
scanf("%d",&idade);
if (tipo=='b')
{
FILE *arqb;
if ((arqb = fopen(&narq[0], "ab"))== NULL) //Aberto como apend, pois a opcao 1
{ //determina se vai ser atualizado ou criado novo.
fprintf(stderr, "\nOcorreu um erro, retorne a Opcao de Criar arquivo.\n");
delay(2000);
}
fprintf(arqb,"%s\n%d\n",nome,idade);
fclose(arqb);
}
if (tipo=='t')
{
FILE *arqt;
if ((arqt = fopen(&narq[0], "at"))== NULL) //Aberto como apend, pois a opcao 1
{ //determina se vai ser atualizado ou criado novo.
fprintf(stderr, "\nOcorreu um erro, retorne a Opcao de Criar arquivo.\n");
delay(2000);
}
fprintf(arqt,"%s\n%d\n",nome,idade);
fclose(arqt);
}
}
void imprime_dados(char tipo,char narq[14], char dire[14])
{
char nome[100],aux[3];
int idade;
clrscr();
chdir(dire);
if (tipo=='b') //imprimindo dados para arquivos binarios
{
FILE *arqb;
if ((arqb = fopen(&narq[0], "rb"))== NULL)
{
fprintf(stderr, "\nOcorreu um erro, retorne a Opcao de Criar arquivo.\n");
delay(2000);
}
while(!feof(arqb))
{
fgets(nome,sizeof(nome),arqb);
fscanf(arqb,"%d",&idade);
fgets(aux,sizeof(nome),arqb);
if(!feof(arqb))
printf("Nome: %sIdade: %d\n",nome,idade);
}
fflush(stdin);
getch();
fclose(arqb);
}
if (tipo=='t') //imprimindo dados para arquivos de texto
{
FILE *arqt;
if ((arqt = fopen(&narq[0], "rt"))== NULL)
{
fprintf(stderr, "\nOcorreu um erro, retorne a Opcao de Criar arquivo.\n");
delay(2000);
}
while(!feof(arqt))
{
fgets(nome,sizeof(nome),arqt);
fscanf(arqt,"%d",&idade);
fgets(aux,sizeof(aux),arqt);
if(!feof(arqt))
printf("Nome: %sIdade: %d\n",nome,idade);
}
fflush(stdin);
getch();
fclose(arqt);
}
}
void main ()
{
char narqv[14],ndir[14],cdir[MAXDIR],aux;
int op=0,op2=0,verif=0;
clrscr();
getcwd(cdir,MAXDIR); //Guardando diretorio corrente
do{ //Selecao do Menu Principal
menu1();
fflush(stdin);
switch (op=getch())
{
case 49:{ //Selecionado Arquivo de texto
do{
menu2(); //Selecao do Sub-Menu
fflush(stdin);
switch (op2=getch())
{
case 49:{
clrscr();
printf("Digite o nome do Diretorio (Ex: C:\dir): ");
gets(ndir);
printf("\nDigite o nome do Arquivo (Ex:Arquivo.ext): ");
gets (narqv);
if((testadirarq(&ndir[0],'t',&narqv[0]))==0)
printf("Ocorreu um erro. Tente novamente.");
verif=1;
}
break;
case 50:{
if(verif!=1)
{
clrscr();
printf("Deve-se executar a opcao 1 para setagem de arquivo.");
delay(2000);
break;
}
do{
grava_dados('t',&narqv[0],&ndir[0]);
do{
printf("Deseja Cadastrar novamente (S/N): ");
fflush(stdin);
aux=getche();
if((aux!='s')&&(aux!='S')&&(aux!='n')&&(aux!='N'))
{
printf("\nOpcao Invalida!!!\n");
delay(2000);
}
}while((aux!='s')&&(aux!='S')&&(aux!='n')&&(aux!='N'));
}while((aux!='n')&&(aux!='N'));
}
break;
case 51:{
if(verif!=1)
{
clrscr();
printf("Deve-se executar a opcao 1 para setagem de arquivo.");
delay(2000);
break;
}
imprime_dados('t',&narqv[0],&ndir[0]);
}
break;
case 27:break;
default: if((op2!=49)&&(op2!=50)&&(op2!=51)&&(op2!=27))
{
clrscr();
printf("Opcao Invalida!!!\n");
delay(2000);
}
}
}while(op2!=27);
break;
}
case 50:{ //Selecao do Arquivo Binario
do{
menu2(); //Selecao do Sub-Menu
fflush(stdin);
switch (op2=getch())
{
case 49:{
clrscr();
printf("Digite o nome do Diretorio (Ex: C:\dir): ");
gets(ndir);
printf("\nDigite o nome do Arquivo (Ex:Arquivo.ext): ");
gets (narqv);
if((testadirarq(&ndir[0],'b',&narqv[0]))==0)
printf("Ocorreu um erro. Tente novamente.");
verif=1;
}
break;
case 50:{
if(verif!=1)
{
clrscr();
printf("Deve-se executar a opcao 1 para setagem de arquivo.");
delay(2000);
break;
}
do{
grava_dados('b',&narqv[0],&ndir[0]);
do{
printf("Deseja Cadastrar novamente (S/N): ");
fflush(stdin);
aux=getche();
if((aux!='s')&&(aux!='S')&&(aux!='n')&&(aux!='N'))
{
printf("\nOpcao Invalida!!!\n");
delay(2000);
}
}while((aux!='s')&&(aux!='S')&&(aux!='n')&&(aux!='N'));
}while((aux!='n')&&(aux!='N'));
}
break;
case 51:{
if(verif!=1)
{
clrscr();
printf("Deve-se executar a opcao 1 para setagem de arquivo.");
delay(2000);
break;
}
imprime_dados('b',&narqv[0],&ndir[0]);
}
break;
case 27:break;
default: if((op2!=49)&&(op2!=50)&&(op2!=51)&&(op2!=27))
{
clrscr();
printf("Opcao Invalida!!!\n");
delay(2000);
}
}
}while(op2!=27);
}
case 27: break;
default: if((op2!=49)&&(op2!=50)&&(op2!=51)&&(op2!=27))
{
clrscr();
printf("Opcao Invalida!!!\n");
delay(2000);
}
}
}while(op!=27);
chdir(cdir); //Retornando ao diretorio corrente
clrscr();
}
|