I make this contact phonebook, i want to learn how to write in a txt and read,
my program do this...
1 - register a contact
2 - delete a contact
3 - search for a contact
4 - list contacts
5 - i want to write in a txt
6 - read txt
5 and 6 i don´t have a clue how to do...
Code:
// Projeto_Veiculos.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "tool.h"
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <iostream>
/* ---------------------------------------------------------------- */
struct _no // define a estrutura do processo
{
struct _no *anterior;
char nome[40];
char rua[100];
char bairro[50];
char cidade[50];
char estado[10];
char cep[15];
char telefone[15];
struct _no *proximo;
};
/* ---------------------------------------------------------------- */
typedef struct _no No;
No *Raiz=NULL; // define um ponteiro para o numero raiz
No *Ultimo=NULL; // define um ponteiro para o ultimo numero
/* ---------------------------------------------------------------- */
void Insere(char *nome, char *rua, char *bairro, char *cidade, char *estado, char *cep, char *telefone)
{
No *Atual;
No *NoAnterior;
No *NoPosterior;
No *NovoNo;
// Verifica se o nó na raiz é nulo, que é o caso quando a lista está vazia.
// Se for, cria nó na raiz com os dados fornecidos e faz o último nó coincidir com ele.
if (Raiz==NULL)
{
Raiz = new No;
strcpy (Raiz->nome,nome);
strcpy (Raiz->rua,rua);
strcpy (Raiz->bairro,bairro);
strcpy (Raiz->cidade,cidade);
strcpy (Raiz->estado,estado);
strcpy (Raiz->cep,cep);
strcpy (Raiz->telefone,telefone);
Raiz->proximo = NULL;
Raiz->anterior = NULL;
Ultimo = Raiz;
}
else
{
// se já houver raiz percorre a lista duplamente encadeada, comecando da raiz.
// inicialmente, não há nó anterior.
NoAnterior = NULL;
Atual = Raiz;
while (Atual!=NULL)
{
if (strcmp(Atual->nome,nome)>=0) break; // verifica se o nó atual é igual, se for superior pára
else
{
NoAnterior = Atual;
Atual = Atual->proximo;
}
}
if (Atual!=NULL) // só faz a comparação abaixo se existe o nó Atual
if (strcmp(Atual->nome,nome)==0)
{
printf ("\n\n Nome ja existente!\n");
printf ("\n\n\n\n ");
system("pause");
system("cls");
return;
}
NoPosterior = Atual; // insere um novo nó entre o nó atual e o nó anterior
NovoNo = new No; // aloca memória para o novo nó
strcpy (NovoNo->nome,nome); // coloca dados no nó a ser inserido
strcpy (NovoNo->rua,rua);
strcpy (NovoNo->bairro,bairro);
strcpy (NovoNo->cidade,cidade);
strcpy (NovoNo->estado,estado);
strcpy (NovoNo->cep,cep);
strcpy (NovoNo->telefone,telefone);
// atualiza ponteiros do novo nó
NovoNo->proximo = NoPosterior;
NovoNo->anterior = NoAnterior;
// atualiza ponteiros dos nós vizinhos
if (NoAnterior != NULL)
NoAnterior->proximo = NovoNo;
if (NoPosterior != NULL)
NoPosterior->anterior = NovoNo;
// verifica se o novo nó foi inserido no início ou no fim da lista se foi, atualiza referências
if (NovoNo->anterior == NULL)
Raiz = NovoNo;
if (NovoNo->proximo == NULL)
Ultimo = NovoNo;
}
}
/* ---------------------------------------------------------------- */
void Lista()
{
int ciclos;
No *Atual;
Atual = Raiz;
ciclos=1;
while(Atual!=NULL) // percorre a lista duplamente encadeada desde a raiz
{
system("cls");
printf("\n\n Reg. N: %d",ciclos);
printf("\n Nome: %s\n Rua: %s\n Bairro: %s\n Cidade: %s\n Estado: %s\n CEP: %s\n Telefone: %s\n",Atual->nome,Atual->rua,Atual->bairro,Atual->cidade,Atual->estado,Atual->cep,Atual->telefone);
Atual=Atual->proximo;
ciclos++;
}
printf ("\n\n\n\n ");
system("pause");
system("cls");
}
/* ---------------------------------------------------------------- */
void Deleta(char *nome)
{
No *Atual;
No *Anterior=NULL;
No *Posterior;
Atual = Raiz;
// primeiro, percorre a lista duplamente encadeada desde a raiz
while (Atual!=NULL)
{
// verifica se já encontrei ou já passei do nome procurado
if (strcmp(Atual->nome,nome)>=0) break;
else
{ // se ainda não passou
Anterior = Atual;
Atual = Atual->proximo;
}
}
if (Atual!=NULL)
Posterior = Atual->proximo;
// verifica se o nó atual é mesmo o nó procurado
if (Atual != NULL)
if (strcmp(Atual->nome,nome)==0) { // se for, deleta
// faz com que o nó subsequente ao atual seja o subsequente ao nó anterior para manter a integridade da lista
if (Atual != Raiz)
Anterior->proximo = Atual->proximo;
else // se o no atual é a raiz, atualizo a referência para a raiz
Raiz = Atual->proximo;
// faz com que a referência para o nó anterior do próximo nó seja
// o nó anterior ao que será deletado, para manter a integridade
if (Atual != Ultimo)
Posterior->anterior = Anterior;
else // se o nó atual é o último, atualiza a referência para o último
Ultimo = Anterior;
// agora, o nó atual morreeeee!!!!
free(Atual);
printf ("\n\n Nome deletado! \n\n");
printf ("\n\n ");
system("pause");
system("cls");
return;
}
printf("\n\n Nao achei!\n");
printf ("\n\n\n\n ");
system("pause");
system("cls");
}
/* ---------------------------------------------------------------- */
void Pesquiza(char *nome)
{
No *Atual;
Atual = Raiz;
while (Atual!=NULL)
{
if (strcmp(Atual->nome,nome)>=0) break;
else
Atual = Atual->proximo;
}
if (Atual!=NULL)
if (strcmp(Atual->nome,nome)==0)
{
system("cls");
printf("\n Nome: %s\n Rua: %s\n Bairro: %s\n Cidade: %s\n Estado: %s\n CEP: %s\n Telefone: %s\n",Atual->nome,Atual->rua,Atual->bairro,Atual->cidade,Atual->estado,Atual->cep,Atual->telefone);
printf("\n\n\n\n ");
system("pause");
system("cls");
return;
}
printf("\n\n Nome nao encontrado!");
printf("\n\n ");
system("pause");
system("cls");
}
/* ---------------------------------------------------------------- */
void main ()
{
int opcao;
char nome[40];
char rua[100];
char bairro[50];
char cidade[50];
char estado[10];
char cep[15];
char telefone[15];
do
{
printf("\n\n *************************************** \n * AGENDA DE TELEFONE * \n *************************************** \n * (1) -> Inserir Novo Cadastro: * \n * (2) -> Excluir um Cadastro: * \n * (3) -> Pesquizar um Cadastro: * \n * (4) -> Listar Todos os Cadastros: * \n * (5) -> Gravar no Arquivo: * \n * (6) -> Ler do Arquivo * \n * (0) -> Para Sair * \n *************************************** \n\n --> ");
scanf("%d",&opcao);
if (opcao == 1 || opcao == 2 || opcao == 3)
{
fflush(stdin);
printf("\n\n Digite o Nome: " );
gets(nome);
}
switch (opcao)
{
case 1:
{
fflush(stdin);
printf(" Digite a Rua e o N da casa: " );
gets(rua);
fflush(stdin);
printf(" Digite o Bairro: " );
gets(bairro);
fflush(stdin);
printf(" Digite a Cidade: " );
gets(cidade);
fflush(stdin);
printf(" Digite o Estado: " );
gets(estado);
fflush(stdin);
printf(" Digite o CEP: " );
gets(cep);
fflush(stdin);
printf(" Digite o Telefone: " );
gets(telefone);
fflush(stdin);
system("cls");
Insere(nome,rua,bairro,cidade,estado,cep,telefone);
break;
}
case 2:
{
Deleta(nome);
break;
}
case 3:
{
Pesquiza(nome);
break;
}
case 4:
{
Lista();
break;
}
case 5:
{
break;
}
case 6:
{
break;
}
}
} while (opcao != 0);
}
/* ---------------------------------------------------------------- */