Neler yeni
Türkiye'nin En Güncel Forum Sitesi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

Rastgele Erişimli Telefon Rehberi Uygulaması

ByOnur58

Kayıtlı Üye
MFC Üyesi
  • Üyelik Tarihi
    7 Ocak 2015
  • Mesajlar
    2,113
  • MFC Puanı
    10
  • MFC Seviyesi

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;
}
 
Üst Alt