9 Temmuz 2014 Çarşamba

Öğrenci kayıt -bilgi ve silme işlemleri yapan program

Bu programda çok fazla dizi kullandım. Programda hata almamak için telefon numarası yerine sayı girmeniz gerekmektedir. Çok fazla sayı girerseniz de program hata verebilir.Programda main kısmında bir switch oluşturularak menü seçenekleri belirlendi. Bu seçeneklerden de ilgili fonksiyonlara bağlantı kuruldu.
Bu programda    " i "  değişkeni çok önemlidir. Çünkü dizileri o yönlendiriyor.
isim[i] dizisi olarak isimler dizi elemanlarında depolandı. Ahmet girildiğinde  " i " ilk başta 0 olduğundan isim[0] da Ahmet ismi depolanmış oldu. Öğrenci kaydına girdiğimizde :

1- Öğrenci kaydı 
    Burada kaydı olacak kişinin bilgileri istendi.  Sonrada bu bilgilerin hepsi    i=0 da  depolandı. Sonunda i=i+1;  yaparak  i yi 1 artırdım. Böylece bir daha ki kayıt da i=1 olacak ve kullanıcının girdiği isim  isim[1] de depolanacaktır. Bu şekilde bir devamlılık sağladım.



2-Öğrenci bilgileri
    Burada öncelikle bütün öğrenci listesini ekrana yazdırmak istedim.

int k=1,secim;
   
    for(k=1; k<i+1; k++){
    printf("%d - %s %s\n",k,isim[k-1],soyad[k-1]);
           }

 ifadesini açıklayayım. k= 1 den başlayarak  i+1 e kadar artmasını istedim.  Çünkü  i değeri başta 0 olduğundan depolanan değerlerde 1 fazlası olarak sıralanır. Yani örneğin:
   Kullanıcı 3 isim girdiğinde i=0 dan başladığı için  i=2 olacaktır. Buna göre aşağıdaki sonuç çıkar
    1- i=0 isim[0] = ahmet
    2- i=1 isim[1] = mehmet
    3- i=2 isim[2] = ayşe

   Liste yaparken biz  1 den başlayacağımız için  k  i+1 e kadar gider . Yani bu öğrene göre 3 e kadar gider.
Burada demek ki   k   bizim kişi sayımız olmuş oluyor.
        printf("%d - %s %s\n",k,isim[k-1],soyad[k-1]);

    Bunuda yukardaki gibi yazarız ve isimler listelenmiş olur.Sonrasında kullanıcı bir isim seçer ve o kişinin bilgileri ekrana çıkar. Bunuda normal olarak printf ile sağlarız.
3-Kayıt silme
Bana göre en zor kısım buydu. Çünkü bir kayıt silindiğinde i değeri yerinden oynayacaktı. Bu yüzden bir sonraki diziyi bir önceki diziye kopyalayarak bu işlemi gerçekleştirdim.Bunu for döngüsü ile yaptım.

 for(n=secim-1;n<k-1;n++){
            strcpy(isim[n],isim[n+1]);
            strcpy(soyad[n],soyad[n+1]);
            strcpy(adres[n],adres[n+1]);
                telno[n]=telno[n+1]; 
            
            }  
              i=i-1;
En sonunda da  i yi bir azalttım çünkü en son dizi bir gerideki elemana kopyalandığında onun yeri boşta kalmış olacaktı. Bu yüzden i yi  1 azalttım.

İşte programdan görüntüler :




İşte buda kodlar :



#include <stdio.h>
#include <dos.h>
#include <string.h>
char isim[30][30],soyad[30][30],adres[30][30];
long int telno[30],i=0;
    int ogrenci_kaydi(int a){
     
     system("cls");
     printf("Ogrencinin ismi = ");
     scanf("%s",&isim[i]);
     printf("Ogrencinin soyadi = ");
     scanf("%s",&soyad[i]);
     printf("Ogrencinin memleketi = ");
     scanf("%s",&adres[i]);
     printf("Ogrencinin telefon numarasi = ");
     scanf("%d",&telno[i]);
     system("cls");
     printf("Ogrenci kayit edilmistir...");
     sleep(2,5);
     system("cls");
     
     return i=i+1;
    }
    int ogrenci_bilgisi(int a){
     
     system("cls");
    
     if(i>0){
     int k=1,secim;
     
     for(k=1; k<i+1; k++){
      printf("%d - %s %s\n",k,isim[k-1],soyad[k-1]);
           }
           scanf("%d",&secim);
           system("cls");
           printf("Adi = %s\nSoyadi = %s\nMemleketi = %s\nTelefon Numarasi = %d\n\n",isim[secim-1],soyad[secim-1],adres[secim-1],telno[secim-1]);
           printf("Geri donmek icin 1'i tuslayin...");
           scanf("%d",&secim);
  }
  else if(i<=0){
   
      printf("Henuz hic bir ogrenci kayit olmamistir.");
      sleep(2,5);
      
     }
      
      
     return i;
    }
    int kayit_sil(int a){
      system("cls");
    
     if(i>0){
     int k=1,secim,n;
     
     for(k=1; k<i+1; k++){
      printf("%d - %s %s\n",k,isim[k-1],soyad[k-1]);
           }
            printf("Silmek istediginiz orenci numarasini tuslayiniz...\n");
            scanf("%d",&secim);
            
            for(n=secim-1;n<k-1;n++){
             strcpy(isim[n],isim[n+1]);
             strcpy(soyad[n],soyad[n+1]);
             strcpy(adres[n],adres[n+1]);
                telno[n]=telno[n+1]; 
            
            }  
              i=i-1;
            
       
  }
  else if(i<=0){
   
      printf("Henuz hic bir ogrenci kayit olmamistir.");
      sleep(2,5);
      
     }
      
      
     return i;
    }
    main(){
 int menusecim,dongu=-1;
 while(dongu==-1){
    system("cls");
 printf("\n1- Ogrenci Kaydi\n2- Ogrenci Bilgileri\n3- Ogrenci Silme\n");
 scanf("%d",&menusecim);
 
 switch (menusecim){
  case 1:{
    ogrenci_kaydi(i);
   break;
  }
  case 2:{
    ogrenci_bilgisi(i);
   break;
  }
  case 3:{
    kayit_sil(i);
   break;
  }
  default:{
   system("cls");
   printf("Yanlis bir ifade girdiniz menuye yonlendiriliyorsunuz...");
   sleep(2,5);
   system("cls");
  }
 }
    }
 return 0;
}

Hiç yorum yok:

Yorum Gönder