ig : Erixsyaifulr

Antrian pos

program antrian_pos;
uses crt;
const max=10;
type antrian=record
no_kartu:array[1..max] of byte;
depan,belakang:0..max;
end;
type pos=record
no:longint;
nama,alamat:string;
end;
larik_pos=array[1..max] of pos;
var antri,dummy:antrian;
bayar:larik_pos;
pil,pilih,i,a,n,kilo:byte;
harga:longint;
bayarp,kilob,kembali:longint;

function habis(x:antrian):boolean;
begin if a=100+max then habis:=true else habis:=false; end;

function kosong(x:antrian):boolean;
begin if x.belakang=0 then kosong:=true else kosong:=false; end;

procedure masuk_antrian(var x:antrian);
begin
writeln('selamat dtang di kantor pos mailik kami bertiga');
inc(x.belakang); inc(a);
x.no_kartu[x.belakang]:=a;
writeln('Anda mendapat kartu antrian nomor ',a,' posisi antrian ke ',x.belakang);
writeln('silahkan sabar menunggu');
end;

procedure cetak_antrian(var x:antrian);
begin
writeln('Kondisi antrian saaat ini');
writeln('----------------------------------');
writeln('  posisi          nomor kartu');
writeln('----------------------------------');
for i:=x.depan to x.belakang do writeln(i:4,'   ',x.no_kartu[i]:15);
writeln('----------------------------------');
writeln('saat ini ada ',x.belakang,' pengantree');
end;

procedure cetak_pembayaran(var x:larik_pos);
begin
writeln('DAFTAR YANG SUDAH MENGIRIM BARANG');
writeln('---------------------------------------');
writeln('no     nama       no hp          alamat');
writeln('---------------------------------------');
for i:=1 to n do writeln(i,'   ',x[i].nama:5,'   ',x[i].no:8,'         ',x[i].alamat);
writeln('---------------------------------------');
writeln('saat ini ada ',n,' orang yang sudah mengirim sesuatu');
end;

procedure layanan_pos(var x:antrian;var y:larik_pos);
label ulang;
begin
clrscr;
writeln('Selamat datang di layanan pengiriman barang');
writeln('Anda memiliki nomor kartu dengan no kartu antrian ',x.no_kartu[x.depan],' silahkan masuk konter');
for i:=x.depan to x.belakang-1 do x.no_kartu[i]:=x.no_kartu[i+1];
dec(x.belakang);
inc(n);
writeln('Masukan data diri anda');
write('Nama     : ');readln(y[n].nama);
write('No HP      : ');readln(y[n].no);
write('Masukan alamat      : ');readln(y[n].alamat);
writeln('selamat datang di menu layanan pos milik kami bertiga');
writeln('1. Paket');
writeln('2. Surat');
writeln('3. Kilat Khusus');
writeln('4. Wassel');
writeln('Masukan pilihan anda');readln(pilih);
case pilih of
1:begin
clrscr;
writeln('Anda berada dalam menu paket, isi prosedur dibawah ini');
writeln('Berikut adalah daftar harga paket : ');
writeln('1. 1 kg = Rp. 2000,00');
writeln('2. 2 kg = Rp. 4000,00');
writeln('3. 3 kg = Rp. 6000,00');
writeln('4. 4 kg = Rp. 10000,00');
writeln('5. 5 kg = Rp. 20000,00');
ulang:
write('Berapa kilo paket yang akan anda kirim ? ');readln(kilo);
if (kilo<1) or (kilo>5) then begin writeln('maaf kami tidak bisa melayaninya karena minimal pengiriman 1 kilo dan maksimal 5 kilo');goto ulang;end;
if (kilo=1) then harga:=2000;
if (kilo=2) then harga:=4000;
if (kilo=3) then harga:=6000;
if (kilo=4) then harga:=10000;
if (kilo=5) then harga:=20000;
kilob:=kilo*harga;
writeln('anda harus membayar ',kilob,' rupiah');
write('Masukkan pembayarannya : ');readln(bayarp);
kembali:=bayarp-kilob;
writeln('anda membayar sebesar ',bayarp,' kembali sebesar ',kembali,' rupiah');
end;
end;
end;

