C++ dilinde hazırladığım öğrenci takip programı kodları değişkenlerin kullanımı, ekranda menü hazırlama ve seçilen menülere göre farklı alt fonksiyonları çağırma, switch kullanımı, for döngüsü

C++ dilinde hazırladığım öğrenci takip programı kodları değişkenlerin kullanımı, ekranda menü hazırlama ve seçilen menülere göre farklı alt fonksiyonları çağırma, switch kullanımı, for döngüsü ve if kullanımı açısından yararlı bir kod olacağına inanıyorum.

Öncelikle değişkenlerimizle başlayalım. Projemizde öğrencilerle ilgili öğrenci no, öğrenci adı, öğrenci soyadını tutacağız. Bu bilgileri girilen Vize1, Vize2 ve Final Notlarını kaydedeceğiz.

 

#include <stdio.h> 
#include <windows.h> 
#include <stdlib.h> 
#include <conio.h> 
#include<string.h>  
int ekranhazirla(int kx, int ky, int ke, int kb); 
int OgrenciNo[19]; 
char OgrenciAdi[19][20]; 
char OgrenciSoyadi[19][20]; 
int Vize1[19]; 
int Vize2[19]; 
int Final[19]; 
int i,son; 
char EH; 

 

Değişkenlerimizi oluşturduk programımızın main fonksiyonunu aşağıdaki gibi oluşturalım.

 

int main(int argc, char *argv[]) 
{
    son=0;
    anamenu();
    return 0;
}

Burada anamenu fonksiyonumuzu çağırdık. Şimdi aşağıdaki gibi anamenu fonksiyonumuzu hazırlayalım.

 

 

int anamenu()
{
    int Secim;
    system("cls");//Ekranı Temizler
    printf("\n\tOGRENCI TAKIP\n");// \t bir tab öteler \n satırbaşı yapar
    printf("\t-------------------------\n");
    printf("\t1. Ogrenci Ekle\n"); //ekrana menüleri yazıyoruz.
    printf("\t2. Ogrenci Sil \n");
    printf("\t3. Ogrencileri Listele\n");
    printf("\t4. Ogrenci Istatistikleri\n");
    printf("\t5. Cikis\n");
    printf("\nSeciminiz :");//kişinin seçim yapmasını söylüyo5ruz.
    scanf("%d", &Secim); //yaptığı seçim
    switch(Secim) //seçime göre yapacağı işleme gidiyoruz.
    {
        case 1:
            ogrenciekle();
            anamenu();
            break;
        case 2:
            ogrencisil();
            anamenu();
            break;
        case 3:
            ogrencilistele();
            anamenu();
            break;
        case 4: 
            istatistikmenu(); 
            anamenu();
            break;
        case 5:
            return 0;
            break;
        default:
            printf("Yanlis Giris Yaptiniz\n");
            system("PAUSE");
            anamenu();
            break;
    }
    return 0;
} 

Ana menümüzü oluşturduk. Buradaki seçimlere göre gideceği alt fonksiyonlardan öğrenci ekleme fonksiyonumuzu oluşturalım.

 

 

int ogrenciekle()
{
    system("cls"); //Ekranı temizler
    if (son>=19)
    {
        printf("Ogrenci kaydetmek icin alan kalmadi.");
        system("PAUSE");
        anamenu();
    }
    for(i=son;i<=19;i++)//son kaydedilenden basliyor.
    {
        printf("%d Kaydi", i);
        if (strcmp(OgrenciAdi[i],""))//Kaydın sonuna mı gelindi.
        {
            printf("%d Ogrenci kaydetmek icin alan kalmadi.", i);
            system("PAUSE");
            break;
        }
        else 
        {
            printf("\nOgrenci No     :"); 
            scanf("%d", &OgrenciNo[i]);
            printf("Ogrenci Adi    :"); 
            scanf("%s", OgrenciAdi[i]); 
            printf("Ogrenci Soyadi :");
            scanf("%s", OgrenciSoyadi[i]);
            printf("Vize 1         :");
            scanf("%d", &Vize1[i]);
            printf("Vize 2         :");
            scanf("%d", &Vize2[i]);
            printf("Final          :");
            scanf("%d", &Final[i]);
            printf("Başka Kayıt Yapmak ister misiniz.(E/H)");
            EH = getch();
            switch(EH)
            {
                case 'H':
                case 'h': 
                    son=i+1; //son kaydi kenara yaziyoruz.
                    return 0;
                    break;
                default: 
                    system("cls");
            }
        }
    }
    son=i;
    anamenu();
    return 0;
} 

Öğrenci bilgilerini, vize ve final bilgilerini aldık. Şimdi ise kaydedilen öğrencinin silinmesini ve buna göre arraylerinin nasıl düzenlendiğini görelim.

 

