Rastgele Erişimli Telefon Rehberi Uygulaması

Kurtbeyi

Misafir Editör
Katılım
5 Şubat 2022
Mesajlar
501
Tepkime puanı
44
Konum
istanbul
Cinsiyet
  1. Bay
Takım
Fenerbahçe
Rastgele Erişimli Telefon Rehberi Uygulaması

Kod:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#define SIZE 1000
struct rehber{
 char isim[70];
 char telno[15];
 
};
typedef struct rehber Rehber;
 
**** yenikayit(FILE *);
**** guncelle(FILE *);
**** sil(FILE *);
**** dosyaolustur(FILE *);
**** listele(FILE *);
int menu();
int ara(char [][20],char *);
int kelimelereayir(char *,char [][20]);
**** kucukharf(char *);
char turkce_tolower(char);
**** arama(FILE *fPtr);
**** yazdirhtml(char *,Rehber [],int);
**** turkce(char *,FILE *);
bool kontrolet(char *,FILE *);
 
int main()
{
 Rehber a;
 FILE *p;
 int secim;
 if((p=fopen("rehber.txt","r+"))==NULL)
 {
 printf("dosya okuma modunda acilamadi\nYazma modunda acilacak\n");
 p=fopen("rehber.txt","w+");
 dosyaolustur(p);
 }
 else
 printf("dosya okuma modunda acildi\n");
  
 while((secim=menu())!=6)
 {
 switch(secim)
 {
 case 1:yenikayit(p);break;
 case 2:guncelle(p);break;
 case 3:sil(p);break;
 case 4:listele(p);break;
 case 5:arama(p);break;
 default:puts("gecersiz secim");break;
 }
 }
  
 return 0; 
}
**** yenikayit(FILE *fPtr)
{
Rehber a;
int i=0;
do{
 fseek( fPtr, i * sizeof( Rehber ), SEEK_SET );
 fread(&a,sizeof(Rehber),1,fPtr);
 i++; 
}while(strcmp(a.isim,"")!=0&&i<SIZE);
 printf("isim giriniz\n");
 fflush(stdin);
 gets(a.isim);
 printf("Telefon numarasi giriniz(orn:262xxxxxxx)\n");
 fflush(stdin);
 gets(a.telno);
 if(kontrolet(a.telno,fPtr)==false)  {
 fseek( fPtr, (i-1) * sizeof( Rehber ),  SEEK_SET );
 fwrite(&a,sizeof(Rehber),1,fPtr);
 }
 else
 printf("bu telefon numarasi kayitlarda bulunmakta\n\n"); 
}
**** guncelle(FILE *fPtr)
{
 int i,secim,j=0;
 Rehber a;
 do{
 j++;
 if(j==3)
 break;
 if(j>1)
 printf("belirtilen kayit bulunamadi\n");
 printf("guncellenecek kayit numarasini giriniz\n") ;
 scanf("%d",&i);
 fseek( fPtr, (i-1) * sizeof( Rehber ), SEEK_SET );
 fread(&a,sizeof(Rehber),1,fPtr);
 }while(strcmp(a.isim,"")==0);
 if(j!=3)
 {
 printf("Kayit :%s  %s\n",a.isim,a.telno);
 printf("\n1-ismi guncelle\n2-Telefon numarasini guncelle\n?\n");
 scanf("%d",&secim);
 if(secim==1){
 printf("Yeni isimi giriniz\n");
 fflush(stdin);
 gets(a.isim);
 }
 else if(secim==2)
 {
 printf("Telefon numarasi giriniz(orn:262xxxxxxx)\n");
 fflush(stdin);
 gets(a.telno);
 }
 if(secim<3&&secim>0)
 {
 fseek( fPtr, (i-1) * sizeof( Rehber ), SEEK_SET );
 fwrite(&a,sizeof(Rehber),1,fPtr);
 printf("guncelleme yapildi\n\n");
 }
 else
 printf("gecersiz secim\n\n");
 }
 else
 printf("guncellenecek kayit bulunamadi\n\n"); 
}
**** sil(FILE *fPtr)
{
 int i,j=0;
 Rehber a;
 
do{
 j++;
 if(j==3)
 break;
 if(j>1)
 printf("belirtilen sirada kayit bulunmamakta\n");
 printf("silinecek kayit numarasini giriniz\n") ;
 scanf("%d",&i);
 fseek( fPtr, (i-1) * sizeof( Rehber ), SEEK_SET );
 fread(&a,sizeof(Rehber),1,fPtr);
 }while(strcmp(a.isim,"")==0);
 if(j!=3)
 {
 strcpy(a.isim,"");
 strcpy(a.telno,"");
 fseek( fPtr, (i-1) * sizeof( Rehber ), SEEK_SET );
 fwrite(&a,sizeof(Rehber),1,fPtr);
 printf("%d. siradaki kayit silindi\n",i);
 }
 else
 printf("silinecek kayit bulunamadi\n");
  
}
**** arama(FILE *fPtr)
{
 Rehber r[20],a;
 int dizi[20];
 char kelime[70];
 char b[5][20];
 int i,j=0,ksayisi;
puts("Aranilacak kelimeyi veya telefon numarasini giriniz\n");
fflush(stdin);
gets(kelime);
ksayisi=kelimelereayir(kelime,b);
for(i=0;i<SIZE;i++)
{
fseek( fPtr, i * sizeof( Rehber ), SEEK_SET );
 fread(&a,sizeof(Rehber),1,fPtr);
 if(strcmp(a.isim,"")!=0)
 if(ara(b,a.isim)>=ksayisi||ara(b,a.telno)>0)
 {
 dizi[j]=i+1;
 strcpy(r[j].isim,a.isim);
 strcpy(r[j].telno,a.telno);
 j++;
 if(j==20)
 break;
 } 
}
if(j>0)
{
printf("\n%d sonuc bulundu\n\n",j);
yazdirhtml(b[0],r,j);
for(int i=0;i<j;i++)
printf("%d. kayit:%s  %s\n",dizi[i],r[i].isim,r[i].telno);
printf("\nSonuclar ayni zamanda %s dosyasina yazildi\n\n",b[0]);
}
else
printf("\nHicbir sonuc bulunamadi\n");
}
int menu()
{
 int secim;
printf("1-kayit ekleme\n"
"2-kayit guncelleme\n"
"3-kayit silme\n"
"4-tum kayitlari listele\n"
"5-arama\n"
"6-cikis\n");
scanf("%d",&secim);
return secim;
 
}
**** dosyaolustur(FILE *fPtr)
{ 
 int i;
 Rehber a;
 strcpy(a.isim,"");
 strcpy(a.telno,"");
 for(i=0;i<SIZE;i++)
 fwrite(&a,sizeof(Rehber),1,fPtr); 
}
**** listele(FILE *fPtr)
{
 Rehber a;
 int kayitvarmi=0;
 for(int i=0;i<SIZE;i++)
 {
 fseek( fPtr, (i) * sizeof( Rehber ),  SEEK_SET );
 fread(&a,sizeof(Rehber),1,fPtr);
 if(strcmp(a.isim,"")!=0)
 {
 if(kayitvarmi==0)
 {
 printf("%-5s%-20s %-15s\n","SIRA","ISIM","TELEFON NO");
 printf("---- -------------------- --------------\n");
 kayitvarmi=1;
 }
 printf("%-5d%-20s %-15s\n",i+1,a.isim,a.telno);
 }
 }
 if(kayitvarmi==0)
 printf("Rehberde kayit bulunmamakta\n");
 printf("\n");
}
 