procedure keluar_antrian(var x:antrian);
var keluar,pos,j:byte;ada:boolean;
ya:char;

begin
ada:=false;
writeln('Keluiar antrian');
cetak_antrian(x);
write('masukan nomer yang kan keluar');readln(keluar);
for i:=x.depan to x.belakang do
begin if x.no_kartu[i]=keluar then begin ada:=true; pos:=i;end;end;
if not ada then writeln('nomor tidak ditemukan')
else
begin
write('yakin mau keluar ? ');readln(ya);
if(ya='y') or (ya='Y') then
begin
for j:=pos to x.belakang-1 do x.no_kartu[j]:=x.no_kartu[j+1];
dec(x.belakang);
writeln('nomor kartu ',keluar,' sudah meninggalkan antrian');
end
else
writeln('nomor kartu ',keluar,' tidak jadi keluar');
end;
end;
 
procedure sisip_antrian(var x:antrian);
var pos:byte;
label ulang;

begin
writeln('Menyisipkan seseorang ke antrian');
inc(a);writeln('selamat datang di layannan pengiriman barang');
writeln('anda mendapat nomer antrian ',a);
cetak_antrian(x);
write('sehubungan anda mendapakan layanan khusus, anda boleh menentukan menentukan nomer antrian');
ulang:
write('masukan nomer antrian yang nada inginkan ');readln(pos);
if (pos<x.depan) or (pos>x.belakang+1) then
begin writeln('posisi tidak diijinkan, ulangi isi posisi antara ',x.depan,' sampai ',x.belakang+1,' : ');goto ulang;
end;
if pos=(x.belakang+1) then
begin  inc(x.belakang);x.no_kartu[x.belakang]:=a;end
else
begin
for i:=pos to x.belakang do
begin inc(dummy.belakang); dummy.no_kartu[dummy.belakang]:=x.no_kartu[i];dec(x.belakang);end;
inc(x.belakang);x.no_kartu[x.belakang]:=a;
for i:=dummy.depan to dummy.belakang do
begin
inc(x.belakang);
x.no_kartu[x.belakang]:=dummy.no_kartu[i];
dec(dummy.belakang);
end;
writeln('nomor antrian ',a,' telah disisipkan');
end;
end;



begin
antri.depan:=1;antri.belakang:=0;a:=100;n:=0;
repeat
clrscr;
writeln('Pengelolaan antian untuk mengirim barang');
writeln('1. Masuk antrian');
writeln('2. Layanan pembayaran');
writeln('3. Cetak antrian');
writeln('4. Cetak daftar pengirim barang');
writeln('5. Menyisipkan antrian');
writeln('6. Keluar dari antrian');
writeln('0. Selesai');
write('pilih menu');readln(pil);
case pil of
1:if habis(antri) then writeln('maaf hanya melayani 10 mahasiswa')else masuk_antrian(antri);
2:if kosong(antri) then writeln('tidak ada mahasiswa dalam antrian')else layanan_pos(antri,bayar);
3:if kosong(antri) then writeln('tidak ada pengantri saat ini')else cetak_antrian(antri);
4:cetak_pembayaran(bayar);
5:if habis(antri) then writeln('maaf nomer antrian sudah habis') else sisip_antrian(antri);
6:if kosong(antri) then writeln('Antrisn sudah kosong') else keluar_antrian(antri);
0:writeln('terimakasih') else writeln('anda slah memilih menu');
end;
readln;
until pil=0
end.

Input, Cetak, Edit, Hapus

program week10_A1_larik;
uses crt;
const max=10;
type larik1=array[1..max]of string;
larik2=array[1..max]of real;
var nim,nama,prodi:larik1;
ip:larik2;
pil:0..4; i,n:byte;

