C++ kütüphane otomasyonu , c++ programming

Merhaba,

Bu yazımda c++ dilinde yazdığım , basit bir şekilde dosyalama işlemi yapan kodu sizlerle paylaşacağım. Yazacağımız kod kütüphaneye götürülen kaydedilen kitaplar senaryosunu içerecek. C++  programla dili 80’li yıllarda  Bell Laboratuvarlarından çıkan bir üründür.C++’ı C’den ayıran en baskın özellik  C++’ın nesne paradigması kullanılarak programlamaya olanak tanıyan özelliklerdir. Belli başlı noktalarda C++ kapsar  C denilebilir.

C ‘de olduğu gibi C++ da header mantığıyla çalışır. Headerda kullanacağınız metod vs içeren kütüphaneleri initializing ediyoruz.

 

#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<locale.h>

 

gibi temel alabileceğimiz console açılması   davranışlarını sağlayan kütüphaneler.

Kutuphaneotomasyonu adında bir tane .cpp uzantılı  text yahut derleme yapabileceğiniz bir IDE’yle bu işlemleri gerçekleştirebilirsiniz. Tercihimi Dev C++ ‘dan yana kullanıyorum.

öncelikle kendime ait olmasını istediğim kutuphane isminde .h uzantılı  bir dosya açıyorum.

Örnek özellikle c++ ile dosyalama işlemlerini içeriyor.

Senaryoda gerçek yaşamda uygulamada olan barkod koduyla unique’lik sağlayarak kitapları kaydetmeyi planlıyorum.

kutuphane.h isimli dosyamız içinde;

char cev;

struct Kutuphane
{
char BARKOD_KODU[20];
char Kitap[20];
char Yazar[20];
char cinsiyet[1];
int yas;
int gun;
int ay;
int yil;
}ilk,gecici,gecer;
////////////////////////////////////////////////////////////////////////////////

