Agenda Telefonica

Publicado por Hunz 04/09/2004

[ Hits: 22.279 ]

Homepage: http://tnegri.com/

Download agenda.c




Um estudo que eu fiz, baseado nesse artigo do jlluca:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=247

Abraços,
fiquem com Deus.

  



Esconder código-fonte

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

void limpa() {
  printf("\e[H\e[2J");
}

void registra(char nome[15], int telefone) {
  FILE *fd;
  fd=fopen("nomesagenda","a");
  fprintf(fd, "%s\n", nome);
  fprintf(fd, "%d\n", telefone);
  printf("\n\tDados registrados!\n");
  fclose(fd);
  getchar();
}

void listalimp() {
  FILE *fd;
  fd=fopen("nomesagenda","w+");
  printf("\n\tLista limpa!\n");
  fclose(fd);
  getchar();
}

void pesquisa(char pesq[])
{
   FILE *fd;
   char curs[15];
   int telefone, existe=0;
   fd=fopen("nomesagenda","r");
   while ((fscanf(fd,"%s", curs))!=EOF)
      if (!strcmp(curs, pesq)) {
         printf("\n\tNome: %s", curs);
         fscanf(fd,"\n%d", &telefone);
         printf("\n\tTelefone: %d\n", telefone);
         fscanf(fd,"\n");
         existe=1;
      }
      else fscanf(fd,"\n\n");
   if (existe==0) printf("Cadastro inexistente!\n");
   getchar();
   fclose(fd);
}

void listar() {
  FILE *fd;
  char curs[15];
  int telefone,i=0;
  fd=fopen("nomesagenda","r");
  while ((fscanf(fd,"%s", curs))!=EOF) {
    printf("\n\tNome: %s",curs);
    fscanf(fd,"\n%d", &telefone);
    printf("\n\tTelefone: %d\n", telefone);
    fscanf(fd,"\n");
    i++;
  }
  printf("\n\tTotal de registros: %d",i);
}
  
int main(void) {
  FILE *fd;
  int menu,tamnome,telefone;
  char nome[15];
  while (menu!=0) {
    limpa();
    printf("\n\t Agenda de telefones. -Por hunz.\n");
    printf("\n\t(1)\tRegistrar nome.");
    printf("\n\t(2)\tProcurar nome.");
    printf("\n\t(3)\tListar nomes.");
    printf("\n\t(4)\tLimpar lista.");
    printf("\n\t(5)\tSobre.");
    printf("\n\n\t(0)\tSair.");
    printf("\n\n[Menu-HZ]$ ");
    scanf("%d",&menu);
    getchar();
    switch (menu) {
      case 1: {
        printf("\n\tEntre com o Nome: ");
        scanf("%s",&nome);
        getchar();
        tamnome=strlen(nome);
        if (tamnome>15) {
     printf("O tamanho do nome passa de 15 letras.\n");
     getchar(); getchar();
   }
   else {
     printf("\n\tEntre com o Telefone: ");
     scanf("%d",&telefone);
     getchar();
     registra(nome, telefone);
   }
      } break;
      case 2: {
        printf("\n\tEntre com o Nome: ");
   scanf("%s",&nome);
   getchar();
   tamnome=strlen(nome);
   if (tamnome>15) {
     printf("O tamanho do nome passa de 15 letras.\n");
     getchar(); getchar();
   }
   else {
     pesquisa(nome);
   }
      } break;
      case 3: {
   listar();
   getchar();
      } break;
      case 4: {
        listalimp();
   getchar();
      } break;
      case 5: {
        printf("\n\tAgenda criada por hunz.\n\twww.vivaolinux.com.br/~hunz\n\tEMAIL/MSN: tn_negri@hotmail.com\n");
   getchar();
      } break;
      case 0: break;
      default: {
        printf("\n\tOpcao invalida..\n");
   getchar(); getchar();
      };
    }
  }
  return(0);
}

Scripts recomendados

A - Comando strchr

Matriz Bidimensional

Função simples recursiva para fibonacci

Fazendo o somatório de 1 até N

Url visitor


  

Comentários
[1] Comentário enviado por y2h4ck em 07/09/2004 - 10:27h

