Program 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.
\\agri_kuswandani
Hasil Compile
Sabtu, 03 Mei 2014
Program Peminjaman Buku Perpustakaan (Pascal)
Semoga bermanfaat :D
Share this
Related Articles :
Langganan:
Posting Komentar (Atom)
Paling Dilihat
-
Program Mengurutkan Angka Kecil Ke Besar (Dev C++) #include<iostream> #include<conio.h> using namespace std; int main() ...
-
Program Perkalian Matrik Ordo 2x2 ( Dev C++ ) #include <iostream> #include <conio.h> using namespace std; int main(voi...
-
Program Menghitung Luas segitiga ( Dev C++ ) #include <iostream> using namespace std; int main(int argc, char *argv[]) { int a,...
-
Program Penjumlahan dan Pengurangan Matrik Ordo 3x3 (Dev C++) #include<stdio.h> #include<conio.h> using namespace std; i...
-
Kali Ini admin mau share ni cara membuat kalkulator sederhana menggunakan bahasa C tepatnya menggunakan aplikasi pemrograman Borland C++ ,...
-
Program Menghitung Bangun Ruang dan Bangun Datar (Dev C++) #include<iostream> #include<math.h> using namespace std; main...
Diberdayakan oleh Blogger.
0 komentar
Posting Komentar