You are on page 1of 6

unit UProses; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls,

Buttons, ExtCtrls; type TFProses = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; gb1: TGroupBox; cb1: TCheckBox; cb2: TCheckBox; cb3: TCheckBox; cb4: TCheckBox; cb5: TCheckBox; cb6: TCheckBox; cb7: TCheckBox; cb8: TCheckBox; cb9: TCheckBox; cb10: TCheckBox; Panel1: TPanel; SpeedButton1: TSpeedButton; cb11: TCheckBox; cb12: TCheckBox; cb13: TCheckBox; cb14: TCheckBox; cb15: TCheckBox; cb16: TCheckBox; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); private { Private declarations } procedure queryDMLo(var sql:string); procedure queryDMLe(var sql:string); function HitungCF(var IdSakit : integer) : real; procedure simpanCF(var IDpykt:integer;CF:real); procedure queryDMLPykto(var sql:string); procedure queryDMLPykte(var sql:string); public { Public declarations } end; type TBelieve = record MB,MD : array[1..30] of real; end; var FProses: TFProses; DtMB : array[1..10] of TBelieve; NoGejala: array[1..30] of real; UrutGejala: array[1..30] of real;

UrutKnow: array[1..30] of real; KodeGej:integer; jumSkt:array [1..9] of integer; implementation uses UDM,UData,Umenu,UHasil; {$R *.dfm} procedure TFProses.queryDMLo(var sql:string); begin DM.QKnow.SQL.Clear; DM.QKnow.Close; DM.QKnow.SQL.Add(sql); DM.QKnow.Open; end; procedure TFProses.queryDMLe(var sql:string); begin DM.QKnow.SQL.Clear; DM.QKnow.Close; DM.QKnow.SQL.Add(sql); DM.QKnow.ExecSQL; end; procedure TFProses.queryDMLPykto(var sql:string); begin DM.QPenyakit.SQL.Clear; DM.QPenyakit.Close; DM.QPenyakit.SQL.Add(sql); DM.QPenyakit.Open; end; procedure TFProses.queryDMLPykte(var sql:string); begin DM.QPenyakit.SQL.Clear; DM.QPenyakit.Close; DM.QPenyakit.SQL.Add(sql); DM.QPenyakit.ExecSQL; end;

procedure TFProses.SpeedButton1Click(Sender: TObject); var sql: string; i,j,k,s,n,jumdata,IDskt,p1,p2,p3,p4,p5,p6,p7,p8,p9:integer; MBtot,MDtot,CF: real; begin if cb1.Checked then noGejala[1]:=1 else noGejala[1]:=0; if cb2.Checked then noGejala[2]:=2 else noGejala[2]:=0; if cb3.Checked then noGejala[3]:=3 else noGejala[3]:=0; if cb4.Checked then noGejala[4]:=4 else noGejala[4]:=0; if cb5.Checked then noGejala[5]:=5 else noGejala[5]:=0; if cb6.Checked then noGejala[6]:=6 else noGejala[6]:=0; if cb7.Checked then noGejala[7]:=7 else noGejala[7]:=0; if cb8.Checked then noGejala[8]:=8 else noGejala[8]:=0; if cb9.Checked then noGejala[9]:=9 else noGejala[9]:=0; if cb10.Checked then noGejala[10]:=10 else noGejala[10]:=0;

if if if if if if

cb11.Checked cb12.Checked cb13.Checked cb14.Checked cb15.Checked cb16.Checked

then then then then then then

noGejala[11]:=11 noGejala[12]:=12 noGejala[13]:=13 noGejala[14]:=14 noGejala[15]:=15 noGejala[16]:=16

else else else else else else

noGejala[11]:=0; noGejala[12]:=0; noGejala[13]:=0; noGejala[14]:=0; noGejala[15]:=0; noGejala[16]:=0;

j:=0; for i:=1 to 30 do begin if noGejala[i]<>0 then begin j:=j+1; UrutGejala[j]:=noGejala[i]; end; end; s:=0; for i:=1 to j do begin sql:='select count(ID_know) as jumKnow from Pengetahuan where ID_Gejala='+f loattostr(urutGejala[i]); queryDMLe(sql); DM.QKnow.Active:=true; jumData:=DM.QKnow.FieldValues['jumKnow']; sql:='select ID_know from Pengetahuan where ID_Gejala='+floattostr(urutGeja la[i]); queryDMLo(sql); DM.QKnow.First; for k:=1 to jumData do begin s:=s+1; urutKnow[s]:=DM.QKnow.FieldValues['ID_Know']; DM.QKnow.Next; end; end; //menghitung CF tiap penyakit atau tiap pengetahuan //ambil ID pengetahuan pertama, id penyakit,BM,DM p1:=0;p2:=0;p3:=0;p4:=0;p5:=0;p6:=0;p7:=0;p8:=0;p9:=0; for k:=1 to s do begin sql:='select ID_Penyakit,ID_Gejala,MB,MD from pengetahuan where id_know='+fl oattostr(urutKnow[k]); queryDMLo(sql); IDskt:=DM.QKnow.FieldValues['ID_penyakit']; case IDskt of 1:begin p1:=p1+1; jumSkt[1]:=p1; dtMB[1].MB[p1]:=DM.QKnow.FieldValues['MB']; dtMB[1].MD[p1]:=DM.QKnow.FieldValues['MD'];; end; 2:begin p2:=p2+1; jumSkt[2]:=p2; dtMB[2].MB[p2]:=DM.QKnow.FieldValues['MB']; dtMB[2].MD[p2]:=DM.QKnow.FieldValues['MD'];; end;

3:begin p3:=p3+1; jumSkt[3]:=p3; dtMB[3].MB[p3]:=DM.QKnow.FieldValues['MB']; dtMB[3].MD[p3]:=DM.QKnow.FieldValues['MD'];; end; 4:begin p4:=p4+1; jumSkt[4]:=p4; dtMB[4].MB[p4]:=DM.QKnow.FieldValues['MB']; dtMB[4].MD[p4]:=DM.QKnow.FieldValues['MD'];; end; 5:begin p5:=p5+1; jumSkt[5]:=p5; dtMB[5].MB[p5]:=DM.QKnow.FieldValues['MB']; dtMB[5].MD[p5]:=DM.QKnow.FieldValues['MD'];; end; 6:begin p6:=p6+1; jumSkt[6]:=p6; dtMB[6].MB[p6]:=DM.QKnow.FieldValues['MB']; dtMB[6].MD[p6]:=DM.QKnow.FieldValues['MD'];; end; 7:begin p7:=p7+1; jumSkt[7]:=p7; dtMB[7].MB[p7]:=DM.QKnow.FieldValues['MB']; dtMB[7].MD[p7]:=DM.QKnow.FieldValues['MD'];; end; 8:begin p8:=p8+1; jumSkt[8]:=p8; dtMB[8].MB[p8]:=DM.QKnow.FieldValues['MB']; dtMB[8].MD[p8]:=DM.QKnow.FieldValues['MD'];; end; 9:begin p9:=p9+1; jumSkt[9]:=p9; dtMB[9].MB[p9]:=DM.QKnow.FieldValues['MB']; dtMB[9].MD[p9]:=DM.QKnow.FieldValues['MD'];; end; end; end; for k:=1 to s do begin sql:='select ID_Penyakit,MB,MD from pengetahuan where id_know='+floattostr(u rutKnow[k]); queryDMLo(sql); IDskt:=DM.QKnow.FieldValues['ID_penyakit']; case IDskt of 1:begin CF:=HitungCF(IDskt); SimpanCF(IDskt,CF); end; 2:begin CF:=HitungCF(IDskt); SimpanCF(IDskt,CF); end;

3:begin CF:=HitungCF(IDskt); SimpanCF(IDskt,CF); end; 4:begin CF:=HitungCF(IDskt); SimpanCF(IDskt,CF); end; 5:begin CF:=HitungCF(IDskt); SimpanCF(IDskt,CF); end; 6:begin CF:=HitungCF(IDskt); SimpanCF(IDskt,CF); end; 7:begin CF:=HitungCF(IDskt); SimpanCF(IDskt,CF); end; 8:begin CF:=HitungCF(IDskt); SimpanCF(IDskt,CF); end; 9:begin CF:=HitungCF(IDskt); SimpanCF(IDskt,CF); end; end; end; sql:='select max(CF) as maxCF from tPenyakit'; queryDMLPykte(sql); DM.QPenyakit.Active:=true; FHasil.Label4.Caption:=floattostr(DM.QPenyakit.FieldValues['maxCF']); sql:='select penyakit from tPenyakit where CF='+FHasil.Label4.Caption; queryDMLPykto(sql); FHasil.Label2.Caption:=DM.QPenyakit.FieldValues['penyakit']; FHasil.Label6.Caption:=DM.QPenyakit.FieldValues['penyakit']; sql:='select * from tPenyakit'; queryDMLPykto(sql); FHasil.ShowModal; end; procedure TFProses.simpanCF(var IDpykt:integer;CF:real); var sql: string; begin sql:='update tPenyakit set CF='+floattostr(CF)+' where ID_Penyakit='+inttostr(I Dpykt); queryDMLPykte(sql); end; function TFProses.HitungCF(var IdSakit : integer): real; var MBtot,MDtot :real; n: integer;

begin if jumSkt[IdSakit]=1 then begin Result:=dtMB[IdSakit].MB[1]-dtMB[IdSakit].MD[1]; end; if jumSkt[IdSakit]=2 then begin MBtot:=dtMB[IdSakit].MB[1]+dtMB[IdSakit].MB[2]*(1-dtMB[IdSakit].MB[1]); MDtot:=dtMB[IdSakit].MD[1]+dtMB[IdSakit].MD[2]*(1-dtMB[IdSakit].MD[1]); Result:=MBtot-MDtot; end; if jumSKT[IdSakit]>2 then begin MBtot:=0;MDtot:=0; MBtot:=dtMB[IdSakit].MB[1] + dtMB[IdSakit].MB[2]*(1-dtMB[IdSakit].MB[1]) ; MDtot:=dtMB[IdSakit].MD[1] + dtMB[IdSakit].MD[2]*(1-dtMB[IdSakit].MD[1]) ; for n:=3 to jumSKT[IdSakit] do begin MBtot:=MBtot + dtMB[IdSakit].MB[n]*(1-MBtot); MDtot:=MDtot + dtMB[IdSakit].MD[n]*(1-MDtot); end; Result:=MBtot-MDtot; end; end; procedure TFProses.SpeedButton3Click(Sender: TObject); var sql:string; begin sql:='update tPenyakit set CF=NULL'; queryDMLPykte(sql); sql:='select * from tPenyakit'; queryDMLPykto(sql); cb1.Checked:=false; cb2.Checked:=false; cb3.Checked:=false; cb4.Checked:=false; cb5.Checked:=false; cb6.Checked:=false; cb7.Checked:=false; cb8.Checked:=false; cb9.Checked:=false; cb10.Checked:=false; cb11.Checked:=false; cb12.Checked:=false; cb13.Checked:=false; cb14.Checked:=false; cb15.Checked:=false; cb16.Checked:=false; end; end.

You might also like