void yeniKayit(void)
{
struct Kutuphane gecici={‘\0′,’\0′,’\0′,’\0’,0,0,0,0};
int k=0;
FILE *kisisel;
do{
system(“CLS”);
struct Kutuphane ilk={‘\0′,’\0′,’\0′,’\0′,0,0,0,0};
printf(“BARKOD_KODU:”);
scanf(“%s”,&ilk.BARKOD_KODU);
if((kisisel=fopen(“Kitap.txt”,”r”))==NULL)
{printf(“DOSYA BULUNAMADI!!..”);}
while(feof(kisisel)==0)
{
fscanf(kisisel,”%s%s%s%s%d%d%d%d”,&gecici.BARKOD_KODU,&gecici.Kitap,&gecici.Yazar,&gecici.cinsiyet,&gecici.yas,&gecici.gun,&gecici.ay,&gecici.yil);
if(strcmp(gecici.BARKOD_KODU,ilk.BARKOD_KODU)==0)
k++;
}
fclose(kisisel);
if((kisisel=fopen(“Kitap.txt”,”a”))==NULL)
printf(“ACILMADI”);
if(k==0)
{
printf(“Kitap Adi:”); scanf(“%s”,&ilk.Kitap);
printf(“Yazarı:”); scanf(“%s”,&ilk.Yazar);
printf(“Konusu:”); scanf(“%s”,&ilk.cinsiyet);
printf(“Yas:”); scanf(“%d”,&ilk.yas);
printf(“Basım Yılı(gg-aa-yyyy):”);
scanf(“%d-%d-%d”,&ilk.gun,&ilk.ay,&ilk.yil); printf(“\n”);
fprintf(kisisel,”\n%-11s “,ilk.BARKOD_KODU);
fprintf(kisisel,”%-20s”,ilk.Kitap);
fprintf(kisisel,”%-20s”,ilk.Yazar);
fprintf(kisisel,”%-s”,ilk.cinsiyet);
fprintf(kisisel,”%10d”,ilk.yas);
fprintf(kisisel,” %0.2d-%0.2d-%0.2d”,ilk.gun,ilk.ay,ilk.yil);
}
else
{
printf(“%s BARKOD KODU ILE DAHA ONCEDEN KAYIP YAPILMISTIR.\n\n”,ilk.BARKOD_KODU);
k=0;
}
fclose(kisisel);
printf(“ISLEME DEVAM EDILSINMI?”);
printf(” E / H “);
cev=getche();
}
while(cev==’E’|| cev==’e’);
}
////////////////////////////////////////////////////////////////////////////////
void listele(void)
{
int k=4,x=0;
FILE *kisisel;
if((kisisel=fopen(“Kitap.txt”,”r”))==NULL)
{printf(“DOSYA BULUNAMADI!!..”);}
system(“CLS”);
while(!feof(kisisel))
{
fscanf(kisisel,”%s%s%s%s%d%d%d%d”,&ilk.BARKOD_KODU,&ilk.Kitap,&ilk.Yazar,&ilk.cinsiyet,&ilk.yas,&ilk.gun,&ilk.ay,&ilk.yil);
x++;
}
fclose(kisisel);
if((kisisel=fopen(“Kitap.txt”,”r”))==NULL)
{printf(“DOSYA BULUNAMADI!!..”);}
if(x!=0){

printf(” %-14s %-15s%-13s%-5s%-10s%-10s\n\n”,”BARKOD_KODU”,”Kitap Adi”,” Yazarı”,”Konusu”,” Yaşı “,”Basım Tarihi”);
while(!feof(kisisel))
{
fscanf(kisisel,”%s%s%s%s%d%d%d%d”,&ilk.BARKOD_KODU,&ilk.Kitap,&ilk.Yazar,&ilk.cinsiyet,&ilk.yas,&ilk.gun,&ilk.ay,&ilk.yil);
strupr(ilk.Kitap);
strupr(ilk.Yazar);
strupr(ilk.cinsiyet);
printf(“\n %-11s %-15s%-15s%-s%5d %0.2d%0.2d%0.2d”,ilk.BARKOD_KODU,ilk.Kitap,ilk.Yazar,ilk.cinsiyet,ilk.yas,ilk.gun,ilk.ay,ilk.yil);
k++;
}
printf(“\n”);
}
else
{printf(“KAYITLI BILGI BULUNMAMAKTADIR.”);}
fclose(kisisel);

cev=getche();
}
////////////////////////////////////////////////////////////////////////////////
void arama(void)
{
int k;
FILE *kisisel;
do{
k=0;
if((kisisel=fopen(“Kitap.txt”,”r”))==NULL)
{printf(“DOSYA BULUNAMADI!!..”);}
system(“CLS”);
struct Kutuphane ilk={‘\0′,’\0′,’\0′,’\0’,0,0,0,0};
struct Kutuphane gecici={‘\0′,’\0′,’\0′,’\0′,0,0,0,0};
printf(“Aradiginiz Kitabın BARKOD KODU’sunu giriniz”);
scanf(“%s”,&gecici.BARKOD_KODU);
while(feof(kisisel)==0)
{
fscanf(kisisel,”%s%s%s%s%d%d%d%d”,&ilk.BARKOD_KODU,&ilk.Kitap,&ilk.Yazar,&ilk.cinsiyet,&ilk.yas,&ilk.gun,&ilk.ay,&ilk.yil);
if(strcmp(gecici.BARKOD_KODU,ilk.BARKOD_KODU)==0)
{
strupr(ilk.Kitap);strupr(ilk.Yazar);strupr(ilk.cinsiyet);

printf(“%-11s %-10s%-10s%-s%5d %0.2d%0.2d%0.2d\n\n”,ilk.BARKOD_KODU,ilk.Kitap,ilk.Yazar,ilk.cinsiyet,ilk.yas,ilk.gun,ilk.ay,ilk.yil);

k++;
}
}
fclose(kisisel);
if(k==0)
printf(“BU KAYITTA BILGI BULUNMAMAKTADIR.”);
printf(“ISLEME DEVAM EDILSINMI?”);
printf(” E / H “);
cev=getche();
}
while(cev==’E’|| cev==’e’);
}
////////////////////////////////////////////////////////////////////////////////
void guncel(void)
{
int x=0;
FILE *kisisel,*temp;
char BARKOD_KODU[20],Barkod_kodu[20];
do{
struct Kutuphane ilk={‘\0′,’\0′,’\0′,’\0’,0,0,0,0};
struct Kutuphane gecici={‘\0′,’\0′,’\0′,’\0′,0,0,0,0};
system(“CLS”);
if((kisisel=fopen(“Kitap.txt”,”r”))==NULL)
{printf(“DOSYA BULUNAMADI!!..”);}
if((temp=fopen(“gecici.txt”,”w”))==NULL)
{printf(“DOSYA BULUNAMADI!!..”);}
printf(“Guncellemek istediginiz Kitabın BARKOD KODU’sunu giriniz”);
scanf(“%s”,&Barkod_kodu);
while(feof(kisisel)==0)
{
fscanf(kisisel,”%s%s%s%s%d%d%d%d”,&ilk.BARKOD_KODU,&ilk.Kitap,&ilk.Yazar,&ilk.cinsiyet,&ilk.yas,&ilk.gun,&ilk.ay,&ilk.yil);
if(strcmp(Barkod_kodu,ilk.BARKOD_KODU)==0)
{
for(int i=0;i<=20;i++)
BARKOD_KODU[i]=ilk.BARKOD_KODU[i];
}
}
fclose(kisisel);
if((kisisel=fopen(“Kitap.txt”,”r”))==NULL)
{printf(“DOSYA BULUNAMADI!!..”);}
while(!feof(kisisel))
{
fscanf(kisisel,”%s%s%s%s%d%d%d%d”,&ilk.BARKOD_KODU,&ilk.Kitap,&ilk.Yazar,&ilk.cinsiyet,&ilk.yas,&ilk.gun,&ilk.ay,&ilk.yil);
if(strcmp(BARKOD_KODU,ilk.BARKOD_KODU)==0)
{
strupr(ilk.Kitap);strupr(ilk.Yazar);strupr(ilk.cinsiyet);

printf(“%-11s %-10s%-10s%-s%5d %0.2d%0.2d%0.2d\n\n”,ilk.BARKOD_KODU,ilk.Kitap,ilk.Yazar,ilk.cinsiyet,ilk.yas,ilk.gun,ilk.ay,ilk.yil);
printf(“BARKOD_KODU:”); scanf(“%s”,&gecici.BARKOD_KODU);
printf(“Kitap Adı:”); scanf(“%s”,&gecici.Kitap);
printf(“Yazarı:”); scanf(“%s”,&gecici.Yazar);
printf(“Konusu:”); scanf(“%s”,&gecici.cinsiyet);
printf(“YAS:”); scanf(“%d”,&gecici.yas);
printf(“\n”);
fprintf(temp,”\n%-11s %-20s%-20s%-s%10d %0.2d%0.2d%0.2d”,gecici.BARKOD_KODU,gecici.Kitap,gecici.Yazar,gecici.cinsiyet,gecici.yas,ilk.gun,ilk.ay,ilk.yil);
x=1;
}
else
fprintf(temp,”\n%-11s %-20s%-20s%-s%10d %0.2d%0.2d%0.2d”,ilk.BARKOD_KODU,ilk.Kitap,ilk.Yazar,ilk.cinsiyet,ilk.yas,ilk.gun,ilk.ay,ilk.yil);
}
fclose(kisisel);
fclose(temp);
remove(“Kitap.txt”);
rename(“gecici.txt”,”Kitap.txt”);
if(x==0)
{printf(“BU KAYITTA BILGI BULUNMAMAKTADIR.”);}
system(“CLS”);
printf(“ISLEME DEVAM EDILSINMI?”);
printf(” E / H “);
cev=getche();
}
while(cev==’E’|| cev==’e’);
}
////////////////////////////////////////////////////////////////////////////////
void kayitSil(void)
{
int x=0;
char BARKOD_KODU[20],cev;
FILE *kisisel,*temp;
do{
system(“CLS”);
if((kisisel=fopen(“Kitap.txt”,”r”))==NULL)
{printf(“DOSYA BULUNAMADI!!..”);}
if((temp=fopen(“gecici.txt”,”a”))==NULL)
{printf(“DOSYA BULUNAMADI!!..”);}
printf(“Silmek istediginiz Kitabın BARKOD KODU’sunu giriniz”);
scanf(“%s”,&BARKOD_KODU);
while(feof(kisisel)==0)
{
fscanf(kisisel,”%s%s%s%s%d%d%d%d”,&ilk.BARKOD_KODU,&ilk.Kitap,&ilk.Yazar,&ilk.cinsiyet,&ilk.yas,&ilk.gun,&ilk.ay,&ilk.yil);
if(strcmp(BARKOD_KODU,ilk.BARKOD_KODU)==0)
{
strupr(ilk.Kitap);strupr(ilk.Yazar);strupr(ilk.cinsiyet);
printf(“%-11s %-10s%-10s%-s%5d %0.2d%0.2d%0.2d\n\n”,ilk.BARKOD_KODU,ilk.Kitap,ilk.Yazar,ilk.cinsiyet,ilk.yas,ilk.gun,ilk.ay,ilk.yil);
printf(“Silmek istediginize emin misiniz?”);
cev=getche();x++;
if (cev==’e’||cev==’E’) ;
else
fprintf(temp,”\n%-11s %-20s%-20s%-s%10d %0.2d%0.2d%0.2d”,ilk.BARKOD_KODU,ilk.Kitap,ilk.Yazar,ilk.cinsiyet,ilk.yas,ilk.gun,ilk.ay,ilk.yil);
}
else
fprintf(temp,”\n%-11s %-20s%-20s%-s%10d %0.2d%0.2d%0.2d”,ilk.BARKOD_KODU,ilk.Kitap,ilk.Yazar,ilk.cinsiyet,ilk.yas,ilk.gun,ilk.ay,ilk.yil);
}
fclose(kisisel);
fclose(temp);
remove(“Kitap.txt”);
rename(“gecici.txt”,”Kitap.txt”);
if(x==0)
printf(“BU KAYITTA BILGI BULUNMAMAKTADIR.”);
else
{x=0;listele();system(“CLS”);}
printf(“ISLEME DEVAM EDILSINMI?”);
printf(” E / H “);
cev=getche();
}
while(cev==’E’|| cev==’e’);
}
////////////////////////////////////////////////////////////////////////////////

