const maxform=10;maxno=30;max=10;
type formulir=record
nomor,nama,paketg:string;
harga:longint;
end;
larik=array[1..20] of formulir;
type antrian=record
no_antri:array[1..max] of byte;
front,tail:0..max;
end;
type stack=record
no_form,nama1,tgl:array[1..max] of string;
tos,bos:0..max;
end;
var tot:longint;
jual:larik;
antri:antrian;
kembali:stack;
i,j,n,pil,noantri:byte;
nokeluar:byte;
procedure beli_form(var x:larik;var y:antrian);
var no:string;
ketemu:boolean;
label ul;
begin
ketemu:=false;
writeln('Pendaftaran Pasien Baru');
ul:
write('Masukkan nomor pendaftaran :');readln(no);
for i:=1 to n do
begin
end;
if ketemu then
begin
writeln('Nomor sudah dipergunakan, ulang');goto ul;
end;
inc(n);
x[n].nomor:=no;
write('Masukkan nama pasien : ');readln(x[n].nama);
writeln('=======================================');
writeln(' PILIH PAKET PERAWATAN ');
writeln('=======================================');
writeln('1. Cabut Gigi');
writeln('2. Pasang kawat gigi');
writeln('3. bersihkan karang gigi');
writeln('4. control gigi');
writeln('=======================================');
writeln;
write('Pilih Jenis Paket => ');readln(x[n].paketg);
if x[n].paketg='1' then x[n].harga:=75000 else if x[n].paketg='2' then x[n].harga:=350000
else if x[n].paketg='3' then x[n].harga:=200000 else if x[n].paketg='4' then x[n].harga:=100000;
inc(y.tail);inc(noantri);
y.no_antri[y.tail]:=noantri;
writeln('Anda mendapatkan nomor antrian : ',noantri);
end;
procedure layanan_penyerahan_formulir(var x:antrian; var y:stack; var a:larik );
var no,nm:string;
ada,pernah:boolean;
pos:byte;
harga:longint;
begin
ada:=false;
{ambil dari antrian}
nokeluar:=x.no_antri[x.front];
writeln('Melayani nomor antrian ',nokeluar);
for i:=1 to x.tail-1 do x.no_antri[i]:=x.no_antri[i+1];
dec(x.tail);
{validasi nomor yang diserahkan}
write('masukkan nomor pendaftaran yang akan diperiksa : ');readln(no);
write('nama pasien : ');readln(nm);
for i:=1 to n do
begin
if (a[i].nomor=no) and (a[i].nama=nm) then begin ada:=true; pos:=i;end;
end;
{validasi ke stack apakah pernah dikembalikan}
if ada then
begin
harga:=a[pos].harga;
pernah:=false;
for j:=1 to y.tos do begin if (y.no_form[j]=no) then pernah:=true;end;
if pernah then writeln('Nomor dan nama tersebut sudah diperiksa')
else
begin
{push ke stack}
inc(y.tos);
y.no_form[y.tos]:=no;
y.nama1[y.tos]:=nm;
writeln('Anda harus membayar Rp : ',harga);
write('masukkan tanggal pembayaran :');readln(y.tgl[y.tos]);
end;
end
else writeln('Nomor dan/nama tidak dikenali');
end;
procedure cetak_jual(var x:larik);
begin
tot:=0;
writeln(' DAFTAR PASIEN HARI INI');
writeln('==========================');
writeln('No Nomor Form Nama Pasien Jenis Paket harga');
writeln('-----------------------------------------------');
for i:=1 to n do
begin
writeln(i:2,' ',x[i].nomor:5,' ',x[i].nama:12,' ',x[i].paketg,' ','Rp.',x[i].harga:4);
tot:=x[i].harga+tot;
end;
writeln('-----------------------------------------------');
writeln('Jumlah pasien hari ini ',n,' orang');
end;
procedure cetak_antrian(var x:antrian);
begin
writeln(' DAFTAR ANTRIAN PASIEN');
writeln('==========================');
writeln('Antrian ke Nomor Antrian');
writeln('-----------------------------------------------');
for i:=1 to x.tail do
writeln(i:4,' ',x.no_antri[i]:4);
writeln('-----------------------------------------------');
writeln('antrian saat ini ',x.tail,' orang');
end;
procedure cetak_stack(var x:stack);
var total:longint;
begin
writeln(' DAFTAR PASIEN YANG SUDAH MEMBAYAR');
writeln('==========================');
writeln('Posisi di tumpukan Nomor formulir Nama Tanggal Pembayaran');
writeln('-----------------------------------------------');
for i:=x.tos downto 1 do
writeln(i:6,' ',x.no_form[i]:15,' ',x.nama1[i]:25,' ',x.tgl[i]:15);
writeln('-----------------------------------------------');
writeln('Jumlah pasien hari ini : ',x.tos,' orang');
total:=tot;
writeln('Pendapatan hari ini : ',total);
end;
begin
n:=0;antri.front:=1;antri.tail:=0;kembali.tos:=0;kembali.bos:=1;noantri:=0;
repeat
begin
clrscr;
writeln(' KLINIK PERAWATAN GIGI ');
writeln('1. Antrian Pasien Baru');
writeln('2. Layanan Pemeriksaan dan pembayaran');
writeln('3. Cetak daftar pasien');
writeln('4. Cetak daftar antrian');
writeln('5. Cetak daftar pasein yang sudah membayar');
writeln('6.rekap pendapatan');
writeln('7. END');
write('Pilih 1-7 ==>');readln(pil);
case pil of
1:begin
if n>=10 then writeln('Tidak ada penjualan formulir') else beli_form(jual,antri);
if antri.tail=max then writeln('Antrian sedang penuh') else
begin
writeln('Anda mendapat antrian yang ke ',antri.tail);
end;
end;
2:begin
if antri.tail=0 then writeln('tidak ada yang harus dilayanai') else
layanan_penyerahan_formulir(antri,kembali,jual);
end;
3:if n=0 then writeln('belum ada formulir yang terjual') else
cetak_jual(jual);
4:if antri.tail=0 then writeln('belum ada antrian') else
cetak_antrian(antri);
5:if kembali.tos=0 then writeln('belum ada formulir yang dikembalikan') else
cetak_stack(kembali);
6:
begin
writeln('pendapatan sebanyak Rp ',tot:8);
end;
7:writeln('TERIMAKASIH TELAH DATANG');
end;
readln;
end
until (pil=7);
end.






0 komentar:
Posting Komentar