9/20/2014

Program Penyewaan Buku Komik dalam Pascal

Program Penyewaan Buku Komik dalam Pascal - Penyewaan Buku Komik menggunakan kompiler Dev-Pascal, berikut ini Source Code Program yang bisa langsung diterapkan ke dalam kompiler Dev-Pascal.

    program persewaan_Komik;

    {jangan lupa titik koma dan nama file tidak boleh pakai space}

    

    {library yang digunakan}

    uses crt, dos; {mengatur tampilan}

    

    {deklarasi record transaksi}

    type

    transaksi = record

     nama:string;

     nim:real;

     kodeBuku:integer;

     dP:word;

     mP:word;

     yP:word;

     dK:word;

     mK:word;

     yK:word;

     status:string;

    end;

    

    {deklarasi record buku komik}

     buku = record

     kodeBuku:integer;

     edisi:string;

     judul:string;

     tahun:integer;

     hargaSewa:integer;

     stok:integer;

    end;

    

    {deklarasi array}

    dataPelanggan = array [1..20] of transaksi;

    dataBuku = array[1..20] of buku;

    

    {dekarasi variable global}

    var

     p:dataPelanggan;

     b:dataBuku;

     lastBuku:integer;

     lastTransaksi:integer;

     indexBuku:integer;

     pilih:integer;

     i:integer;

    

    {daftar koleksi buku default}

    procedure daftarKomik();

    begin

     b[1].judul := 'Naruto Shipudden';

     b[1].kodeBuku := 310;

     b[1].tahun := 2011;

     b[1].edisi := '1-5';

     b[1].hargaSewa:=1000;

     b[1].stok:=1;

    

    b[2].judul := 'Samurai X';

     b[2].kodeBuku := 311;

     b[2].tahun := 2012;

     b[2].edisi := '6-10';

     b[2].hargaSewa:=1500;

     b[2].stok:=1;

    

    b[3].judul := 'Doremon';

     b[3].kodeBuku := 312;

     b[3].tahun := 2012;

     b[3].edisi := '11-20';

     b[3].hargaSewa:=1000;

     b[3].stok:=2;

    

    b[4].judul := 'fireTail';

     b[4].kodeBuku := 313;

     b[4].tahun := 2011;

     b[4].edisi := '51-60';

     b[4].hargaSewa:=1500;

     b[4].stok:=1;

    

    b[5].judul := 'Dragon Ball Z';

     b[5].kodeBuku := 314;

     b[5].tahun := 2012;

     b[5].edisi := '61-70';

     b[5].hargaSewa:=1000;

     b[5].stok:=2;

    

     b[6].judul := 'EX-men';

     b[6].kodeBuku := 315;

     b[6].tahun := 2012;

     b[6].edisi := '71-80';

     b[6].hargaSewa:=1000;

     b[6].stok:=1;

    

    b[7].judul := 'Kapten Stubasa';

     b[7].kodeBuku := 316;

     b[7].tahun := 2010;

     b[7].edisi := '41-60';

     b[7].hargaSewa:=2000;

     b[7].stok:=0;

    

    b[8].judul := 'Betmen';

     b[8].kodeBuku := 317;

     b[8].tahun := 2010;

     b[8].edisi := '61-80';

     b[8].hargaSewa:=1500;

     b[8].stok:=1;

    

    b[9].judul := 'One Piace';

     b[9].kodeBuku := 318;

     b[9].tahun := 2011;

     b[9].edisi := '90-100';



     b[9].hargaSewa:=2000;



     b[9].stok:=1;



    



    b[10].judul := 'Ben 10';

     b[10].kodeBuku := 319;

     b[10].tahun := 2011;

     b[10].edisi := '101-110';

     b[10].hargaSewa:=1000;

     b[10].stok:=2;

    end;

    

{daftar transaksi pelanggan dafault}

procedure daftarPelanggan();

begin

 p[1].nama:='Ariska';

 p[1].nim:=10030092;

 p[1].kodeBuku:=311;

 p[1].dP:=13;

 p[1].mP:=4;

 p[1].yP:=2012;

 p[1].dK:=16;

 p[1].mK:=4;

 p[1].yK:=2012;

 p[1].status:='Sdh Dikembalikn';

    

 p[2].nama:='Ahmad';

 p[2].nim:=10080023;

 p[2].kodeBuku:=313;

 p[2].dP:=16;

 p[2].mP:=4;

 p[2].yP:=2012;

 p[2].dK:=19;

 p[2].mK:=4;

 p[2].yK:=2012;

 p[2].status:='Sdh Dikembalikn';



 p[3].nama:='Imam Mahdi';

 p[3].nim:=10080011;

 p[3].kodeBuku:=314;

 p[3].dP:=18;

 p[3].mP:=4;

 p[3].yP:=2012;

 p[3].dK:=21;

 p[3].mK:=4;

 p[3].yK:=2012;

 p[3].status:='Blm Dikembalikn';



 p[4].nama:='Hanifah';

 p[4].nim:=10080001;

 p[4].kodeBuku:=319;

 p[4].dP:=24;

 p[4].mP:=4;

 p[4].yP:=2012;

 p[4].dK:=27;

 p[4].mK:=4;

 p[4].yK:=2012;

 p[4].status:='Blm Dikembalikn';



 p[5].nama:='Bambang';

 p[5].nim:=10080099;

 p[5].kodeBuku:=316;

 p[5].dP:=23;

 p[5].mP:=4;

 p[5].yP:=2012;

 p[5].dK:=26;

 p[5].mK:=04;

 p[5].yK:=2012;

 p[5].status:='Blm Dikembalikn';



 p[6].nama:='Muttaqin';

 p[6].nim:=10030021;

 p[6].kodeBuku:=315;

 p[6].dP:=25;

 p[6].mP:=4;

 p[6].yP:=2012;

 p[6].dK:=28;

 p[6].mK:=04;

 p[6].yK:=2012;

 p[6].status:='Blm Dikembalikn';

    

 p[7].nama:='Suryan';

 p[7].nim:=10030004;

 p[7].kodeBuku:=312;

 p[7].dP:=26;

 p[7].mP:=4;

 p[7].yP:=2012;

 p[7].dK:=29;

 p[7].mK:=04;

 p[7].yK:=2012;

 p[7].status:='Blm Dikembalikn';

end;



{input data transaksi}

procedure inputTransaksi();

var

 nama:string;

 nim:real;

 y,m,d,hari:word;

 yK,mK,dK:word;

 jumlah:integer;

 kodeBuku:integer;

 ulangi, ketemu, pernahPinjam : Boolean;

 n:integer;



begin

 getdate(y,m,d,hari); {input tanggal hari ini}

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' Transaksi Peminjaman Komik ');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln();

 write(' Masukkan nama : '); readln(nama);

 write(' NIM : '); readln(nim);

 writeln();

 writeln(' Tanggal pinjam : ',d,'/',m,'/',y);

 dK:= d + 3; {batas pinjam cuma tiga hari}



 if dk >= 30 then {jika pinjam di akhir bulan}

 begin

 dk := dk-30+1;

 mK := m+1;

 end;



 yK := y;{ tahun peminjaman dan tahun sekarang sama}

 writeln(' Tanggal kembali: ',dK,'/',mK,'/',yK);

 writeln();

 write('Berapa banyak buku yang dipinjam : ');readln(jumlah);

 writeln();



 {Buku - buku yang akan dipijam}

 for i:= 1 to jumlah do

 begin

 repeat

 ulangi := false;

 ketemu := false;

 pernahPinjam:= false;

 {Input kode buku}

 write(i,'. Kode buku : ');readln(kodeBuku);



 {mengecek apakah buku pernah dipijam}

 for n:= 1 to (lastTransaksi-1) do

 begin

 if p[n].nim = nim then

 begin

 if p[n].kodeBuku = kodeBuku then

 begin

 pernahPinjam := true;

 end

 end

 end;



 {mengecek apakah buku yang dipinjam ada}

     for n:= 1 to (lastBuku-1) do

 begin

 if (b[n].kodeBuku = kodeBuku) and (b[n].stok <> 0) then

 begin

 p[lastTransaksi].kodeBuku := kodeBuku;

 b[n].stok := b[n].stok - 1;

 ketemu := true;

 end

 end;



 {jika buku tidak ada di data base atau stok buku habis}

 if ketemu <> true then

 begin

 ulangi := true;

 writeln(' Kode Buku Tidak Dikenali atau Stok Habis!! ');

 writeln();

 end;



 {jika sebelumnya pernah transaksi buku}

 if pernahPinjam = true then

 begin

 ulangi := true;

 writeln(' Pelanggan Pernah Pinjam Sebelumnya!!');

 writeln();

 end;

 until ulangi = false;



 {penyalinan nama, nim, tanggal pinjam dan tanggal ke database transaksi}

 p[lastTransaksi].nama := nama;

 p[lastTransaksi].nim := nim;

 p[lastTransaksi].dP:=d;

 p[lastTransaksi].mP:=m;

 p[lastTransaksi].yP:=y;

 p[lastTransaksi].dK:=dK;

 p[lastTransaksi].mK:=mK;

 p[lastTransaksi].yK:=yK;

 p[lastTransaksi].status:='Blm Dikembalikn';

 lastTransaksi := lastTransaksi + 1;

 end;

 writeln();

 writeln(' Transaksi Berhasil!! ');

 writeln();

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

end;



{tampilkan data}

procedure tampilkanData();

var

 {variable local}

 pilih2:integer;

 baris:integer;



begin

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' Data yang Akan Dilihat ');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' 1. Persediaan Buku');

 writeln(' 2. Daftar Transaksi Pelanggan');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 write(' Pilih[1/2]: '); readln(pilih2);



 {jika yang dipiliha adalah persediaan buku}

 if pilih2 = 1 then

 begin

 clrscr;

 writeln(' Daftar Semua Buku');

 writeln('+---------------------------------------------------------------+');

 writeln('| Kode Buku | Judul Buku | Edisi | Tahun | harga sewa | stok |');

 writeln('+---------------------------------------------------------------+');



 {mencetak semua data yang ada di database koleksi buku}

 for i:= 1 to (lastBuku-1) do

 begin

 write('| ',b[i].kodeBuku);

 write('| ',b[i].judul);

 write('| ',b[i].edisi);

 write('| ',b[i].tahun);

 writeln('| ',b[i].hargaSewa);

 writeln('| ',b[i].stok);

 writeln('|');

 baris := baris+1;

 end;

 writeln('+---------------------------------------------------------------+');

 {jika tidak memilih 1 }

 end else

 begin

 clrscr;

 writeln(' Daftar Semua Transaksi ');

 writeln('+-----------------------------------------------------------------------------+');

 writeln('| Nim | Nama | K. Buku | Tgl Pinjam | Tgl Kembali | Status |');

 writeln('+-----------------------------------------------------------------------------+');

 {mencetak semua data uang ada di database transaksi}

 for i:= 1 to (lastTransaksi-1) do

 begin

 gotoxy(1,baris); write('| ',p[i].nim:0:0);

 gotoxy(12,baris); write('| ',p[i].nama);

 gotoxy(24,baris);write('| ',p[i].kodeBuku);

 gotoxy(34,baris);write('| ',p[i].dP,'/',p[i].mP,'/',p[i].yP);

 gotoxy(47,baris);write('| ',p[i].dK,'/',p[i].mK,'/',p[i].yK);

 gotoxy(61,baris);write('| ',p[i].status);

 gotoxy(79,baris);writeln('|');

 baris := baris+1;

 end;

 writeln('+-----------------------------------------------------------------------------+');

 end;

 end;



{pemgembalian buku}

procedure pengembalianBuku();

var

 pilih2:integer;

 nim:real;

 nama:string;

 indexTemu:integer;

 ketemu:Boolean;

 temu:array[1..20] of integer;

 baris:integer;

 n:integer;

 kembalikan:integer;

 hari:integer;

 d,m,y, dow:word;

 bayar, denda:real;

 totalBayar:real;



begin

 getDate(y,m,d,dow); {input tanggal sekarang}

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' Pengembalian Buku');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' Pencarian berdasarkan :');

 writeln(' 1. NIM ');

 writeln(' 2. Nama ');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 write(' Pilih [1/2]: ');readln(pilih2);

 writeln();



 {jika memilih nim}

 if pilih2 = 1 then

 begin

 write(' Masukkan Nim : ');readln(nim);



 {mengecek di databese transaksi apakah ada nim tersebut}

 for i:= 1 to (lastTransaksi-1) do

 begin

    

     {jika ada}

     if p[i].nim = nim then

     begin

     ketemu:= true;

     temu[indexTemu]:=i;

     nama:=p[i].nama;

     indexTemu:= indexTemu + 1;

     end

    

     end;

    

     end else

     begin

     write(' Masukkan Nama : ');readln(nama);

     {mengecek apakah nama tersebut ada di database transaksi}

     for i:= 1 to (lastTransaksi-1) do

     begin

    

     {jika ada}

     if p[i].nama = nama then

     begin

     ketemu:= true;

     temu[indexTemu]:=i;

     nama:=p[i].nama;

     indexTemu:= indexTemu + 1;

     end

    

     end;

    

     end;

    

     if ketemu = true then

     begin

     {proses(index);}

     clrscr;

     writeln(' Pengembalian Buku (',nama,')');

     writeln('+---------------------------------------------------------------------+');

     writeln('| No. | Kode Buku | Judul Buku | Tgl Kembali | Status |');

     writeln('+---------------------------------------------------------------------+');

    

     {menampilkan semua data yang pernah dipinjam oleh pelanggan}

     for i:= 1 to (indexTemu-1) do

     begin

     write('| ',i);

     write('| ',p[temu[i]].kodeBuku);

    

     {melakukan relasi ke databese buku}

     for n:= 1 to (lastBuku-1) do

     begin

     if b[n].kodeBuku = p[temu[i]].kodeBuku then

     begin

     write('| ',b[n].judul);

     end

    

     end;

    

     write('| ',p[temu[i]].dK,'/',p[temu[i]].mK,'/',p[temu[i]].yK);

     write('| ',p[temu[i]].status);

     writeln('|');

     baris := baris+1;

     end;

    

     writeln('+---------------------------------------------------------------------+');

     writeln('| Pilih 0 untuk Keluar |');

     writeln('+---------------------------------------------------------------------+');

    

     {melakukan perlangan jika tidak menekan nol atau angka yang tidak sesuai}

     repeat

     write('Pilih daftar no. yang akan dikembalikan : ');readln(kembalikan);

     writeln();

     hari := 0;

     denda := 0;

     bayar := 0;

    

     {jika pelnaggan nekan nol atau melebihi angka yang ditentukan}

     if (kembalikan <> 0) and (kembalikan <indexTemu) then

     begin

    

     {jika buku tersebut belum dikembalikan}

     if p[temu[kembalikan]].status <> 'Sdh Dikembalikn' then

     begin

     {menghitung denda}

     hari:= 0;

    

     {mengecek apakah bulan dan tahun sama}

     if (m = p[temu[kembalikan]].mK) and (y = p[temu[kembalikan]].yK) then

     begin

     hari := d - p[temu[kembalikan]].dK;{jarak hari}

     {mengecek apakah tahun pinjam dan tahun sekarang sama}

     end else if (m <> p[temu[kembalikan]].mK) and (y = p[temu[kembalikan]].yK) then

     begin

     hari := (m - p[temu[kembalikan]].mK)*30; { jarak bulan}

     hari := hari - p[temu[kembalikan]].dK - (30 - d); {jarak bulan - jarak hari}

     end;

    

     {jika mengembalikan sebelum hari ditentukan}

     if hari<0 then

     begin

     hari := 0;

     end;

     denda := hari * 1000;

     writeln(' Terlambat : ',hari,' Hari');

    

     {mencari harga yang ada di database buku}

     for i:= 1 to (lastBuku-1) do

     begin

    

     {jika kode buku sama}

     if p[temu[kembalikan]].kodeBuku = b[i].kodeBuku then

     begin

     bayar:= b[i].hargaSewa+denda;

     b[i].stok := b[i].stok + 1 ;

     writeln(' Harga Sewa : Rp ',b[i].hargaSewa,',00');

     writeln(' Denda : Rp ',denda:0:0,',00');

     writeln(' Jumlah : Rp ',bayar:0:0,',00');

     totalBayar := totalbayar + bayar;

     end

     end;

    

     {menyesuaikan status dan tanggal kembali}

     p[temu[kembalikan]].status:= 'Sdh Dikembalikn';

     p[temu[kembalikan]].dK:=d;

     p[temu[kembalikan]].mK:=m;

     p[temu[kembalikan]].yK:=y;

    

     writeln();

     writeln(' Total Sementara adalah : Rp ',totalBayar:0:0,',00');

     writeln();

     end else

     begin

     writeln(' Buku sudah DiKembalikan!!');

     writeln();

     end;

     {jika menekan nol dan menekan angka yang tidak sesuai}

     end else

     begin

     kembalikan := 0;

     end;

     until kembalikan = 0;

     {jika nim atau nama tidak terdapat di databese transaksi}

     end else

     begin

     writeln(' Maaf, data tidak ditemukan!!');

     writeln();

     end;

     writeln();

     writeln(' Jadi, Total yang harus dibayar adalah : Rp ',totalBayar:0:0,',00');

     writeln();

    end;

    

    {hapus data}

    procedure hapusData();

    var

     n:integer;

     baris:integer;

     hapus:integer;

    

    begin

     {melakukan perulangan selama tidak menekan 0}

     repeat

     baris:= 5;

     clrscr;

     writeln(' Daftar Semua Transaksi ');

     writeln('+--------------------------------------------------------------------------+');

     writeln('| No.| NIM | Nama | Judul buku yang dipinjam | Status |');

     writeln('+--------------------------------------------------------------------------+');

    

     {menampilkan semua data yang ada di transaksi data}

     for i:= 1 to (lastTransaksi-1) do

     begin

     gotoxy(1,baris); write('| ',i);

     gotoxy(6,baris); write('| ',p[i].nim:0:0);

     gotoxy(18,baris); write('| ',p[i].nama);

    

     {melakukan relasi untuk mencari nama buku}

     for n:= 1 to (lastBuku-1) do

     begin

     if p[i].kodeBuku = b[n].kodeBuku then

     begin

     gotoxy(31,baris);write('| ',b[n].judul);

     end;

     end;

     gotoxy(58,baris);write('| ',p[i].status);

     gotoxy(76,baris);writeln('|');

     baris := baris+1;

     end;

     writeln('+--------------------------------------------------------------------------+');

     writeln('| Pilih 0 untuk Batalkan Pengahapusan |');

     writeln('+--------------------------------------------------------------------------+');

     write(' Pilih No transaksi yang akan dihapus : ');readln(hapus);

    

     {jika tidak menekan nol}

     if hapus<>0 then

     begin

    

     {menumpuk data yang akan dihapus dengan data sebelumnya}

     for i:= hapus to (lastTransaksi-2) do

     begin

     p[i].nama:=p[i+1].nama;

     p[i].nim:=p[i+1].nim;

     p[i].kodeBuku:=p[i+1].kodeBuku;

     p[i].dP:=p[i+1].dP;

     p[i].mP:=p[i+1].mP;

     p[i].yP:=p[i+1].yP;

     p[i].dK:=p[i+1].dK;

     p[i].mK:=p[i+1].mK;

     p[i].yK:=p[i+1].yK;

     p[i].status:=p[i+1].status;

     end;

    

     lastTransaksi := lastTransaksi - 1;

     writeln();

     writeln(' Hapus Data Transaksi Berhasil!!');

     writeln();

     end;

    

     until hapus = 0;

    end;

    

    {untuk menambah daftar buku}

    procedure tambahBuku();

    var

     {variable local}

     tambah:integer;

    

    begin

     writeln();

     writeln(' Tambah Buku');

     writeln();

     write(' Berapa Buku yang akan ditambah: ');readln(tambah);

    

     {melakukan perulangan sebanyak jumlah yang ditambahkan}

     for i:= 1 to tambah do

     begin

     writeln();

     writeln(' No. ',i);

     writeln(' Kode Buku : ',indexBuku);

     b[lastBuku].kodeBuku:=indexBuku;

     indexBuku:= indexBuku + 1;

     write(' Judul Buku : ');readln(b[lastBuku].judul);

     write(' Edisi : ');readln(b[lastBuku].edisi);

     write(' Tahun : ');readln(b[lastBuku].tahun);

     write(' Harga Sewa : ');readln(b[lastBuku].hargaSewa);

     write(' Stok : ');readln(b[lastBuku].stok);

     lastBuku := lastBuku+1;

     end;

     writeln();

     writeln(' Tambah Buku Berhasil!!');

     writeln();

     writeln('tekan enter untuk melanjutkan...');

    end;

    

    {melakukan pembaruan harga dan stok buku}

    procedure updateBuku();

    var

     {variable local}

     baris:integer;

     index:integer;

    

    begin

     repeat

     baris:=5;

     clrscr;

     writeln(' Update Harga dan stok Buku ');

     writeln('+---------------------------------------------------+');

     writeln('| no. Buku | Judul Buku | harga sewa | stok |');

     writeln('+---------------------------------------------------+');

    

     {menampilkan semua daftar buku}

     for i:= 1 to (lastBuku-1) do

     begin

     gotoxy(1,baris);write('| ',i);

     gotoxy(12,baris);write('| ',b[i].judul);

     gotoxy(32,baris);write('| ',b[i].hargaSewa);

     gotoxy(45,baris);write('| ',b[i].stok);

     gotoxy(53,baris);writeln('|');

     baris := baris+1;

     end;

    

     writeln('+---------------------------------------------------+');

     writeln('| Pilih 0 untuk membatalkan |');

     writeln('+---------------------------------------------------+');

     write(' Masukkan no. Buku : ');readln(index);

    

     {jika tidak menekan nol}

     if index <> 0 then

     begin

     writeln(' Judul Buku : ',b[index].judul);

     writeln(' Harga Sewa Semula : ',b[index].hargaSewa);

     write(' Harga Sewa Baru : ');readln(b[index].hargaSewa);

     writeln(' Stok Semula : ',b[index].stok);

     write(' Stok Baru : ');readln(b[index].stok);

     writeln();

     writeln(' Update Berhasil!!');

     writeln();

     end else

     begin

     writeln();

     writeln(' Update Selesai!!');

     writeln();

     end;

    

     writeln('tekan enter untuk melanjutkan...');

     until index=0;

    end;

    

    procedure hapusBuku();

    var

     {variable local}

     baris:integer;

     hapus:integer;

    

    begin

     repeat

     baris:=5;

     clrscr;

     writeln(' Hapus Buku ');

     writeln('+-------------------------------------+');

     writeln('| No. | Kode Buku | Judul Buku |');

     writeln('+-------------------------------------+');

    

     {menampilkan semua daftar buku}

     for i:= 1 to (lastBuku-1) do

     begin

 gotoxy(1,baris);write('| ',i);

 gotoxy(7,baris);write('| ',b[i].kodeBuku);

 gotoxy(19,baris);write('| ',b[i].judul);

 gotoxy(39,baris);writeln('|');

 baris := baris+1;

 end;



 writeln('+-------------------------------------+');

 writeln('| Tekan 0 untuk membatalkan |');

 writeln('+-------------------------------------+');

 write(' No. Buku yang akan dihapus : ');readln(hapus);



 {jika tidak menekan nol}

 if hapus <> 0 then

 begin

 {menimpa daftar lama dengan daftar baru}

 for i:= hapus to (lastBuku-2) do

 begin

 b[i].kodeBuku := b[i+1].kodeBuku ;

 b[i].judul:= b[i+1].judul;

 b[i].edisi := b[i+1].edisi;

 b[i].tahun:= b[i+1].tahun;

 b[i].hargaSewa := b[i+1].hargaSewa;

 b[i].stok := b[i+1].stok;

 end;

 lastBuku := lastBuku-1;

 writeln();

 writeln(' Hapus Berhasil!!');

 writeln();

 end else

 begin

 writeln();

 writeln(' Hapus Selesai!!');

 writeln();

 end;

 writeln('tekan enter untuk melanjutkan...');

 until hapus=0;

end;



{menampilkan semua daftar koleksi buku}

procedure lihatBuku();

var

 baris:integer;

begin

 clrscr;

 writeln(' Daftar Buku');

 writeln('+---------------------------------------------------------------+');

 writeln('| Kode Buku | Judul Buku | Edisi | Tahun | harga sewa | stok |');

 writeln('+---------------------------------------------------------------+');

 for i:= 1 to (lastBuku-1) do

 begin

 gotoxy(1,baris);write('| ',b[i].kodeBuku);

 gotoxy(13,baris);write('| ',b[i].judul);

 gotoxy(27,baris);write('| ',b[i].edisi);

 gotoxy(37,baris);write('| ',b[i].tahun);

 gotoxy(45,baris);writeln('| ',b[i].hargaSewa);

 gotoxy(58,baris);writeln('| ',b[i].stok);

 gotoxy(65,baris);writeln('|');

 baris := baris+1;

 end;

 writeln('+---------------------------------------------------------------+');

 writeln('tekan enter untuk melanjutkan...');

end;



{edit buku}

procedure editBuku();

var

 pilih3:integer;



begin

 repeat

 clrscr;

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' Edit Daftar Buku ');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' 1. Tambah Koleksi Buku ');

 writeln(' 2. update harga dan stok Buku ');

 writeln(' 3. Hapus Buku');

 writeln(' 4. Lihat daftar Buku ');

 writeln(' 5. Kembali Ke Memu Utama ');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 write('Pilih [1-5]: ');readln(pilih3);

 case pilih3 of

 1:

 begin

 tambahBuku();

 readln;

 end;

 2:

 begin

 updateBuku();

 readln;

 end;

 3:

 begin

 hapusBuku();

 readln;

 end;

 4:

 begin

 lihatBuku();

 readln;

 end;

 5:

 end;

 until pilih3 = 5;

end;



{keluar}

procedure keluar();

begin

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' Sekian dan trimakasih');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' Aplikasi ini disusun oleh :');

 writeln(' 1. Ariska Hidayat (10030092)');

 writeln(' 2. Muttaqin (10030021)');

 writeln(' 3. Suryan Dwi Saputro(10030004)');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

    end;



{ ke menu utama aplikasi}

procedure menu();

begin

 writeln();

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' Persewaan Buku Komik Terlengkap');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 writeln(' 1. Transaksi peminjaman ');

 writeln(' 2. Tampilkan Data ');

 writeln(' 3. Pengembalian Buku ');

 writeln(' 4. Hapus data Peminjam ');

 writeln(' 5. Edit koleksi komik');

 writeln(' 6. Keluar ');

 writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

 write(' Pilih[1-6]: '); readln(pilih);

 writeln();

 case pilih of

 1:

 inputTransaksi();

 2:

 tampilkanData();

 3:

 pengembalianBuku();

 4:

 hapusData();

 5:

 editBuku();

 6:

 keluar();

 end;

end;



{main}

begin

 daftarKomik();

 daftarPelanggan();

 repeat

 clrscr;

 menu();

 writeln('tekan enter untuk melanjutkan...');

 readln;

 until pilih = 6; {berhenti jika pilih bernilai 6}

end.


Sekian program tentang Program Penyewaan Buku Komik dalam Pascal, semoga bermanfaat.

2 komentar:

  1. saya mau nanya gan, bagaimana supaya data yang di input tersimpan? mau input data komiknya tapi tidak tersimpan... datanya tetap kosong... mohon balasannya :)

    BalasHapus
    Balasan
    1. program ini memang belum disediakan proses penyimpanan ke database "notepad" dalam pascal, hanya form" contohnya saja, kalo mau liat contoh yang sudah ada databasenya bisa di lihat source code sistem informasi koperasi dalam pascal yang ane rancang.

      http://www.materi-it.com/2013/11/project-akhir-sistem-informasi-koperasi.html

      Hapus

Silahkan komentar jika ada yang ingin Anda tanyakan mengenai artikel Materi IT.

Jangan lupa melakukan Checklist "Notify me" untuk mendapatkan email balasan dari Admin.

Septian Maulana - 08997206535 (WhatsApp).

Computer Science:
Group CS - https://bit.ly/CSUtama
Group CS 2 - https://bit.ly/cs2group
Group CS 3 - https://bit.ly/cs3group
Group CS 4 - https://bit.ly/cs4group
Group CS 5 - https://bit.ly/cs5group
Group CS 6 - https://bit.ly/cs6group
Group CS Telegram - https://bit.ly/cstelgroup