Agenda eletrônica feita em C
Publicado por Marcus Vinícius 14/09/2006
[ Hits: 16.880 ]
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));
}
Sudokou em C feito com matrizes e listas
Mudando Cor da Letra e Fundo de Tela
Ordenar um lista estática sequencial básica (bubblesort)
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
VOL já não é mais como antes? (6)
É normal não gostar de KDE? (12)
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









