C++ Örneği : Eczane Programı

#include <stdio.h> 
// stdio.h = Açılımı "standart input output" olan bu kütüphane 
// adından da anlaşılabileceği gibi giriş çıkış fonksiyonlarını
//  barınırır. Örneğin klavyeden girilen veriyi okumak için 
// gerekli olan fonksiyon scanf() ve ekrana yazdırma fonksiyonu 
// olan printf() birer giriş çıkış fonksiyonudur. stdlib.h kütüphanesi 
// olmadan bu fonksiyonları kullanamayız.
#include <stdlib.h> 
// matematiksel işlemler için kullanılmaktadır ancak kütüphanesi math.h dan farklıdır
#include <conio.h> 
// conio.h = stdio h ile birlikte kullanılarak, 
// birazcık daha ileri düzeyde io kontrolü sağlayan kütüphane dosyası.
#include <string.h> 
// string.h = c'nin string ile ilgili fonksiyonlarını barındıran kütüphane. 
// strlen, strstr, strcopy ve daha niceleri bu kütüphanemizde yer almaktadır. 

// veri dosyası aynı rootta olmalı
typedef struct _veri{ 
char  name[20]; 
char firma[20]; 
int adet; 
int no; 
int fiyat; 
int  flag; 
}DATA; 
DATA veri;//global struct 

FILE *f;//dosya için  gösrerici 
int  menu(void);//fonksiyon deklarasyonları
void ekle(void);  
void listele(void); 
void ara(void); 
void sat(); 
void ilave(void); 
void duzelt(void); 
void siparis_listesi(void);// 
void start(void); 
void nodan_bul(); 
void yildiz(void)//kısa fonksiyon  tanımları 
{ 
for(int i=0;i<79;i++) 
// putchar : standart bir C fonksiyonudur. Bütün sistemlerde bulunması zorunludur. 
// Parametresi olan karakteri ekranda imlecin bulunduğu yere yazar
putchar('*');  
putchar('n'); 
} 
void miktar(DATA *)//kısa fonksiyon tanımı 
{  
int a; 

a=veri.adet; 
if(a>=200) 
printf("%d  yeterli",a);  
else if(a>=100) 
printf("%d  siparis listesine alindi",a); 
else  if(a>=1) 
printf("%d stok durumu kritik",a); 
else if(a==0)  
printf("stok tukenmis durumda"); 
putchar('n'); 
}  



void ekle(void)//yeni ilac ekleme fonksiyonu 
{  
if((f=fopen("file","a+"))==NULL) 
{ 
printf("DOSYA ACMADA HATA!!!!");  
exit(1); 
} 

printf("ilac adini giriniz : "); 
// fflush = giriş çıkış işlemlerinde akış yazmak için çıktı tamponunda 
// yazılı olmayan herhangi bir veriyi dosyasa yazmada kullanılır.
fflush(stdin);  
// fflush normalde herhangi bir dosya işlemi sırasında klavyeden alınarak 
// tampona yüklenmiş girdileri kendisine parametre olarak verilen FILE* 
// türünden işaretçi ile ilişkili olan dosyaya yazar ve klavyeden alınmış 
// bilgileri tampondan siler. Biz bu fonksiyona parametre olarak stdin (standart input) 
// değerini verirsek fonksiyon sadece tamponu boşaltır, yani tampondaki verileri 
// hiç bir yere yazmaz. stdin varsayılan olarak klavyeyi gösteren bir FILE işaretçisidir.
scanf("%s",&veri.name); 
printf("firma adini giriniz : ");  
scanf("%s",&veri.firma); 
printf("ilac nosunu girinn");  
scanf("%d",&veri.no); 
printf("ilac fiyatini girinn");  
scanf("%d",&veri.fiyat); 
printf("adeti giriniz : ");  
scanf("%d",&veri.adet); 

fwrite(&veri, sizeof(DATA), 1, f);  // fwrite = yazma islemi
fclose(f); 
} 


