pemograman pascal linkedlist program toko

uses wincrt;
type pointer1=^recpoint;
     recpoint=record
     barang:string;
     harga,stok:integer;
     berikutnya:pointer1;
end;
    pointer2=^recpoint2;
    recpoint2=record
    nama:string;
    berikutnya2:pointer2;
    end;

    recbelanja=record
    nama,blj:string;
    bayar:real;
    end;

    larikbelanja=array[1..10] of recbelanja;
var
   List,akhir,bantu:pointer1;
   List2,akhir2:pointer2;
   belanja:larikbelanja;
   barangbaru:string;hargabaru,stokbaru:integer;
   namabaru:string;
   cacah:byte;total:real;
   lagi:boolean; pil:1..8;
 

procedure Isi_barang(var L:pointer1);
var baru:pointer1;
begin
new(baru);
baru^.barang:=barangbaru;
baru^.harga:=hargabaru;
baru^.stok:=stokbaru;
baru^.berikutnya:=nil;
if L=nil then
begin
     L:=baru;akhir:=baru;end
else
begin
     akhir^.berikutnya:=baru;
     akhir:=baru;
     akhir^.berikutnya:=nil;
end;
end;

procedure isi_antrean(var A:pointer2);
var baru:pointer2;
begin
new(baru);
baru^.nama:=namabaru;
if A=nil then
begin
     A:=baru;akhir2:=baru;A^.berikutnya2:=nil;end
else
begin
     akhir2^.berikutnya2:=baru;
     akhir2:=baru;
     akhir2^.berikutnya2:=nil;
end;
end;

procedure layanan_belanja(var L:pointer1);
var beli:string;
    jum :byte;
    bantu1:pointer2;
label ulang,selesai;

begin
if List2=nil then
   begin
   writeln('tidak ada antrian pembeli');goto selesai;
   end;
if L=nil then writeln('maaf tidak ada barang di toko')
else
begin
     {ambil orang yang antre di depan}
     bantu1:=List2;
     List2:=bantu1^.berikutnya2;inc(cacah);belanja[cacah].nama:=bantu1^.nama;
     write('Selamat datang ',belanja[cacah].nama);
     write(',  mau belanja apa?  ');readln(beli);
     bantu:=L;
     while (bantu)<>nil do
     begin
          if bantu^.barang=beli then
          begin
               belanja[cacah].blj:=beli;
 ulang:        write('berapa buah beli ' ,beli,' ? ');readln(jum);
               if (bantu^.stok)<jum then
                  begin writeln('stok tidak cukup,ulang');goto ulang;end
               else
               begin
                belanja[cacah].bayar:=jum*bantu^.harga;
                bantu^.stok:=bantu^.stok-jum;
                total:=total+belanja[cacah].bayar;
               end;
          end;
          bantu:=bantu^.berikutnya;
      end;
 end;
 dispose(bantu1);
 selesai:writeln('Terimakasih sudah mampir');
 end;

procedure cetak_barang(var L:pointer1);
var cetak:pointer1;
    i:byte;

begin
new(cetak);
cetak:=L;i:=0;
if L=nil then writeln('tidak ada barang di toko')
else
begin
     writeln('-----------------------------------------');
     writeln('no     nama barang       harga    stok');
     writeln('-----------------------------------------');
     while cetak<>nil do
     begin
          inc(i);
          writeln(i:2,' ',cetak^.barang:10,'  ',cetak^.harga:6,'   ',cetak^.stok:4);
          cetak:=cetak^.berikutnya;
     end;
end;
end;

procedure cetak_antrean(A:pointer2);
var bantu1:pointer2;
    i:byte;

begin
bantu1:=A;i:=0;
if A=nil then writeln('tidak ada pembeli di toko')
else
begin
     writeln('------------------------------');
     writeln('no     nama pengantre       ');
     writeln('------------------------------');
     while bantu1<>nil do
     begin
          inc(i);
          writeln(i:2,' ',bantu1^.nama);
          bantu1:=bantu1^.berikutnya2;
     end;
end;
end;

procedure cetak_belanja(X:larikbelanja);
var i:byte;
begin
if cacah=0 then writeln('tidak ada yang telah belanja')
else
begin
 writeln('------------------------------');
     writeln('no     nama pengantre       ');
     writeln('------------------------------');
 For i:=1 to cacah do
     writeln(i:3, X[i].nama:10,'  ',x[i].blj:10,'  ',x[i].bayar:8:2);
end;
end;

{utama}
begin
lagi:=true;
new(List);new(list2);List:=nil;list2:=nil;
while lagi do
begin
clrscr;
writeln('1. Tambah daftar barang');
writeln('2. Tambah antrean pembeli');
writeln('3. layanan pelanggan');
writeln('4. Cetak barang');
writeln('5. Cetak antrian pelanggan');
writeln('6. Cetak daftar berbelanja');
writeln('7. Rekap');
writeln('8. Selesai');
writeln('Pilihan anda <1-8> ');readln(pil);
case pil of
1: begin
   write('nama barang ==>  ');readln(barangbaru);
   write('harga       ==>  ');readln(hargabaru);
   write('stok        ==>  ');readln(stokbaru);  
   Isi_barang(List);
   end;
2: begin
   write('nama pelanggan ==> ');readln(namabaru);
   isi_antrean(List2);
   end;
3: layanan_belanja(List);
4: cetak_barang(List);
5: cetak_antrean(List2);
6: cetak_belanja(belanja);
7: begin
   writeln('Jumlah pendapatan Rp ',total:8:2);
   writeln('Jumlah pengunjung    ',cacah,' orang');
   end;
8: begin
   writeln('Terimakasih');lagi:=false;end;
end;
readln;
end;
donewincrt;
end.

0 comments

Tambahkan Komentar Anda

semua berawal dari diri kita

 
Copyright © 2012 wooodiez ~ Template By : Jasriman Sukri

Kamu bisa menulis deskripsi disini