Program Pemeliharaan Data Base Perpustakaan

Ampersands & angle brackets need to be encoded.

Source Code Program Perpustakaan dengan Bahasa C
/*==========================================================================*/
/*Sistem Informasi Perpustakaan-Ku*/
/*Program untuk mengelola perpustakaan pribadi secara sederhana dengan Bahasa C*/
/*Diajukan untuk memenuhi tugas besar mata kuliah Algoritma dan Pemrograman I*/
/*Dosen: Hevi Rilviglia ,S.kom.*/
/*==========================================================================*/
/*  Dibuat Oleh:
Adi Ahmad M (0610U020)
Kelas   : A
Prodi   :  Ilmu Komputer_AlProI
Universitas widyatama*/
/*===========================================================================*/
/*  Tanggal Pembuatan   : 20 Oktober 2010
Pukul               : 11.00-17.00 WIB
Dibuat dengan S/W   : C-Free 3.5*/
/*===========================================================================*/
#include
#include
#include
#include
/*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);
}