Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brunonoia

Fazendo uma agenda eletronica

Recommended Posts

Comecei a fazer esta agenda o programa compila e grava os cadastros normalmente mas quando eu vou na opção listar os cadastros o nome desaparece se alguem puder me dizer como resolver grato.

 

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

typedef struct dados
{

char endereco[80];
char cidade[80];
char estado[2];
char nome[80];
char profissao[30];
char nascimento[15];
char bairro[30];
}T_dados;
T_dados d[300];

// prototipos
void inclusao(void);
void Listar(void);
void quick_struct(int);
void qs_struct(int,int);
void ordenar(void);
void pesquisar(void);
char Validaresp();

static int qtd = 0;


FILE *fp;


// =================================================================
// ======Incluir dados no arquivo ==================================

void inclusao(void){
int total = 0, retorno;
char op = 's';

if ((fp = fopen("agenda.db", "a")) == NULL)
{
printf ("O arquivo da lista não pode ser aberto!\n");
printf ("Insira dados!\n");
getch();
exit(1);
}
while ((total < 300) && (op == 's'))
{

printf ("Digite o nome: ");
gets(d[total].nome);
printf ("Digite o endereco: ");
gets(d[total].endereco);
printf ("Digite a cidade: ");
gets(d[total].cidade);
printf ("Digite a UF do estado: ");
gets(d[total].estado);
printf ("Digite a profissao: ");
gets(d[total].profissao);
printf("Digite o bairro: ");
gets(d[total].bairro);
printf("Digite a data de nascimento:");
gets(d[total].nascimento);

retorno = fwrite (&d[total], sizeof(struct dados) ,1,fp);

if (retorno == 1) {
printf(" \nGravacao ok ! ");
}
total++;
op = Validaresp();
qtd++;
}
fclose (fp);
}

//======================================================================
// ======Valida resposta ===============================================

char Validaresp() {
char op;
do {
printf(" \nDeseja inserir novos dados? [s ou N] ? " );
op = getch();
printf("\n" );
} while (op != 's' && op != 'n');
return op;
}

//======================================================================
// ======Organizar em ordem alfabetica =================================

void ordenar(void){

T_dados vet;
int aux,i,j,k,retorno;
char *str, *str2, *straux;

if ((fp = fopen("agenda.db", "w+")) == NULL){
printf ("ERRO!\n");
getch();
exit(1);
}

aux = qtd; // aux recebe a quantidade de contatos inscritos
for ( i = aux ; i <0 ; i-- ){
str = d.nome;
for ( j = i-1 ; j <=0 ; j-- ){
str2 = d[j].nome;
if ( strcmp ( str, str2 )> 0 ){
vet = d;
d = d[j];
d[j] = vet;
}
}
}
for ( k = 0 ; k < aux ; k++ ){
retorno = fwrite (&d[k], sizeof(struct dados) ,1,fp);
if (retorno != 1) {
printf(" \nERRO ! ");
}
}
fclose(fp);
printf("\nLista Ordenada! \n");
getch();
}

//======================================================================
// ======Pesquisar pelo nome ===================================

void pesquisar(void){
int indice = 0, retorno = 1, cont = 0;
char nome[80],op;

if ((fp = fopen("agenda.db", "r")) == NULL){
printf ("O arquivo da lista não pode ser aberto!\n");
printf ("Insira dados!\n");
getch();
exit(1);
}
printf ("Digite o nome: ");
gets(nome);

retorno = fread(&d[indice], sizeof(struct dados), 1, fp);

while (retorno == 1){
if (strcmp(nome, d[indice].nome) == 0 ){
printf ("\nNome ..: %s\nEndereco ..: %s\nCidade ..: %s\nEstado..:%s\nProfissao..:%s\nNascimento..:%s\nBairro..:%s", d[indice].nome, d[indice].endereco, d[indice].cidade,d[indice].estado,d[indice].profissao,d[indice].nascimento,d[indice].bairro);
cont++;
}
indice++;
retorno = fread(&d[indice], sizeof(struct dados), 1, fp);
}
if(cont == 0){
printf("Nao ha contatos com este nome!\n");
}
getch();
fclose(fp);
}

//======================================================================
// ======Pesquisar Nascimento ============================================

void pesquisarnascimento(void){
int indice = 0, retorno = 1, cont = 0;
char nascimento[15],op;

if ((fp = fopen("agenda.db", "r")) == NULL){
printf ("O arquivo da lista não pode ser aberto!\n");
printf ("Insira dados!\n");
getch();
exit(1);
}
printf ("Digite o nascimento: ");
gets(nascimento);

retorno = fread(&d[indice], sizeof(struct dados), 1, fp);

while (retorno == 1){
if (strcmp(nascimento, d[indice].nascimento)==0){
printf ("%s\nNome ..: %s\nEndereco ..: %s\nCidade ..: %s\nEstado..:%s\nProfissao..:%s\nNascimento..:%s\nBairro..:", d[indice].nome, d[indice].endereco, d[indice].cidade,d[indice].estado,d[indice].profissao,d[indice].nascimento,d[indice].bairro);
cont++;
}
indice ++;
retorno = fread(&d[indice], sizeof(struct dados), 1, fp);
}
if(cont == 0){
printf("Nao ha contatos com este Nascimento!\n");
}
getch();
fclose(fp);
}



//======================================================================
// ======Lista os contatos cadastrados =================================

void Listar(void){
int i = 0, retorno;

if ((fp = fopen("agenda.db", "r")) == NULL)
{
printf ("O arquivo da lista não pode ser aberto!\n");
printf ("Insira dados!\n");
getch();
exit(1);
}

retorno = fread(&d, sizeof(struct dados), 1, fp);
// fread retorna a quantidade de itens ...

while ( retorno == 1) {
printf("\n Nome ..: %s", d.nome);
printf("\n Endereco ..: %s", d.endereco);
printf("\n Cidade ..: %s", d.cidade);
printf("\n Estado ..: %s", d.estado);
printf("\n Profissao ..: %s", d.profissao);
printf("\n Nadcimento ..: %s", d.nascimento);
printf("\n Bairro..:%s", d.bairro);
i++;
retorno = fread(&d, sizeof(struct dados), 1, fp);
}
printf(" \n\n %d Contatos salvos!\n", i);
getch();
fclose(fp);
}

//======================================================================
// ======Menu ==========================================================

void menu(void){
char op;
int teste;

if ((fp = fopen("agenda.db", "r")) != NULL){
qtd = 0;
do {
teste = fread(&d, sizeof(struct dados), 1, fp);
qtd++;
}while ( teste == 1 );
qtd--;
}

do{
system("cls");
printf("\n(1)Incluir\n(2)Listar\n(3)Ordenar por nome\n(4)Pesquisar por nome\n");
printf("(5)Pesquisar por nascimento\n(6)Qualquer outra tecla para sair\n\n");
op = getch();
switch(op){
case '1':
inclusao();
break;
case '2':
Listar();
break;
case '3':
ordenar();
break;
case '4':
pesquisar();
break;
case '5':
pesquisarnascimento();
break;

default:
exit(1);
}
}while (op < '6');
}

int main (){
int var;


printf("\n\n\n\n\n\n\n\n\n\n");
printf(" .::AGENDA ELETRONICA:. \n\n");
printf(" Veja todas as funcoes disponiveis no menu \n");
printf(" use os numeros para selecionar a opcao desejada \n");
printf(" pressione qualquer tecla para continuar ou ESC para sair do programa agora.");
var=getch();
if(var == 27){ exit(1);}
menu();
system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.