procedure Isi_data(var x,y,z:larik1; var a:larik2);
var yy:string; ya:char;
label ulang,ulang1;

begin
repeat
  inc(n);writeln('mengisi data mahasiswa ke',n);
  ulang:
  write('masukan nim    :');readln(yy);
  if n>0 then
  begin for i:=1 to n do
begin if x[i]=yy then
begin writeln('nim sudah digunakan, ulangi');goto ulang;end;
end;
  end;
  x[n]:=yy;
  write('masukan nama  :');readln(y[n]);
  write('masukan prodi :');readln(z[n]);
  ulang1:
  write('masukan ip    :');readln(a[n]);
  if (a[n]<=0)or(a[n]>4)then begin writeln('inputan tidak valid, ulangi');goto ulang1;end;
  writeln;
  write('apakah anda akan menambah mahsiswa lagi <y/t> :');readln(ya);
until (ya<>'y')and(ya<>'Y');
end;

procedure cetak_data(a,b,c:larik1; d:larik2);
begin
writeln('           DAFTAR MAHASISWA DENGAN IP NYA ');
writeln('--------------------------------------------------------');
writeln('No        NIM          Nama          Prodi           IP');
writeln('--------------------------------------------------------');
for i:=1 to n do
  writeln(i:2,'  ',a[i]:6,'  ',b[i]:12,'  ',c[i]:12,'  ',d[i]:6:2);
writeln('--------------------------------------------------------');
end;

procedure Edit_Data(var a,b,c:larik1;var d:larik2);
var edit:string; ada:boolean; pilih,pos:byte; ya:char;
label  ulang;

begin
writeln('mengedit data mahsaiswa');
write('masukkan nim mhs yg akan diedit  :');readln(edit);
ada:=false;
for i:=1 to n do if a[i]=edit then begin ada:=true;pos:=i;end;
if ada then
begin
ulang:
writeln('anda akan mengedit data mahasiswa dengan NIM',edit);
writeln('yang akan diedit: 1. Nama  2. Prodi  3. IP');
write('pilih salah satu   :  ');readln(pilih);
case pilih of
1: begin
writeln('anda akan mengedit nama');
writeln('Nama sebelum diedit  :  ',b[pos]);
write('masukan Nama yg baru:');readln(b[pos]);
   end;
2: begin
writeln('anda akan mengedit Prodi');
writeln('Prodi sebelum diedit  :',c[pos]);
write('masukan Prodi yg baru  :');readln(c[pos]);
   end;
3: begin
writeln('anda akan mengedit IP');
writeln('IP sebelum diedit  :',d[pos]);
write('masukan IP yg baru  :');readln(d[pos]);
   end else writeln('anda salah memilih menu, tidak jadi mengedit');
end;{end case}
writeln;
write('apakah anda akan mengedit lagi atribut lain dari NIM',edit,' <y/t> ?');readln(ya);
if (ya='y')or (ya='Y') then goto ulang else writeln('editing selesai');
end {end if ada}
else writeln('NIM',edit,'  tidak ditemukan');
end;

procedure hapus_nomor(var a,b,c:larik1;var d:larik2);
var hapus:byte; ya:char;

begin
write('masukkan nomor urut mahasiswa yang akan dihapus ; ');readln(hapus);
if(hapus<1) or (hapus>n) then writeln('nomor urut tidak valid')
else
begin
writeln('Anda akan menghapus data nomor urut ',hapus);
write('yakin akan dihapus<y/t> ?');readln(ya);
if (ya='y') or (ya='Y') then
begin
writeln('nomor urut',hapus,' dihapus');
for i:=hapus to n-1 do
begin a[i]:=a[i+1];b[i]:=b[i+1];c[i]:=c[i+1];d[i]:=d[i+1];end;
dec(n);
end
else writeln('Nomor urut',hapus,' tidak jadi dihapus');
end;
end;

procedure hapus_nim(var a,b,c:larik1;var d:larik2);
var hapus:string; pos:byte; ada:boolean;ya:char;

begin
write('masukkan nim yan akan dihapus : ');readln(hapus);
ada:=false;
for i:=1 to n do if a[i]=hapus then begin ada:=true;pos:=i;end;
if not ada then writeln('nim',hapus,'tidak ditemukan')
else
begin
writeln('Mahasiswa dengan nim: ',hapus,' ditemukan');
writeln('nama    :',b[pos]);
writeln('prodi   :',c[pos]);
writeln('IP      :',d[pos]:4:2);
write('yakin akan menghapus data tersebut <y/t> ?');readln(ya);
if (ya='y') or (ya='Y') then
begin
writeln('NIM',hapus,'dihapus');
for i:=pos to n-1 do
begin a[i]:=a[i+1];b[i]:=b[i+1];c[i]:=c[i+1];d[i]:=d[i+1];end;
dec(n);
end
else writeln('NIM',hapus,' tidak jadi dihapus');
end;
end;

procedure hapus_nama(var a,b,c:larik1;var d:larik2);
var hapus:string; pos,j:byte; ada:boolean;ya:char;

begin
write('masukkan  naama mhs yang akan dihapus :');readln(hapus);
ada:=false;
for i:=1 to n do if b[i]=hapus then
begin
ada:=true;
writeln('Nama mahasiswa :',hapus,' ditemukan');
pos:=i;
writeln('nama    :',a[pos]);
writeln('prodi   :',c[pos]);
writeln('IP      :',d[pos]:4:2);
write('yakin akan menghapus data tersebut <y/t> ?');readln(ya);
if (ya='y') or (ya='Y') then
begin
writeln('NIM',hapus,'dihapus');
for j:=pos to n-1 do
begin a[j]:=a[j+1];b[j]:=b[j+1];c[j]:=c[j+1];d[j]:=d[j+1];end;
dec(n);
end
else writeln('NIM',hapus,' tidak jadi dihapus');
end;
if not ada then writeln('Nama mahasiswa',hapus,' tidak ditemukan');
end;

procedure hapus_data(var a,b,c:larik1;var d:larik2);
var pilih:byte;

begin
writeln('Mengahpus data mahasiswa');
cetak_data(a,b,c,d);
writeln('Anda akan melakukan penghapusan berdasarkan');
writeln('1. No urut');
writeln('2. NIM');
writeln('3. Nama');
write('masukkan pilihan anda <1-3> ?');readln(pilih);
case pilih of
1:hapus_nomor(a,b,c,d);
2:hapus_nim(a,b,c,d);
3:hapus_nama(a,b,c,d);
end;
writeln('Enter untuk kembali ke menu utama');
end;


begin
n:=0;
repeat
clrscr;
writeln('mengelola data mahasiswa');
writeln('1. Input Data');
writeln('2. Cetak Data');
writeln('3. Edit Data');
writeln('4. Hapus Data');
writeln('0. Selesai');
write('masukkan pilihan anda <0-4> :');readln(pil);
case pil of
1: if n=max then writeln('kuota mhs sudah penuh')else Isi_Data(nim,nama,prodi,ip);
2: if n=0 then writeln('cingireeeeee!!!!!!!!!!!! urung ana datane broook')else Cetak_Data(nim,nama,prodi,ip);
3: if n=0 then writeln('daftar mhs masih kosong')else Edit_Data(nim,nama,prodi,ip);
4: if n=0 then writeln('daftar mhs masih kosong')else hapus_data(nim,nama,prodi,ip);
0: writeln('terimaksih') else writeln('anda salah pilih menu');
end;
readln;
until pil=0;
end.

Array bioskop

program bioskop122;
uses crt;
const max=10;
type larik1=array[1..max]of string;
larik2=array[1..max] of byte;
larik3=array[1..max] of real;
type bioskop=record
judul_film,jam_tayang:string;
no_kursi:larik2;
status:larik1;
tarif:larik3;
jum_penonton:byte;
pendapatan:real;
end;
larik_bioskop=array[1..4]of bioskop;
var xx1:larik_bioskop; i,j,pil,pilih:byte;


procedure inisialisasi(var x:larik_bioskop);
begin
writeln('Mengisi data theatre');
for j:=1 to 4 do
begin
write('Masukan judul film yang akan diputar di theatre: ',j,' : ');readln(x[j].judul_film);
write('Masukan jam tayangnya : ');readln(x[j].jam_tayang);
for i:=1 to max do
begin x[j].no_kursi[i]:=i;
  if x[j].no_kursi[i]<=3 then x[j].tarif[i]:=30000 else if x[j].no_kursi[i]<=7 then x[j].tarif[i]:=40000
  else x[j].tarif[i]:=50000;
  x[j].status[i]:='kosong';
  x[j].jum_penonton:=0;
end;
end;
end;

procedure cetak_bioskop(var x:larik_bioskop);
begin
writeln('Cetak kondisi kursi bioskop XX1');
writeln;
for j:=1 to 4 do
begin
writeln('judul film di theatre ',j,' :',x[j].judul_film);
writeln('jam tayang   :',x[j].jam_tayang);writeln;
writeln('--------------------------------------');
writeln('No kursi       Status          Tarif');
writeln('--------------------------------------');
for i:=1 to max do
writeln(x[j].no_kursi[i]:4,'    ',x[j].status[i]:6,'    ','Rp',x[j].tarif[i]:6:2);
writeln('--------------------------------------');
writeln('Jumlah penonton di XX1 saat ini : ',x[j].jum_penonton,' orang');
writeln('enter untuk melanjutkan');
readln;
end;
end;

procedure cetak_pendapatan(var x:larik_bioskop);
begin
writeln('Cetak pendapatan di Bioskop XX1');
writeln;
for j:=1 to 4 do
begin
writeln('Pendapatan di theatre ',j);
writeln('judul film   :',x[j].judul_film);
writeln('jam tayang   :',x[j].jam_tayang);writeln;
writeln('--------------------------------------');
writeln('No kursi       Status          Tarif');
writeln('--------------------------------------');
for i:=1 to max do
begin
writeln(x[j].no_kursi[i]:4,'    ',x[j].status[i]:6,'    ','Rp',x[j].tarif[i]:6:2);
if x[j].status[i]='isi' then x[j].pendapatan:=x[j].pendapatan+x[j].tarif[i]
end;
writeln('--------------------------------------');
writeln('Jumlah penonton di XX1 saat ini : ',x[j].jum_penonton,' orang');
writeln('Pendapatan saat ini : Rp',x[j].pendapatan:6:2);
writeln('enter untuk melanjutkan');readln;
end;
writeln('Pendapatan total XX1 :Rp ',x[1].pendapatan+x[2].pendapatan+x[3].pendapatan+x[4].pendapatan:8:2);
end;

procedure cetak_bioskop_per_thetare(var y:bioskop);
begin
writeln('Judul film :',y.judul_film);
write('Jam tayang   :',y.jam_tayang);writeln;
writeln('--------------------------------------');
writeln('No kursi       Status          Tarif');

writeln('--------------------------------------');
for i:=1 to max do
writeln(y.no_kursi[i]:4,'    ',y.status[i]:6,'    ','Rp',y.tarif[i]:6:2);
writeln('--------------------------------------');
writeln('Jumlah penonton di XX1 saat ini : ',y.jum_penonton,' orang');
end;


procedure beli_tiket(var y:bioskop);
var beli,no:byte;bayar,jum:real;
label ulang,ulang1;

