C’de öğrenci otomasyonu yapımı

C’de Öğrenci Otomasyonu programı:

C’de öğrenci otomasyon programının mantığı C’de dosyaya yeni kayıt eklemek, listelemek ve bu kayıtlar içerisinde öğrenci numarısına göre arama yapmaya sağlayan program geliştirmek demektir. Daha önce anlattığımız;

konularını bir nevi ve bir takım değişikliklerde bulunarak bu konuyu yazıcağım.

C’de Öğrenci Bilgi Otomasyonunun Algoritması:

ANA PROGRAM

  1. BAŞLA
  2. “ozluk.dat” dosyasını yarat ve aç. Hata varsa “Dosya açılamadı” yazıp çık.
  3. DÖNGÜYE GİR
  4. “1 – Bilgi Girişi”,”2-Bilgi Arama”,”3-Bilgi Listeleme”,”4-Programdan Çıkış” ve “Seciminiz(1-2-3-4):” yaz
  5. secim==1 ise giris(), secim==2 ise arama(), secim==3 ise listele  değilse programdan çık.
  6. Secim 4’e eşit değilse DÖNGÜYÜ DEVAM ETTİR
  7. DUR

ALT PROGRAM – ARAMA

  1. BAŞLA
  2. Ekranda yazılı olan herşeyi temizle (system(“CLS”)) ve Aranacak Ögrenci Numarasını Giriniz yaz.
  3. Klavyeden girilen değeri noara değişkenine eşitle kayıt miktarını bul (Dosya boyutu / Struct yapı boyutu)
  4. Kayıt sayısı kadar DÖNGÜYE GİR
  5. Dosya işaretçisini dosyanın başına taşı, “ozluk.dat” dan ogr yapı değişkenini ogr boyutu kadar, 1 kez oku.
  6. ogrno ve noara değişkenlerini karşılaştır ikisi birbirine eşitse yapı değişkenleri ekranda göster değilse “Aranan kayıt Bulunamadı” yaz
  7. DUR

ALT PROGRAM – KAYIT

  1. BAŞLA
  2. “ozluk.dat” dosyasını yarat ve aç
  3. Ekrandeki yazılı olan herşeyi temizle (System(“CLS”))
  4. Ogr yapısının içerisinde tanımlanmış tüm bilgileri kullanıcıdan al ve dosya işaretçisini dosyanın sonuna taşı.
  5. “ozluk.dat” a ogr yapı değişkenini ogr boyutu kadar 1 kez yaz.
  6. Tampon bellek (Daha önceden girilmiş önbellekteki bilgiler) temizle ve “devam etmek için bir tuşa basınız” yaz
  7. DUR

ALT PROGRAM – LİSTELEME

  1. BAŞLA
  2. Ekranda yazılı olan herşeyi temizle (system(“CLS”)) ve Aranacak Ögrenci Numarasını Giriniz yaz.
  3. Klavyeden girilen değeri noara değişkenine eşitle kayıt miktarını bul (Dosya boyutu / Struct yapı boyutu)
  4. Kayıt sayısı kadar DÖNGÜYE GİR
  5. Dosya işaretçisini dosyanın başına taşı, “ozluk.dat” dan ogr yapı değişkenini ogr boyutu kadar, 1 kez oku.
  6. Tüm yapı bilgilerini yazdır. “Devam etmek için bir tuşa basınız” yaz ve getch() fonksiyonunu kullan.
  7. DUR

Algoritma Açıklaması:

ANA PROGRAM

Dosyaya veri yazma ve okuma işlemlerimiz için öncelikle bir dosyaya ihtiyac duyduğumuzdan ilk aşamada dosyayı oluşturup, ikincisinde dosyayı açıyoruz. Bu işlemler sırasında eğer bir hata varsa “Dosya açılamadı” yazıp çıkıyoruz, eğer hata yoksa işleme devam ediyoruz

Kayıtları almak için bir döngüye giriyoruz. Döngü içerisinde Projeye uygun bir şekilde menu oluşturuyoruz. Bu menüde projeye uygun olaran Öğrencilerin Bilgi Girişi, Arama ve Listeleme ve Programdan Çıkış konulmuş. Döngü secim’e eşitse çıkıyoruz değilse tekrar seçim yapmayı zorluyoruz.

ALT PROGRAM – ARAMA

