http://www.internal.cz/

SORU:Rastgele erişimli telefon rehberi uygulamasını c programlama dilinde yazınız.

 

#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;

void yenikayit(FILE *);
void guncelle(FILE *);
void sil(FILE *);
void dosyaolustur(FILE *);
void listele(FILE *);
int menu();
int ara(char [][20],char *);
int kelimelereayir(char *,char [][20]);
void kucukharf(char *);
char turkce_tolower(char);
void arama(FILE *fPtr);
void yazdirhtml(char *,Rehber [],int);
void 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; 
}
void 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"); 
}
void 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"); 
}
void 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");
 
}
void 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;

}
void 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); 
}
void 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;
}
void 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
void turkce(char *a,FILE *fPtr)
{
for(;*a!='\0';a++)
{
switch(*a)
{
case -121:
fprintf(fPtr,"&#231;");
break;
case -128:
fprintf(fPtr,"&#199;");
break;
case -89:
fprintf(fPtr,"&#287;");
break;
case -90:
fprintf(fPtr,"&#286;");
break;
case -97:
fprintf(fPtr,"&#351;");
break;
case -98:
fprintf(fPtr,"&#350;");
break;
case -127:
fprintf(fPtr,"&#252;");
break;
case -102:
fprintf(fPtr,"&#220;");
break;
case -108:
fprintf(fPtr,"&#246;");
break;
case -103:
fprintf(fPtr,"&#214;");
break;
case -115:
fprintf(fPtr,"&#305;");
break;
case -104:
fprintf(fPtr,"&#304;");
break;
default:
fprintf(fPtr,"%c",*a);
break;
}
}
fprintf(fPtr,"<br/>");
}
void 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;
}

 

 Bu örnek bir kullanıcımız tarafından gönderilmiştir. 

 

http://www.douglas-textiles.ch/
  • Henüz hiç yorum yok