#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
typedef char string[50];
typedef struct{
int id_buku,tahun_terbit,jumlah;
string judul,pengarang;
char tipe_buku;
double harga_sewa;
}buku;
double harga_sewa(char kode)
{
switch(kode)
{
case 'N': return 1500;
case 'R': return 1000;
case 'C': return 500;
}
return 0;
}
int ID(int n)
{
FILE *ptr_myfile;
buku b;
int i,max=100;
ptr_myfile=fopen("myfile.bin","rb");
if(ptr_myfile==NULL)
return max +1;
else
{
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
if(max<b.id_buku) max=b.id_buku;
}
}
fclose(ptr_myfile);
return max +1;
}
void main()
{
int n,input,i,data_size,id,a=0;
string judul;
FILE *ptr_myfile;
buku b;
long int sz;
do
{
system("cls");
ptr_myfile=fopen("myfile.bin","rb");
if(ptr_myfile==NULL)
{
n=0;
}
else
{
fseek(ptr_myfile,0,SEEK_END);
sz=ftell(ptr_myfile);
data_size= sizeof(buku);
n=sz/data_size;
}
printf("===MENU===\n");
printf("1. Show Data in My File\n");
printf("2. Insert data\n");
printf("3. Update data\n");
printf("4. Delete data \n");
printf("5. Add stock\n");
printf("0. exit\n");
printf("Input Pilihan ");
scanf("%d",&input);
switch(input)
{
case 1: ptr_myfile=fopen("myfile.bin","rb");
if(ptr_myfile==NULL)
printf("file empty!");
else
{
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
if(b.id_buku!=-1)
{
printf("pengarang : %s\n",b.pengarang);
printf("judul buku : %s\n",b.judul);
printf("id buku : %d\n",b.id_buku);
printf("tahun terbit buku : %d\n",b.tahun_terbit);
printf("jumlah buku : %d\n",b.jumlah);
printf("tipe buku : %c\n",toupper(b.tipe_buku));
switch(toupper(b.tipe_buku))
{
case 'N': printf("New, Buku Baru");break;
case 'C': printf("Catalog, Buku Lama");break;
case 'R': printf("Recent, Buku Agak Lama");break;
}
printf("\n\n\tHarga Sewa : Rp %0.0f,-\n\n",b.harga_sewa);
printf("_________________________________________________\n\n");
}
}
fclose(ptr_myfile);break;
case 2 :
id=ID(n);
ptr_myfile=fopen("myfile.bin","ab"); fflush(stdin);
printf("pemgarang :"); scanf("%s",&b.pengarang);fflush(stdin);
printf("judul buku:"); scanf("%s",&b.judul);fflush(stdin);
printf("tahun terbit buku:"); scanf("%d",&b.tahun_terbit);
printf("jumlah buku:"); scanf("%d",&b.jumlah);
printf("\tID buku \t: %d \n",id);
do
{
printf(" \n\tPilihan untuk tipe buku:\n\t N: New\n\t R: Recent\n\t C: Catalog\n");
printf("\tTipe Buku \t: ");fflush(stdin);
b.tipe_buku=getchar();
if(harga_sewa(b.tipe_buku)==0)
printf("\tMasukkan Anda Salah!\n Pilihan yang tersedia N, R, atau C");
}while(harga_sewa(b.tipe_buku)==0);fflush(stdin);
b.harga_sewa=harga_sewa(b.tipe_buku);
b.id_buku =id;
fwrite(&b,sizeof(buku),1,ptr_myfile);
fclose(ptr_myfile);break;
fclose(ptr_myfile);
printf("\nData berhasil diinput");
}break;
case 3:fflush(stdin);
printf("masukan judul buku yg ungin diubah : "); gets(judul);
ptr_myfile=fopen("myfile.bin","rb+");
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
printf("judul buku : %s\n",b.judul);
if(strcmpi(b.judul,judul)==0){
printf("masukkan jumlah buku baru : "); scanf("%d",&b.jumlah);
printf("pemgarang :"); scanf("%s",&b.pengarang);fflush(stdin);
do
{
printf(" \n\tPilihan untuk tipe buku:\n\t N: New\n\t R: Recent\n\t C: Catalog\n");
printf("\tTipe Buku \t: ");fflush(stdin);
b.tipe_buku=getchar();
if(harga_sewa(b.tipe_buku)==0)
printf("\tMasukkan Anda Salah!\n Pilihan yang tersedia N, R, atau C");
}while(harga_sewa(b.tipe_buku)==0);fflush(stdin);
b.harga_sewa=harga_sewa(b.tipe_buku);
fseek(ptr_myfile,-(sizeof(buku)),SEEK_CUR);
fwrite(&b,sizeof(buku),1,ptr_myfile);
fclose(ptr_myfile);break;
}
}
if(i==n)
{
printf("no data found");
fclose(ptr_myfile);
} break;
case 4:
fflush(stdin);
printf("Buku yang ingin dihapus berjudul: "); gets(judul);
ptr_myfile=fopen("myfile.bin","rb+");
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
if(strcmpi(b.judul ,judul)==0){
printf("Buku ditemukan dengan judul :\n\n\t'%s'",b.judul);
b.id_buku =-1;
printf("\n\n Hapus Data Berhasil\n ");
fseek(ptr_myfile,-(sizeof(buku)),SEEK_CUR);
fwrite(&b,sizeof(buku),1,ptr_myfile);
fclose(ptr_myfile);
break;
}
}
if(i==n){
printf("Data tidak ditemukan!");
fclose(ptr_myfile);
} break;
case 5:
fflush(stdin);
printf("Stock buku yang ingin ditambah: "); gets(judul);
ptr_myfile=fopen("myfile.bin","rb+");
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
if(strcmpi(b.judul ,judul)==0)
{
printf("Buku :\n\n\t'%s'",b.judul);
printf("\n\n Masukkan jumlah tambahan stock buku baru\n ");
printf("Jumlah Buku : ");scanf("%d",&a);fflush(stdin);
b.jumlah=b.jumlah+a;
fseek(ptr_myfile,-(sizeof(buku)),SEEK_CUR);
fwrite(&b,sizeof(buku),1,ptr_myfile);
fclose(ptr_myfile);
break;
printf("\nData berhasil berubah");
}
}
if(i==n)
{
printf("Data tidak ditemukan!");
fclose(ptr_myfile);
}
break;
case 0 : printf("thanks...");break;
}
getch();
}while(input!=0);
}
#include<conio.h>
#include<stdlib.h>
#include<string.h>
typedef char string[50];
typedef struct{
int id_buku,tahun_terbit,jumlah;
string judul,pengarang;
char tipe_buku;
double harga_sewa;
}buku;
double harga_sewa(char kode)
{
switch(kode)
{
case 'N': return 1500;
case 'R': return 1000;
case 'C': return 500;
}
return 0;
}
int ID(int n)
{
FILE *ptr_myfile;
buku b;
int i,max=100;
ptr_myfile=fopen("myfile.bin","rb");
if(ptr_myfile==NULL)
return max +1;
else
{
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
if(max<b.id_buku) max=b.id_buku;
}
}
fclose(ptr_myfile);
return max +1;
}
void main()
{
int n,input,i,data_size,id,a=0;
string judul;
FILE *ptr_myfile;
buku b;
long int sz;
do
{
system("cls");
ptr_myfile=fopen("myfile.bin","rb");
if(ptr_myfile==NULL)
{
n=0;
}
else
{
fseek(ptr_myfile,0,SEEK_END);
sz=ftell(ptr_myfile);
data_size= sizeof(buku);
n=sz/data_size;
}
printf("===MENU===\n");
printf("1. Show Data in My File\n");
printf("2. Insert data\n");
printf("3. Update data\n");
printf("4. Delete data \n");
printf("5. Add stock\n");
printf("0. exit\n");
printf("Input Pilihan ");
scanf("%d",&input);
switch(input)
{
case 1: ptr_myfile=fopen("myfile.bin","rb");
if(ptr_myfile==NULL)
printf("file empty!");
else
{
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
if(b.id_buku!=-1)
{
printf("pengarang : %s\n",b.pengarang);
printf("judul buku : %s\n",b.judul);
printf("id buku : %d\n",b.id_buku);
printf("tahun terbit buku : %d\n",b.tahun_terbit);
printf("jumlah buku : %d\n",b.jumlah);
printf("tipe buku : %c\n",toupper(b.tipe_buku));
switch(toupper(b.tipe_buku))
{
case 'N': printf("New, Buku Baru");break;
case 'C': printf("Catalog, Buku Lama");break;
case 'R': printf("Recent, Buku Agak Lama");break;
}
printf("\n\n\tHarga Sewa : Rp %0.0f,-\n\n",b.harga_sewa);
printf("_________________________________________________\n\n");
}
}
fclose(ptr_myfile);break;
case 2 :
id=ID(n);
ptr_myfile=fopen("myfile.bin","ab"); fflush(stdin);
printf("pemgarang :"); scanf("%s",&b.pengarang);fflush(stdin);
printf("judul buku:"); scanf("%s",&b.judul);fflush(stdin);
printf("tahun terbit buku:"); scanf("%d",&b.tahun_terbit);
printf("jumlah buku:"); scanf("%d",&b.jumlah);
printf("\tID buku \t: %d \n",id);
do
{
printf(" \n\tPilihan untuk tipe buku:\n\t N: New\n\t R: Recent\n\t C: Catalog\n");
printf("\tTipe Buku \t: ");fflush(stdin);
b.tipe_buku=getchar();
if(harga_sewa(b.tipe_buku)==0)
printf("\tMasukkan Anda Salah!\n Pilihan yang tersedia N, R, atau C");
}while(harga_sewa(b.tipe_buku)==0);fflush(stdin);
b.harga_sewa=harga_sewa(b.tipe_buku);
b.id_buku =id;
fwrite(&b,sizeof(buku),1,ptr_myfile);
fclose(ptr_myfile);break;
fclose(ptr_myfile);
printf("\nData berhasil diinput");
}break;
case 3:fflush(stdin);
printf("masukan judul buku yg ungin diubah : "); gets(judul);
ptr_myfile=fopen("myfile.bin","rb+");
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
printf("judul buku : %s\n",b.judul);
if(strcmpi(b.judul,judul)==0){
printf("masukkan jumlah buku baru : "); scanf("%d",&b.jumlah);
printf("pemgarang :"); scanf("%s",&b.pengarang);fflush(stdin);
do
{
printf(" \n\tPilihan untuk tipe buku:\n\t N: New\n\t R: Recent\n\t C: Catalog\n");
printf("\tTipe Buku \t: ");fflush(stdin);
b.tipe_buku=getchar();
if(harga_sewa(b.tipe_buku)==0)
printf("\tMasukkan Anda Salah!\n Pilihan yang tersedia N, R, atau C");
}while(harga_sewa(b.tipe_buku)==0);fflush(stdin);
b.harga_sewa=harga_sewa(b.tipe_buku);
fseek(ptr_myfile,-(sizeof(buku)),SEEK_CUR);
fwrite(&b,sizeof(buku),1,ptr_myfile);
fclose(ptr_myfile);break;
}
}
if(i==n)
{
printf("no data found");
fclose(ptr_myfile);
} break;
case 4:
fflush(stdin);
printf("Buku yang ingin dihapus berjudul: "); gets(judul);
ptr_myfile=fopen("myfile.bin","rb+");
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
if(strcmpi(b.judul ,judul)==0){
printf("Buku ditemukan dengan judul :\n\n\t'%s'",b.judul);
b.id_buku =-1;
printf("\n\n Hapus Data Berhasil\n ");
fseek(ptr_myfile,-(sizeof(buku)),SEEK_CUR);
fwrite(&b,sizeof(buku),1,ptr_myfile);
fclose(ptr_myfile);
break;
}
}
if(i==n){
printf("Data tidak ditemukan!");
fclose(ptr_myfile);
} break;
case 5:
fflush(stdin);
printf("Stock buku yang ingin ditambah: "); gets(judul);
ptr_myfile=fopen("myfile.bin","rb+");
for(i=0;i<n;i++)
{
fread(&b,sizeof(buku),1,ptr_myfile);
if(strcmpi(b.judul ,judul)==0)
{
printf("Buku :\n\n\t'%s'",b.judul);
printf("\n\n Masukkan jumlah tambahan stock buku baru\n ");
printf("Jumlah Buku : ");scanf("%d",&a);fflush(stdin);
b.jumlah=b.jumlah+a;
fseek(ptr_myfile,-(sizeof(buku)),SEEK_CUR);
fwrite(&b,sizeof(buku),1,ptr_myfile);
fclose(ptr_myfile);
break;
printf("\nData berhasil berubah");
}
}
if(i==n)
{
printf("Data tidak ditemukan!");
fclose(ptr_myfile);
}
break;
case 0 : printf("thanks...");break;
}
getch();
}while(input!=0);
}