ig : Erixsyaifulr

Record pinjam buku

program pinjam_buku_perpus;
uses crt;
const max=10;
type buku=record
     judul,pengarang:string;
     stok:byte;
     end;
     larik_buku=array[1..max] of buku;

type pinjam=record
     nama,judulb,pengarangb,blnb:string;
     tglb,thnb:integer;
     end;
     larik_pinjam=array[1..max] of pinjam;
   
type kembali=record
     nam,jb,pb,bulanb:string;
     tanggalb,tahunb:integer;
     end;
     larik_kembali=array[1..max] of kembali;
var buk:larik_buku;
    pinj:larik_pinjam;
     m,n,i,j,pil:byte;
     ketemu:boolean;
   
procedure isi_buku(var x:larik_buku);
 var ya:char;
label lagi;

begin
lagi:
inc(n);
write('masukkan judul buku baru : ');readln(x[n].judul);
write('masukkan pengarangnya    : ');readln(x[n].pengarang);
write('berapa exemplar          : ');readln(x[n].stok);
begin
      write('apakah akan menambah buku lagi ?<y/t> ');readln(ya);
      if ya='y' then goto lagi;
end;
end;
 
procedure tambah_buku(var x:larik_buku);
var baru1,baru2:string;
ya:char;
label lagi,ulang;

begin
lagi:
writeln('menambah buku baru');
ulang:
write('masukkan judul buku baru : ');readln(baru1);
write('masukkan pengarangnya    : ');readln(baru2);
for i:=1 to n do
     begin
      if (x[i].judul=baru1)and (x[i].pengarang=baru2) then
      begin
      ketemu:=true;
      writeln('Judul tersebut sudah ada di perpus');goto ulang;
      end;
     end;
begin
     inc(n);
     x[n].judul:=baru1;
     x[n].pengarang:=baru2;
     write('berapa exemplar          : ');readln(x[n].stok);
end;
begin
      write('apakah akan menambah buku lagi ?<y/t> ');readln(ya);
      if ya='y' then goto lagi;
end;
end;


procedure cetak_buku(var x:larik_buku);
begin
writeln('DAFTAR BUKU YANG ADA DI PERPUSTAKAAN ');
writeln('------------------------------------------------');
writeln('No    Judul             Pengarang       Stok');
writeln('------------------------------------------------');
for i:=1 to n do
writeln(i,'    ',x[i].judul:8,'        ',x[i].pengarang:12,'     ',x[i].stok:10);
writeln('------------------------------------------------');
end;

procedure cetak_pinjam(var x:larik_pinjam);
begin
writeln('DAFTAR PEMINJAM BUKU YANG PERPUSTAKAAN ');
writeln('-------------------------------------------------------------------------------');
writeln('No    Peminjam                Judul Buku        Pengarang       Tanggal pinjam');
writeln('-------------------------------------------------------------------------------');
for i:=1 to m do
writeln(i:3,'  ',x[i].nama:10,'    ',x[i].judulb:20,'    ',x[i].pengarangb:10,'  ',x[i].tglb:10,' ',x[i].blnb,' ',x[i].thnb);
writeln('-------------------------------------------------------------------------------');
end;

procedure pinjam_buku(var x:larik_buku);
var cari,cari2:string;
    nb,ya,bln:string;
    tgl,thn:integer;
    pos:byte;
label lagi;

begin
cetak_buku(buk);
lagi:
write('masukkan judul buku yang akan dipinjam  : ');readln(cari);
write('masukkan pengarang buku nya             : ');readln(cari2);
{cek}
ketemu:=false;
for i:=1 to n do
if (x[i].judul=cari)and(x[i].pengarang=cari2) then begin pos:=i;ketemu:=true;end;
{jika judul ditemukan}
if (ketemu) and (x[pos].stok>0) then
begin
     write('buku tersedia, masukkan nama anda : ');readln(nb);
     write('masukkan tanggal pinjam           : ');readln(tgl);
     write('masukkan bulan pinjam             : ');readln(bln);
     write('masukkan tahun pinjam             : ');readln(thn);
     {memasukkan ke array pinjam}
     inc(m);
     dec(x[pos].stok);
     pinj[m].nama:=nb;
     pinj[m].judulb:=cari;
     pinj[m].pengarangb:=cari2;
     pinj[m].tglb:=tgl;
     pinj[m].blnb:=bln;
     pinj[m].thnb:=thn;
end
else
begin
      writeln('maaf buku yang anda cari tidak ada');
      write('apakah akan meminjam buku lain ?<y/t> ');readln(ya);
      if ya='y' then goto lagi;
end;
end;

procedure kembali_buku(var x:larik_buku);
var kembali,nm,bulan:string;
tanggal,tahun:integer;
pos:byte;
label selesai;

begin
if m=0 then
begin writeln('Maaf tidak ada yang meminjam buku');goto selesai;end;
pos:=0;
writeln('Selamat datang di pengembalian buku ');
write('masukkan nama peminjam ');readln(nm);
write('masukkan judul buku yg kembali '); readln(kembali);
{menambahkan stok buku dg judul tsb}
for i:=1 to n do
begin
     if (x[i].judul)=kembali then inc(x[i].stok);
end;
{menghapus record di daftar peminjam buku}
for i:=1 to m do
     if (pinj[i].judulb=kembali) and (pinj[i].nama=nm) then pos:=i;
if pos<>0 then
begin
write('masukkan tanggal kembali           : ');readln(tanggal);
write('masukkan bulan kembali             : ');readln(bulan);
write('masukkan tahun kembali             : ');readln(tahun);
  writeln('judul ',kembali ,' dipinjam oleh ',nm,' sudah dikembalikan pada tanggal : ',tanggal,' ',bulan,' ',tahun);
  {hapus dan geser}
  for j:=pos to m-1 do  pinj[j]:=pinj[j+1];
  dec(m);
end
else writeln('maaf nama peminjam atau buku yang dikembalikan tidak benar');

selesai: end;

                     
begin{utama}
repeat
begin
     clrscr;
     writeln('Pengelolaan buku Perpustakaan IST AKPRIND YOGYAKARTA');
     writeln('0. Isi buku');
     writeln('1. Tambah judul buku');
     writeln('2. Cetak buku');
     writeln('3. Pinjam buku');
     writeln('4. Cetak peminjaman');
     writeln('5. Pengembalian buku');
     writeln('6. Selesai');
     write('Pilihan anda ==> ');readln(pil);
     case pil of
     0: isi_buku(buk);
     1: tambah_buku(buk);
     2: if n=0 then writeln('daftar buku masih kosong') else cetak_buku(buk);
     3: if n=0 then writeln('anda belum bisa meminjam buku') else pinjam_buku(buk);
     4: if m=0 then writeln('tidak ada yang meminjam') else cetak_pinjam(pinj);
     5: if m>0 then kembali_buku(buk) else writeln('maaf saat ini tidak ada yang sedang meminjam buku') ;
     6: writeln('Terimakasih ');
     end;
     readln;
     end
     until(pil=6);
end.

Share this

Related Posts

First

Translate