#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#define YapiBoyutu sizeof(struct kayitYapisi)
struct kayitYapisi{
char isim[30];
char soyisim[40];
char numara[15];
char doluMu;
};
char anaMenu(void);
void kayitEkle(FILE*);
void kayitSil(FILE*);
void kayitListele(FILE*);
int main()
{
FILE *dosya;
int i;
struct kayitYapisi insan={"","","",'H'};
char karar;
if((dosya=fopen("dosyam.txt","r+"))==NULL)
{
dosya=fopen("dosyam.txt","w+");
fclose(dosya);
dosya=fopen("dosyam.txt","r+");
printf("DOSYA OLUSTURULDU"); getch();
for(i=0;i<30;i++)
{
fseek(dosya,i*YapiBoyutu,SEEK_SET);
fwrite(&insan,YapiBoyutu,1,dosya);
}
}
while(1==1)
{
karar=anaMenu();
switch (karar)
{
case '1': kayitEkle(dosya); break;
case '2': kayitListele(dosya); break;
case '3': kayitSil(dosya); break;
case '4': fclose(dosya); return;
}
}
}
void kayitEkle(FILE *dosya)
{
int i;
struct kayitYapisi insan;
for(i=0;i<30;i++)
{
fseek(dosya,i*YapiBoyutu,SEEK_SET);
fread(&insan,YapiBoyutu,1,dosya);
if(insan.doluMu=='H')
{
printf("\n\tIsim Giriniz: ");
scanf("%s",&insan.isim);
printf("\n\tSoyisim Giriniz: ");
scanf("%s",&insan.soyisim);
printf("\n\tNumara Giriniz: ");
scanf("%s",&insan.numara);
insan.doluMu='E';
fseek(dosya,i*YapiBoyutu,SEEK_SET);
fwrite(&insan,YapiBoyutu,1,dosya);
printf("\n\n\tKayit Eklendi...");
getch();
return;
}
}
}
void kayitSil(FILE *dosya)
{
char tus,eminMi;
int i;
char isim[20];
char numara[15];
int silinecek=-1;
struct kayitYapisi insan={"","","",'H'};
printf("\n\t(1) Isme gore sil");
printf("\n\t(2) Numaraya gore sil");
do{
tus=getch();
}while(tus!='1'&&tus!='2');
switch (tus)
{
case '1': printf("\n\tSilmek istediginiz kisinin ismini giriniz :");
scanf("%s",&isim);
break;
case '2': printf("\n\tSilmek istediginiz kisinin numarasini giriniz :");
scanf("%s",&numara);
break;
}
for(i=0;i<30;i++)
{
silinecek=-1;
fseek(dosya,i*YapiBoyutu,SEEK_SET);
fread(&insan,YapiBoyutu,1,dosya);
if(insan.doluMu=='E')
{
if(tus=='1'&&strcmp(isim,insan.isim)==0) //isme göre aranıyor ise
silinecek=i;
else if(tus=='2'&&strcmp(numara,insan.numara)==0)
silinecek=i;
}
if(silinecek!=-1)
{
printf("\n\tIsim: %s\n\tSoyisim: %s\n\tNumara: %s",insan.isim,insan.soyisim,insan.numara);
printf("\n\n\t\tBu kayidi silmek istediginize emin misiniz ? (E / H)");
do{
eminMi=getch();
eminMi=toupper(eminMi);
}while(eminMi!='E'&&eminMi!='H');
if (eminMi=='E')
{
insan.doluMu='H';
fseek(dosya,i*YapiBoyutu,SEEK_SET);
fwrite(&insan,YapiBoyutu,1,dosya);
printf("\n\tKayit Silindi..");
}
else if(eminMi='H')
printf("\n\tSilme isleminden vazgecildi");
getch();
return;
}
}
printf("\n\t\tKayit Bulunamadi..");
getch();
return;
}
void kayitListele(FILE *dosya)
{
struct kayitYapisi insan={"","","",'H'};
int i;
system("cls");
printf("%10s%20s%20s","Isim","Soyisim","Numara");
for(i=0;i<30;i++)
{
fseek(dosya,i*YapiBoyutu,SEEK_SET);
fread(&insan,YapiBoyutu,1,dosya);
if(insan.doluMu=='E')
{
printf("\n%10s%20s%20s",insan.isim,insan.soyisim,insan.numara);
}
}
getch();
}
char anaMenu()
{
char tus;
system("cls");
puts("\t Ana Menu");
puts("\n\n\t(1) Kayit Ekle");
puts("\n\t(2) Kayitlari Listele");
puts("\n\t(3) Kayit Sil");
puts("\n\t(4) Cikis");
do{
tus=getch();
}while(tus<'1'||tus>'4');
return tus;
}
3 Haziran 2010 Perşembe
(Dosyalama + Struct) Bilgi Sistemi
Kaydol:
Kayıt Yorumları (Atom)
Eline saglık ama bu aşırı profesyonel kardeşim :D
YanıtlaSilC de ikilik tabandan onaltilik tabana çevirmeyı nasıl yapabilirim.yardımcı olurmusunuz
YanıtlaSil