Jumat, 11 November 2011

Source Code Program Perpustakaan dengan Bahasa C

Algoritma dan Pemrograman II
/*=======================================================================================*/
/*Sistem Informasi Perpustakaan-Ku*/
/*Program untuk mengelola perpustakaan pribadi secara sederhana dengan Bahasa C*/
/*Diajukan untuk memenuhi tugas besar mata kuliah Algoritma dan Pemrograman II*/
/*Dosen: Rasim, M.T.*/
/*=======================================================================================*/
/*  Dibuat Oleh:
Aditya Sri Nugraha  (060354)
Kelas   : A
Prodi   : Pendidikan Ilmu Komputer
Universitas Pendidikan Indonesia*/
/*=======================================================================================*/
/*  Tanggal Pembuatan   : 10 Desember 2007
Pukul               : 11.00-17.00 WIB
Dibuat dengan S/W   : C-Free 3.5*/
/*=======================================================================================*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
/*Prototype Fungsi-fungsi*/
void Menu(int *Pilih);
void Tambah_Buku(void);
void Lihat_Buku_Tertentu(void);
void Rubah_Buku(void);
void Hapus_Buku(void);
void Cari_Buku(void);
int Posisi_Record_Buku(long int Posisi);
int Rekam_Record_Buku(void);
int Baca_Record_Buku(void);
void Masuk_Record_Buku(void);
void Lihat_Record_Buku(void);
char Alat_Keluaran(char *NamaFile);
FILE *FileBuku,*NamaAlat;
int KodeBuku, Hasil;
char Jawab;
struct{
int Kode;
char Judul_Buku[16];
char Pengarang[12];
char Penerbit[10];
char Thn_Terbit[7];
char Status;
char Peminjam[8];
char Tgl_Pinjam[8];
}DataBuku;
/*———Program Utama———*/
main()
{
int Pilihan_Menu=0;
/*Buka File Perpusku*/
if((FileBuku=fopen(“perpusku.txt”,”r+b”))==NULL) {
printf(“KESALAHAN: File Perpusku Tidak Dapat Dibuka !!!\7\n”);
exit(1);
}
do{
if(Pilihan_Menu!=0){
printf(“\nTekan ENTER untuk kembali ke MENU…”);
Jawab=getche();
}
Menu(&Pilihan_Menu);
switch (Pilihan_Menu){
case 1: Tambah_Buku();
continue;
case 2: Lihat_Buku_Tertentu();
continue;
case 3: Lihat_Buku();
continue;
case 4: Rubah_Buku();
continue;
case 5: Hapus_Buku();
continue;
}
} while(Pilihan_Menu !=0);
/*Tutup File dan Selesai*/
printf(“                          ***** Terima Kasih *****           \n\n”);
printf(“                                    ^_^                    \n\n\n”);
}
/*—————-Program Menu—————-*/
void Menu(int *Pilih)
{
printf(“                                                 \n”);
printf(“                                                 \n”);
printf(“                                                 \n”);
printf(“            |===========MENU UTAMA PERPUSTAKAAN-KU==========|\n”);
printf(“            |           __________________________          |\n”);
printf(“            |                                               |\n”);
printf(“            |                                               |\n”);
printf(“            |   1. Menambah Data Buku Baru                  |\n”);
printf(“            |   2. Melihat Data Buku Tertentu               |\n”);
printf(“            |   3. Melihat Data Semua Buku                  |\n”);
printf(“            |   4. Mengubah Data Buku                       |\n”);
printf(“            |   5. Menghapus Data Buku Tertentu             |\n”);
printf(“            |_______________________________________________|\n”);
printf(“            |                                               |\n”);
printf(“            |   0. SELESAI                                  |\n”);
printf(“            |                                               |\n”);
printf(“            |===============================================|\n\n”);
do {
printf(“                Pilih  Menu (0-5)? “);scanf(“%d”, Pilih);
if (*Pilih<0 || *Pilih>5)
printf(“\7″);
}while(*Pilih<0 || *Pilih>5);
printf(“\n\n”);
}
/*———-Fungsi Menambah Data Buku Baru———*/
void Tambah_Buku(void)
{
do {
Masuk_Record_Buku();                        /*memasukkan data*/
Hasil=Posisi_Record_Buku(DataBuku.Kode-1);  /*posisi record*/
if(Hasil) return;                           /*kesalahan penempatan*/
Hasil=Rekam_Record_Buku();                  /*merekamkan record*/
if(!Hasil) return;                          /*kesalahan perekaman*/
printf(“Memasukkan Data Lagi (Y/T)? “);
fflush(stdin);
scanf(“%c”, &Jawab);
printf(“\n”);
}while(Jawab==’Y’ || Jawab==’y');
}
/*—Fungsi Mengubah Data Buku Tertentu—*/
void Rubah_Buku(void)
{
do{
printf(“Kode Buku: “);
scanf(“%d”,&KodeBuku);
printf(“\n”);
Hasil=Posisi_Record_Buku(KodeBuku-1);       /*posisi record*/
if(Hasil) return;                           /*kesalahan penempatan*/
Hasil=Baca_Record_Buku();                   /*baca record*/
if(Hasil){
Lihat_Record_Buku();
Posisi_Record_Buku(KodeBuku-1);         /*posisi record lama*/
DataBuku.Kode=-1;                       /*hapus record yang lama*/
Rekam_Record_Buku();
printf(“Silahkan Anda Masukkan Perubahannya:\n”);
Masuk_Record_Buku();
Posisi_Record_Buku(DataBuku.Kode-1);   /*posisi record baru*/
Rekam_Record_Buku();                   /*rekam record baru*/
}
else
printf(“Kode Buku Tidak Ada!!!\n\n”);
printf(“Mengubah Data Buku Lagi (Y/T)? “);
fflush(stdin);
scanf(“%c”,&Jawab);
printf(“\n”);
}while(Jawab==’Y’ || Jawab==’y');
}
/*—Fungsi Melihat Data Buku Tertentu—*/
void Lihat_Buku_Tertentu(void)
{
do{
printf(“Kode Buku: “);
scanf(“%d”,&KodeBuku);
printf(“\n”);
Hasil=Posisi_Record_Buku(KodeBuku-1); /*posisi record*/
if(Hasil) return;                     /*kesalahan penempatan*/
Hasil=Baca_Record_Buku();             /*baca record*/
if(Hasil){
Lihat_Record_Buku();
}
else
printf(“Kode Buku Tidak Ada!!!\n\n”);
printf(“Melihat Data Buku Lagi (Y/T)? “);
fflush(stdin);
scanf(“%c”,&Jawab);
printf(“\n”);
}while(Jawab==’Y’ || Jawab==’y');
}
/*—Fungsi Menampilkan Data untuk Semua Buku—*/
void Lihat_Buku(void)
{
long int Posisi_Record=1;
char Alat, NamaFile[40];
Alat= Alat_Keluaran(NamaFile); /*Tentukan Alat Keluaran*/
if(Alat==’0′)return;
fprintf(NamaAlat,”——————————————————————————–\n”);
fprintf(NamaAlat,”Kode     Judul         Pengarang    Penerbit   Thn    Status  Peminjam     Tgl\n”);
fprintf(NamaAlat,”                                              Terbit                     Pinjam \n”);
fprintf(NamaAlat,”——————————————————————————–\n”);
rewind(FileBuku);
do {
Hasil=Baca_Record_Buku();
if(Hasil==-1)break;
if(DataBuku.Kode==Posisi_Record)
fprintf(NamaAlat,”%05d %-16s %-12s %-10s %-7s   %c     %-8s %-8s\n”,
DataBuku.Kode, DataBuku.Judul_Buku, DataBuku.Pengarang, DataBuku.Penerbit,
DataBuku.Thn_Terbit, DataBuku.Status, DataBuku.Peminjam, DataBuku.Tgl_Pinjam);
Posisi_Record++;
}while(Hasil!=-1);
if(Alat==’F’ || Alat==’f')
fclose(NamaAlat);       /*file keluaran perlu ditutup*/
}
/*—Fungsi Menghapus Data Buku Tertentu—*/
void Hapus_Buku(void)
{
do{
printf(“Kode Buku: “);
scanf(“%d”, &KodeBuku);
printf(“\n”);
Hasil=Posisi_Record_Buku(KodeBuku-1);           /*posisi record*/
if(Hasil) return;                               /*kesalahan penempatan*/
Hasil=Baca_Record_Buku();                       /*baca record*/
if(Hasil) {
Lihat_Record_Buku();
printf(“Yakin Record Ini Akan Dihapus (Y/T)? “);
fflush(stdin); scanf(“%c”, &Jawab);
if(Jawab==’Y’ || Jawab==’y') {              /*hapus record*/
Hasil=Posisi_Record_Buku(KodeBuku-1);   /*posisi record*/
DataBuku.Kode=-1;
Rekam_Record_Buku();
}
}
else
printf(“Kode Buku Tidak Ada!!!\n\n”);
printf(“Menghapus Data Buku Lagi (Y/T)? “);
fflush(stdin);
scanf(“%c”, &Jawab);
printf(“\n”);
}while(Jawab==’Y’ || Jawab==’y');
}
/*—Fungsi Mengarahkan Penunjuk ke Posisi Record File Buku—*/
int Posisi_Record_Buku(long int Posisi)
{
if(fseek(FileBuku, Posisi*sizeof(DataBuku), SEEK_SET)){
printf(“Ada Kesalahan Perekaman Record!!!\n”);
return(1);
}
else
return(0);
}
/*—Fungsi Merekamkan Record ke File Buku—*/
int Rekam_Record_Buku(void)
{
if(fwrite(&DataBuku, sizeof(DataBuku), 1, FileBuku))
return(1);
else{
printf(“Ada Kesalahan Perekaman Record!!!\n”);
return(0);
}
}
/*—Fungsi Membaca Record dari File Buku—*/
int Baca_Record_Buku(void)
{
fread(&DataBuku, sizeof(DataBuku), 1, FileBuku);
if(feof(FileBuku)) return(-1);
else{
if(DataBuku.Kode != KodeBuku) return(0);
else return(1);
}
}
/*—Fungsi Memasukkan Data Buku—*/
void Masuk_Record_Buku(void)
{
printf(“Kode Buku      (5 Digit Angka)     : “); fflush(stdin); scanf(“%d”, &DataBuku.Kode);
printf(“Judul Buku     (maks 15 Karakter)  : “); fflush(stdin); scanf(“%s”, &DataBuku.Judul_Buku);
printf(“Pengarang      (maks 11 Karakter)  : “); fflush(stdin); scanf(“%s”, &DataBuku.Pengarang);
printf(“Penerbit       (maks  9 Karakter)  : “); fflush(stdin); scanf(“%s”, &DataBuku.Penerbit);
printf(“Tahun Terbit   (xxxx)              : “); fflush(stdin); scanf(“%s”, &DataBuku.Thn_Terbit);
printf(“Status         (A=Ada/T=Tidak Ada) : “); fflush(stdin); scanf(“%c”, &DataBuku.Status);
printf(“Peminjam       (maks  7 Karakter)  : “); fflush(stdin); scanf(“%s”, &DataBuku.Peminjam);
printf(“Tanggal Pinjam (dd-mm-yy)          : “); fflush(stdin); scanf(“%s”, &DataBuku.Tgl_Pinjam);
printf(“\n”);
}
/*—Fungsi Menampilkan Record Buku—*/
void Lihat_Record_Buku(void)
{
printf(“Kode Buku      : %05d\n”, DataBuku.Kode);
printf(“Judul Buku     : %s\n”, DataBuku.Judul_Buku);
printf(“Pengarang      : %s\n”, DataBuku.Pengarang);
printf(“Penerbit       : %s\n”, DataBuku.Penerbit);
printf(“Tahun Terbit   : %s\n”, DataBuku.Thn_Terbit);
printf(“Status         : %c\n”, DataBuku.Status);
printf(“Peminjam       : %s\n”, DataBuku.Peminjam);
printf(“Tanggal Pinjam : %s\n”, DataBuku.Tgl_Pinjam);
printf(“\n”);
}
/*—mempersiapkan alat keluaran—*/
char Alat_Keluaran(char *NamaFile)
{
char Alat;
do{
printf(“Tampilkan di Layar atau File (L/F)? “);
fflush(stdin); scanf(“%c”, &Alat);
}while (strchr(“LlPpFf”, Alat) == ”);
if(Alat==’F’ || Alat==’f') {
Jawab=’T';
while(Jawab==’T'||Jawab==’t'){
printf(“Nama File Keluaran? “);
scanf(“%s”, NamaFile);
/*periksa keberadaan file keluaran*/
if((NamaAlat=fopen(NamaFile, “r”)) == NULL)
break;
else{
printf(“File Sudah Ada, Ditumpangi (Y/T)? “);
fflush(stdin);scanf(“%c”, &Jawab);
fclose(NamaAlat);
}
}
/*buka file keluaran*/
if((NamaAlat=fopen(NamaFile, “w”))== NULL) {
printf(“File Tidak Dapat Dibuka!!!”);
return(’0′);
}
}
if(Alat==’L’ || Alat==’l') NamaAlat= stdout;
return(Alat);
}

3 komentar:

  1. om, kok error sih program nya pas ane kompile.....
    ane make codebloks...
    sori, masih awam....

    BalasHapus
  2. om, kok error sih program nya pas ane kompile.....
    ane make codebloks...
    sori, masih awam....

    BalasHapus
  3. om, kok error sih program nya pas ane kompile.....
    ane make codebloks...
    sori, masih awam....

    BalasHapus