Minggu, 26 Mei 2013

#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);
}