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.
Males ngetik!!!!!!!!
ReplyDeletecopas begok
DeleteAda yg salah tuh
ReplyDeleteCopas nya gimana njir
ReplyDeletebegok
Delete