void listele(void)//listeleme fonksiyonu 
{  
if((f=fopen("file","r"))==NULL) // dosyayi okuyamazsa hata verir
{ 
printf("DOSYA ACMADA HATA!!!!");  
exit(1); 
} 

putchar('n'); 
fseek(f, 0L, SEEK_SET); 
// fseek = Pozisyon göstergesi, kökeni tarafından belirlenen bir referans 
// konumuna ofset ekleyerek tanımlanan yeni bir konuma akış ile ilgili ayarlar.
while  (fread(&veri, sizeof(DATA), 1, f) > 0) 
{ 
yildiz();  
printf("urun kodu:%dn",veri.no); 
printf("urun adi:%sn",veri.name);  
printf("uretici firma:(%s)n",veri.firma); 
printf("urun fiyati=%d  YTLn",veri.fiyat); 
printf("urun miktari="); 
miktar(&veri);  

} 
putchar('nn'); 
yildiz(); 
fclose(f); 
} 
void  ara(void) //dosya içinde ilac arama fonksiyonu 
{  
if((f=fopen("file","r"))==NULL) // dosyayi okuyamazsa hata verir
{ 
printf("DOSYA ACMADA HATA!!!!");  
exit(1); 
} 

char name[30],kromozom; 

printf("lutfen kayit  ismini giriniz :"); 
fflush(stdin); 
gets(name); 
fseek(f, 0,  SEEK_SET); 
yildiz(); 
while (fread(&veri, sizeof(DATA), 1, f) > 0)  // while ile bi dongu kurduk
{ 

if (!stricmp(veri.name, name)) // arama sonucunu listele
// stricmp = Bu fonksiyon iki yazıyı büyük harf küçük harf ayrımı yapmadan karşılaştırır
{ 
printf("urun  kodu:%dn",veri.no); 
printf("urun adi:%sn",veri.name); 
printf("uretici  firma:(%s)n",veri.firma); 
printf("urun miktari="); 
if(veri.adet==0)  
printf("kalmamis uzgunumn"); 
else 
printf("%dn",veri.adet);  
fclose(f); 
return; 


} 
} 
fclose(f);  
printf("nKayit bulunamadi...nn"); 
printf("nodan aramak isterseniz  *'y'* ye basinn"); 
kromozom= getch(); 
if(kromozom=='y')  
nodan_bul(); 
yildiz(); 
fclose(f); 
} 
void sat(void) // ilac satis alani
{  
int total=0; 
if((f=fopen("file","r+"))==NULL) 
{ 
printf("DOSYA  ACMADA HATA!!!!"); 
exit(1); 
} 
int k=0,miktar=0; 



char  name[30]; 
int ip=0; 
k=1; 
printf(" ilac ismini giriniz :");  
fflush(stdin); 
gets(name); 
fseek(f, 0, SEEK_SET); 
yildiz();  
while (fread(&veri, sizeof(DATA), 1, f) > 0&& k) 
{  

if ((!stricmp(veri.name, name))) 
{ 
printf("urun  kodu:%dn",veri.no); 
printf("ürün miktari="); 
if(veri.adet==0) 
{  
printf("kalmamis uzgunumn"); 
return; 
} 
else 
{ 

do  
{ 
printf("miktar:"); 
scanf("%d",&miktar);  
if(miktar>veri.adet) 
{ 
printf("miktar yeterli degiln");  
printf("kalan miktar=%dn",veri.adet); 
}  
}while(miktar>veri.adet); 
veri.adet-=miktar;  
fseek(f,sizeof(DATA)*(ip),SEEK_SET);  
if(fwrite(&veri,sizeof(DATA),1,f)==1) 
printf("satis tamamn");  
total=veri.fiyat; 
fclose(f); 
printf("odenecek toplam  tutar=%dn",total*miktar); 
return; 

} 


} 

ip=ip+1;  


} 



fclose(f); 

yildiz(); 

}  

void ilave(void) 
{ 
if((f=fopen("file","r+"))==NULL) 
{  
printf("DOSYA ACMADA HATA!!!!"); 
exit(1); 
} 
char name[20];  
int miktar; 
int ip=0,total=0; 
printf(" ilac ismini giriniz :");  
fflush(stdin); 
gets(name); 
fseek(f, 0, SEEK_SET); 
yildiz();  

while (fread(&veri, sizeof(DATA), 1, f) > 0) 
{ 

if  ((!stricmp(veri.name, name))) 
{ 
printf("urun kodu:%dn",veri.no);  
printf("urun miktari=%d",veri.adet); 
if(veri.adet==0) 
{  
printf("kalmamis uzgunumn"); 
return; 
} 
else 
{  


printf(" ilave miktari girin:"); 
scanf("%d",&miktar);  
veri.adet=veri.adet+miktar; 
fseek(f,sizeof(DATA)*(ip),SEEK_SET);  
if(fwrite(&veri,sizeof(DATA),1,f)==1) 
printf("ilave islemi  tamamn"); 
fclose(f); 
printf("odenecek toplam  tutar=%dn",veri.fiyat*miktar); 
return; 

} 


}  

ip=ip+1; 


} 
fclose(f); 
} 
// duzeltmeler
void duzelt(void) 
{  
int ip=0; 
if((f=fopen("file","r+"))==NULL) 
{ 
printf("DOSYA  ACMADA HATA!!!!"); 
exit(1); 
} 

char name[30];  

printf("lutfen duzeltmek istenen kayit ismini giriniz :");  
fflush(stdin); 
gets(name); 
fseek(f, 0, SEEK_SET); 
yildiz();  
while (fread(&veri, sizeof(DATA), 1, f) > 0) // veriyi ismine gore cagir
{ 

if  (!stricmp(veri.name, name)) 
// stricmp = Bu fonksiyon iki yazıyı büyük harf küçük harf ayrımı yapmadan karşılaştırır
{ 
printf("urun kodu:%dn",veri.no);  
printf("urun adi:%sn",veri.name); 
printf("uretici  firma:(%s)n",veri.firma); 
printf("urun miktari="); 
if(veri.adet==0)  
printf("kalmamis uzgunumn"); 
else 
printf("%dn",veri.adet);  
fseek(f,sizeof(DATA)*(ip),SEEK_SET); 
printf("ilac adini giriniz : ");  
fflush(stdin); 
scanf("%s",&veri.name); 
printf("firma adini  giriniz : "); 
scanf("%s",&veri.firma); 
printf("ilac nosunu  girinn"); 
scanf("%d",&veri.no); 
printf("ilac fiyatini girinn");  
scanf("%d",&veri.fiyat); 
printf("adeti giriniz : ");  
scanf("%d",&veri.adet); 
fwrite(&veri, sizeof(DATA), 1, f);  
printf("kayit güncelleme tamamn"); 
fclose(f); 
return; 


}  
ip++; 
} 
printf("nKayit bulunamadi...nn"); 
yildiz();  
fclose(f); 
} 




