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