PHP Kod:
#include <stdio.h>//kütüphane ekleniyor
#include <windows.h>//kütüphane ekleniyor
#include <locale.h>//kütüphane ekleniyor
struct OGRENCI {//ogrenci struct yapısı tanımlanıyor
char isim[15];//struct yapısı değişkenleri
int vize;//struct yapısı değişkenleri
int final;//struct yapısı değişkenleri
char bolum[15];//struct yapısı değişkenleri
}kisi[10],yedek[10],silinecek[10];//struct yapısına kişi ve yedek isimleri veriliyor
void kayit_ekle();//fonksiyonlar tanımlanıyor
void ara_bul();//fonksiyonlar tanımlanıyor
void listele();//fonksiyonlar tanımlanıyor
void bul_degistir();//fonksiyonlar tanımlanıyor
void kayit_sil();//fonksiyonlar tanımlanıyor
char menu();//fonksiyonlar tanımlanıyor
int sayac;//global bir sayac eklendi kişi syısını bulmak için
main()
{//ana fonksiyon
setlocale(LC_ALL,"Turkish"); // Türkçe Dil Desteği Ekleniyor
char secim;//secim adında bir değişen tanımlanıyor
do{
secim=menu();//menuden gelen tuş algılanıyor
switch(secim)//menuden gelen veriyi karşılaştırmaya sokuyor
{
case '1':kayit_ekle();break;//menuden gelen veri 1 ise kayıt ekleme fonksiyonu çağırılıyor
case '2':listele();break;//menuden gelen veri 2 ise listeleme fonksiyonu çağırılıyor
case '3':ara_bul();break;//menuden gelen veri 3 ise arabul fonksiyonu çağırılıyor
case '4':bul_degistir();break;//menuden gelen veri 4 ise buldegistir fonksiyonu çağırılıyor
case '5':kayit_sil();break;//menuden gelen veri 5 ise kayıt silfonksiyonu çağırılıyor
}
}while(secim<='5' && secim>='1');//karşılaştırma menuden gelen verilerin 1 ile 5 arasında ise
}//ana fonksiyon sonu
char menu(){//menu fonksiyonu
char tus;//tus adında char tipinde değişken tanımlanıyor
printf("1-kayit ekle\n2-listele\n3-arabul\n4-buldegistir\n5-sil\n");//manu seçenekleri ekrana yazdırılıyor
tus=getch();//kullanıcının girdiği tuş algılanıyor
return tus;//menu fonksiyonunun çağırıldığı yere kullanıcının girdiği tuş döndürülüyor
}//menu fonksiyonu sonu
void kayit_ekle(){//kayıt ekleme fonksiyonu
char tus2;//tus2 adında char tipinde değişken tanımlanıyor
FILE *dosya;//file tipinde bir dosya adında bir pointer tanımlanıyor
dosya=fopen("a.txt","w");//dosya önceki verilerin üstüne yazmak için açılıyor
do{
printf("%d.kişi adi giriniz",sayac+1);//kullanıcıdan isim isteniyor
scanf("%s",kisi[sayac].isim);//kullanıcını girdiği veri struct yapısına aktarılıyor
fflush(stdin);//veri değişkene aktarıldıktan sonra gerekli alan boşaltılıyor
printf("%d.kişinin bölüm giriniz",sayac+1);//kullanıcıdan bölüm isteniyor
scanf("%s",kisi[sayac].bolum);//kullanıcını girdiği veri struct yapısına aktarılıyor
fflush(stdin);//veri değişkene aktarıldıktan sonra gerekli alan boşaltılıyor
printf("%d.kişi vizesi giriniz",sayac+1);//kullanıcıdan vize isteniyor
scanf("%d",&kisi[sayac].vize);//kullanıcını girdiği veri struct yapısına aktarılıyor
fflush(stdin);//veri değişkene aktarıldıktan sonra gerekli alan boşaltılıyor
printf("%d.kişi finali giriniz",sayac+1);//kullanıcıdan final isteniyor
scanf("%d",&kisi[sayac].final);//kullanıcını girdiği veri struct yapısına aktarılıyor
fflush(stdin);//veri değişkene aktarıldıktan sonra gerekli alan boşaltılıyor
printf("yeni kayit için e basin ve menüye dönmek için herhangi bir tusa basin");//veriler girildikten sonra kullanıcıdan yeni veri girmek istermisiniz diye soruluyor
tus2=getch();//kullanıcının girdiği karakter tus2 değişkenine aktarılıyor
fprintf(dosya,"%s\t%s\t%d\t%d\n",kisi[sayac].isim,kisi[sayac].bolum,kisi[sayac].vize,kisi[sayac].final);//veriler dosyaya yazılıyor
sayac++;//whileiçin sayac 1 arttırılıyor
}while(tus2=='e' || tus2=='E');//eğer kullanıcı devam etmek isterse tekrar dön
fclose(dosya);//dosya kapatılıyor
}//kayıt ekleme fonksiyonusonu
void listele(){//listele fonksiyonu
FILE *dosya;//file tipinde bir dosya adında bir pointer tanımlanıyor
dosya=fopen("a.txt","r");//dosya önceki verileri okumak için açılıyor
int a=0,i;//değişkenler tanımlanıyor
while(!feof(dosya)){//dosya sonuna kadar dön
fscanf(dosya,"%s%s%d%d",yedek[a].isim,yedek[a].bolum,&yedek[a].vize,&yedek[a].final);//veriler dosyadan okunuyor
a++; //while için a arttırılıyor
}//dosya sonuna kadar dön sonu
for(i=0;i<(a-1);i++)//yedek yapısının sonuna kadar dönülüyor
printf("%d\t%s\t%s\t%d\t%d\n",i+1,yedek[i].isim,yedek[i].bolum,yedek[i].vize,yedek[i].final);//okunan veriler ekrana yazılıyor
fclose(dosya);//dosya kapatılıyor
}//listele fonksiyonu sonu
void ara_bul(){//arabul fonksiyonu
char kelime[150];//kelima adında char tipinde bir değişken tanımlanıyor
printf("Aranacak Kelimeyi girin");//kullanıcıdan aranacak veri isteniyor
scanf("%s",&kelime);//girilen veri kelime değişkenine aktarılıyor
FILE *dosya;//file tipinde bir dosya adında bir pointer tanımlanıyor
dosya=fopen("a.txt","r");//dosya önceki verileri okumak için açılıyor
int a=0,i;//değişkenler tanımlanıyor döngüler için
while(!feof(dosya)){//dosya sonuna kadar dön
fscanf(dosya,"%s%s%d%d",yedek[a].isim,yedek[a].bolum,&yedek[a].vize,&yedek[a].final);//dosyadan veriler okunup yedek yapısına aktarılıyor
a++; //while için a 1 arttırılıyor
}//dosya sonuna kadar dön sonu
for(i=0;i<(a-1);i++){//yedek yapısının sonuna kadar dönülüyor
if(strcmp(kelime,yedek[i].isim)==0)
{//eğer aranan kelime yedek yapısının ismine eşit ise aşağıdakileri yap
printf("%d\t%s\t%s\t%d\t%d\n",i+1,yedek[i].isim,yedek[i].bolum,yedek[i].vize,yedek[i].final);//veriler ekrana yadırılıyor
}//eğer aranan kelime yedek yapısının ismine eşit ise aşağıdakileri yap sonu
}//yedek yapısının sonuna kadar dönülüyorsonu
fclose(dosya);//dosya kapatılıyor
}//arabul fonksiyonu sonu
void bul_degistir(){//bul değişrtir fonksiyonu
char kelime[150];
printf("Degisecek Kisiyi girin");//degisecek kisi kulanıcıdan alınıyor
scanf("%s",&kelime);//kullanıcının girdiği veri kelime değişkenine atanıyor
FILE *dosya;//file tipinde bir dosya pointerı tanımlanıyor
dosya=fopen("a.txt","r");//a.txt dosyası sadece okunmak için yazılıyor
int a=0,i;//kullanılacak değişkenler tanımlanıyor
while(!feof(dosya)){//dosya sonuna kadar dönülüyor başlangıç
fscanf(dosya,"%s%s%d%d",yedek[a].isim,yedek[a].bolum,&yedek[a].vize,&yedek[a].final);//dosyadan alınan veriler yedek yapısına aktarılıyor
a++; //yedek değişkenini her seferinde farklı gelmesi için a her seferinde arttırılıyor
}//dosya sonuna kadar dönülüyor sonu
for(i=0;i<(a-1);i++){//yedek yapısına alınan verilerin işleme sokulması
if(strcmp(kelime,yedek[i].isim)==0)//eğer değişecek kelime yedek yapısının ismine eşit ise aşağıdakileri yap
{
printf("%dninci kişinin adını giriniz",i+1);//kullanıcıdan yeni isim isteniyor
scanf("%s",yedek[i].isim);//isim yedek yapısının değişecek kısmına atanıyor
fflush(stdin);//değişkene aktarıldıktan sonra o kısım boşaltılıyor
printf("%dninci kişinin bölümünü giriniz",i+1);//kullanıcıdan yeni bölüm isteniyor
scanf("%s",yedek[i].bolum);//bölüm yedek yapısının değişecek kısmına atanıyor
fflush(stdin);//değişkene aktarıldıktan sonra o kısım boşaltılıyor
printf("%dninci kişinin vizesini giriniz",i+1);//kullanıcıdan yeni vize isteniyor
scanf("%d",&yedek[i].vize); //vize yedek yapısının değişecek kısmına atanıyor
fflush(stdin);//değişkene aktarıldıktan sonra o kısım boşaltılıyor
printf("%dninci kişinin Finalini giriniz",i+1);//kullanıcıdan yeni final isteniyor
scanf("%d",&yedek[i].final);//final yedek yapısının değişecek kısmına atanıyor
fflush(stdin);//değişkene aktarıldıktan sonra o kısım boşaltılıyor
}
}//yedek yapısına alınan verilerin işleme sokulması sonu
fclose(dosya);//dosya sadece okunmak için açılan dosya kapatılıyor
//şimdi bu kısımda değiştirilen yedek yapısını a.txtnin üzerine yazarak bul değiştir örneğimizi bitireceğiz
FILE *dosya2;//file tipinde bir dosya2 pointerı tanımlanıyor
dosya2=fopen("a.txt","w");//a.txt dosyası önceki veriler silinecek şekilde açılıyor
int i2;//integer tipinde for döngüsü için i2 değişkeni oluşturuluyor
for(i2=0;i2<(a-1);i2++){//yine yedek değişkeninin sonuna kadar dönülüyor
fprintf(dosya2,"%s\t%s\t%d\t%d\n",yedek[i2].isim,yedek[i2].bolum,yedek[i2].vize,yedek[i2].final);
}//yedek değişkeninin sonuna kadar dönme sonu
fclose(dosya2);//açılan dosya kapatılıyor
}//bul değiştir fonksiyonu sonu
void kayit_sil(){//kayit sil fonksiyonu
char kelime[150];
printf("Silinecek Kişiyi girin");//silinecek kişi kulanıcıdan alınıyor
scanf("%s",&kelime);//kullanıcının girdiği veri kelime değişkenine atanıyor
FILE *dosya;//file tipinde bir dosya pointerı tanımlanıyor
dosya=fopen("a.txt","r");//a.txt dosyası sadece okunmak için yazılıyor
int a=0,i=0,kacinci;//kullanılacak değişkenler tanımlanıyor
while(!feof(dosya)){//dosya sonuna kadar dönülüyor başlangıç
fscanf(dosya,"%s%s%d%d",yedek[a].isim,yedek[a].bolum,&yedek[a].vize,&yedek[a].final);//dosyadan alınan veriler yedek yapısına aktarılıyor
a++; //yedek değişkenini her seferinde farklı gelmesi için a her seferinde arttırılıyor
}//dosya sonuna kadar dönülüyor sonu
for(i=0;i<(a-1);i++){//yedek yapısına alınan verilerin işleme sokulması
if(strcmp(kelime,yedek[i].isim)==0)//eğer silinmesi gereken kişi adı yedek yapısının ismine eşit ise aşağıdakileri yap
{
kacinci=i;//aranan verinin kaçıncı olduğu bulunuyor
}//eğer silinmesi gereken kişi adı yedek yapısının ismine eşit ise aşağıdakileri yapsonu
}//yedek yapısına alınan verilerin işleme sokulması sonu
for(i=0;i<(kacinci);i++){//verinin bulunduğu yere kadar dön
strcpy(silinecek[i].isim,yedek[i].isim);
//kacıncıya kadar olan kısımlar silinen yapısına aktarılıyor
strcpy(silinecek[i].bolum,yedek[i].bolum);
//kacıncıya kadar olan kısımlar silinen yapısına aktarılıyor
silinecek[i].vize=yedek[i].vize;
//kacıncıya kadar olan kısımlar silinen yapısına aktarılıyor
silinecek[i].final=yedek[i].final;
//kacıncıya kadar olan kısımlar silinen yapısına aktarılıyor
}
//verinin bulunduğu yere kadar dön sonu
for(i=(kacinci+1);i<=(a-1);i++){//silinen veriden sonrakini silinecek kısmına ata
strcpy(silinecek[i-1].isim,yedek[i].isim);//kacıncıdan sonra olan kısımlar silinen yapısına aktarılıyor
strcpy(silinecek[i-1].bolum,yedek[i].bolum);//kacıncıdan sonra olan kısımlar silinen yapısına aktarılıyor
silinecek[i-1].vize=yedek[i].vize;//kacıncıdan sonra olan kısımlar silinen yapısına aktarılıyor
silinecek[i-1].final=yedek[i].final;//kacıncıdan sonra olan kısımlar silinen yapısına aktarılıyor
}//silinen veriden sonrakini silinecek kısmına ata sonu
fclose(dosya);//dosya sadece okunmak için açılan dosya kapatılıyor
//şimdi bu kısımda değiştirilen yedek yapısını a.txtnin üzerine yazarak bul değiştir örneğimizi bitireceğiz
FILE *dosya2;//file tipinde bir dosya2 pointerı tanımlanıyor
dosya2=fopen("a.txt","w");//a.txt dosyası önceki veriler silinecek şekilde açılıyor
int i2;//integer tipinde for döngüsü için i2 değişkeni oluşturuluyor
for(i2=0;i2<(a-1);i2++){//yine silinecek değişkeninin sonuna kadar dönülüyor
fprintf(dosya2,"%s\t%s\t%d\t%d\n",silinecek[i2].isim,silinecek[i2].bolum,silinecek[i2].vize,silinecek[i2].final);
}//silinecek değişkeninin sonuna kadar dönme sonu
fclose(dosya2);//açılan dosya kapatılıyor
}//kayitsil fonksiyonu sonu