PDA

Tam Sürümünü Görmek İçin : C'de Mp3 Takip Programı !!!


FecriAti
27/05/2008, 15:58
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
int sayac=0;

FILE *dg, *dg2;

struct arsiv{
int yil;
char album[40],sanatci[40],tarz[15];
}arsiv;


char anamenu()
{
char a;
system("cls");
system("color 80");
printf("\t------------------------------\n");
printf("\t-------------MENU-------------\n");
printf("\t------------------------------\n");
printf("\t-- 1. Dosya olustur --\n");
printf("\t-- 2. Kayit --\n");
printf("\t-- 3. Liste --\n");
printf("\t-- 4. Arama --\n");
printf("\t-- 5. Duzeltme --\n");
printf("\t-- 6. Silme --\n");
printf("\t-- 7. Imha --\n");
printf("\t-- Esc. Cikis --\n");
printf("\t------------------------------\n");
printf("\t-------Kaset-CD-Arsivi--------\n");
printf("\t-----M-u-s-a&T-u-r-k-e-r------\n\n");
printf("Lutfen seciminizi yapiniz: ");
a=getch();
printf("%c\n",a);

return a;}

/*------------------------------------------------*/

void dosyaolustur(){
if(dg=fopen("arsiv.dat","wb"))
{printf("Dosya olusturuldu . . .\n");
fclose(dg);}
else
printf("Dosya olusturulurken bir hata olustu!!!\n");
}

/*------------------------------------------------*/

char bosluk(char *metin)
{ int i=0,z=0;
while (metin[z]!='\0')
{metin[z]=tolower(metin[z]);
z++;}

while (metin[i]!='\0')
{
if(metin[i]=='_' || metin[i]=='-')
metin[i]=' ';
if(metin[i]==' ' && metin[i+1]!=' ')
metin[i+1]=toupper(metin[i+1]);
i++;
}
metin[0]=toupper(metin[0]);
}

/*------------------------------------------------*/

void bilgioku()
{

printf("Sanatci ismi girin: ");
scanf("%s",&arsiv.sanatci);
bosluk(arsiv.sanatci);

printf("Album ismi girin: ");
scanf("%s",&arsiv.album);
bosluk(arsiv.album);

printf("Album tarzi girin: ");
scanf("%s",&arsiv.tarz);
bosluk(arsiv.tarz);

printf("Album yili girin: ");
scanf("%d",&arsiv.yil);

}



void kayit()
{bilgioku();
dg=fopen("arsiv.dat","ab");
fwrite(&arsiv,sizeof(arsiv),1,dg);
fclose(dg);

}


/*----------------LİSTE BASLANGIC------------------*/

void liste()
{int n=0;
system("cls");
system("color f4");
if(dg=fopen("arsiv.dat","rb"))
{fread(&arsiv,sizeof(arsiv),1,dg);
while(!feof(dg))
{printf("======================================\n");
printf("Kayit no: %d\nSanatci: %s\nAlbum: %s\nTarz: %s\nYil: %d \n",n+1,arsiv.sanatci,arsiv.album,arsiv.tarz,arsiv.yi l);
printf("======================================\n");
fread(&arsiv,sizeof(arsiv),1,dg);
n++;
}
if(n!=0)
{
printf(" Toplam %d adet kayit bulundu.\n",n);
printf("======================================\n");}
else
{printf("Listelencek kayit bulunamadi.\n",n);}

fclose(dg);}
else
{printf("Kayit dosyasi acilamadi!!!\n");}
}
/*-----------------LİSTE SON---------------------*/


/*--------------ARAMA BASLANGIC------------------*/

void metinbul(char *metin)
{char a,adi[40],g;
int k=0,n=0,bayrak=0;
dg=fopen("arsiv.dat","rb");
printf("Lutfen aranacak kelimeyi giriniz: ");
scanf("%s",&adi);
bosluk(adi);
fseek(dg,k*sizeof(arsiv),0);
fread(&arsiv,sizeof(arsiv),1,dg);

while(!feof(dg))
{ if(!strcmp(adi,metin))
{printf("Kayit no: %d\nSanatci: %s\nAlbum: %s\nTarz: %s\nYil: %d \n",n+1,arsiv.sanatci,arsiv.album,arsiv.tarz,arsiv.yi l);
printf("Aradiginiz kayit bu mu? (E/H): ");
g=getch();
putch(g);
printf("\n");
if(g=='e' || g=='E')
{bayrak=1;
break;}}
fseek(dg,k*sizeof(arsiv),1);
fread(&arsiv,sizeof(arsiv),1,dg);
n++;
}
if(bayrak==0)
printf("Aradiginiz kayit bulunamadi!!!\n");
fclose(dg);
}