Kayıtları en baştan taramamız için kayıt işaretçsini dosyanın başına getirmemiz gerekir fakat bundan önce metinleri temizlemeyerek her bir yapının aynı boyuttu olduğunu varsayarak Dosya Boyutu / Yapı formülüyle kayıt miktarını buluyoruz. Bu kayıt miktarı kadar döngüye girip kulanıcıdan alınan bilgiyle döngü içerisinde dönen bilgiler arasında bir karşılaştırma yapıyoruz. Eğer birbirlerine uyuşuyorlarsa yani denklerse bilgileri ekranda gösteriyoruz değiles “Aranan Kayıt Bulunamadı” diyerek programdan çıkıyoruz.

ALT PROGRAM – KAYIT

Bilgi girişi yaptıracağımızdan “ozluk.dat” dosyasını birinci aşamada yaratıp, ikinci aşamada açıyoruz. Ekranımızı bir güzel temizliyoruz. Girilen bilgilerin bir kitap gibi (yeni eklenen bilgiler sonda) olması amacıyla kayıt işaretçisini sona getirerek işlemimizi gerçekleştiriyoruz. Tampon bellediğimizi temizliyoruz ki önceden girdiğimiz bilgiler ile yeni gireceğimiz bilgiler birbirine girip çorba olmasın. Son olarak Kullanıcı tarafından aldığımız bilgileri “ozluk.dat” adlı dosyanın içerisine ekliyip alt programımızı sonlandırıyoruz.

ALT PROGRAM – LİSTELEME

Arama Alt programının yalnızca karşılaştırılmamış halidir.

C’de Öğrenci Otomasyonu programının Akış Diyagramı:

ANA PROGRAM

c-de-ogrenci-otomasyonu-ana-program

ALT PROGRAM – KAYIT EKLEME

c-de-dosya-icerisinde-arama-yapan-program-alt-kayit

ALT PROGRAM – ARAMA YAPMA

c-de-dosya-icerisinde-arama-yapan-program-alt-arama

ALT PROGRAM – KAYIT LİSTELEME

c-de-ogrenci-otomasyonu-kayit-listeleme

 

Akış Diyagramının Açıklaması:

Akış diyagramı ve açıklamalarını ulaşmak için tıklayın.

C Programlamanın Açıklaması:

C kodları nasıl çalıştırılır (derlenir) öğrenmek için tıklayın.

C Programının Temel Yapısı(Değişken Tipleri) Programlama hakkındaki açıklamalar için tıklayın.

C Programlamada kullanıcının bilgi girişi – çıkışı yapması için gerekli  açıklamar için tıklayın.

C’de Öğrenci Otomasyonu – C programı:

#include
#include
#include
#include
#include

FILE*f;
struct ogrneci
{
char no[10],ad[15],soyad[20];
char bad[15],aad[15],telno[10];
char memleket[20],adres[50];
} ogr;

int i,sec,kaysay;
char noara[10];

void giris(void)
{
FILE*f;
f=fopen("ozluk.dat","w+b");
system("CLS");
printf("\nÖgrenci No :"); scanf("%s",ogr.no);
printf("\nÖgrenci Adı :"); scanf("%s",ogr.ad);
printf("\nÖgrenci Soyadı :"); scanf("%s",ogr.soyad);
printf("\nBaba Adı :"); scanf("%s",ogr.bad);
printf("\nAnne Adı :"); scanf("%s",ogr.aad);
printf("\nTelefon No :"); scanf("%s",ogr.telno);
printf("\nMemleketi :"); scanf("%s",ogr.memleket);
printf("\nAdres :"); scanf("%s",ogr.adres);

fseek(f,filelength(fileno(f)),SEEK_SET);
fwrite(&ogr,sizeof(ogr),1,f);
fflush(f);
printf("\ndevam etmek için bir tusa basiniz");
getch();
}

