/* DEKLARASI FILE HEADER */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
/* DEKLARASI STRUCT */
typedef struct {
int jml;
}HEADER;
typedef struct {
char nrp[10];
char nama[30];
char alamat[50];
} MHS;
/* DEKLARASI VARIABEL GLOBAL */
FILE *fdata;
MHS data;
HEADER buf;
/* PEMANGGGILAN FUNGSI */
void menu();
void add ();
void del ();
void show ();
/* FUNGSI MAIN */
int main (){
int record=1;
/* OPEN FILE */
if((fdata=fopen(“database_mhs.DAT”,”wb+”))==NULL){
printf(“Maap,,anda belum beruntung!!\n”);
exit(1);
}
printf(“Masukkan jumlah data : “); //input jml data
scanf(“%d”,&buf.jml);
fwrite(&buf, sizeof(buf), 1, fdata);
for(int i=1;i<=buf.jml;i++){
printf(“\nMahasiswa ke-%d\n”, record);
printf(“NRP\t: “); //input nrp
fflush(stdin);
gets(data.nrp);
printf(“Nama\t: “); //input nama
fflush(stdin);
gets(data.nama);
printf(“Alamat\t: “); //input alamat
fflush(stdin);
gets(data.alamat);
record++;
fwrite(&data, sizeof(data), 1, fdata);
}
system(“cls”);
menu();
fclose(fdata);
getch();
return 0;
}
void menu (){
int ulang;
char pilih;
while (pilih !=9){
printf(“\n\nPROGRAM… “);
printf(“ \n============================”);
printf(“\n1. Add record”);
printf(“ \n2. Delete record”);
printf(“ \n3. Show record”);
printf(“ \n9. Quit”);
printf(“\n=============================”);
printf(“\nWhat do you wanna do? “);
fflush (stdin);
scanf (“%c”, &pilih);
printf (“\n”);
switch (pilih) {
case ‘1′:
add ();
break;
case ‘2′:
del ();
break;
case ‘3′:
show ();
break;
case ‘9′:
exit (0);
break;
default :
printf (“Hoei,, pilihannya cuma 1, 2, 3, ama 9!! …\n”);
}
}
}
void add (){
fseek(fdata, sizeof(buf)+(buf.jml)*(sizeof(data)), SEEK_SET);
printf(“NRP\t: “);
fflush(stdin);
gets(data.nrp);
printf(“Nama\t: “);
fflush(stdin);
gets(data.nama);
printf(“Alamat\t: “);
fflush(stdin);
gets(data.alamat);
fwrite(&data, sizeof(data), 1, fdata);
buf.jml++;
}
void del (){
int record;
printf(“\nMasukkan indeks record yang akan di-delete : “);
scanf(“%d”, &record);
fseek(fdata, sizeof(buf)+(buf.jml-1)*(sizeof(data)), SEEK_SET);
fread(&data, sizeof(data), 1, fdata);
fseek(fdata, sizeof(buf)+((record-1)*sizeof(data)), SEEK_SET);
fwrite(&data, sizeof(data), 1, fdata);
buf.jml–;
}
void show (){
char *nrp;
char *nama;
char *alamat;
int no = 1;
// malloc digunakan u/ mengalokasikan sebuah blok dg ukuran byte dari memori
nrp=(char*)malloc(10);
nama=(char*)malloc(30);
alamat=(char*)malloc(50);
fseek(fdata, sizeof(buf), SEEK_SET);
printf(“%2s. %-10s\t%-15s\t%-20s\n\n”, “No”, “NRP”, “Nama”, “Alamat”);
for(int i=0; i<buf.jml; i++)
{
fread(&data, sizeof(data), 1, fdata);
strncpy(nrp, data.nrp, 10);
nrp[10]=”;
strncpy(nama, data.nama, 30);
nama[30]=”;
strncpy(alamat, data.alamat, 50);
alamat[50]=”;
printf(“%2d. %-10s\t%-15s\t%-20s\n”, no, nrp, nama, alamat);
no++;
}
}
Thx 4 share this code….it helps me a lot!!
Comment oleh Dian — April 22, 2009 @ 6:36 pm