contoh pascal program buku perpustakaan


program pinjam_buku_perpus;
uses wincrt;
type buku=record
     judul,pengarang:string;
     stok:byte;
     end;
     larik_buku=array[1..20] of buku;

type pinjam=record
     nama,judulb:string;
     end;
     larik_pinjam=array[1..20] of pinjam;
var buk:larik_buku;
    pinj:larik_pinjam;
     m,n,i,j,pil:byte;
     ketemu:boolean;

procedure tambah_buku(var x:larik_buku);
var baru1,baru2:string;

begin
ketemu:=false;
write('masukkan judul buku baru : ');readln(baru1);
write('masukkan pengarangnya    : ');readln(baru2);
{cek judul sudah ada/belum}
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, lakukan proses no 2');
      end;
     end;
if not ketemu then
begin
     inc(n);
     x[n].judul:=baru1;
     x[n].pengarang:=baru2;
     write('berapa exemplar    ');readln(x[n].stok);
end;
end;

procedure tambah_stok(var x:larik_buku);
var baru1,baru2:string;
    ts,pos:byte;
    oke:boolean;

begin
{cek judul di stok}
ketemu:=false;oke:=false;
write('masukkan judul buku yang akan ditambah stok : ');readln(baru1);
{cetak buku dengan judul tsb}
for i:=1 to n do
if x[i].judul=baru1  then
   begin writeln(x[i].judul:15,'   ',x[i].pengarang:15);oke:=true;end;
writeln;
if oke then
begin
write('masukkan pengarang yang anda maksud dr judul diatas : ');
readln(baru2);
end;
for i:=1 to n do
     if (x[i].judul=baru1) and (x[i].pengarang=baru2) then
     begin ketemu:=true;pos:=i;end;
if ketemu then
begin
     write('berapa tambahan stok ? ');readln(ts);
     x[pos].stok:=x[pos].stok+ts;
end
else
    writeln('maaf buku tersebut belum ada, lakukan proses no 1');
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:3,'  ',x[i].judul:15,'  ',x[i].pengarang:15,'  ',x[i].stok:3);
writeln('------------------------------------------------');
end;

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

procedure urut_judul(var x:larik_buku);
var dum:buku;

begin
for i:=1 to n-1 do
begin
     for j:=i+1 to n do
     begin
     if x[i].judul>x[j].judul then
     begin
          dum:=x[i];
          x[i]:=x[j];
          x[j]:=dum;
     end;
     end;
end;
end;

procedure urut_pengarang(var x:larik_buku);
var dum:buku;

begin
for i:=1 to n-1 do
begin
     for j:=i+1 to n do
     begin
     if x[i].pengarang>x[j].pengarang then
     begin
          dum:=x[i];
          x[i]:=x[j];
          x[j]:=dum;
     end;
     end;
end;
end;

procedure pinjam_buku(var x:larik_buku);
var cari:string;
    nb,ya:string;
    pos:byte;
label lagi;

begin
lagi:
write('masukkan judul buku yang akan dipinjam ');readln(cari);
{cek}
ketemu:=false;
for i:=1 to n do
if x[i].judul=cari 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);
     {memasukkan ke array pinjam}
     inc(m); dec(x[pos].stok);
     pinj[m].nama:=nb;
     pinj[m].judulb:=cari;
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:string;
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
  writeln('judul ',kembali ,' dipinjam oleh ',nm,' sudah dikembalikan');
  {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 Cerdas');
     writeln('1.Tambah judul buku');
     writeln('2.Tambah stok buku');
     writeln('3. Cetak buku');
     writeln('4. Cetak urut judul');
     writeln('5. Cetak urut pengarang');
     writeln('6. Pinjam buku');
     writeln('7. Cetak peminjaman');
     writeln('8. Pengembalian buku');
     writeln('9. Selesai');
     write('Pilihan anda ==> ');readln(pil);
     case pil of
     1: tambah_buku(buk);
     2: tambah_stok(buk);
     3: cetak_buku(buk);
     4: begin
        urut_judul(buk);cetak_buku(buk);
        end;
     5: begin
        urut_pengarang(buk);cetak_buku(buk);
        end;
     6: pinjam_buku(buk);
     7: if m=0 then writeln('tidak ada yang meminjam') else cetak_pinjam(pinj);
     8: if m>0 then kembali_buku(buk) else
        writeln('maaf saat ini tidak ada yang sedang meminjam buku') ;
     9: writeln('Terimakasih ');
     end;
     readln;
     end
     until(pil=9);
end.

5 comments:

semua berawal dari diri kita

 
Copyright © 2012 wooodiez ~ Template By : Jasriman Sukri

Kamu bisa menulis deskripsi disini