Você está na página 1de 3

#include<conio.

h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>

//Parte de dados
struct dados {
int codigo;
char nome[100];
char telefone[20];
struct dados *p;
};
struct dados *prim;
//Parte Codigo dos dados
struct indcod {
int codigo;
struct dados *p;
struct indcod *e, *d;
};
struct indcod *raiz;
//parte dos nomes
struct indnom {
char nome[100];
struct dados *x;
};
struct indnom inom[10000];

void IncluirRegistro (char nome[], char telefone[]);


void Incluir (void);
//void MostrarRegistro (struct dados *x);
struct dados * PesquisarNome (char nome[]);
struct dados * PesquisarCodigo (int codigo);
void Pesquisar (void);
void Alterar (void);
void AlterarRegistro (char nome[], char telefone[]);
//void Excluir (void);
//void Listar (void);
//void ListarPorCodigo (void);
//void ListarAlfabetica (void);
//void OrdenarBolha (void);
//void OrdenarQuick (void);
//void PreencherAutomatico (void);

int cdg;

void main (void)


{

raiz =(struct indcod *)NULL;


prim =(struct dados *)NULL;
cdg = 0;
int op;
do
{
puts("Digite uma das ops:");
puts("1) Incluir");
puts("2) Pesquisar");
puts("3) Alterar");
puts("4) Excluir");
puts("5) Listar por Ordem de Inclusao (sem ordenao)");
puts("6) Listar por Ordem de Codigo");
puts("7) Listar por Ordem Alfabetica de Nome");
puts("8) Recriar Indice de Nomes pelo Metodo Bolha");
puts("9) Recriar Indice de Nomes pelo Metodo QuickSort");
puts("10) Preenchimento Automatico");
puts("0) Sair");
scanf_s("%d",&op);
switch (op)
{
case 1:Incluir();break;
case 2:Pesquisar();break;
case 3:Alterar();break;
}

}while(op);
}

void Incluir (void)


{
char nome[100], telefone[20];
puts("Digite o Nome:");
fflush(stdin);
gets_s(nome);
puts("Digite o Telefone:");
fflush(stdin);
gets_s(telefone);
IncluirRegistro(nome, telefone);
}
void IncluirRegistro (char nome[], char telefone[])
{
struct dados *novo, *aux;
int c;
for(c = 0; c < 10000; c++)
{
if(strcmp(inom[c].nome, nome)!=0)
{
novo = (struct dados*)malloc(sizeof (struct dados));
if(novo != (struct dados *)NULL)
{
strcpy(novo->nome, nome);
strcpy(novo->telefone, telefone);
novo->codigo = 1;
novo->p = (struct dados *)NULL;
if (prim == (struct dados *)NULL)
prim = novo;
else
{
for(aux = prim; aux->p!=(struct dados *)NULL; aux =
aux->p);
aux->p = novo;

}
}
}
}
}
void Pesquisar(void){
int num, cod;
char nome[100];
do{
puts("\nSub Menu - Pesquisar\n");
puts("1 - Pesquisa por Codigo");
puts("2 - Pesquisa por Nome");
puts("0 - Menu Principal\n");
scanf_s("\n%d", &num);
switch (num)
{
case 1:
puts("Digite o Codigo:");
scanf_s("%d", &cod);
PesquisarCodigo(cod);break;
case 2:
puts("Digite o Nome:");
fflush(stdin);
gets(nome);
PesquisarNome(nome);break;
}
}while (num != 0);
}
struct dados * PesquisarNome (char nome[])
{
int cont;
struct dados *nome_e;
nome_e = (struct dados *)NULL;
for(cont = 0; cont <= 10000 && strcmp(inom[cont].nome, nome)!=0; cont++);
nome_e = inom[cont].x;
return nome_e;
}
struct dados * PesquisarCodigo (int codigo)
{
struct dados *cod;
for(cod = prim; cod!= (struct dados*)NULL && cod->codigo!= codigo; cod = cod-
>p);
return cod;
}
void Alterar (void)
{
struct dados;
char nome[100];
char telefone[20];
puts("Procure o Registro pelo qui deseja alterar!\n\n");
Pesquisar();
puts("\nDigite um nome para alterar o resgistro: ");
fflush(stdin);
gets_s(nome);
puts("\nDigite um telefone para alterar o registro:");
fflush(stdin);
gets_s(telefone);
AlterarRegistro (nome, telefone);
}
void AlterarRegistro (char nome[], char telefone[])
{

Você também pode gostar