// siparis listesini burada goruntuluyoruz
void siparis_listesi(void) 
{  
int max_stok; 
printf("lutfen max stok degerini girinn");  
scanf("%d",&max_stok); 
if((f=fopen("file","r"))==NULL) 
{  
printf("DOSYA ACMADA HATA!!!!"); 
exit(1); 
} 
fseek(f, 0,  SEEK_SET); 
yildiz(); 
while (fread(&veri, sizeof(DATA), 1, f) > 0)  
{ 

if (max_stok>veri.adet) 
{ 
printf("urun  kodu:%dn",veri.no); 
printf("urun adi:%sn",veri.name); 
printf("uretici  firma:(%s)n",veri.firma); 
printf("urun miktari=%d",veri.adet);  
printf("alinmasi gereken "); 
printf("****%d**** adet  n",max_stok-veri.adet); 
yildiz(); 


} 
}  


fclose(f); 


} 
void nodan_bul() // ilac no suna gore arama alani
{  
if((f=fopen("file","r"))==NULL) 
{ 
printf("DOSYA ACMADA HATA!!!!");  
exit(1); 
} 

int s_no; 

printf("lutfen kayit nosunu giriniz  :"); 
fflush(stdin); 
scanf("%d",&s_no); 
fseek(f, 0, SEEK_SET);  
yildiz(); 
while (fread(&veri, sizeof(DATA), 1, f) > 0) 
{  

if (veri.no==s_no) 
{ 
printf("urun kodu:%dn",veri.no);  
printf("urun adi:%sn",veri.name); 
printf("uretici  firma:(%s)n",veri.firma); 
printf("urun miktari="); 
if(veri.adet==0)  
printf("kalmamis uzgunumn"); 
else 
printf("%dn",veri.adet);  
fclose(f); 
return; 


} 
} 
printf("nKayit  bulunamadi...nn"); 
yildiz(); 
fclose(f); 
} 
// main alani basliyor
void main()  
{ 

int option; 
start(); 
for (;;) { 
option = menu();  
switch (option) { 
case 1   : ekle(); break; 
case 2  : listele();  break; 
case 3  : ara(); break; 
case 4   : sat(); break; 
case 5  :  ilave(); break; 
case 6 : duzelt(); break; 
case 7:  siparis_listesi();break; 
case 8:system("cls");break; 
case 9: exit(1);  
case 0  : printf("Gecersiz Secenek %c..n",3); 
} 
} 

} 
// menu alani (ustte main alanina bak)
int  menu(void) 
{ 
int sec; 

printf("n1) Yeni Ilac Eklen");  
printf("2) Ilaclari Listelen"); 
printf("3) Ilac Buln"); 
printf("4)  Ilac  satn"); 
printf("5) urun miktari ilavesin"); 
printf("6) Bilgi  guncelle duzeltn"); 
printf("7) siparis listesi hazirlan"); 
printf("8)  Ekrani temizlen"); 
printf("9) kapanisn"); 
printf("nSeciminiz :");  
scanf("%d", &sec); 
if (sec < 0 || sec > 10) 
return 0;  
return sec; 
} 
void start(void) 
{ 
if ((f = fopen("file",  "r+")) == NULL) // oku
if ((f = fopen("file", "w+")) == NULL)  // yaz
{  
printf("veritabani acilamadi!..n"); 
exit(EXIT_FAILURE); 
}  
fclose(f); 
}

One thought to “C++ Örneği : Eczane Programı”

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir