Jumat, 12 September 2014

"Program Klinik Gigi

uses crt;
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