int kelimelereayir(char *s,char a[][20])
{
 short int bosluk=1,i=0,j=0;
 for(;*s!='\0'&&*s!='\n';s++)
 {
 if(!ispunct(*s)&&!isspace(*s))
 {
 if(bosluk==1)
 bosluk=0;
 if(bosluk==0)
 {
 a[i][j++]=*s;
 }
 }
 else
 {
 if(bosluk==0)
 {
 a[i][j]='\0';
 i++;
 j=0;
 }
 bosluk=1; 
 } 
 }
 if(bosluk==0)
 {
 a[i][j]='\0';
 a[++i][0]='\0';
 }
 else
 a[i][0]='\0';
 return i;
}
**** kucukharf(char *s)
{
 for(;*s!='\0'&&*s!='\n';s++)
 *s=turkce_tolower(*s);
 *s='\0';
}
char turkce_tolower(char a)
{
switch(a)
{
case 'I':
return 141-256;
break;
case 152-256:
return 'i';
break;
case 153-256:
return 148-256;
break;
case 154-256:
return 129-256;
break;
case 158-256:
return 159-256;
break;
case 128-256:
return 135-256;
break;
case 166-256:
return 167-256;
break;
default:
return tolower(a);
break;
}
}
int ara(char a[][20],char *aranilacak)
{
 char k[70];
 int i,j=0,t,counter=0;
 strcpy(k,aranilacak);
 kucukharf(k);
 for(i=0;a[i][0]!='\0';i++)
 kucukharf(a[i]);
 for(j=0;j<i;j++)
 if(strlen(k)>=strlen(a[j])){
 for(t=0;t<=strlen(k)-strlen(a[j]);t++)
 if(strncmp(a[j],&k[t],strlen(a[j]))==0)
 {
 counter++;
 break;
 } 
 }
 return counter; 
}
//Türkçe karakterlerin doğru şekilde html dosyasına yazılması için fonksiyon
**** turkce(char *a,FILE *fPtr)
{
for(;*a!='\0';a++)
{
switch(*a)
{
case -121:
fprintf(fPtr,"ç");
break;
case -128:
fprintf(fPtr,"Ç");
break;
case -89:
fprintf(fPtr,"ğ");
break;
case -90:
fprintf(fPtr,"Ğ");
break;
case -97:
fprintf(fPtr,"ş");
break;
case -98:
fprintf(fPtr,"Ş");
break;
case -127:
fprintf(fPtr,"ü");
break;
case -102:
fprintf(fPtr,"Ü");
break;
case -108:
fprintf(fPtr,"ö");
break;
case -103:
fprintf(fPtr,"Ö");
break;
case -115:
fprintf(fPtr,"ı");
break;
case -104:
fprintf(fPtr,"İ");
break;
default:
fprintf(fPtr,"%c",*a);
break;
}
}
fprintf(fPtr,"<br/>");
}
**** yazdirhtml(char *s,Rehber a[],int j)
{
 strcat(s,"-aramasonuc.html");
 FILE *p;
 int i,k;
 if((p=fopen(s,"w"))!=NULL)
 {
 fprintf(p,"<html>\n<head>\n</head>\n<body>"
 "<font color=blue size=4>");
 for(i=0;i<j;i++)
 {
 if(strcmp(a[i].isim,"")!=0)
 {
 turkce(a[i].isim,p);
 if(strlen(a[i].telno)==10)
 for(int k=0;k<10;k++)
 {
 if(k==3||k==6|k==8)
 fprintf(p,"&nbsp;");
 fprintf(p,"%c",a[i].telno[k]);
 }
 else if(strlen(a[i].telno)==11)
 { 
 for(int k=0;k<11;k++){
  
 if(k==4||k==7|k==9)
 fprintf(p,"&nbsp;");
 fprintf(p,"%c",a[i].telno[k]);
 }
 }
 else
 fprintf(p,"%s",a[i].telno); 
 }
 fprintf(p,"<br><br>"); 
 }
 fprintf(p,"</font></body></html>");
 }
 fclose(p);
}
bool kontrolet(char *s,FILE *fPtr)
{
 Rehber a;
 char tel1[15],tel2[15];
 strcpy(tel1,"0");
 strcat(tel1,s);
 for(int i=0;i<SIZE;i++)
 {
 fseek( fPtr, (i) * sizeof( Rehber ),  SEEK_SET );
  fread(&a,sizeof(Rehber),1,fPtr);
  strcpy(tel2,"0");
  strcat(tel2,a.telno);
 if(strcmp(s,a.telno)==0||strcmp(tel1,a.telno)==0||strcmp(tel2,s)==0)
 return true;
  
 }
 return false;
}
 
Benzer konular Forum Tarih
Kurtbeyi C ve C++ 1 124

Benzer konular

İçerik sağlayıcı "paylaşım" sitelerinden biri olan Harbimekan.Com Forum, Eğlence ve Güncel Paylaşım Platformu Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. Harbimekan.Com sitesindeki konular yada mesajlar hakkında yapılacak tüm hukuksal Şikayetler için info@harbimekan.com yada iletişim sayfası üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 3 Gün (72 Saat) içerisinde Forum yönetimi olarak tarafımızdan gereken işlemler yapılacaktır.

Bu Site, Bilim ve Sağlık Haber Ajansı Üyesidir.

Yığıntı - 8kez - kaynak mağazam - Uğur Ağdaş