void yilbul(int yil)
{char a,g;
int k=0,n=0,bayrak=0;
dg=fopen("arsiv.dat","rb");
printf("Lutfen aranacak yili giriniz: ");
scanf("%d",&yil);
fseek(dg,k*sizeof(arsiv),0);
fread(&arsiv,sizeof(arsiv),1,dg);

while(!feof(dg))
{ if(yil==arsiv.yil)
{printf("Kayit no: %d\nSanatci: %s\nAlbum: %s\nTarz: %s\nYil: %d \n",n+1,arsiv.sanatci,arsiv.album,arsiv.tarz,arsiv.yi l);
printf("Aradiginiz kayit bu mu? (E/H): ");
g=getch();
putch(g);
printf("\n");
if(g=='e' || g=='E')
{bayrak=1;
break;}}
fseek(dg,k*sizeof(arsiv),1);
fread(&arsiv,sizeof(arsiv),1,dg);
n++;
}
if(bayrak==0)
printf("Aradiginiz kayit bulunamadi!!!\n");
fclose(dg);
}


char bulmenu()
{ char tus;
system("cls");
system("color 4f");
printf("\t----------------------------------\n");
printf("\t-----------ARAMA-MENUSU-----------\n");
printf("\t----------------------------------\n");
printf("\t-- 1. Sanatci adina gore bul --\n");
printf("\t-- 2. Album adina gore bul --\n");
printf("\t-- 3. Album tarzina gore bul --\n");
printf("\t-- 4. Album yilina gore bul --\n");
printf("\t-- Esc. Ana menuye don --\n");
printf("\t----------------------------------\n");
printf("\t----------------------------------\n");
printf("\t----------------------------------\n\n");
printf("Lutfen seciminizi yapiniz: ");
tus=getch();
printf("%c\n",tus);
return tus;
}


void bulma()
{char menu;
while(menu!=27)
{menu=bulmenu();
switch(menu)
{
case '1':
metinbul(arsiv.sanatci);
system("pause");
break;
case '2':
metinbul(arsiv.album);
system("pause");
break;
case '3':
metinbul(arsiv.tarz);
system("pause");
break;
case '4':
yilbul(arsiv.yil);
system("pause");
break;
case 27:
break;
default:
printf("Yanlis secim yaptiniz. Lutfen tekrar secim yapin . . .\n");
system("pause");
}
}
}

/*------------------ARAMA SON-----------------*/




/*-----------DUZELTME BASLANGIC------------------*/


char menuiki()
{char tus;

printf("Neyi duzeltmek istersiniz ?\n");
printf("1. Sanatci adi\n");
printf("2. Album adi\n");
printf("3. Tarz\n");
printf("4. Album cikisi yili\n");
printf("Secim: ");
tus=getch();
putch(tus);
}

void menuduzeltiki()
{ char menu;

menu=menuiki();
switch(menu)
{case '1':
printf("\nLutfen yeni sanatci ismini giriniz: ");
scanf("%s",&arsiv.sanatci);
bosluk(arsiv.sanatci);
fseek(dg,sayac*sizeof(arsiv),0);
fwrite(&arsiv,sizeof(arsiv),1,dg);
sayac=0;
break;
case '2':
printf("\nLutfen yeni album ismini giriniz: ");
scanf("%s",&arsiv.album);
bosluk(arsiv.album);
fseek(dg,sayac*sizeof(arsiv),0);
fwrite(&arsiv,sizeof(arsiv),1,dg);
sayac=0;
break;
case '3':
printf("\nLutfen yeni tarz ismini giriniz: ");
scanf("%s",&arsiv.tarz);
bosluk(arsiv.tarz);
fseek(dg,sayac*sizeof(arsiv),0);
fwrite(&arsiv,sizeof(arsiv),1,dg);
sayac=0;
break;
case '4':
printf("\nLutfen yeni yili giriniz: ");
scanf("%d",&arsiv.yil);
fseek(dg,sayac*sizeof(arsiv),0);
fwrite(&arsiv,sizeof(arsiv),1,dg);
sayac=0;
break;
default:
printf("Yanlis secim yaptiniz. Lutfen tekrar secim yapin . . .\n"); }
system("pause");


}

