encik pot pet 0 Report post Posted September 8, 2004 kali ni kita akan buat program yang saya rasa agak berguna..bukan setakat utk latihan...saya nak awak buat satu program (kalau taknak buat pun tak kisah) utk menyimpan maklumat peribadi pelajar. 1. Nama2. No student id3. Kursus4. markahmaklumat tersebut hendaklah disimpan dalam satu fail sama ada binary atau textciri2 dbase yang diperlukan,1. saiz fail mestilah dinamik...dimana bergantung kepada saiz data.. jika banyak data dimasukkan.. fail akan jadi besar.2. boleh edit mana2 data.. 3. boleh remove data pelajarfeatures tambahan..(pilihan)1. file data dipadatkan.. awak boleh cari compression algo kat http://www.data-compression.info/2. ada gui..p/s:awak digalakkan mengimplementasi sendiri semua kod Quote Share this post Link to post Share on other sites
akuBest 0 Report post Posted September 29, 2004 A'kum... tader sapa ker nk wat aturcara ni? aku br jer mula td. setakat ni baru siap tambah rekod, carian ngan senarai rekod jer. esok sambung lak... otak pon dah beku, lama tak sentuh bab ni.... aku keliru sket bab saiz fail mesti dinamik tu... mmm Quote Share this post Link to post Share on other sites
akuBest 0 Report post Posted October 1, 2004 a'kum... baru jer siap untuk delete rekod... lepas semayang jumaat lak try sambung... Quote Share this post Link to post Share on other sites
akuBest 0 Report post Posted October 1, 2004 a'kum... ni kod yang aku sempat wat. nak balik kampung malam ni.. yahuuuuuu..... setakat aku test. ok jer, tapi kot ada bug tang mana2, bgtau eikk... nak repair sesikit. gui pon cam hampeh jer... tu jer yg aku mampu wat.... adiosss #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> #include<dos.h> #define faildata "E:\\pelajar"  // fail untuk simpan data #define failsementara "E:\\sementara"  // fail untuk proses delete data struct student { char namapelajar[50];  char idpelajar[5];  char kursus[30];  float markah; }; void menu(void);    //prototaip untuk menu void tambahrekod(void);   //prototaip untuk masuk rekod baru void senarairekod(void);  //prototaip untuk paparkan semua rekod void carirekod(void);    //prototaip untuk mencari rekod void padamrekod(void);   //prototaip untuk padam rekod void kemaskini(void);    //prototaip untuk kemaskini rekod int main(void) { menu(); getch(); } void menu(void) { int pilihan; gotoxy(30, 10); textcolor(5); cprintf("SILA BUAT PILIHAN"); gotoxy(30, 13); cprintf("1 -> MASUK REKOD BARU"); gotoxy(30, 14); cprintf("2 -> SENARAI REKOD"); gotoxy(30, 15); cprintf("3 -> CARIAN REKOD"); gotoxy(30, 16); cprintf("4 -> KEMASKINI REKOD"); gotoxy(30, 17); cprintf("5 -> PADAM REKOD"); gotoxy(30, 18); cprintf("6 -> KELUAR SISTEM"); gotoxy(30, 20); textcolor(7); cprintf("MASUKKAN PILIHAN ANDA : "); scanf("%d", &pilihan); switch(pilihan) {  case 1:  clrscr();       gotoxy(32, 12);       cprintf("SILA TUNGGU.........");       sleep(1);       clrscr();       tambahrekod();   //panggil fungsi tambah rekod       clrscr();       break;  case 2:  clrscr();       gotoxy(32, 12);       cprintf("SILA TUNGGU........");       sleep(1);       clrscr();       senarairekod();     //panggil fungsi paparan rekod       break;  case 3:  clrscr();    gotoxy(32, 12);       cprintf("SILA TUNGGU........");       sleep(1);       carirekod();      //panggil fungsi nak cari rekod       break;  case 4:  clrscr();    gotoxy(32, 12);       cprintf("SILA TUNGGU........");       sleep(1);       kemaskini();      //panggil fungsi nak kemaskini rekod       break;  case 5:  clrscr();    gotoxy(32, 12);       cprintf("SILA TUNGGU........");       sleep(1);       padamrekod();      //panggil fungsi untuk padam rekod       break;  case 6:  exit(1);  default: printf("\nMAAF, PILIHAN ANDA TIDAK DAPAT DIKENALPASTI\n"); } } void tambahrekod(void) { FILE *failpelajar; char pilih; struct student pelajar; do {  failpelajar = fopen(faildata, "ab");  gotoxy(15, 5);  cprintf("Masukkan No ID pelajar  : ");  scanf("%s", pelajar.idpelajar);  fflush(stdin);  gotoxy(15, 6);  cprintf("Masukkan Nama pelajar  : ");  gets(pelajar.namapelajar);  gotoxy(15, 7);  cprintf("Masukkan Kursus pelajar : ");  gets(pelajar.kursus);  gotoxy(15, 8);  cprintf("Masukkan Markah pelajar : ");  scanf("%f", &pelajar.markah);  fflush(stdin);  /*if((failpelajar = fopen(faildata, "wb")) == NULL);  {   printf("Maaf, ralat membuka fail pelajar\n");    getch();    exit(1);  } */  fwrite(&pelajar, sizeof(struct student), 1, failpelajar); //tulis rekod dlm fail  fclose(failpelajar);  gotoxy(30, 12);  cprintf("ANDA INGIN MASUKKAN REKOD LAGI? (y / n) : "); scanf("%c", &pilih);  if(pilih == 'n' || pilih == 'N'){    clrscr();   menu();}  clrscr(); }while(pilih == 'y' || pilih == 'Y'); } void senarairekod(void) { FILE *failpelajar; struct student pelajar; failpelajar = fopen(faildata, "rb"); fread(&pelajar, sizeof(struct student), 1, failpelajar); //baca rekod dalam fail clrscr(); gotoxy(30, 5); textcolor(3); cprintf("SENARAI PELAJAR");         //yang ni untuk output kat skrin nanti printf("\n\t"); printf("--------------------------------------------------------------"); printf("\n%18s %-30s%-15s%-10s\n\t","ID PELAJAR","NAMA", "KURSUS", "MARKAH"); printf("--------------------------------------------------------------"); while(!feof(failpelajar)) {  printf("\n%12s%7s%-30s%-15s%-10.2f", pelajar.idpelajar," ", pelajar.namapelajar, pelajar.kursus, pelajar.markah);  fread(&pelajar, sizeof(struct student), 1, failpelajar); } getch(); clrscr(); fclose(failpelajar); menu(); } void carirekod(void) { FILE *failpelajar; struct student pelajar; char pilih[5]; int x; failpelajar = fopen(faildata,"rb"); clrscr(); gotoxy(15, 5); cprintf("Masukkan No ID pelajar yang ingin dicari  : "); scanf("%s", pilih); while ((fread(&pelajar,sizeof(struct student),1,failpelajar))) { //if(!feof(failpelajar) == 0) //printf("\n\nTIADA REKOD\n"); //else x = strcmp(pelajar.idpelajar, pilih);  if(x== 0)  {    printf("\n\n\t\tID pelajar :  %s\n",pelajar.idpelajar);    printf("\t\tNama    : %s\n",pelajar.namapelajar);    printf("\t\tKursus   : %s\n",pelajar.kursus);    printf("\t\tMarkah   : %.2f\n",pelajar.markah);  } }   getch();   fclose(failpelajar);   clrscr();   menu(); } void padamrekod(void) {  FILE *failpelajar,*sementara;  struct student pelajar;  int x;  char pilih[5], pilihan;  clrscr();  gotoxy(15, 5);  cprintf("Masukkan No ID pelajar yang ingin dipadam  : ");  scanf("%s", pilih);  fflush(stdin);  failpelajar=fopen(faildata,"rb+");    //buka fail untuk baca dan tulis  sementara=fopen(failsementara,"wb+");  //buka fail untuk tulis dan baca  rewind(failpelajar);  while(fread(&pelajar,sizeof(struct student),1,failpelajar)==1)  {   x = strcmp(pelajar.idpelajar, pilih);   if(x == 0)   {    printf("\n\n\t\tID pelajar :  %s\n",pelajar.idpelajar);    printf("\t\tNama    : %s\n",pelajar.namapelajar);    printf("\t\tKursus   : %s\n",pelajar.kursus);    printf("\t\tMarkah   : %.2f\n",pelajar.markah);   }   if(x != 0)   {    fwrite(&pelajar,sizeof(pelajar),1,sementara);  //tulis rekod dlm failsementara tanpa masukkan rekod yg nak dipadam   }  }  printf("\n\n\t\tAnda pasti untuk padam rekod ini? ");  scanf("%c", &pilihan);  fflush(stdin);  if(pilihan == 'Y' || pilihan == 'y')  {  gotoxy(17, 19);  cprintf("REKOD TELAH DIPADAM !!!");  }  fclose(failpelajar);  fclose(sementara);  remove(faildata);          //hapus fail pelajar  rename(failsementara,faildata);   //rename nama fail sementara tadi, sbb nnt nak capai balik fail ni  getch();  clrscr();  menu(); } void kemaskini(void) {  FILE *failpelajar;  struct student pelajar;  int x, bilang, z=0;  char pilih[5];  clrscr();  gotoxy(15, 3);  cprintf("Masukkan No ID pelajar yang ingin dikemaskini  : ");  scanf("%s", pilih);  fflush(stdin);  failpelajar=fopen(faildata,"rb+");  //rewind(failpelajar);  while(fread(&pelajar,sizeof(struct student),1,failpelajar)==1)  {   z++;   x = strcmp(pelajar.idpelajar, pilih);   if(x == 0)   {    bilang = z;    printf("\n\n\t\tID pelajar :  %s\n",pelajar.idpelajar);    printf("\t\tNama    : %s\n",pelajar.namapelajar);    printf("\t\tKursus   : %s\n",pelajar.kursus);    printf("\t\tMarkah   : %.2f\n",pelajar.markah);   }  }  gotoxy(16, 12);  cprintf("Masukkan No ID pelajar  : ");  scanf("%s", pelajar.idpelajar);  fflush(stdin);  gotoxy(16, 13);  cprintf("Masukkan Nama pelajar  : ");  gets(pelajar.namapelajar);  gotoxy(16, 14);  cprintf("Masukkan Kursus pelajar : ");  gets(pelajar.kursus);  gotoxy(16, 15);  cprintf("Masukkan Markah pelajar : ");  scanf("%f", &pelajar.markah);  fflush(stdin);  //fseek(failpelajar,-sizeof(struct student),SEEK_CUR);  fseek(failpelajar,(bilang - 1) * sizeof(struct student),SEEK_SET); //letak kat kedudukan sepatutnya untuk nak tulis jap lagi  fwrite(&pelajar,sizeof(struct student),1,failpelajar);  gotoxy(17, 21);  cprintf("REKOD TELAH DIKEMASKINI !!!");  fclose(failpelajar);  getch();  clrscr();  menu(); }wassalam Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted October 2, 2004 wow! good work takkan yang lain taknak buat kut.... Quote Share this post Link to post Share on other sites
izwan 1 Report post Posted October 12, 2004 (edited) DELETED Edited November 18, 2004 by NaRa Quote Share this post Link to post Share on other sites