int ogrencisil()
{
    int sil,k;
    system("cls");
    printf("Silinecek Ogrencinin numarasini giriniz : ");
    scanf("%d", &sil);
    for(i=0;i<=son-1;i++)//son kaydedilenden basliyor.
    {
        if (sil==OgrenciNo[i])
        {
            printf("\nAdi :%s", OgrenciAdi[i]);
            printf("\nSoyadi :%s", OgrenciSoyadi[i]);
            printf("Bu ogrenci bilgilerini silmek istediginize emin misiniz (E/H)");
            EH = getch();
            switch(EH)
            {
                case 'E':
                case 'e':
                    for(k=i;k<=son;k++)
                    {
                        OgrenciNo[k] = OgrenciNo[k+1];
                        OgrenciAdi[k][0] = OgrenciAdi[k+1][0];
                        OgrenciSoyadi[k][0] = OgrenciSoyadi[k+1][0];
                        Vize1[k] = Vize1[k+1];
                        Vize2[k] = Vize2[k+1];
                        Final[k] = Final[k+1];
                    }
                    son=k-2; //son kaydi kenara yaziyoruz.
                    return 0; 
                    break;
                default:
                    system("cls");
            }
        }
    }
    return 0;
}

Silmek istediğimiz öğrencimizin numarasını yazarak silme işlemini gerçekleştirdik. Bu işlemi yaparken aradan bir kayıt silindiği için boş bir kayıt oluşmuş oldu. O sildiğimiz kayıttan sonraki öğrencilerin bilgilerini bir geri alarak array değişkenlerimizi yeniden düzenledik. Şimdi ise elimizdeki öğrencilerin bilgilerini ekrana listeleyelim.

 

 

int ogrencilistele()
{
    system("cls"); //Ekranı temizler
    printf("OGRENCI LISTESI\n");
    printf("Og.No\tOgrenci Adi    \tOgrenci Soyadi \tVize1\tVize2\tFinal\n");
    printf("-----\t---------------\t---------------\t-----\t-----\t-----\n");
    for(i=0;i<=son-1;i++)//son kaydedilenden basliyor.
    {
        printf("%5d\t", OgrenciNo[i]);
        printf("%15s\t", &OgrenciAdi[i][0]);
        printf("%15s\t", &OgrenciSoyadi[i][0]);
        printf("%5d\t", Vize1[i]);
        printf("%5d\t", Vize2[i]);
        printf("%5d\n", Final[i]);
    }
    system("PAUSE");
    return 0;
}  

Yukarıdaki kodla öğrenci listemizin başlık bölümünü oluşturup bir döngü kurarak öğrencilerin bilgilerini alt alta gelecek şekilde görüntüledik. Şimdi ise öğrencilerimizin istetistiki bilgilerine göre raporları oluşturacağımız istetistik menüsünü oluşturalım.

 

int istatistikmenu()
{
    int istsec;
    system("cls");
    printf("\n\tOGRENCI ISTATISTIKLERI\n");
    printf("\t-------------------------\n");
    printf("\t1. Tam Liste (Vize, Final Ortalamalari)\n"); //ekrana menüleri yazıyoruz.
    printf("\t2. .50 si hangi notun altinda\n");
    printf("\t3. En Yuksek/Dusuk vize/final\n");
    printf("\t4. Ana Menu\n");
    printf("\nSeciminiz :");//kişinin seçim yapmasını söylüyoruz.
    scanf("%d", &istsec); //yaptığı seçim
    switch(istsec) //seçime göre yapacağı işleme gidiyoruz.
    {
        case 1:
            ortalama();
            istatistikmenu();
            break;
        case 2:
            anamenu();
            break;
        case 3:
            enyuksekendusuk();
            anamenu();
            break;
        case 4:
            anamenu();
            break;
        default:
            printf("Yanlis Giris Yaptiniz\n");
            system("PAUSE");
            anamenu();
            break;
    }
    return 0;
}

İstatistik menümüzü oluşturduk. Bu menülerimiz seçildiğinde çalışacak kodlarımızı yazalım.

 

 

int ortalama() {
    system("cls"); //Ekranı temizler
    printf("OGRENCI ORTALAMALARI\n");
    printf("Og.No\tOgrenci Adi    \tOgrenci Soyadi \tVize1\tVize2\tFinal\tOrta.\n");
    printf("-----\t---------------\t---------------\t-----\t-----\t-----\t-----\n");
    for(i=0;i<=son-1;i++)//son kaydedilenden basliyor.
    {
        printf("%5d\t", OgrenciNo[i]);
        printf("%15s\t", &OgrenciAdi[i][0]);
        printf("%15s\t", &OgrenciSoyadi[i][0]);
        printf("%5d\t", Vize1[i]);
        printf("%5d\t", Vize2[i]);
        printf("%5d\t", Final[i]);
        printf("%5d\n", (Final[i] + Vize1[i] + Vize2[i])/3);
    }
    system("PAUSE");
    return 0;
} 

Yukarıda öğrenci takip programının kodlarını inceledik. Faydalı olabileceğini umuyorum. 

İlgili Makaleler

Bu yazıya 0 yorum yapılmış.

Yorum Gönder