int arama(void){

system("CLS");
printf("Aranacak Ögrenci Numarasını Giriniz:");
scanf("%s",&noara);
kaysay=filelength(fileno(f))/sizeof(ogr);
for(i=0;i

C programının açıklaması - C programlama:

 ANA PROGRAM

Fopen fonksiyonunu ve paremetrelerinikullanarak daha önce oluşturduğumuz dosyayı açtık. Koşul / Şart ifadesi if/else ile f’nin bir boş değeri eşit olup olmadığnı hesapladık. Eğer f dosya değişkeni boş yani NULL değerine sahipse printf() fonksiyonunu kullanarak kullanıcıya “Dosya açılamadı” cevabını vererek programı sonlandıracağız.

Eğer NULL değerine sahip değiles kullanıcıdan çeşitli bilgiler isteyeceğiz. System(“CLS”) ile ekranımımızda gördüğümüz bütün yazıları kaldırıyoruz/temizliyoruz. Daha sonra menu elemanlarımızı yine printf() fonksiyonunu kullanarak yazdırdık. Geldik kullanıcımızın secim yapmasına. Kullanıcı secim yaparken degeri scanf() fonksiyonuyla ile sec değişkenine aktardık ve switch case yapısını kullandık.

ALT PROGRAM – ARAMA YAPMA

Ana program içerisinde kullandığımız gibi system(“CLS”) kullanarak ekranımızda yazılı olan metinleri temizlemeyi başardık. “Aranacak Öğrenci Numarasını Giriniz” adlı metni ekranda gösterdik. Kullanıcı tarafından girilen degeri ise noara’ya aktardık. Dosya boyutunu yapı boyutuna bölerek kayıt sayısına ulaştık. Kayıt sayısı kadar değerlerimizi taramamıza yardımcı olması amacıyla for döngüsünü kullandık. Bu kayıtlar içerisinde fseek() komutu sayesinde işaretcimizi dosya içerisinde en başa taradık. Bunu dosyamızın en başa gelmesi için yaptık. fread ile dosyayı okuduk. string.h kütüphanesi (header) nin içerisinde bulunan strcmp karşılaştırma fonksiyonunu kullanarak ogr.no ile noara değişkenleri karşılaştırdık ve denk düşmeleri halinde printf() fonksiyonunu kullanarak ogr yapının içerisindeki  bilgileri yazdırdık. Eğer hiç bir kayıt bulunamazsa “Aranan Kayıt Bulunamadı” yazdır dedik.

Klavyeden girilen herhangi bir tuşa tıklanınca programımızın devam etmesini sağlayan getch(); fonksiyonunu kullandık.

ALT PROGRAM – KAYIT GİRME

FILE türünde yani dosya türünde “f” adında bir değişken oluşturduk. Oluşturduğumuz değişkeni fopen fonksiyonu kullanarak ozluk.datı w ve  b parametleriyle açtık. Ferror yani dosya açılma hatası verdiği takdirde Dosya açılamadı demesini eğer dosya açılmayı başardıysada oluşturduğumuz yapının içerisinde bulunan bilgileri printf() ve scanf() fonksiyonu yardımıyla almasını sağladık. fseek() fonksiyonuyla dosyamızın bir kitap şeklinde okunmas için sonuna gittik ve daha sonra fwrite() fonksiyonu sayesinde dosyamıza kayıtlarımızı geçirdik. Daha önceki kayıtlarımız ile karışmaması için artık/önbellek kayıtlarımızı fflush() fonksiyonu yardımıyla temizledik.

Önizleme:

c-de-ogrenci-otomayon-programı

C uygulamasının proje hali ve yazılımı:

Proje halindeki dosyayı indir.

Uygulama halindaki dosyayı indir.

C’de kayıt listeleme yapmak

C’de kayıt listeleyen program:

Bir önceki dersimiz olan  C programlamada dosyaya yeni kayıt eklemek  konusunu incelemiştik. Bu dersimizdeyse yeni kayıt ekledikten sonrabu kayıtların nasıl listeleneceğini öğreneceğiz. Kayıt listelemek için kayıtların olması gerektiğinden bir önceki dersimize ait kodların üzerine bu konuyu işleyeceğiz. Bu nedenle C’de dosyaya yeni kayıt ekleme konusunu incelemeniz yararlı olacaktır.

C’de kayıt listeleyen programın Algoritması:

ANA PROGRAM

  1. BAŞLA
  2. “Yeni kayit ekleyecek misiniz? ” yaz
  3. secim “e” ‘ veya “E”‘ harfine eşit mi? e:4 h:5
  4. kayit altprogramını çalıştır
  5. Dosya değişkeni oluştur ( FILE*dosya)
  6. Dosyayı aç ve tam yetki ver ((fopen(“veri.dat”,”a+”))
  7. Dosyanın başına git (fseek(dosya,0,SEEK_SET))
  8. Dosyada ogrenciyapinin byte değeri kadar kadar 1 kez oku (fread(&ogrenci,sizeof(ogrenci),1,dosya))
  9. Dosyanın sonuna gelindi mi? e:12 h:10
  10. ogrenci.numara, ogrenci.adi, ogrenci.notu yaz
  11. 8’e git
  12. Dosyayı kapat
  13. DUR

ALT PROGRAM

  1. BAŞLA
  2. Dosya değişkeni oluştur ( FILE*dosya;)
  3. Dosyayı aç ve tam yetki ver ((fopen(“veri.dat”,”a+”))
  4. Ferror değişkeni sıfıra mı eşit? e:5 h:7
  5. “Hata var” yaz
  6. 18’e git
  7. Dosyanın sonuna git (fseek(dosya,0,SEEK_END))
  8. “Numaraya gir” yaz
  9. ogrenci.numara gir
  10. “Ad” yaz
  11. ogrenci.adi gir
  12. “Notu gir” yaz
  13. ogrenci.notu yaz
  14. ogrenci yapısını dosyaya ogrenci byte’ı kadar yaz (fwrite(&ogrenci,sizeof(ogrenci),1,dosya);)
  15. “Başka kayıt ekleyecek misiniz?” yaz
  16. klavyeden girilen değer “e” veya “E” mi? e:7 h:17
  17. dosyayı kapat
  18. DUR

Algoritma Açıklaması:

Yeni kayıt ekleyecek misiniz dedik ve kullanıcıdan “e” veya “E” bakması takdirde kayıt alt programını çalıştırdık.  Dosya bir alt programı içerisinde çalıştı, global olarak tanımlanmadığı için ana program içerisinde çalışmayacaktır. Dosyanın tüm elemanlarını okuyacağımız için dosyanın başlangıç noktasına gitmemiz gerekiyor. Okuduğumuz değer yapının ağırlığı kadar olacak böylece biz tüm kayıtları listeleyeceğiz. Sayfanın sonuna gelindiğinde feof(dosya)=0 olmalı. Değilse kayıtları listelemek için döngü devam edecek. Son olarak dosyayı kapatacağız ve programımızı sonlandıracağız.

C’de kayıt listeleyen programın Akış Diyagramı:

ANA PROGRAM

c-de-kayit-listeleyen-akis-diyagrami

KAYIT ALT PROGRAMI AKIŞ DİYAGRAMI

c-de-dosyaya-veri-yazma

Akış Diyagramının Açıklaması:

Akış diyagramı ve açıklamalarını ulaşmak için tıklayın.

C Programlamanın Açıklaması:

C kodları nasıl çalıştırılır (derlenir) öğrenmek için tıklayın.

C Programının Temel Yapısı(Değişken Tipleri) Programlama hakkındaki açıklamalar için tıklayın.

C Programlamada kullanıcının bilgi girişi – çıkışı yapması için gerekli  açıklamalar için tıklayın.

C’de kayıt listeleyen program – C programı:


#include
#include
struct ogryapi
{
char numara[10];
char adi[20];
int notu;
} ogrenci;

void kayit()
{
char yenikayit;
FILE*dosya;
dosya=fopen("veri.dat","a+");
if(ferror(dosya)!=0) printf("Hata var\n");
else
{
fseek(dosya,0,SEEK_END);
do
{
printf("Numaraya gir: "); scanf("%s",&ogrenci.numara);
printf("Ad:"); scanf("%s",&ogrenci.adi);
printf("Notu gir:"); scanf("%d",&ogrenci.notu);
fwrite(&ogrenci,sizeof(ogrenci),1,dosya);
printf("Başka kayit ekleyecek misiniz?:");
yenikayit=getche(); printf("\n");
}
while((yenikayit=='E') || (yenikayit=='e'));
// fclose(dosya);
}
}
main()
{ printf("Yeni kayit ekleyecek misiniz? "); char secim; secim=getche();
printf("\n");
if(secim=='e' || secim=='E') kayit();
FILE*dosya;
dosya=fopen("veri.dat","a+");
// Listeleme işlemleri
fseek(dosya,0,SEEK_SET);
do
{
fread(&ogrenci,sizeof(ogrenci),1,dosya);
if(feof(dosya)!=0) break;
printf("%9s%20s%8d\n",ogrenci.numara,ogrenci.adi,ogrenci.notu);
}
while(0==0);
fclose(dosya);
getch();

C programının açıklaması:

KAYIT ALT PROGRAM AÇIKLAMASI

Standart (Temel) C kütüphanemiz stdio.h’ı programızın kodlarını çalıştırmak için programımıza include kodu ile dahil ettik. Programımızın açılır açılmaz kapanmaması için getch() fonksiyonunu kullanırız. Getch fonksiyonunu kullanmamız içinde conio.h kütüphanesine ihtiyac duyarız. Bu nedenle conio.h kütüphaneside programımız içerisine dahil ediyoruz.

Ardından ogrenci değişkeniyle tanımladığımız, ogryapi adında bir struct – yapı(Struct nedir?) tanımladık. Yapının mantığı benzeri işlevi gören farklı türdeki değişkenleri bir araya toplamak olduğundan ogrenci bilgileri ile alakalı girilebilecek örnek değişkenleri yapı içerisine oluşturmalıyız. Char tipi İngilizce karşılığı Character yani bizim bildiğimiz karakter anlamına gelir. Hem rakamları hem de harfleri desteklemekte. İnt tipinin İngilizce karşılığı İntegerdır. Türkçe anlamı tamsayı olup yalnızca tamsayı tipinde oluşturulmuş sayıları destekler.

Ana programımızı oluşturduktan hemen sonra ilerde kullanıcıdan yeni bir kayıt ekleyecek misiniz sorusuna cevaplamak amacıyla kullanacağımız “yenikayit”  değişkenini yaratıyoruz. FILE komutuyla dosyamızı oluşturduk. Fopen fonksiyonuyla dosyamızı açıyoruz. Fseek komutuyla ise programa her kayıt eklendiğinde dosyanın sonuna eklenmesi için dosyanın sonuna git fonksiyonunu uyguladık. Yeni kayıt ekletebilmek amacıyla bir döngüye ihtiyacımız var. Bu işlem için en uygun döngü tipi do {} while() döngü tipi olduğundan do while döngüsü oluşturuyoruz. Printf fonksiyonu yardımıyla belirlediğimiz karakterleri monitörümüze yazdırdık. scanf fonksiyonu yardımıyla da klavyeden girilen değeri ogryapi değişkenlerimize aktardık, eşitledik. Getche fonksiyonuyla klavyeden girilen tek karakteri yenikayit adlı değişkene eşitliyoruz. Eğer girilen değer “e” veya “E” ise döngüyü tekrar çalıştırdık.

Son olarak dosyamızı kapattık ve getch(); fonksiyonunu kullanarak programı sona erdiriyoruz.

ANA PROGRAM AÇIKLAMASI

Printf fonksiyonu ile “Yeni kayit ekleyecek misiniz” cümlesini standart görüntü aracımız yani monitörümüze yazdırdık. Rakam ve harfleri destekleyen Char tipinde bir değişken oluşturuyoruz. Kullanıcı tarafından girilen değerin oluşturduğumuz değişkeni eşitliyoruz. Bu eşitlemenin hemen ardından bir koşul belirtip değişken değerinin “e” veya “E” olup / olmadığını soruyoruz. Bu şart doğruysa kayit fonksiyonunu çalıştırıyoruz. “\n” ile alt satıra geçiyoruz.

Dosya değişkeni oluşturuyoruz. Dosyamızı açarak tam yetki veriyoruz. fseek fonksiyonu ile kayıt işaretçesini sayfanın başına taşıyoruz. Fread fonksiyonu ile Dosya’dan 1 kez Öğrenci yapısının byte değeri kadar okuyotuyoruz. Döngü sınırsız döngü olduğu için ancak dosya sonuna gelindiğinde döngü sonlanacaktır. Sayfanın sonuna geldiğimizi feof fonksiyonu 0 değerini bize döndürdüğünde anlarız. Bunun için koşul şart ifadesi kullanarak feof fonksiyon sıfır değerini döndürdüğünde döngüden çık diyoruz.  Okuttuğumuz bu değerleri yine printf() fonksiyonu ile yazdırıyoruz. Yapacağımız son işlemlerse dosyamıza kapatmak için fclose() fonksiyonunu kullanmak ve progmımızın açılır açılmaz kapanmaması için getch() fonksiyonunu kullanmak olmakta.

Önizleme:

 c-de-kayit-listeleyen-akis-diyagram

C uygulamasının proje hali ve yazılımı:

Proje halindeki dosyayı indir.

Uygulama halindaki dosyayı indir.