Agenda eletrônica feita em C
Publicado por Marcus Vinícius 14/09/2006
[ Hits: 16.628 ]
Agenda eletrônica feita em C que permite o cadastro de clientes com os seguintes atributos: nome, telefone e e-mail. O programa também permite a listagem de clientes tanto em ordem alfabética quanto por ordem de cadastro. Também é possível a pesquisa de clientes por nome ou por número de cadastro. No final do programa, todos os dados de cadastro de clietes são salvos em arquivo. Obs.: Para compiladores gcc.
/*Autor:Marcus Vinícius Souza Costa Descrição:Agenda eletrônica feita em C que permite o cadastro de Clientes com os seguintes atributos:Nome,telefone e e-mail. O programa também permite a listagem de clientes tanto em ordem alfabética quanto por ordem de cadastro.Também é possível a pesquisa de clientes por nome ou por número de cadastro. No final do programa é todos os dados de cadastro de clietes são salvos no em disco. OBS:Para compiladores GCC*/ //Declaração das bibliotecas # include <stdio_ext.h> # include<stdlib.h> // Declaração de variaveis GLOBAIS int cont,n=0,o,resp=0,k=0; int pos[200]; char email[200][50],nome[200][50],aux[1][50],tel[200][50],vet[255]; void mostrarcliente(){ // Essa função mostra os clientes em ordem de inscrição int op,i,j; char ch; if (n!=0){ //Verfica se existe cadsatro printf("Você possui %d cliente(s) cadastrados até agora\n\n",n); printf("Você deseja visualizar todos?(1-para sim)|(outra tecla para não): "); scanf("%d",&op); system("clear"); if (op==1){ j=0; while(j<n){ retorno: for (i=0;i<n;i++){ if (j==pos[i]){ printf("Número de inscrição:%.4d\n",pos[i]+1); printf("Nome:%s",nome[i]); printf("Telefone:%s",tel[i]); printf("E-mail:%s\n\n",email[i]); j++; goto retorno; } } } } }else{ printf("Não há clientes cadastrados"); } printf("\n\n\t\t\tAperte ENTER para voltar ao menu principal"); __fpurge(stdin); ch=getchar(); main(); } void ordem(){ // Ordenação por Seleção (em ordem Alfabética) int j,i,indi,indj; char ch; if (n!=0){ for (i=n-k;i<n;i++){ for (j=0;j<n;j++){ //Ordena os nomes if (nome[i][0]<nome[j][0]){ //Colocando em ordem os nomes strcpy(aux[0],nome[i]); strcpy(nome[i],nome[j]); strcpy(nome[j],aux[0]); //Colocando em ordem o número de telefone strcpy(aux[0],tel[i]); strcpy(tel[i],tel[j]); strcpy(tel[j],aux[0]); //Colocando em ordem o e-mail strcpy(aux[0],email[i]); strcpy(email[i],email[j]); strcpy(email[j],aux[0]); //Colocando em ordem o número do candidato k=pos[i]; pos[i]=pos[j]; pos[j]=k; }else if((nome[i][0]==nome[j][0]) && (i!=j)){ //Verfica se a primeira letra do nome,se forem iguais indi=0; indj=0; while(nome[i][indi]==nome[j][indj]){ indi++; indj++; again: if (nome[i][indi]<nome[j][indj]/* && nome[i][indi]!='_' && nome[j][indj]!='_' */) { //Colocando em ordem os nomes strcpy(aux[0],nome[i]); strcpy(nome[i],nome[j]); strcpy(nome[j],aux[0]); //Colocando em ordem o número de telefone strcpy(aux[0],tel[i]); strcpy(tel[i],tel[j]); strcpy(tel[j],aux[0]); //Colocando em ordem o e-mail strcpy(aux[0],email[i]); strcpy(email[i],email[j]); strcpy(email[j],aux[0]); //Colocando em ordem o número do candidato k=pos[i]; pos[i]=pos[j]; pos[j]=k; }if (nome[i][indi]=='_' || nome[j][indj]=='_'){ if (nome[i][indi]=='_'){ indi++; }if (nome[j][indj]=='_'){ indj++; } goto again; } } } } } system("clear"); printf("Número de inscrição\t\tNome\n\n"); for (i=0;i<n;i++){ printf("\t%.4d\t\t\t%s\n",pos[i]+1,nome[i]); }//fim do for k=resp*(-1); }else{ printf("Não existem clientes cadastrados: \n\n"); } printf("\n\n\t\t\t\tPressione ENTER para voltar ao menu incial"); __fpurge(stdin); ch=getchar(); main(); } void cadastro (){ int j,i,conv; char ch; system("clear"); printf("\n Digite a quantidade de clientes que deseja cadastrar: "); scanf("%d",&resp); system("clear"); for (j=n;j<resp+n;j++){ repeticao: system("clear"); printf("----------------\n"); printf("| Cliente %.4d |\n",j+1); printf("----------------\n\n"); printf("\nEntre com o nome(sem caracteres especiais): "); __fpurge(stdin);// limpa o bufer usado pelo teclado (linux) fgets(nome[j],40,stdin); for (i=strlen(nome[j])-2;i>=0;i--){ if ((nome[j][i]<'0') || (nome[j][i]>'z')){ printf("Não é permitido o uso de caracteres especias e nem de espaço em branco,favor aperte "); printf("ENTER para inserir outro nome no char %c e i %d\n",nome[j][i],i); __fpurge(stdin); ch=getchar(); goto repeticao; } } printf("Entre com o telefone: "); fgets(tel[j],20,stdin); printf("Entre com o email: "); __fpurge(stdin); fgets(email[j],45,stdin); pos[j]=j; } printf("\n\n"); n=n+resp; k=resp; for (i=n-k;i<n;i++){ for (j=strlen(nome[i])-2;j>=0;j--) nome[i][j]=toupper(nome[i][j]); } main(); } void clientes(){ // Pesquisa Sequêncial int j,op,num,cont=0,ch; char cliente [255]; if (n!=0){ volta: system("clear"); printf("Escolha uma das opções:\n"); printf("1-Pesquisa por nome\n"); printf("2-Pesquisa por número de cadastro\n"); printf("0-Voltar ao Menu principal\n"); printf("\tEscolha aqui:"); scanf("%d",&op); if ((op<0) || (op>2)){ printf("Operação inválida,aperte ENTER para continuar o programa\n"); __fpurge(stdin); ch=getchar(); goto volta; } if (op==1){ printf("\nDigite o nome para a pesquisa: "); __fpurge(stdin); //limpa o buffer do teclado fgets(cliente,40,stdin); for (j=strlen(cliente)-2;j>=0;j--) cliente[j]=toupper(cliente[j]); system("clear"); for (j=0;j<n;j++){ if (0==strcmp(cliente,nome[j])) { //Verifica se há o nome no cadastro if (cont==0) printf("*********************************\n"); printf("Número de cadastro:%.4d\n\n",pos[j]+1); printf("Nome:%s\n",nome[j]); printf("Telefone:%s\n",tel[j]); printf("E-mail:%s\n",email[j]); cont++; printf("*********************************\n"); if (j==n-1){ printf("\n\n\tForam(foi) encontrado(s) %d cliente(s)\n",cont); } }else if((j==n-1) && (cont==0)){ printf("Cliente inexistente.Favor aperte ENTER para continuação do programa\n"); } } }else if(op==2){ printf("Digite o número para pesquisa:"); scanf("%d",&num); if (num>n || num<=0){ printf("Cliente inexistente.Favor aperte ENTER para continuação do programa\n"); __fpurge(stdin); ch=getchar(); goto volta; } system("clear"); for (j=0;j<n;j++){ if (pos[j]+1==num){ printf("Número de cadastro:%.4d\n\n",pos[j]+1); printf("Nome:%s\n",nome[j]); printf("Telefone:%s\n",tel[j]); printf("E-mail:%s\n",email[j]); break; } }//fim do for }else{ main(); } }else{ printf("\n\nNão há clientes cadastrados,aperte ENTER para retornar ao Menu Principal\n"); } printf("\n\n\t\tAperte ENTER para retornar ao Menu Principal\n"); __fpurge(stdin); ch=getchar(); main(); } //Fim da função clientes void gravaremdisco (){ // Função de Salvar o porgrama em DISCO e sair int i; FILE *arquivo; arquivo = fopen ("arquivo.txt", "w"); for (i = 0; i <n; i++){ fprintf (arquivo, "%s %s %s\n\n", nome[i], tel[i], email[i]); } fclose (arquivo); printf("\n Arquivo Gravado com SUCESSO"); printf("\n\n Obrigado por utilizar o programa! :-)\n\n\n\n "); exit(0); } //FIM DA FUNÇÃO CLIENTES int main(){ char ch; do{ system("clear"); printf("\n\n\n ===========================\n"); printf(" = AGENDA ELETRÔNICA ="); printf("\n ===========================\n"); printf ("\n MENU \n"); printf(" CONTROLE DE CLIENTES\n"); printf ("\n\t1-Cadastro"); printf ("\n\t2-Pesquisar clientes"); printf ("\n\t3-Listar em ordem alfabetica"); printf ("\n\t4-Mostrar número de clientes"); printf ("\n\t5-Sair & Gravar em Disco"); __fpurge(stdin); printf ("\n\n Escolha uma opcao: "); scanf ("%d", & cont); switch (cont){ case 1: cadastro(); break; case 2: clientes(); break; case 3: ordem(); break; case 4: mostrarcliente(); break; case 5: gravaremdisco(); break; default: printf("\n\tOpcao invalida\n"); printf("Pressione ENTER para Retornar ao MENU: "); __fpurge(stdin); ch=getchar (); main(); } //Fim do switch }while((cont<=1)||(cont>=6)); }
[C] Listas Duplamente Encadeadas
Funções com número variável de argumentos
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (1)
Mensagem quando tento fazer o apt update && apt upgrade no kal... (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta