⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
🇹🇷 TR Lokasyon | 🛡️ Gelişmiş DDoS Koruması | ⚡ Düşük Ping | 🎧 Kesintisiz TS3 | Hostlar
Sponsor Görsel 2
SponsorSponsor

C Programlama Dili Dosya ve Struct Yapısı ile Öğrenci Kayıt Sistemi

Konu

#1
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 
Cevapla
#2
Teşekkrüelr
Cevapla
#3
Teşekkürler
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da