Você está na página 1de 18

#include <iostream> #include <fstream> #include <iomanip> #include <cstdlib> #include <string> #include <ctype.

h> using namespace std; // typedef Ela permite criar novos nomes de tipos de dados definidos // INTEIRO a, b

typedef struct restaurante { char nome[20]; char tel[15]; char tip[20]; }tab_restaurante; tab_restaurante Res[50]; int j; int aux=0;

typedef struct restaurante1 { char nome1[20]; char tel1[15]; char tip1[20]; }tab_restaurante1; tab_restaurante1 Res1[50];

void AtualizarNome(); void incluir(); // feito void alterar(); void consultar(); // feito void relatorios(); //feito void consultar_nome(); void consultar_telefone(); void listar_todos(); //feito void listar_um_Tipo(); //feito int main(); void troca1(); void alterar_todos(); void alterar_nome(); void alterar_telefone(); void alterar_tipo(); void atualizar();

FILE *fp;

int main (){ int opcao; cout<<"\n\n\n\n\n"; cout<<" ******************************************* \n\n"; cout<<" Resistros Restaurante \n\n";

cout<<" ******************************************* \n\n";

cout<<" ******************************************* \n\n"; cout<<" Francisco Joarlan dos Santo Martins - 201101312645 \n\n"; cout<<" \n\n"; cout<<" ******************************************* \n\n"; cout<<" ******************************************* \n\n"; cout<<" 1 INCLUIR \n\n"; cout<<" 2 CONSULTAR \n\n"; cout<<" 3 RELATORIOS\n\n"; cout<<" 9 SAIR\n\n"; cout<<" ******************************************* \n\n"; cin>>opcao; switch(opcao) { case 1: incluir(); break;

case 2: consultar(); break;

case 3: relatorios(); break;

case 9: break;

default: cout<<"\aOpcao invalida!"; system("pause"); return 0; } }

void incluir(){ char op; int add = 0, escrita; fp = fopen("restaurante.bin","a"); if (fp == NULL) { cout<<"Erro! Arquivo no pode ser aberto!\n"; cout<<"Faltam dados!\n"; main(); }

while ((add < 35)) {

cout<<"Digite o nome....: "<<endl; fflush(stdin); gets(Res[add].nome); cout<<"Digite o Telefone: "<<endl; gets(Res[add].tel); cout<<"Digite o Tipo: "<<endl;

fflush(stdin); gets(Res[add].tip); escrita = fwrite(&Res[add], sizeof(struct restaurante) ,1,fp);

/* int fread (void* p, int tam, int num, FILE *fp); void* p ? o endereo de memria que contm a informao a ser gravada int tam ? o tamanho em bytes de cada elemento int num ? o nmero de elementos FILE *fp ? o ponteiro para o arquivo */ cout<<"\n" ;

if (escrita == 1) { cout<<" \n Salvo com sucesso! "<<endl; } add++; break; } fclose (fp); system("pause"); main(); }

void alterar(){ cout<<" 1 Alterar nome \n\n"; cout<<" 2 Alterar telefone\n\n"; cout<<" 3 Alterar tipo \n\n"; cout<<" 4 Alterao completa\n\n"; cout<<" 9 SAIR\n\n"; cout<<" ******************************************* \n\n"; int opcao; cin>>opcao; switch(opcao) { case 1: troca1(); alterar_nome(); break;

case 2: troca1(); alterar_telefone(); break;

case 3: troca1(); alterar_tipo(); break;

case 4: troca1(); alterar_todos(); break;

case 9: break; default: cout<<"\aOpcao invalida!"; } cout<<"atualizar\n"; atualizar();

system("pause"); main(); }

void relatorios(){ int opcao1; cout<<"* -----: Menu ----- * :"<<endl; cout<<"1 - Listar Todos"<<endl; cout<<"2 - Listar restaurante do Tipo"<<endl;

cout<<"9 - ENCERRAR"<<endl; cin>>opcao1;

switch(opcao1) { case 1: listar_todos(); break;

case 2: listar_um_Tipo(); break;

case 9: break; default: cout<<"\aOpcao invalida!"<<endl; } }

void listar_todos(){ int indice = 0, leitura;

if ((fp = fopen("restaurante.bin", "rb")) == NULL) {

cout<<"O arquivo da lista no pode ser aberto!\n"; system("pause"); main(); }

leitura = fread(&Res[indice], sizeof(struct restaurante), 1, fp); // fread l e retorna a quantidade de itens ...

while ( leitura == 1) { cout<<"\n Nome ......:"<< Res[indice].nome<<endl; cout<<"\n Telefone ..:"<< Res[indice].tel<<endl; cout<<"\n Tipo ......:"<< Res[indice].tip<<endl; cout<<"\n"; indice++; leitura = fread(&Res[indice], sizeof(struct restaurante), 1, fp); } cout<<" \n\n Total: "<< indice<<endl<<endl; fclose(fp); system("pause"); main(); }