void duzelt(char *arama)
{
char adi[40],g;
int k=0,bayrak=0;
dg=fopen("arsiv.dat","r+b");
scanf("%s",&adi);
bosluk(adi);
fseek(dg,k*sizeof(arsiv),0);
fread(&arsiv,sizeof(arsiv),1,dg);

while(!feof(dg))
{ if(!strcmp(adi,arama))
{printf("Kayit no: %d\nSanatci: %s\nAlbum: %s\nTarz: %s\nYil: %d \n",sayac+1,arsiv.sanatci,arsiv.album,arsiv.tarz,arsi v.yil);
printf("Aradiginiz kayit bu mu? (E/H): ");
g=getch();
putch(g);
printf("\n");
if(g=='e' || g=='E')
{bayrak=1;
break;}}
fseek(dg,k*sizeof(arsiv),1);
fread(&arsiv,sizeof(arsiv),1,dg);
sayac++;
}
if(bayrak==0)
printf("Aradiginiz kayit bulunamadi!!!\n");
else{
menuduzeltiki();
}
fclose(dg);
}

char menuilk()
{ char tus;
system("cls");
system("color fc");
printf("\t----------KAYIT-DUZELTME----------\n");
printf("\t-----------ARAMA-MENUSU-----------\n");
printf("\t----------------------------------\n");
printf("\t-- 1. Sanatci adina gore bul --\n");
printf("\t-- 2. Album adina gore bul --\n");
printf("\t-- 3. Album tarzina gore bul --\n");
printf("\t-- Esc. Ana menuye don --\n");
printf("\t----------------------------------\n");
printf("\t----------------------------------\n");
printf("\t----------------------------------\n\n");
printf("Secim: ");
tus=getch();
putch(tus);

}
void menuduzelt()
{ char menu;
while(menu!=27)
{
menu=menuilk();
switch(menu)
{case '1':
printf("\nLutfen aranacak sanatci ismini giriniz: ");
duzelt(arsiv.sanatci);
sayac=0;
system("pause");
break;
case '2':
printf("\nLutfen album ismini giriniz: ");
duzelt(arsiv.album);
sayac=0;
system("pause");
break;
case '3':
printf("\nLutfen tarz ismini giriniz: ");
duzelt(arsiv.tarz);
sayac=0;
system("pause");
break;
case 27: break;
default:
printf("\nYanlis secim yaptiniz. Lutfen tekrar secim yapin . . .\n");
system("pause");
} }
}
/*--------------DUZELTME SON------------------*/




/*--------------SİLME BAŞLANGIÇ------------------*/

void silYENI(char *sil)
{
char g,adi[40];
int a=0,yer=0;
scanf("%s",&adi);
bosluk(adi);
dg=fopen("arsiv.dat","r+b");
dg2=fopen("yedek.dat","wb");

fseek(dg,a*sizeof(arsiv),0);
fread(&arsiv,sizeof(arsiv),1,dg);
while(!feof(dg))
{if(!strcmp(adi,sil))
{printf("Kayit no: %d\nSanatci: %s\nAlbum: %s\nTarz: %s\nYil: %d \n",yer+1,arsiv.sanatci,arsiv.album,arsiv.tarz,arsiv. yil);
printf("Bu kaydi silmek ister misiniz? (E/H): ");
g=getch();
putch(g);
printf("\n");
if(g=='e' || g=='E')
{fseek(dg,a*sizeof(arsiv),1);
fread(&arsiv,sizeof(arsiv),1,dg);
continue;}

}
fwrite(&arsiv,sizeof(arsiv),1,dg2);
fseek(dg,a*sizeof(arsiv),1);
fread(&arsiv,sizeof(arsiv),1,dg);
yer++;
}
fclose(dg);
fclose(dg2);

dg=fopen("arsiv.dat","wb");
dg2=fopen("yedek.dat","rb");
fread(&arsiv,sizeof(arsiv),1,dg2);
while(!feof(dg2))
{
fwrite(&arsiv,sizeof(arsiv),1,dg);
fread(&arsiv,sizeof(arsiv),1,dg2);
}
fclose(dg);
fclose(dg2);
remove("yedek.dat");
}


