pemograman pascal program ATM

uses wincrt;
const max=20;
type antrian=record
     nama:string;
     uang:real;
     depan,belakang:0..max;
end;

type pointer=^recpoint;
     recpoint=record
     nama:string;
     uang:real;
     berikutnya:pointer;
     end;

var stack,awal,akhir:pointer;
    q:antrian;
    namain:string;
    uangin:real;
    saldo,tambahsaldo,pengambilan:real;
    i,cacah,pelanggan:byte;    
    lagi:boolean;
    pw,pw1,hapusmana:string;
    carihapus:string;
    pilih:1..8;

function habis(q:antrian):boolean;
begin
if saldo<50000 then habis:=true else habis:=false;
end;

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

function penuh(q:antrian):boolean;
begin
if q.belakang=max then penuh:=true else penuh:=false;
end;

procedure tambah(var q:antrian; n:string);
begin
pw1:='sleman';
if pw<>pw1 then
   writeln('Maaf password yang Anda masukkan salah ....')
   else
   begin
   write('nominal penambahan saldo ATM = '); readln(tambahsaldo);
   saldo:=saldo+tambahsaldo;
   end;
end;


procedure push_antri(var s:pointer; r:string);
var baru:pointer;

begin
if penuh(q) then writeln('antrian sudah penuh')
else  
if habis(q) then writeln('uang di ATM habis')
else
begin
     inc(q.belakang);
     New(Baru);
     Baru^.nama:= r;
     Baru^.Berikutnya := Nil;
     if s = Nil then
     begin
         s := Baru ; akhir:=baru; inc(cacah);
     end
     else
     begin
          akhir^.berikutnya:=baru;
          akhir:=baru; akhir^.berikutnya:=nil;
          inc(cacah);
     end;
end;
end;{end procedure push}


procedure pop_hitung(var s:pointer; x:real);
var hapus:pointer;
begin
if kosong(q) then writeln('Tak ada yang mengantri')
else if uangin > saldo then write('saldo tidak cukup')
else
if s=nil then writeln('Daftar antrian kosong...')
else
    begin
    hapus:=s;
    s:=hapus^.berikutnya;
    hapus^.uang:=uangin;
    {mencatat pengantri yang dilayani}
    writeln('Yang dilayani adalah ',hapus^.nama,
    ' dengan jumlah pengambilan uang Rp ',hapus^.uang:8:2);

    saldo:=saldo-hapus^.uang;
    pengambilan:=pengambilan+hapus^.uang;
    inc(pelanggan);
    dispose(hapus);

    end;
end;


procedure hapus_atas(var s:pointer);
var bantu:pointer;
begin
bantu:=s;
if s=nil then writeln('Daftar antrian kosong...')
else
    begin
    bantu:=s;
    s:=bantu^.berikutnya;
    dispose(bantu);
    end;
end;

procedure hapus_tengah(var s:pointer; X:string);
var bantu,hapus:pointer;
begin
     bantu:=s;
     if s=nil then writeln('List kosonvg...')
     else
     begin
     bantu:=s;
     new(hapus);
     while bantu^.berikutnya <> nil do
     begin
     if bantu^.berikutnya^.nama=X then
     begin
     hapus:=bantu^.berikutnya;
     bantu^.berikutnya:=hapus^.berikutnya;
     dispose(hapus);
     end
     else
     bantu:=bantu^.berikutnya;
     end;
   end;
end;

procedure hapus_bawah(var s:pointer);
var baru,bantu:pointer;
begin
     bantu:=s;
     if bantu=nil then writeln('Daftar antrian kosong...')
     else
     begin
          while bantu^.berikutnya^.berikutnya <> nil do
          bantu:=bantu^.berikutnya;
          new(baru);
          baru:=bantu^.berikutnya;
          bantu^.berikutnya:=nil;
          dispose(baru);
     end;
end;

Procedure cetak_antri(var s:pointer);
var i:byte;
    bantu:pointer;

begin
bantu:=s;
if bantu=nil then writeln('Tidak ada yang mengantri')
else
begin
     clrscr;i:=0;
     writeln('----- DAFTAR ANTRIAN DI ATM BRI GEJAYAN ---- ');
     writeln('===========================================');
     writeln('|  No     |     Nama            |');
     writeln('---------------------------------');
     while bantu<>nil do  
     begin
       inc(i);
       writeln('posisi',i:3,' | ',bantu^.nama:20,'| ');
       bantu:=bantu^.berikutnya;
     end;
     writeln('---------------------------------');