void cikis(void)
{
system(“CLS”);

printf(“Bilgileriniz kaydediyor”);
system(“CLS”);
printf(” Program kapatiliyor “);

}

 

şeklinde işlemlerimizi sağlayacak metodları yazıyoruz.

 

.cpp uzantılı dosya oluşturmak için  Kutuphaneotomasyonu.cpp adlı bir dosya oluşturup ;

 

#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<locale.h>
#include “kutuphane.h”
void bol()

{
for(int i=0;i<60;i++)
printf(“*”);
}

int main()
{
system(“COLOR 1f”);
setlocale(LC_ALL,”Turkish”);

char cev,secim,secim_sol,secim_sag,secim_3;
do{
F:
system(“CLS”);
bol();
printf(” KUTUPHANE OTOMASYON SISTEMI \n”);
bol();
printf(” 1-KAYIT MENU \n “);
printf(” 2-CIKIS \n “);
printf(” SECIMINIZ ? \n”);
bol();
secim=getche();
switch(secim)
{
case ‘1’:
system(“CLS”);
printf(“\nKAYIT MENU\n”);
printf(“1-KAYIT EKLE\n”);
printf(“2-KAYIT LISTE\n”);
printf(“3-KAYIT ARAMA\n”);
printf(“4-KAYIT GUNCEL\n”);
printf(“5-KAYIT SIL\n”);
printf(“0-ANA MENU\n”);
printf(“SECIMINIZ ?\n”);
secim_sol=getche();
switch(secim_sol)
{

case ‘1’: yeniKayit(); system(“CLS”);break;
case ‘2’: listele(); system(“CLS”);break;
case ‘3’: arama(); system(“CLS”);break;
case ‘4’: guncel(); system(“CLS”);break;
case ‘5’: kayitSil(); system(“CLS”);break;
case ‘0’: goto F;
}
break;

case ‘2’:
cikis();
exit(0);
default :
goto F;
}
system(“CLS”);
printf(“ANA MENUDEN DEVAM EDILSIN MI?”);
printf(” E / H “);
cev=getche();
}
while(cev==’E’|| cev==’e’);
}

 

yazıyoruz.

Çıkan ekranda rastgele bir kaç deneme yapalım.

  • Derleyip çalıştıralım

oguzaltuntas_kutuphane

 

  • Açılış ekranında

oguzaltuntas_oguzaltuntas

  • 1’e  tuşlayalım.

oguzaltuntas_oguzaltuntas_1

 

  • Kayıt bulalım var olan kaydı görüyor mu bakalım

oguzaltuntas_oguzaltuntas

  • Kayıt silelim

oguz2oguzaltuntas

Sağlıcakla.

Oğuz ALTUNTAŞ © 2017

error: Oğuz ALTUNTAŞ © 2020