PDA

Tam Sürümünü Görmek İçin : ödev için text dosyalama


sinan_88
13/03/2008, 22:47
1) Bir sınıftaki öğrencilerin “adı,soyadı,numarası,vize notu ve final notu” dosyada tutulmak isteniyor. Buna göre program çalıştığında
a-Kayıt ekleme
b-Kayıt bulma (isim ve numaraya göre)
c- Kayıt silme (numaraya göre
d- Bilgi değiştirme
e- Listeleme
seçenekleri bulunacaktır. Programı text dosyalama kullanarak yazınız
Bu soruyu nasıl yapabilirim.Yol gösterir misiniz?Teşekkürler.


Qonyali
13/03/2008, 22:55
sen neler yaptin ne kadar bilgin var direk soruyu yazma yerine takildigin yeri sorsan yardimci olmaya calisiriz.. yoksa burda tutupta ödev yapamayiz ki..

garalo
14/03/2008, 17:42
banada bunun txt dosyasina degil xml dosyasina kayitli olanindan lazim. Kendi capimda bir seyler yapmaya calsiyorum bitince gonderirim:iih: ayrica bir sey bulabilirsen haber ver... Paylasalim.

sinan_88
14/03/2008, 18:34
tabiki paylaşırım.

sinan_88
20/03/2008, 00:10
Yarına kadar yapmam gerekiyor.Üzerinde çalıştım. Kayıt okuma ve kayıtlama çalıyor.Ancak diğerlerinde sorun yaşıyorum.
ve bunlara nasıl ana menü yapabilirim.Teşekkürler.

kayıt ekleme
--------------------------
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{


char ad[10];
char soyad[10];
int no;
int vize,final;

FILE *okul;
clrscr();
okul=fopen("ogrenci.dat","a");


do {

printf(" adi giriniz\n"); scanf("%s",&ad);
printf("soyadi giriniz\n"); scanf("%s",&soyad);
printf("numaray giriniz\n"); scanf("%d",&no);
printf("vizeyi gir\n"); scanf("%d",&vize);
printf("finali gir\n"); scanf("%d",&final);
fprintf(okul," %s %s %d %d %d",ad,soyad,no,vize,final);
printf("\n devam edecek misin (e/h)");

cvp=getche();

} while(cvp!= 'h');
printf("\n kaytlar girildi");

getch();
}

kayıtı okuma
----------------------
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
char ad[10];
char soyad[10];
int no;
int vize,final;

FILE *okul;
clrscr();
okul=fopen("ogrenci.dat","r");
while(fscanf(okul,"%s %s %d %d %d",&ad,&soyad,&no,&vize,&final)!=EOF)
printf("%s\n %s\n %d\n %d\n %d\n",ad,soyad,no, &vize,&final);
printf("liste sonu");
getch();
fclose(okul);
}

kayıt düzeltme
-----------------------
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
char ad[10];
char soyad[10];
int no,numara;
int vize,final;

FILE *okul,*dosya1;
clrscr();
okul=fopen("ogrenci.dat","r");
dosya1=fopen("yedek.dat","w");
printf("dzeltilecek ogrecinin nosu\t");
scanf("%d",&numara);
while(feof(okul)==0)
{
fscanf(okul,"%s %s %d %d %d",&ad,&soyad,&no,&vize,&final);
if(no==numara)
{
printf("yeni isim...");scanf("%s",&ad);
printf("yeni soyad....");scanf("%s",&soyad);
printf("yeni no....");scanf("%d",&no);
printf("yeni vize notu...); scanf(%d",&vize);
printf("yeni final notu...); scanf(%d",&final);

}
else
fprintf(dosya1,"%s %s %d %d %d\n",ad,soyad,no,vize,final);
}
fcloseall();
remove("ogrenci.dat");
rename("yedek.dat","ogrenci.dat");
getch();
}


kayıt silme
-------------------------
#include<conio.h>
#include<string.h>
#include<stdio.h>
FILE *okul;
FILE *dosya;


char ad[10];
char soyad[10];
int no;
int vize,final,numara;
main()
{
clrscr();
okul=fopen("ogrenci.dat","a");

dosya=fopen("yedek.dat","w");
printf("silinecek noyu giriniz\n");
scanf("%d",&numara);


while(feof(okul)==0)
{
fscanf(okul,"%s %s %s %d %d ",&ad,&soyad,&no,&vize,&final);
if(no==numara)
continue;
else

fprintf(dosya,"%s %s %s %d %d",&ad,&soyad,&no,&vize,&final);
}
fcloseall();
remove("ogrenci.dat");
rename("yedek.dat","ogrenci.dat");

getch();

kayıt listeleme
-----------------------
#include<stdio.h>
#include<conio.h>
#include<string.h>


char ad[10];
char soyad[10];
int no;
int vize,final,devam;
FILE *okul;
main()

{
devam='E';
clrscr();
okul=fopen("ogrenci.dat","r");
while(feof(okul)==0)
{
fscanf(okul,"%s %s %d %d %d",&ad,&soyad,&no,&vize,&final);
printf("%s %s %d %d %d\n",ad,soyad,no,vize,final);
}
fclose(okul);
getch();
}

acehreli
20/03/2008, 01:15
Butun o programlari kucuk fonksiyonlar haline getirerek tek bir programda toplaman gerekiyor. Ondan sonra bir menu gostereceksin, ve yapilan secime bagli olarak dogru islemi cagiracaksin:


switch (secim)
{
case 'E':
ekleme_fonksiyonu(/* ... */);
break;

case 'S':
silme_fonksiyonu(/* ... */);
break;

/* vs. */


Ama daha onemlisi, ogrenciler uzerinde islem yapabilmek icin oncelikle Ogrenci gibi bir yapi cok isine yarayacak. Bu veriyi zaten bir cok yerde birbirinden kopuk olarak yaziyorsun. O veriyi bir struct'ta birlestir:

struct Ogrenci
{
char ad[10];
char soyad[10];
int no;
int vize;
int final;
int devam;
};

Simdi iki tane fonksiyon yaz:

int Ogrenci_yaz(FILE * dosya, Ogrenci * ogrenci);
int Ogrenci_oku(FILE * dosya, Ogrenci * ogrenci);

Menuyu kullaniciya gostermeden once, dosyadaki butun ogrencileri okuyup bir diziye almani oneririm. Butun islemleri bu dizide yaptiktan sonra, butun ogrencileri tekrar bastan dosyaya yazarsin.

Cok kisa zamanin kalmis ama hic olmazsa menuyu gosterme isini halledebilirsin.

Ali