char silmenuara()
{ char tus;
system("cls");
system("color 1f");
printf("\t--------------KAYIT-SILME----------------\n");
printf("\t--------------ARAMA-MENUSU---------------\n");
printf("\t-----------------------------------------\n");
printf("\t-- 1. Sanatci adina gore bul ve sil --\n");
printf("\t-- 2. Album adina gore bul ve sil --\n");
printf("\t-- 3. Album tarzina gore bul ve sil --\n");
printf("\t-- Esc. Ana menuye don --\n");
printf("\t-----------------------------------------\n");
printf("\t-----------------------------------------\n");
printf("\t-----------------------------------------\n\n");
printf("Secim: ");
tus=getch();
putch(tus);

}
void menuSIL()
{ char menu;
while(menu!=27)
{
menu=silmenuara();
switch(menu)
{case '1':
printf("\nLutfen aranacak sanatci ismini giriniz: ");
silYENI(arsiv.sanatci);system("pause");

break;
case '2':
printf("\nLutfen aranacak album ismini giriniz: ");
silYENI(arsiv.album);system("pause");
break;
case '3':
printf("\nLutfen aranacak tarzi giriniz: ");
silYENI(arsiv.tarz);system("pause");
break;

case 27:

break;
default:
printf("\nYanlis secim yaptiniz. Lutfen tekrar secim yapin . . .\n");
system("pause");
} }
}
/*--------------SİLME SON------------------*/


/*-----------------İMHA BASLANGIC------------------*/
void imha()
{
char a;
if(dg=fopen("arsiv.dat","r"))
{
printf("Kayit dosyasini silmek isteginizden emin misiniz?(E/H): ");
a=getch();
putch(a);
if(a=='E' || a=='e')
{fclose(dg);
remove("arsiv.dat");
printf("\n%s, imha edildi!!!\n","arsiv.dat");}
else
printf("\nKayit dosyasi silinmedi . . .\n");
}
else
{printf("Dosya yok ya da zaten silinmis . . .\n");}
}
/*-------------------İMHA SON----------------------*/

int main()
{char menu;

while(menu!=27){
menu=anamenu();
switch(menu){
case '1':
dosyaolustur();
break;
case '2':
kayit();
break;
case '3':
liste();
break;
case '4':
bulma();
break;
case '5':
menuduzelt();
break;
case '6':
menuSIL();
break;
case '7':
imha();
break;
case 27:
return 0;
default:
printf("Yanlis secim yaptiniz. Lutfen tekrar secim yapin . . .\n");
}
system("pause");}
}


FecriAti
27/05/2008, 18:21
daha yeniyim arkadaslar cok fazla detaylı dusunmeyelim lütfen.

cgtykynk
06/07/2008, 16:46
gayet güzel ben de yeni başladım ama bu kadar detaylı bir şey yazamıyorum daha tebrikler

cyasinc
09/07/2008, 19:59
Programın çok güzel.Bende yeni sayılırım programlamada .Bende yazdığın bu program ayarında şeyler yapabiliyorum .Nerden aklına geldi böyle bir program yazmak?
Başka yapmayı düşündüğün program fikirlerini paylaşabilirmisin acaba,eğer varsa?Bende birşeyler yapmak istiyorum ama aklıma birşey gelmiyor.
Çalışmalarında başarılar

acehreli
09/07/2008, 21:27
Bu program herhalde daha da degismistir :) ama bir kac sey goruyorum:

1) Global nesne kullanmak yerine onlari fonksiyonlara parametre olarak gecirmek daha rahat olur. (dg, dg2, arsiv.) Yoksa o tek 'arsiv' nesnesinin daha isi bitmeden ustune yazma gibi hatalar olusabilir.

2) scanf'le okurken daha dikkatli olmakta yarar var; yoksa bize ait olmayan yerlere yazabiliriz.

Bir cozum olarak ornegin scanf("%s",&arsiv.sanatci)'da %s yerine %39s yazmaliyiz.

3) Nesnelere hep ilk degerlerini vermek gerek. Yoksa ornegin su kodda 'menu'nun degeri tesadufen 27 olarak baslarsa 'while'a hic girememe sorunu ortaya cikabilir:

void menuduzelt()
{ char menu;
while(menu!=27)


4) dosyaolustur() da imha() kadar tehlikeli bir islem oldugu icin belki onda da uyarmak iyi olur.

Ali

ceycey60
15/07/2008, 03:36
güzel,tebrikler

kasif
16/07/2008, 17:28
Örnek bir uygulama olması açısından güzel, umarım daha ileri versiyonlarınıda burada görürüz