begin
jum:=0;
writeln('Menu beli tiket');
write('Selamat datang di bioskop XX1');
cetak_bioskop_per_thetare(y);
write('Berapa tiket yang akan anda beli : ');readln(beli);
if(max-y.jum_penonton)<beli then writeln('Jumlah tiket tidak cukup')
else
begin
for i:=1 to beli do
begin
ulang:
write('pilih nomor kursi :');readln(no);
if(no<1)or(no>max) then begin writeln('Nomor kursi tidak valid, ulangi');goto ulang;end;
if y.status[no]='isi' then begin writeln('Nomor kursi telah terisi, ulang');goto ulang;end;
y.status[no]:='isi';jum:=jum+y.tarif[no];inc(y.jum_penonton);
end;
ulang1:
write('Bayar : Rp.');readln(bayar);
if (bayar<jum) then begin writeln('Pembayaran kurang,ulang');goto ulang1;end;
writeln('kembali :Rp',bayar-jum:8:2);
writeln('Terimakasih sudah membelintiket di XX1');
end;
end;

function penuh(y:bioskop):boolean;
begin if y.jum_penonton=max then penuh:=true else penuh:=false;end;

function kosong(y:bioskop):boolean;
begin if y.jum_penonton=0 then kosong:=true else kosong:=false;end;

procedure nonton(var x:larik_bioskop);
begin
 writeln('Membeli tiket bioskop');
 writeln('1. Beli tiket di theatre 1 Judul film :',x[1].judul_film);
 writeln('2. Beli tiket di theatre 2 Judul film :',x[2].judul_film);
 writeln('3. Beli tiket di theatre 3 Judul film :',x[3].judul_film);
 writeln('4. Beli tiket di theatre 4 Judul film :',x[4].judul_film);
 writeln('0. Tidak jadi beli tiket');
 write('Masukan pilihan anda');readln(pilih);
 case pilih of
 1:if penuh(x[pilih]) then writeln('theatre 1 sudah penuh')else beli_tiket(x[pilih]);
 2:if penuh(x[pilih]) then writeln('tiket di theatre 2 sudah penuh')else beli_tiket(x[pilih]);
 3:if penuh(x[pilih]) then writeln('tiket di theatre 3 sudah penuh')else beli_tiket(x[pilih]);
 4:if penuh(x[pilih]) then writeln('tiket di theatre 4 sudah penuh')else beli_tiket(x[pilih]);
 0:writeln('enter untuk kembali ke menu utama')else writeln('salah pilih mas');
 end;
 end;

 procedure cetak_bioskop_satuan(var x:larik_bioskop);
 begin
writeln('pilihan percetakan');
writeln('1. Cetak Theatre 1');
writeln('2. Cetak Theatre 2');
writeln('3. Cetak Theatre 3');
writeln('4. Cetak Theatre 4');
writeln('masukan pilihan anda');readln(pilih);
case pilih of
1:cetak_bioskop_per_thetare(x[pilih]);
2:cetak_bioskop_per_thetare(x[pilih]);
3:cetak_bioskop_per_thetare(x[pilih]);
4:cetak_bioskop_per_thetare(x[pilih]);
else writeln('anda salah memilih mas');
end;
writeln('enter untuk kembali ke menu utama');
end;
begin
repeat
clrscr;
writeln('Pengelolaan bioskop xx1');
writeln('1. Buat Bioskop');
writeln('2. Cetak bioskop');
writeln('3. Beli tiket');
writeln('4. Cetak pendapatan');
writeln('5. Cetak bioskop per thetare');
writeln('0. Selesai');
write('pilih menu :');readln(pil);
case pil of
1:inisialisasi(xx1);
2:cetak_bioskop(xx1);
3:nonton(xx1);
4:cetak_pendapatan(xx1);
5:cetak_bioskop_satuan(xx1);
0:writeln('Terimakasih')else writeln('Anda salah memilih menu');
end;
readln;
until pi=0;
end.




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.

Translate