uses wincrt;
const max=20;
type pointer=^recpoint;
recpoint=record
nama:string;
berikutnya:pointer;
end;
type pelanggan=record
nama1:string;
jum:integer;total:longint;
end;
type larik=array[1..max] of pelanggan;
var List,akhir:pointer;
namabaru:string;
pom:larik;
stok:longint;
rekap:longint;
lagi:boolean;n:byte;
pil:1..7;
procedure tambah_belakang(var L:pointer;nm:string);
var baru:pointer;
begin
new(baru);
baru^.nama:=nm;baru^.berikutnya:=nil;
if L=nil then
begin
L:=baru;akhir:=baru;
end
else{tambah akhir}
begin
akhir^.berikutnya:=baru;
akhir:=baru;
akhir^.berikutnya:=nil;
end;
end;
procedure layanan(var L:pointer);
var bantu:pointer;
beli:integer;
label ulang;
begin
new(bantu);
if L=nil then writeln('tidak ada pelanggan di antrean')
else
begin
bantu:=L;
L:=bantu^.berikutnya;inc(n);
pom[n].nama1:=bantu^.nama;
writeln('yang dilayani :',pom[n].nama1);
ulang:write('berapa liter? : ');readln(beli);
if (beli>stok) then
begin
writeln('stok tidak cukup, ulang');goto ulang;
end
else
begin
pom[n].jum:=beli;
pom[n].total:=pom[n].jum*4500;
rekap:=rekap+pom[n].total;
stok:=stok-beli;
end;
end;
dispose(bantu);
end;
procedure cetakList(L:pointer);
var bantu:pointer;
i:byte;
begin
new(bantu);i:=0;
bantu:=L;
if bantu=nil then writeln('Tidak ada pelanggan di antrean')
else
begin
while bantu<>nil do
begin
inc(i);
writeln('posisi ',i,' ',bantu^.nama);
bantu:=bantu^.berikutnya;
end;
end;
end;
procedure Cetakpom(var x:larik);
var i:byte;
begin
if n=0 then writeln('tidak ada pelanggan dalam daftar')
else
begin
writeln('=============================================');
writeln('no nama jumlah Total');
writeln('---------------------------------------------');
for i:=1 to n do writeln(i:3,' ',x[i].nama1:10,' ',x[i].jum:5,' ',x[i].total:8);
end;
writeln('---------------------------------------------');
end;
procedure isistok;
var tambah:word;
begin
write('mau tambah stok barapa? ');readln(tambah);
stok:=stok+tambah;
end;
begin{program utama}
lagi:=true;List:=nil;
while lagi do
begin
clrscr;
writeln('1. Tambah antrian');
writeln('2. layanan pelanggan');
writeln('3. Cetak antrian');
writeln('4. Cetak pelanggan');
writeln('5. isi stok');
writeln('6. Rekap');
writeln('7. Selesai');
writeln('Pilihan anda <1-7> ');readln(pil);
case pil of
1: begin
writeln('nama baru ==> ');readln(namabaru);
tambah_belakang(List,namabaru);
end;
2: if stok=0 then writeln('stok habis') else layanan(List);
3: cetakList(List);
4: cetakpom(pom);
5: isistok;
6: begin
writeln('Jumlah pendapatan Rp ',rekap);
writeln('Jumlah pengunjung ',n,' orang');
writeln('Sisa stok ',stok,' liter');
end;
7: begin
writeln('Terimakasih');lagi:=false;end;
end;
readln;
end;
donewincrt;
end.
//fuiqur
0 comments
Tambahkan Komentar Anda
semua berawal dari diri kita