void listar_um_Tipo(){ int indice = 0, leitura = 1, cont = 0; char nome[20]; if ((fp = fopen("restaurante.bin", "r")) == NULL) {

cout<<"O arquivo da lista no pode ser aberto!\n"; system("pause"); main(); }

cout<<"Digite o tipo: "<<endl; fflush(stdin); gets(nome); leitura = fread(&Res[indice], sizeof(struct restaurante), 1, fp);

while (leitura == 1){ if (strcmp(nome, Res[indice].tip) == 0 ){

cout<<"\n Nome ......:"<< Res[indice].nome<<endl; cout<<"\n Telefone ..:"<< Res[indice].tel<<endl; cout<<"\n Tipo ......:"<< Res[indice].tip<<endl; cout<<"\n";

//adiciona ao contador cont++; } indice++;//incrementa indice leitura = fread(&Res[indice], sizeof(struct restaurante), 1, fp); //le novamento com um novo indice } //caso o contador seja Zero, retorna que no houve resultados. if(cont == 0){ cout<<"Nao a restaurantes desse tipo!\n";

fclose(fp); system("pause"); main(); }

void consultar(){ int opcao1; cout<<"* -----: Menu ----- * :"<<endl; cout<<"1 - consultar por nome"<<endl; cout<<"2 - consultar por telefone"<<endl; cout<<"9 - ENCERRAR"<<endl; cin>>opcao1; switch(opcao1) { case 1: consultar_nome(); break;

case 2: consultar_telefone();

break;

case 9: break; default: cout<<"\aOpcao invalida!"<<endl; }

void consultar_nome(){ int indice = 0, leitura = 1, cont = 0; char nome[20]; if ((fp = fopen("restaurante.bin", "rb")) == NULL){ cout<<" O arquivo da lista no pode ser aberto!\n"; } cout<<"Digite o nome: "<<endl; fflush(stdin); gets(nome);

//fread: file read, "l arquivo"

leitura = fread(&Res[indice], sizeof(struct restaurante), 1, fp);

while (leitura == 1){ if (strstr( Res[indice].nome,nome)){

cout<<"\n Nome ......:"<< Res[indice].nome<<endl; cout<<"\n Telefone ..:"<< Res[indice].tel<<endl; cout<<"\n Tipo ......:"<< Res[indice].tip<<endl; cout<<"\n"; j=indice; //adiciona ao contador cont++; } indice++;//incrementa indice

leitura = fread(&Res[indice], sizeof(struct restaurante), 1, fp); //le novamento com um novo indice } //caso o contador seja Zero, retorna que no houve resultados. if(cont == 0){ cout<<"Nao restaurantes com este nome!\n"; }

fclose(fp); alterar();

void consultar_telefone(){ int indice = 0, leitura = 1, cont = 0; char telefone[15]; if ((fp = fopen("restaurante.bin", "rb")) == NULL){ cout<<" O arquivo da lista no pode ser aberto!\n"; main(); } cout<<"Digite o telefone para busca: "<<endl; fflush(stdin); gets(telefone);

//fread: file read, "l arquivo"

leitura = fread(&Res[indice], sizeof(struct restaurante), 1, fp);

while (leitura == 1){ if (strcmp(telefone, Res[indice].tel) == 0 ){

cout<<"\n Nome ......:"<< Res[indice].nome<<endl; cout<<"\n Telefone ..:"<< Res[indice].tel<<endl; cout<<"\n Tipo ......:"<< Res[indice].tip<<endl; cout<<"\n";

//adiciona ao contador cont++; } indice++; leitura = fread(&Res[indice], sizeof(struct restaurante), 1, fp); //le novamento com um novo indice } //caso o contador seja Zero, retorna que no houve resultados. if(cont == 0){ cout<<"Nao a crestaurante com este telefone!\n"; }

fclose(fp); system("pause"); main(); }

void troca1(){ int leitura = 1, cont = 0; char nome[20];

if ((fp = fopen("restaurante.bin", "rb")) == NULL){ cout<<" O arquivo da lista no pode ser aberto!\n"; main(); } leitura = fread(&Res[aux], sizeof(struct restaurante), 1, fp);

while (leitura == 1){

strcpy(Res1[aux].nome1, Res[aux].nome); strcpy(Res1[aux].tel1, Res[aux].tel); strcpy(Res1[aux].tip1, Res[aux].tip); cout<<"restaurante :"<<Res1[aux].nome1<<"posicao :"<<aux<<endl; cout<<"telefone :"<<Res1[aux].tel1<<"posicao :"<<aux<<endl; cout<<"tipo :"<<Res1[aux].tip1<<"posicao :"<<aux<<endl;

leitura = fread(&Res[aux], sizeof(struct restaurante), 1, fp); aux++; } }

void alterar_nome(){ cout<<"Digite o nome do restaurante a ser atualizado "<<endl; fflush(stdin); cout<<"posicao :"<<j<<endl; gets(Res1[j].nome1); cout<<"nome :"<<Res1[j].nome1<<endl; system("pause");

void alterar_telefone(){

cout<<"Digite o Telefone do restaurante a ser atualizado "<<endl; fflush(stdin); gets(Res1[j].tel1); }

void alterar_tipo(){ cout<<"Digite o tipo do restaurante a ser atualizado "<<endl; fflush(stdin); cin>>Res1[j].tel1; }

void alterar_todos(){ alterar_nome(); alterar_telefone(); alterar_tipo(); }

void atualizar(){ cout<<"entrou no atualizar !\n"; int escrita=0;

remove("restaurante.bin"); listar_todos(); if ((fp = fopen("restaurante.bin", "w+")) == NULL){ cout<<"Erro!\n"; }

for(int i=0;i<aux;i++){ escrita = fwrite (&Res1[i], sizeof(struct restaurante1) ,1,fp); if (escrita!= 1) { // Pode ocorrer erro caso no haja permisso de leitura cout<<"Erro !\n"; } } cout<<"saiu no atualizar !\n"; }

Você também pode gostar