end;         {end if}
end;


procedure cari(var s:pointer);
var cari:string;
    ketemu:boolean;
    i,cacahcari:byte;
    ulang:char;
    bantu:pointer;

begin
new(bantu);
ulang:='y';
while ulang='y'do
begin
      ketemu:=false;cacahcari:=0;
      write('Nama yang dicari? ');readln(cari);
      bantu:=s;
      while bantu <> nil do
      begin
           if bantu^.nama=cari then
              begin
              ketemu:=true;inc(cacahcari);
              end;
bantu:=bantu^.berikutnya;
      end;
      if ketemu then writeln('Nama ',cari,' ada ',cacahcari:4,' ')
      else
      writeln('Nama ',cari,' tidak ada dalam antrian');
      writeln;
      write('mau cari nama lain <y/t>? ');readln(ulang);
end;
end;{end procedure}


procedure urut(var s:pointer);
var dpn,blkg,awal:pointer;
bantu1:real;
bantu2:string;
begin
dpn:=awal;
   while not (dpn=nil) do
   begin
     blkg:=dpn^.berikutnya;
     while not (blkg=nil) do
     begin
          if blkg^.uang > dpn^.uang then
          begin      
              bantu1:=blkg^.uang;
              bantu2:=blkg^.nama;
              blkg^.uang:=dpn^.uang;
              blkg^.nama:=dpn^.nama;
              dpn^.uang:=bantu1;
              dpn^.nama:=bantu2;
          end;
          blkg:=blkg^.berikutnya;
     end;
     dpn:=dpn^.berikutnya;
   end;
   writeln('Pengambilan uang terbanyak : ',awal^.uang:0:0,' dengan nama : ',awal^.nama);
   writeln('Pengambilan uang terendah : ',s^.uang:0:0,' dengan nama : ',s^.nama);
   writeln;
end;




{menu utama}
begin
saldo:=5000000;
lagi:=true; q.depan:=1; q.belakang:=0;
while lagi do
begin
clrscr;
writeln('========== ATM BRI GEJAYAN =========');
writeln;          
writeln('1.tambah antrian');
writeln('2.layani pengantri');
writeln('3.cetak antrian');
writeln;    
writeln('--------- DAFTAR PELANGGAN --------');
writeln('4.hapus nama dalam daftar antrian');
writeln('5.cari berdasarkan nama');
writeln('6.urut berdasarkan jml pengambilan uang ');
writeln;            
writeln('----------------------------------');
writeln('7.tambah uang dalam ATM');
writeln('8.selesai, cetak total pengambilan uang dan saldo di ATM');
writeln;
write('pilih 1..8 = '); readln(pilih);
writeln;
case pilih of
1: begin
   write('nama = '); read(namain);
   push_antri(stack,namain);
   readln;
   end;
2: begin
   write('uang yang akan diambil = '); read(uangin);
   pop_hitung(stack,uangin);
   readln;
   end;
3: cetak_antri(stack);
4: begin
   write('mau menghapus dari mana ? (atas/tengah/bawah) = '); read(hapusmana);
   if hapusmana='atas' then hapus_atas(stack)
   else if hapusmana='tengah' then
   begin
   writeln('Pengantri yang akan dihapus dari daftar = '); read(carihapus);
   hapus_tengah(stack,carihapus);
   end
   else if hapusmana='bawah' then
   hapus_bawah(stack);
   readln;
   end;
5: cari(stack);
6: urut(stack);
7: begin
   write('Masukkan password = '); read(pw);
   tambah(q,pw);
   readln;                
   end;
                                                       
8:begin
       writeln('pelanggan hari ini sebanyak ',pelanggan:4,' orang');
       writeln('total pengambilan uang = ',pengambilan:10:2);
       writeln('sisa saldo di ATM = ',saldo:10:2);
       writeln('terima kasih...');
       lagi:=false;
  end;
end;                                
readln;
end;
end.


{ Nama Anggota Kelompok =
- Dewi Fajar Nugraheni
- Nur Arifah Juliyanti
- Anggreawan
}
//fuiqur

1 comments:

  1. Casino Near You - Mapyro
    Find 나주 출장안마 the BEST Casino Near You in Robinsonville, MS 경주 출장샵 with Mapyro. Find out when and when to stay 통영 출장마사지 close 순천 출장안마 to the Casino near you. 군포 출장샵

    ReplyDelete

semua berawal dari diri kita

 
Copyright © 2012 wooodiez ~ Template By : Jasriman Sukri

Kamu bisa menulis deskripsi disini