Banner

Rabu, 05 Januari 2011

Pascal Perpustakaan

Program Perpustakaan;
Uses crt,DOS;
var
   Judul   : array[1..20] of String;
   Lama    : array[1..20] of Integer;
   banyak  : array[1..20] of Byte;
   kata,grs,nama,nim,prodi,user,pass : String;
   x,y,i,j     :Byte;
   Jum_Harga,Total_Harga,disc,Total_Bayar,uang,Kembalian : Real;
   Ul : Char;

Procedure Data;
Begin
  Repeat
     clrscr;
     grs:='==================================================================';
     Textcolor(Yellow); Write('PERPUSTAKAAN CINTA BACA');
     Writeln;
     Textcolor(7);
     x:=round((78-length(kata))/2);
     gotoxy(x,2);writeln(kata);
     x:=round((78-length(grs))/2);
     {gotoxy(x,3);write(grs);
     -----------------------------}
     gotoxy(x,4);Textcolor(Yellow);write('DATA PEMINJAM');Textcolor(7);
     gotoxy(x,6);write('Nama  : ');readln(nama);
     gotoxy(x,7);write('NIM   : ');readln(nim);
     gotoxy(x,8);write('Prodi : ');readln(prodi);
     gotoxy(x,9);write(grs);
     gotoxy(x,10);writeln('| No | Judul Buku        | Lama Sewa     | Banyak | Jumlah Harga |');
     gotoxy(x,11);write(grs);
     {--------------------------------------------------------------------}
     i:=0;
     Total_Harga:=0;
     repeat

       i:=i+1;
       gotoxy(x,11+i);write('| ',i);
       gotoxy(x+5,11+i);write('|');
       gotoxy(x+7,11+i);readln(Judul[i]);
       if Judul[i] <>'' then
       begin
          gotoxy(x+25,11+i);write('|');
          gotoxy(x+28,11+i);readln(Lama[i]);
          gotoxy(x+28,11+i);writeln(Lama[i]);
          gotoxy(x+41,11+i);write('|');
          gotoxy(x+44,11+i);readln(Banyak[i]);
          gotoxy(x+50,11+i);write('|');
          Jum_Harga:=Lama[i]*500*Banyak[i];
          gotoxy(x+53,11+i);writeln(Jum_Harga:10:2);
          gotoxy(x+65,11+i);writeln('|');
          Total_Harga:=Total_Harga+Jum_Harga ;
       end;
       until Judul[i]='';
{--------------------------------------------------------------------}
       disc:=0;
       if (Total_Harga > 10000) and (Total_Harga <100000) then
          disc:=0.05 * Total_Harga
       else
       if (Total_Harga >= 100000 ) then
          disc:=0.1 *Total_Harga;
{--------------------------------------------------------------------}
          j:=i-1;
          gotoxy(x,12+j);write(grs);
          gotoxy(x,12+j+1);write('Total Sewa :');
          gotoxy(x+53,12+j+1);write(Total_Harga:10:2);
          gotoxy(x,12+j+2);write('Discount :');
          gotoxy(x+53,12+j+2);write(disc:10:2);
          gotoxy(x,12+j+3);write(grs);
          gotoxy(x,12+j+4);write('Total :');
          Total_Bayar:=Total_Harga-disc;
          gotoxy(x+53,12+j+4);write(Total_Bayar:10:2);
          gotoxy(x,12+j+5);write('Uang diBayar');
          gotoxy(x+53,12+j+5);readln(Uang);
          gotoxy(x+53,12+j+5);writeln(Uang:10:2);
          gotoxy(x,12+j+6);Write(grs);
          Kembalian:=Uang - Total_Bayar;
          gotoxy(x,12+j+7);writeln('Uang Kembali');
          gotoxy(x+53,12+j+7);write(Kembalian:10:2);
            gotoxy(x,12+j+10);Textbackground(12);Write('TRANSAKSI KEMBALI [Y/T]: ');Readln(Ul);
          Textbackground(1);
  Until Upcase(Ul) <> 'Y';
End;
Procedure TULIS(KIRI,ATAS,PILIH:Integer; TEKS:String);
Var
  PANJANG : Integer;

Begin
   PANJANG := LENGTH(TEKS);
   If PILIH = 1 Then
        gotoxy(KIRI, ATAS)
   Else If PILIH = 2 Then
        {AGAR POSISI KURSOR DITENGAH-TENGAH LAYAR}
        gotoxy((80 - PANJANG) DIV 2, ATAS)
   Else If PILIH = 3 Then
        gotoxy((80 - PANJANG), ATAS);
   Write(TEKS);
End;


Procedure WINDOW(KIRI,ATAS,LEBAR,TINGGI,WARNA1,WARNA2:Integer; ARSIR:Byte);
Begin
    TEXTATTR:=WARNA1;
    TEXTATTR:=WARNA2;

    TULIS(KIRI, ATAS, 1, CHAR(201));
    TULIS(KIRI, ATAS+TINGGI, 1, CHAR(200));
    TULIS(KIRI+LEBAR, ATAS, 1, CHAR(187));
    TULIS(KIRI+LEBAR, ATAS+TINGGI, 1, CHAR(188));

    For i:= KIRI+1 to KIRI+LEBAR-1 do
    Begin
        TULIS(I, ATAS, 1, 'Í');
        TULIS(I, ATAS+TINGGI, 1, 'Í');
    End;

    For i:= ATAS+1 to TINGGI+ATAS-1 do
    Begin
        TULIS(KIRI, I, 1,CHAR(186));
        TULIS(KIRI + LEBAR, I, 1,CHAR(186));
    End;

    If ARSIR = 1 Then
    Begin
        For i:= ATAS + 1 to TINGGI + ATAS - 1 do
        For j:= KIRI + 1 to KIRI + LEBAR - 1 do
        TULIS(J, I, 1, CHAR(176));
    End
    Else
    Begin
        For i:= ATAS + 1 to TINGGI + ATAS - 1 do
        For j:= KIRI + 1 to KIRI + LEBAR - 1 do
    TULIS(J, I, 1, ' ');
    End;

    TEXTATTR:=WARNA2;
End;

Procedure Password;
Begin
  If (user='kamto') AND (pass='123') Then
  Begin
    Data;
    Readln;
  End
  Else
  Begin
    gotoxy(39,13);textcolor(4);
    write('INVALID');
    Readln;
  End;
End;

Begin
   Clrscr;
    WINDOW(1,1,79,23,$1D,$7F,1);
    WINDOW(15,3,50,8,$2A,$6B,0);
    TULIS (20,5,1,'USER NAME   : ');
    gotoxy(39,5);Readln(user);
    TULIS (20,7,1,'PASSWORD    : ');
    GOTOXY(39,7);Readln(pass);
    Password;
End.
End.

Tidak ada komentar: