Skip to content

Commit

Permalink
Create looptest4
Browse files Browse the repository at this point in the history
  • Loading branch information
Thiago M committed Sep 29, 2015
1 parent 552fd77 commit 14e0091
Showing 1 changed file with 245 additions and 0 deletions.
245 changes: 245 additions & 0 deletions looptest4
Original file line number Diff line number Diff line change
@@ -0,0 +1,245 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio2.h>

#define ESC 27

int IDcont=1; // var global usada para manter a sequência de ID dos livros

typedef struct registro // estrutura com os dados de cada livro
{
char nome[100];
char genero[100];
int ID;
} livros;

livros book[100];

// Inicialização das funções
void add_livro();
void mostra_livro();
void load_dados();
void procura_livro();

// FUNÇÃO PRINCIPAL DO PROGRAMA
int main()
{
load_dados(); // Inicia a função load_dados ao abrir o programa
// para que o contador de ID (IDcont) tome a posição correta
char escolha;

while (escolha != ESC)
{
printf("\n\nVALOR DE IDcont: %d\n", IDcont);
// MENU BÁSICO
printf("\n1 - Adicionar livro\n");
printf("\n2 - Mostrar todos os livros\n");
printf("\n3 - Alterar livro\n");
printf("\n4 - Procurar livro\n");
printf("\nEntre com a opcao desejada: ");
escolha = getch();
// FIM MENU

fflush(stdout);

// Switch com as opções do menu
switch(escolha)
{
case('1'): // Digitando 1 inicia a função add_livro
add_livro();
clrscr(); // Limpa a tela
break;
case('2'):
mostra_livro(); // Digitando 2 inicia a função mostra_livro()
break;
//case('3'):
//altera_livro();
//break;
case('4'):
procura_livro();
break;
default:
clrscr();
printf("\nOpcao invalida!\n");
break;
}
if (escolha == ESC) {
clrscr();
printf("\n\nSAINDO DO PROGRAMA...\n");
}
}

getch();

}


void add_livro()
{
FILE *arq;

int i = IDcont;
int slot;
char escolha;

fflush(stdin);

int tamanho = 0; // var para nao usar loop com strlen, pois gera muitas iterações desnecessárias

do
{
do
{
clrscr(); //limpa a tela
if(tamanho != 0 && tamanho <= 5) // Mostrar na tela que deve digitar + de 5 chars
printf("\nO nome do livro deve conter pelo menos 5 letras/numeros. Tente novamente.\n");
printf("\nInforme o nome: ");
fgets(book[i].nome, sizeof(book[i].nome), stdin);
tamanho = strlen(book[i].nome); // Evitando loop com strlen
} while (tamanho <= 5); // Se usuario digitar nome do livro com menos de 5 letras forcar que digite novamente

do
{
clrscr();
if(tamanho != 0 && tamanho <= 5)
printf("\nO genero do livro deve conter pelo menos 5 letras/numeros. Tente novamente.\n");
printf("\nInforme o genero: ");
fgets(book[i].genero, sizeof(book[i].genero), stdin);
tamanho = strlen(book[i].genero); // Evitando loop com strlen
} while (tamanho <= 5);


//printf("\n\n%d\n\n", sizeof(book[i].genero);

book[i].ID = i;

if((arq=fopen("teste.txt", "a")) == NULL)
{
clrscr();
printf("\n\nO Arquivo nao pode ser aberto, por favor tente novamente.");
}
else
{
fprintf(arq, "%d\n%s%s\n", book[i].ID, book[i].nome, book[i].genero);
printf("\n\nLivro adicionado com sucesso!");
}

fclose(arq);

i++;
IDcont=i;

printf("\n\nDeseja adicionar outro livro (pressione 'S' caso sim): ");
escolha = getch();

} while(escolha == 's' || escolha == 'S');

clrscr(); // Limpa a tela
return;
}


void mostra_livro()
{
clrscr();
int i=1;

for (i=1; i<IDcont; i++)
{
fflush(stdout);
printf("ID: %d", book[i].ID);
printf("\nNome: %s", book[i].nome);
printf("\nGenero: %s\n\n", book[i].genero);
}

printf("\n\nPressione qualquer tecla para voltar ao menu.");
getch();

clrscr();

return;
}

void load_dados()
{
FILE* arq;

int i=1;

if((arq=fopen("teste.txt", "r")) == NULL)
{
clrscr();
printf("\n\nO Arquivo nao pode ser aberto, por favor tente novamente.");
}
else
{
while (fscanf(arq, "%d\n%s\n%s\n\n", &book[i].ID, book[i].nome, book[i].genero) != EOF)
{
i++;
while(IDcont < i)
{
IDcont++;
}
}

fclose(arq);
}

for(i=1; i<IDcont; i++)
{
printf("\nTeste ID: %d", book[i].ID);
printf("\nTeste Nome: %s", book[i].nome);
printf("\nTeste Genero: %s\n", book[i].genero);
}

return;
}

void procura_livro()
{
clrscr();
int i=1, j;
char pesqLivro[50];

fflush(stdin);
printf("\n\nDigite o nome do livro que deseja pesquisar: ");
fgets(pesqLivro, sizeof(pesqLivro), stdin);

/*AO REALIZAR A PESQUISA E ENCONTRAR RESULTADOS, OFERECER A OPÇÃO DE ALTERAR O LIVRO PELO ID (SE FOR ADMIN)*/

for(j=1; j<IDcont; j++)
{
if (strncmp(book[j].nome, pesqLivro, 3) == 0)
{
printf("\nLIVRO ENCONTRADO!\n");
printf("\nID: %d", book[j].ID);
printf("\nLivro: %s\n", book[j].nome);
printf("Genero: %s\n", book[j].genero);
}
}

getch();
clrscr();
return;
}

/*
registro novoLivro()
{
registro book;

fflush(stdin);
printf("\n\nADICIONAR NOVO LIVRO\n");
printf("\n\nInsira o nome do livro: ");
//fgets(book.nome, sizeof(book.nome), stdin);
//fprintf(arq, book.nome);
scanf("%s", &book.nome);

printf("\n\nInsira o genero do livro: ");
//fgets(book.genero, sizeof(book.genero), stdin);
scanf("%s", &book.genero);

return book;
}
*/

0 comments on commit 14e0091

Please sign in to comment.