Ficou bacaninha, o código e super simples sem muitas implementações complicadas, e funciona bem legal,

[]s :)

[2] Comentário enviado por AboutDiego em 22/12/2006 - 20:24h

Somente a título de organização, talvez seria mais interessante colocar o menu em uma função separada.
Exemplo (de como eu faria):

int fMenu(void){
int menu;

printf("\n\t Agenda de telefones. -Por hunz.\n");
printf("\n\t(1)\tRegistrar nome.");
printf("\n\t(2)\tProcurar nome.");
printf("\n\t(3)\tListar nomes.");
printf("\n\t(4)\tLimpar lista.");
printf("\n\t(5)\tSobre.");
printf("\n\n\t(0)\tSair.");
printf("\n\n[Menu-HZ]$ ");
scanf("%d",&menu);
return menu;
} //fim da função opção

Este seria um código da função e na função main:

int main(void){

int menu=10;

while(menu!=0){
menu=fMenu();
getchar();
switch(menu){

...


}

return 0;
}//fim de main



Fora isso um ótimo script ^^ e pra ajudar ainda mais, acabei de ver a data do scprit.. heaueahuaehuae

falou galera.

[3] Comentário enviado por snowbg em 03/03/2011 - 14:19h

Olá pessoal!!! Também fiz uma Agenda utilizando C++ (quase C) para um exercício na faculdade.

Dêem uma olhada aí:

_______________________________________________________________________________________
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
/*
*******************************************************************************
* AGENDA COM 10 POSICOES *
* AUTOR: EMERSON BRAGA LARA *
* ESTUDANTE DE ENGENHARIA DA COMPUTACAO - UNA *
* BELO HORIZONTE - MINAS GERAIS - BRASIL *
*******************************************************************************
*/


void limpar_agenda (char nomes[10][50], char tels [10][14]);//FUNCAO PARA LIMPAR AS POSICOES DA AGENDA
void pesquisar (char nomes[10][50], char tels[10][14]); //FUNCAO PARA PESQUISAR AS POSICOES DA AGENDA
void inserir (char nomes[10][50], char tels [10][14]); //FUNCAO PARA INSERIR DADOS NUMA POSICAO NA AGENDA
void alterar (char nomes[10][50], char tels [10][14]); //FUNCAO PARA ALTERAR DADOS EM UMA POSICAO DA AGENDA
void excluir (char nomes[10][50], char tels[10][14]); //FUNCAO PARA EXCLUIR DADOS DE UMA POSICAO NA AGENDA
int menu(void);

int main()
{
int opcao;
char nomes[10][50], tels[10][14];
limpar_agenda (nomes, tels);
do { //LOOP PARA MENU
opcao = menu();
switch (opcao) { //MENU PRINCIPAL
case 1: pesquisar (nomes, tels);
break;
case 2: inserir (nomes, tels);
break;
case 3: alterar (nomes, tels);
break;
case 4: excluir (nomes, tels);
break;
case 9: limpar_agenda (nomes, tels);
break;
case 0: //sair
break;
default: cout<< "\a\n OPCAO INVALIDA! \n"; //SE O USUÁRIO INSERIR UMA OPÇÃO DIFERENTE DA PREVISTA ELE IMPRIME ESTA MENSAGEM
system("pause");
break;
}
}while (opcao !=0);
system("pause");
return 0;
}

void limpar_agenda (char nomes[10][50], char tels[10][14]) //ESTA FUNCAO GRAVA UM VALOR NULO NAS POSICOES DAS MATRIZES
{
for (int posicao=0; posicao<10; posicao++)
{
nomes[posicao][0]= '{COMENTARIO}'; //nome que estao na xº posicao recebe vazio no seu primeiro bit limpando o restante
tels[posicao][0]= '{COMENTARIO}'; //tels que estao na xº posicao recebe vazio no seu primeiro bit limpando o restante
}
cout<<"Agenda zerada! Insira novos dados.\n";
system("pause");
}

int menu(void) //MOSTRA NA TELA AS OPCOES PARA O USUARIO
{
int op;
system("cls"); //limpa tela
cout<<"Menu de opcoes \n";
cout<<"1 - Pesquisar opcoes \n";
cout<<"2 - Inserir \n";
cout<<"3 - alterar \n";
cout<<"4 - Excluir \n";
cout<<"9 - Limpar Agenda \n";
cout<<"0 - Sair \n";
cout<<"\n\t Digite uma opcao: \n";
cin>>op;
return op;
}

void pesquisar (char nomes [10][50], char tels[10][14]) //FUNCAO PARA PESQUISA DE DADOS GRAVADOS
{
int posicao;
system("cls");
cout<<"Pesquisar posição\n";
do{
cout<<"Digite a posicao (1 a 10):";
cin>> posicao;
} while (posicao<1||posicao>10);//caso o usuario insira um valor fora do intervalo de 1 a 10 ser-lhe-á requisitado digitar novamente
posicao--;
if (nomes[posicao][0]=='{COMENTARIO}')// condicao para quando o usuario escolher uma posicao vazia
{
cout<<"\a\n Posicao vazia!\n";
system ("pause");
}

else
{
cout<<"Nome: " <<nomes[posicao]<<endl;
cout<<"Telefone: "<<tels[posicao]<<endl;
}
system("pause");
}
void inserir (char nomes [10][50], char tels[10][14])//FUNCAO PARA INSERIR DADOS
{
int posicao = 0;
while (nomes[posicao][0]!='{COMENTARIO}'&& posicao<9)
{
posicao++;
}
if (posicao<10&& nomes[posicao][0]=='{COMENTARIO}')
{
cout<<"Nome:\n";
scanf("%s",nomes[posicao]);

cout<<"Telefone:\n";
scanf("%s",tels[posicao]);
}
else
{
cout<<"\a\nAgenda cheia!\n"; //caso o número de posicoes preenchidas ultrapasse 10 esta mensagem é exibida.
system("pause");
}

}
void alterar (char nomes[10][50], char tels[10][14])//FUNCAO PARA ALTERAR DADOS GRAVADOS
{
int posicao;
char confirma;
do
{
cout<<"Informe a posicao (1 a 10) para alterar:\n";
cin>>posicao;
}
while (posicao<1||posicao>10);//caso o usuario insira um valor fora do intervalo de 1 a 10 ser-lhe-á requisitado digitar novamente
posicao--;
if (nomes[posicao][0]='{COMENTARIO}')// condicao para quando o usuario escolher uma posicao vazia
{
cout<<"\a\n Posicao vazia.\n";
}
else
{
cout<<"Nome:"<<nomes[posicao]<<endl;
cout<<"Deseja altera o nome?(s):";
cin>>confirma;
if (confirma =='s')
{
cout<<"Nome: ";
cin>>nomes[posicao];
cout<<"Suuuuuucessoooooooo!!!\n\n";
}
cout<<"Telefone: "<<tels[posicao];
cout<<"Deseja alterar o telefone?(s):";
cin>>confirma;
if (confirma =='s')

{
cout<<"Telefone(99)9999-9999:\n";
cin>>tels[posicao];
cout<<"Telefone alterado com sucesso!\a\a\n";
}
}
}

void excluir (char nomes[10][50], char tels[10][14])//FUNCAO PARA EXCLUIR DADOS
{
int posicao;
char confirma;
do
{
cout<<"Deseja excluir qual posicao (0 a 10)?\n";
cin>>posicao;
} while(posicao<1||posicao>10);//caso o usuario insira um valor fora do intervalo de 1 a 10 ser-lhe-á requisitado digitar novamente
posicao--;
if (nomes[posicao][0]='{COMENTARIO}')// condicao para quando o usuario escolher uma posicao vazia
{
cout<<"\a\n Posicao já está vazia.\n";
system("pause");
}
else
{
cout<<"Tem certeza que deseja apagar"<<nomes[posicao]<<"?\n"<<endl;//CONFIRMACAO PARA EXCLUSAO
cin>>confirma;
if (confirma =='s'||confirma=='S')//"S" maísculo e minúsculo serão aceitos.
{
nomes[posicao][0]='{COMENTARIO}';
cout<<"Posicao excluida. Se nao podia, fudeu!";
}
}
}


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts