30 4.1 Analisa Kebutuhan Software A. Tahap Analisa
Halaman Pengunjung :
A.1 Pengunjung dapat memilih menu diagnosa untuk mengetahui penyakit yang menyerang adenium miliknya.
A.2 Pengunjung dapat memilih menu penyakit untuk melihat informasi.
seputar penyakit adenium.
A.3 Pengunjung dapat memilih menu artikel untuk melihat artikel seputar adenium.
Halaman Admin :
B.1 Admin dapat mengelola data penyakit B.2 Admin dapat menglola data gejala B.3 Admin dapat mengelola data relasi B.4 Admin dapat mengelola data artikel B.5 Admin dapat mengelola data pakar B.6 Admin dapat mengelola info penyakit B.7 Admin dapat melakukan login
Halaman Pakar :
C.1 Pakar dapat melihat data Penyakit C.2 Pakar dapat melihat data gejala C.3 Pakar dapat menambah artikel
C.4 Pakar dapat mengubah password C.5 Pakar dapat melakukan login B. Use Case Diagram
1. Use Case Diagram Sistem Pakar Penyakit Adenium Halaman Pengunjung
Gambar IV.1
Usecase Sistem Pakar Adenium Halaman Pengunjung
Table IV.1
Deskripsi Use Case Sistem Pakar Adenium Halaman Pengunjung
(Menu Diagnosa)
Use Case Name Menu Diagnosa
Requirements A1
Goal Pengunjung dapat mengetahui penyakit yang menyerang adenium miliknya.
Pre-conditions Pengunjung telah memilih menu diagnosa dan melakukan konsultasi
Post-conditions Sistem mengirim hasil diagnosa yang telah disamakan dengan basis data
Primary Actors Pengunjung
Main Flow / Basic Path 1. Pengunjung memilih menu diagnosa 2. Sistem menampilkan form daftar pasien 3. Pasien mengisi form pendaftaran 4. Kemudian Sistem menampilkan gejala
pada adenium
5. Pengunjung memilih gejala yang menjangkit adenium miliknya
6. Sistem mengirim hasil konsultasi ke basis pengetahuan
7. Sistem menampilkan hasil diagnosa
Tabel IV.2
Deskripsi Use Case Sistem Pakar Adenium Halaman Pengunjung
(Menu Penyakit)
Use Case Name Menu Penyakit
Requirements A2
Goal Pengunjung dapat melihat informasi
penyakit adenium
Pre-conditions Pengunjung telah memilih menu penyakit Post-conditions Sistem menampilkan informasi penyakit
dari basis pengetahuan
Failed end conditions Pengunjung batal melihat informasi penyakit
Primary Actors Pengunjung
Main Flow / Basic Path 1. Pengunjung memilih menu penyakit
2. Sistem menampilkan daftar penyakit
3. Pengunjung memilih salah satu penyakit.
4. Sistem Menampilkan detail dari penyakit yang dipilih pengunjung
Tabel IV.3
Deskripsi Use Case Sistem Pakar Adenium Halaman Pengunjung
(Menu Artikel)
Use Case Name Menu Artikel
Requirements A3
Goal Pengunjung dapat melihat artikel seputar adenium Pre-conditions Pengunjung telah memilih menu artikel
Post-conditions Sistem menampilkan artikel dari database Failed end conditions Pengunjung batal melihat artikel
Primary Actors Pengunjung
Main Flow / Basic Path 1. Pengunjung memilih menu artikel 2. Sistem menampilkan data artikel 3. Pengunjung memilih salah satu artikel 4. Sistem menampilkan detail dari artikel
tersebut
Gambar IV.2
Use Case Sistem Pakar Penyakit Adenium Halaman Admin
Tabel IV.4
Tabel Use Case Sistem Pakar Penyakit Adenium Halaman Admin
(Data Penyakit)
Use Case Name Menu Penyakit
Requirements B1
Goal Admin dapat menambahkan penyakit baru.
Pre-conditions Pakar telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai
Primary Actors Admin
Main Flow / Basic Path 1. Admin memilih menu data penyakit 2. Sistem menampilkan halaman data
penyakit
3. Admin mengklik link tambah penyakit untuk menambah data penyakit
4. Sistem menampilkan form tambah penyakit
5. Admin mengisi data penyakit yang baru kemudian mengklik tombol simpan 6. Sistem menyimpan data penyakit baru ke
basis pengetahuan
7. Sistem kembali menampilkan halaman penyakit.
Invariant A 1. Admin memilih tombol “Edit” pada salah satu penyakit
2. Sistem menampilkan form edit penyakit 3. Admin mengedit data penyakit
4. Sistem mengubah data penyakit pada basis pengetahuan dan menampilkan kembali data penyakit yang telah diubah Invariant B : 1. Admin memilih tombol “Hapus” pada
salah satu penyakit
2. Sistem menghapus data penyakit pada basis pengetahuan.
Tabel IV.5
Tabel Use Case Sistem Pakar Penyakit Adenium Halaman Admin
(Data Gejala)
Use Case Name Data Gejala
Requirements B2
Goal Admin dapat menambahkan gejala baru.
Pre-conditions Pakar telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai
Primary Actors Admin
Main Flow / Basic Path 1. Admin memilih menu data Gejala 2. Sistem menampilkan halaman data
penyakit
3. Admin mengklik link untuk menambah data gejala
4. Sistem menampilkan form tambah Gejala 5. Admin mengisi data gejala yang baru
kemudian mengklik tombol simpan 6. Sistem menyimpan data gejala baru ke
database
7. Sistem kembali menampilkan halaman data gejala.
Invariant A 1. Admin memilih tombol “Edit” pada salah satu gejala
1. Sistem menampilkan form edit gejala 2. Admin mengedit data gejala
3. Sistem mengubah data gejala pada basis pengetahuan dan menampilkan kembali data gejala yang telah diubah
Invariant B : 1. Admin memilih tombol “Hapus” pada salah satu gejala
2. Sistem menghapus data gejala pada basis pengetahuan.
Tabel IV.6
Tabel Use Case Sistem Pakar Penyakit Adenium Halaman Admin
(Data Relasi)
Use Case Name Data Relasi
Requirements B3
Goal Admin dapat menambahkan relasi baru.
Pre-conditions Admin telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai
Primary Actors Admin
Main Flow / Basic Path 1. Admin memilih menu data Relasi 2. Sistem menampilkan data relasi dari basis
pengetahuan
3. Admin memilih penyakit di data relasi terlebih dahulu
4. Kemudian admin memilih gejala yang cocok dengan penyakit tersebut
5. Admin memilih tombol simpan
Invariant A 1. Admin memilih penyakit yang sudah mempunyai relasi
2. Sistem menampilkan gejala dari penyakit tersebut
3. Admin mengubah relasi pada penyakit tersebut
4. Kemudian admin memilih tombol simpan
Tabel IV.7
Tabel Use Case Sistem Pakar Penyakit Adenium Halaman Pakar
(Data Artikel)
Use Case Name Data Artikel
Requirements B4
Goal Admin dapat mengolah artikel.
Pre-conditions Admin telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai
Primary Actors Admin
Main Flow / Basic Path 1. Admin memilih menu data artikel 2. Sistem menampilkan data artikel dari
basis pengetahuan
3. Admin memilih “edit” dari salah satu artikel
4. Sistem menampilkan form edit artikel 5. Admin mengedit data artikel
6. Sistem mengubah data artikel pada basis pengetahuan dan menampilkan kembali data artikel yang telah diubah
Invariant A 1. Admin memilih tombol “Hapus” pada salah satu artikel
2. Sistem menampilkan dialog konfirmasi penghapusan data
3. Admin memilih tombol “Yes”
4. Sistem menghapus artikel pada basis pengetahuan.
Tabel IV.8
Tabel Use Case Sistem Pakar Penyakit Adenium Halaman Admin
(Data Pakar)
Use Case Name Menu Data Pakar
Requirements B5
Goal Admin dapat menambahkan pakar.
Pre-conditions Admin telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai
Primary Actors Admin
Main Flow / Basic Path 1. Admin memilih menu data pakar 2. Sistem menampilkan data pakar
3. Admin mengklik link input pakar untuk menambah data
4. Sistem menampilkan form tambah pakar 5. Admin mengisi data pakar yang baru
kemudian mengklik tombol simpan 6. Sistem menyimpan data pakar baru ke
database
7. Sistem kembali menampilkan halaman data pakar.
Invariant A 1. Admin memilih tombol “Edit”
2. Sistem menampilkan form edit pakar 3. Admin mengedit data pakar
4. Sistem mengubah data pakar pada basis pengetahuan dan menampilkan kembali data pakar yang telah diubah
Invariant B : 1. Admin memilih tombol “Hapus” pada salah satu data pakar
2. Sistem menampilkan dialog konfirmasi penghapusan data
3. Admin memilih tombol “Yes”
4. Sistem menghapus data pakar pada database.
Tabel IV.9
Tabel Use Case Sistem Pakar Penyakit Adenium Halaman Admin
(Data Info Penyakit)
Use Case Name Menu Info Penyakit
Requirements B6
Goal Admin dapat menambahkan info penyakit.
Pre-conditions Pakar telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai
Primary Actors Admin
Main Flow / Basic Path 1. Admin memilih menu data penyakit 2. Sistem menampilkan halaman info
penyakit
3. Admin mengklik link tambah info penyakit untuk menambah data info penyakit
4. Sistem menampilkan form tambah info penyakit
5. Admin mengisi data info penyakit yang baru kemudian mengklik tombol simpan 6. Sistem menyimpan data penyakit baru ke
basis data
7. Sistem kembali menampilkan halaman info penyakit.
Invariant A 1. Admin memilih tombol “Edit” pada salah satu info penyakit
2. Sistem menampilkan form edit info penyakit
3. Admin mengedit data info penyakit 4. Sistem mengubah data info penyakit pada
basis data dan menampilkan kembali data info penyakit yang telah diubah
Invariant B : 3. Admin memilih tombol “Hapus” pada salah satu info penyakit
4. Sistem menghapus data info penyakit pada basis data.
2. Use Case Sistem Pakar Penyakit Adenium Halaman Pakar
Gambar IV.3
Use Case Sistem Pakar Penyakit Adenium Halaman Pakar
Deskripsi Use Case Sistem Pakar Adenium Halaman Pakar
(Menu Penyakit)
Use Case Name Menu Penyakit
Requirements C1
Goal Pakar dapat melihat data penyakit.
Pre-conditions Pakar telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai Primary Actors Pakar
Main Flow / Basic Path 1. Pakar memilih menu penyakit
2. Sistem menampilkan informasi penyakit dari basis pengetahuan
3. Pakar memilih salah satu penyakit
4. Sistem menampilkan definis, solusi dan gejala yang berkaitan dengan penyakit terserbut
Tabel IV.11
Deskripsi Use Case Sistem Pakar Adenium Halaman Pakar
(Menu Gejala)
Use Case Name Menu Gejala
Requirements C2
Goal Pakar dapat melihat data gejala.
Pre-conditions Pakar telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai Primary Actors Pakar
Main Flow / Basic Path 1. Pakar memilih menu gejala
2. Sistem menampilkan data gejala dari basis pengetahuan
Tabel IV.12
Deskripsi Use Case Sistem Pakar Adenium Halaman Pakar
(Menu Rule)
Use Case Name Menu Rule
Requirements C3
Goal Pakar dapat melihat data relasi.
Pre-conditions Pakar telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai Primary Actors Pakar
Main Flow / Basic Path 1. Pakar memilih menu relasi
2. Pakar memilih salah satu penyakit
3. Sistem menampilkan data gejala dari penyakit tersebut menurut rule dari basis pengetahuan
Deskripsi Use Case Sistem Pakar Adenium Halaman Pakar
(Menu Artikel)
Use Case Name Menu Artikel
Requirements C4
Goal Pakar dapat menambah artikel.
Pre-conditions Pakar telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai Primary Actors Pakar
Main Flow / Basic Path 1. Pakar memilih menu artikel
2. Sistem menampilkan halaman artikel 3. Pakar mengklik link input artikel untuk
menambah data artikel
4. Sistem menampilkan form tambah artikel 5. Pakar mengisi data artikel yang baru
kemudian mengklik tombol simpan 6. Sistem menyimpan data artikel
7. Sistem kembali menampilkan halaman artikel
Tabel IV.14
Deskripsi Use Case Sistem Pakar Adenium Halaman Pakar
(Menu Ubah Password)
Use Case Name Menu Ubah Password
Requirements C5
Goal Pakar dapat melakukan ubah password Pre-conditions Pakar telah melakukan login
Post-conditions Sistem melakukan validasi dan menyamakan username dan password dengan database.
Failed end conditions Gagal Login, email dan password tidak sesuai Primary Actors Pakar
Main Flow / Basic Path 1. Pakar memilih menu ubah password 2. Sistem menampilkan form ubah password 3. Pakar mengisi password lama dan
password baru
4. Sistem mengubah password lama ke password baru
5. Sistem menampilkan dialog konfirmasi password berhasil dirubah
6. Sistem kembali menampilkan halaman utama
4.2.1 Entity Relationship Diagram (ERD)
Gambar IV.4
Entity Relationship Diagram
4.2.2 Logical Relationship Structure (LRS)
Gambar IV.5
Gambar Logical Relationship Struktur
Nama File : Tabel Penyakit Akronim : penyakit
Fungsi : Untuk menyimpan data penyakit Tipe File : File master
Organisasi File : Index Sequential Akses File : Random
Media : Hardisk Panjang Record : 124
Kunci File : kd_penyakit Software : Mysql
Tabel IV.15
Spesifikasi File Tabel Penyakit
NO. Elemen Data Akromi Tipe Panjang Keterangan
1 Id Penyakit id_penyakit Char 4 Primary Key
2 Nama Penyakit nm_penyakit Varchar 60
3 Nama Latin nm_latin Varchar 60
4 Karakter karakter Text
5 Solusi solusi Text
2. Spesifikasi File Data Gejala
Nama File : Tabel Gejala Akronim : gejala
Fungsi : Untuk menyimpan data gejala Tipe File : File master
Organisasi File : Index Sequential Akses File : Random
Media : Hardisk Panjang Record : 104 Kunci File : kd_gejala Software : Mysql
Table IV.16
Spesifikasi File Tabel Gejala
No. Elemen Data Akronim Tipe Panjang Keterangan
1 Id Gejala id_gejala Char 4 Primary Key
2 Nama Gejala nm_gejala Varchar 100
Nama File : Tabel Relasi Akronim : relasi
Fungsi : Untuk menghubungkan penyakit dan gejala Tipe File : File transaksi
Organisasi File : Index Squential Akses File : Random
Media : Hardisk Panjang Record : 8 Kunci File : - Software : Mysql
Table IV.17
Spesifikasi File Tabel relasi
No. Elemen Data Akronim Tipe Panjang Keterangan
1 Id Gejala id_gejala Char 4
2 Id Penyakit id_penyakit Char 4
4. Spesifikasi File Analisa Hasil
Nama File : Tabel Analisa Hasil Akronim : analisa_hasil
Fungsi : Untuk menyimpan data hasil analisa Tipe File : File master
Organisasi File : Index Sequential Akses File : Random
Media : Hardisk Panjang Record : 288 Kunci File : id Software : Mysql
Tabel IV.18
Spesifikasi File Tabel Analisa Hasil
NO. Elemen Data Akromi Tipe Panjang Keterangan
1 Id id Int 4 Primary Key
2 Nama Nama Varchar 60
3 Kelamin kelamin Enum
4 Alamat alamat Varchar 100
5 Pekerjaan solusi Varchar 60
6 Kode Penyakit kd_penyakit Char 4
7 Noip noip Varchar 60
8 Tanggal tanggal datetime
Aplikasi Sistem Pakar Online Mendiagnosa Penyakit Adenium ini merupakan pemrograman terstruktur. Berikut adalah software architecturenya :
1. Activity Diagram
Gambar IV.6
Activity Diagram Halaman Admin (Menu Tambah Penyakit)
2. Deployment Diagram
Gambar IV.7
Deployment Diagram
Gambar IV.8
Component Diagram
4.2.4 User Interface
1. Tampilan Interface Pengunjung A. Front Page
Gambar IV.9
Tampilan Utama (Home) Pengunjung
Gambar IV.10 Tampilan Menu Diagnosa
C. Tampilan Menu Hasil
Gambar IV.11 Tampilan Hasil
Gambar IV.12 Tampilan Menu Artikel
E. Tampilan Menu Penyakit
Gambar IV.13 Tampilan Menu Penyakit
A. Tampilan Menu Penyakit
Gambar IV.14
Tampilan Menu Penyakit (Admin)
B. Tampilan Menu Gejala
Gambar IV.15
Tampilan Menu Gejala (Admin)
Gambar IV.16
Tampilan Menu Relasi (Admin)
3. Tampilan halaman pakar A. Tampilan Ubah Password
Gambar IV.17
Tampilan Menu Penyakit (Admin)
A. Code Form Konsultasi
<?php
include "librari/inc.koneksidb.php";
$NOIP = $_SERVER['REMOTE_ADDR'];
# Periksa apabila sudah ditemukan
$sql_cekh = "SELECT * FROM tmp_penyakit WHERE noip='$NOIP' GROUP BY kd_penyakit";
$qry_cekh = mysql_query($sql_cekh, $koneksi);
$hsl_cekh = mysql_num_rows($qry_cekh);
if ($hsl_cekh == 1) {
$hsl_data = mysql_fetch_array($qry_cekh);
$sql_pasien = "SELECT * FROM tmp_pasien WHERE noip='$NOIP'";
$qry_pasien = mysql_query($sql_pasien, $koneksi);
$hsl_pasien = mysql_fetch_array($qry_pasien);
$sql_in = "INSERT INTO analisa_hasil SET
nama='$hsl_pasien[nama]',kelamin='$hsl_pasien[kelamin]', alamat='$hsl_pasien[alamat]',pekerjaan='$hsl_pasien[pekerjaan]', kd_penyakit='$hsl_data[kd_penyakit]',noip='$hsl_pasien[noip]', tanggal='$hsl_pasien[tanggal]'";
mysql_query($sql_in, $koneksi);
echo"<meta http-equiv='refresh' content='0;
url=index.php?page=hasil'>";
exit;
}
$sqlcek = "SELECT * FROM tmp_analisa WHERE noip='$NOIP'";
$qrycek = mysql_query($sqlcek, $koneksi);
$datacek= mysql_num_rows($qrycek);
if ($datacek >= 1) {
$sqlg = "SELECT gejala.* FROM gejala,tmp_analisa WHERE gejala.kd_gejala=tmp_analisa.kd_gejala
AND tmp_analisa.noip='$NOIP' AND NOT tmp_analisa.kd_gejala IN(SELECT kd_gejala FROM tmp_gejala WHERE noip='$NOIP') ORDER BY gejala.kd_gejala LIMIT 1";
$qryg = mysql_query($sqlg, $koneksi) or die ("Gagal $qryg :
".mysql_error());
$datag = mysql_fetch_array($qryg) or die ("Gagal datag :
".mysql_error());
$kdgejala = $datag['kd_gejala'];
$gejala = $datag['nm_gejala'];
//echo " ADA ($sqlg)";
}else {
$sqlg = "SELECT * FROM gejala ORDER BY kd_gejala LIMIT 1";
$qryg = mysql_query($sqlg, $koneksi);
$datag = mysql_fetch_array($qryg);
$kdgejala = $datag['kd_gejala'];
$gejala = $datag['nm_gejala'];
}
?>
<html>
<head>
<title>Form Utama Penelusuran</title>
</head>
<body>
<form action="?page=konsulcek" method="post" name="form1"
target="_self">
<table width="100%" border="0" cellpadding="2" cellspacing="1"
bgcolor="#DBEAF5">
<tr>
<td><b>JAWABLAH PERTANYAAN BERIKUT :</b></td>
</tr>
<tr>
<td width="312" bgcolor="#FFFFFF">Apakah Ayam Anda mengalami
<?php echo $gejala; echo "[ $kdgejala ]"; ?> ?
<input name="TxtKdGejala" type="hidden" value="<?php echo
$kdgejala; ?>"></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"> <input type="radio" name="RbPilih"
value="YA" checked>
Benar (YA)
<input type="radio" name="RbPilih" value="TIDAK">
Salah (TIDAK)</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"> <input type="submit" name="Submit"
value="Jawab"></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"> </td>
</tr>
<tr>
<td><strong>GEJALA YANG TERPILIH YA (BENAR)
</strong></td>
</tr>
<tr>
<?php
$sql_gjl = "SELECT gejala.* FROM gejala, tmp_gejala WHERE gejala.kd_gejala=tmp_gejala.kd_gejala AND tmp_gejala.noip='$NOIP' ORDER BY tmp_gejala.kd_gejala";
$qry_gjl = mysql_query($sql_gjl, $koneksi) or die ("Gagal Query".mysql_error());
$cekAda = mysql_num_rows($qry_gjl);
if ($cekAda == 0) { echo "BELUM ADA";
}
while($hsl_gjl = mysql_fetch_array($qry_gjl)) {
echo "[ $hsl_gjl[kd_gejala] ] = $hsl_gjl[nm_gejala] <br>";
}
?>
</td>
</tr>
<tr>
<td><strong>PENYAKIT YANG MUNGKIN TERSERANG
</strong></td>
</tr>
<tr>
<td bgcolor="#FFFFFF">
<?php
$sql_pyk = "SELECT penyakit.* FROM penyakit, tmp_penyakit WHERE penyakit.kd_penyakit=tmp_penyakit.kd_penyakit AND tmp_penyakit.noip='$NOIP' GROUP BY tmp_penyakit.kd_penyakit";
$qry_pyk = mysql_query($sql_pyk, $koneksi) or die ("Gagal Query".mysql_error());
$cekAda2 = mysql_num_rows($qry_pyk);
if ($cekAda2 == 0) { echo "BELUM ADA";
while($hsl_pyk = mysql_fetch_array($qry_pyk)) {
echo "[ $hsl_pyk[kd_penyakit] ] = $hsl_pyk[nm_penyakit] <br>";
}
?>
</td>
</tr>
</table>
</form>
</body>
</html>
B. Code Periksa Konsultasi
<?php
include "librari/inc.koneksidb.php";
# Baca variabel Form (If Register Global ON)
$RbPilih = $_POST['RbPilih'];
$TxtKdGejala= $_POST['TxtKdGejala'];
# Mendapatkan No IP
$NOIP =
$_SERVER['REMOTE_ADDR'];
# Fungsi untuk menambah data ke tmp_analisa function AddTmpAnalisa($kdgejala, $IP) {
$sql_sakit = "SELECT relasi.* FROM relasi,tmp_penyakit WHERE relasi.kd_penyakit=tmp_penyakit.kd_penyakit
AND noip='$IP' ORDER BY relasi.kd_penyakit,relasi.kd_gejala";
$qry_sakit = mysql_query($sql_sakit) or die ("Query error :".mysql_error());
while ($data_sakit = mysql_fetch_array($qry_sakit)) {
$sqltmp = "INSERT INTO tmp_analisa (noip, kd_penyakit,kd_gejala) VALUES ('$IP','$data_sakit[kd_penyakit]','$data_sakit[kd_gejala]')";
mysql_query($sqltmp) or die ("Query error :".mysql_error());
}
# Fungsi hapus tabel tmp_gejala
function AddTmpGejala($kdgejala, $IP) {
$sql_gejala = "INSERT INTO tmp_gejala (noip,kd_gejala) VALUES ('$IP','$kdgejala')";
mysql_query($sql_gejala) or die ("Query error :".mysql_error());
}
# Fungsi hapus tabel tmp_sakit function DelTmpSakit($IP) {
$sql_del = "DELETE FROM tmp_penyakit WHERE noip='$IP'";
mysql_query($sql_del) or die ("Query error :".mysql_error());
}
# Fungsi hapus tabel tmp_analisa function DelTmpAnlisa($IP) {
$sql_del = "DELETE FROM tmp_analisa WHERE noip='$IP'";
mysql_query($sql_del) or die ("Query error :".mysql_error());
}
if ($RbPilih == "YA") {
$sql_analisa = "SELECT * FROM tmp_analisa ";
$qry_analisa = mysql_query($sql_analisa, $koneksi) or die ("Query error :".mysql_error());
$data_cek = mysql_num_rows($qry_analisa);
if ($data_cek >= 1) {
# Kode saat tmp_analisa tidak kosong DelTmpSakit($NOIP);
$sql_tmp = "SELECT * FROM tmp_analisa WHERE kd_gejala='$TxtKdGejala' AND noip='$NOIP'";
$qry_tmp = mysql_query($sql_tmp, $koneksi) or die ("Query error :".mysql_error());
while ($data_tmp = mysql_fetch_array($qry_tmp)) {
$sql_rsakit = "SELECT * FROM relasi WHERE kd_penyakit='$data_tmp[kd_penyakit]' GROUP BY kd_penyakit";
$qry_rsakit = mysql_query($sql_rsakit, $koneksi) or die ("Query error :".mysql_error());
while ($data_rsakit = mysql_fetch_array($qry_rsakit)) { // Data penyakit yang mungkin dimasukkan ke tmp
$sql_input = "INSERT INTO tmp_penyakit
(noip,kd_penyakit)VALUES ('$NOIP','$data_rsakit[kd_penyakit]')";
mysql_query($sql_input, $koneksi) or die ("Query error :".mysql_error());
} }
// Gunakan Fungsi DelTmpAnlisa($NOIP);
AddTmpAnalisa($TxtKdGejala, $NOIP);
AddTmpGejala($TxtKdGejala, $NOIP);
}else {
# Kode saat tmp_analisa kosong
$sql_rgejala = "SELECT * FROM relasi WHERE kd_gejala='$TxtKdGejala'";
$qry_rgejala = mysql_query($sql_rgejala, $koneksi) or die ("Query error :".mysql_error());
while ($data_rgejala = mysql_fetch_array($qry_rgejala)) {
$sql_rsakit = "SELECT * FROM relasi WHERE kd_penyakit='$data_rgejala[kd_penyakit]' GROUP BY kd_penyakit";
$qry_rsakit = mysql_query($sql_rsakit, $koneksi) or die ("Query error :".mysql_error());
while ($data_rsakit = mysql_fetch_array($qry_rsakit)) {
// Data penyakit yang mungkin dimasukkan ke tmp
$sql_input = "INSERT INTO tmp_penyakit (noip,kd_penyakit) VALUES ('$NOIP','$data_rsakit[kd_penyakit]')";
mysql_query($sql_input, $koneksi) or die ("Query error :".mysql_error());
} }
// Menggunakan Fungsi
AddTmpAnalisa($TxtKdGejala, $NOIP);
AddTmpGejala($TxtKdGejala, $NOIP);
}
echo "<meta http-equiv='refresh' content='0;
url=index.php?page=konsul'>";
}
if ($RbPilih == "TIDAK") {
$sql_analisa = "SELECT * FROM tmp_analisa ";
$qry_analisa = mysql_query($sql_analisa, $koneksi) or die ("Query error :".mysql_error());
$data_cek = mysql_num_rows($qry_analisa);
if ($data_cek >= 1) {
# Kode saat tmp_analisa tidak kosong
$sql_relasi = "SELECT * FROM tmp_analisa WHERE kd_gejala='$TxtKdGejala'";
$qry_relasi = mysql_query($sql_relasi, $koneksi) or die ("Query error :".mysql_error());
while($hsl_relasi = mysql_fetch_array($qry_relasi)){
// Hapus daftar relasi yang sudah tidak mungkin dari tabel tmp
$sql_deltmp = "DELETE FROM tmp_analisa WHERE kd_penyakit='$hsl_relasi[kd_penyakit]' AND noip='$NOIP'";
mysql_query($sql_deltmp, $koneksi) or die ("Query error :".mysql_error());
// Hapus daftar penyakit yang sudah tidak ada kemungkinan
$sql_deltmp2 = "DELETE FROM tmp_penyakit WHERE kd_penyakit='$hsl_relasi[kd_penyakit]' AND noip='$NOIP'";
mysql_query($sql_deltmp2, $koneksi) or die ("Query error :".mysql_error());
} }else {
# Pindahkan data relsi ke tmp_analisa
$sql_relasi= "SELECT * FROM relasi ORDER BY kd_penyakit,kd_gejala";
$qry_relasi= mysql_query($sql_relasi, $koneksi) or die ("Query error :".mysql_error());
$sql_intmp = "INSERT INTO tmp_analisa (noip, kd_penyakit,kd_gejala)VALUES ('$NOIP','$hsl_relasi[kd_penyakit]', '$hsl_relasi[kd_gejala]')";
mysql_query($sql_intmp,$koneksi) or die ("Query error :".mysql_error());
// Masukkan data penyakit yang mungkin terjangkit
$sql_intmp2 = "INSERT INTO tmp_penyakit(noip,kd_penyakit) VALUES ('$NOIP','$hsl_relasi[kd_penyakit]')";
mysql_query($sql_intmp2,$koneksi) or die ("Query error :".mysql_error());
}
# Hapus tmp_analisa yang tidak sesuai
$sql_relasi2 = "SELECT * FROM relasi WHERE kd_gejala='$TxtKdGejala'";
$qry_relasi2 = mysql_query($sql_relasi2, $koneksi) or die ("Query error :".mysql_error());
while($hsl_relasi2 = mysql_fetch_array($qry_relasi2)){
$sql_deltmp = "DELETE FROM tmp_analisa WHERE kd_penyakit='$hsl_relasi2[kd_penyakit]' AND noip='$NOIP'";
mysql_query($sql_deltmp, $koneksi) or die ("Query error :".mysql_error());
// Hapus penyakit yang sudah tidak mungkin
$sql_deltmp2 = "DELETE FROM tmp_penyakit WHERE kd_penyakit='$hsl_relasi2[kd_penyakit]' AND noip='$NOIP'";
mysql_query($sql_deltmp2, $koneksi) or die ("Query error :".mysql_error());
} }
echo "<meta http-equiv='refresh' content='0;
url=index.php?page=konsul'>";
}
?>
C. Code Hasil Analisa
<?php
include "librari/inc.koneksidb.php";
$NOIP = $_SERVER['REMOTE_ADDR'];
$sql = "SELECT analisa_hasil.*, penyakit.*
FROM analisa_hasil,penyakit
WHERE penyakit.kd_penyakit=analisa_hasil.kd_penyakit
AND analisa_hasil.noip='$NOIP'
ORDER BY analisa_hasil.id DESC LIMIT 1";
$qry = mysql_query($sql, $koneksi) or die ("Query Hasil salam".mysql_error());
$data= mysql_fetch_array($qry);
if ($data['kelamin']=="P") {
$kelamin = "Pria";
}else {
$kelamin = "Wanita";
}
?>
<html>
<head>
<title>Hasil Analisa Pasien</title>
</head>
<body>
<table width="100%" border="0" cellpadding="2" cellspacing="1"
bgcolor="#DBEAF5">
<tr align="center">
<td colspan="2" bgcolor="#22B5DD"><b>HASIL ANALISA PENYAKIT AYAM</b></td>
</tr>
<tr>
<td colspan="2"><b>DATA PASIEN :</b></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="86">Nama</td>
<td width="689"><?php echo $data['nama']; ?></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>Kelamin</td>
<td><?php echo $kelamin; ?></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>Alamat</td>
<td><?php echo $data['alamat']; ?></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>Pekerjaan</td>
<td><?php echo $data['pekerjaan']; ?></td>
</tr>
<tr bgcolor="#FFFFFF">
<td> </td>
<td> </td>
</tr>
<td colspan="2"><b>HASIL ANALISA TERAKHIR :</b></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>Nama Penyakit</td>
<td><?php echo $data['kd_penyakit']." | ".$data['nm_penyakit'];
?></td>
</tr>
<tr bgcolor="#FFFFFF">
<td valign="top">Gejala</td>
<td>
<?php
// Menampilkan daftar gejala
$sql_gejala = "SELECT gejala.* FROM gejala,relasi WHERE gejala.kd_gejala=relasi.kd_gejala
AND relasi.kd_penyakit='$data[kd_penyakit]'";
$qry_gejala = mysql_query($sql_gejala, $koneksi);
$i= 0;
while ($hsl_gejala=mysql_fetch_array($qry_gejala)) {
$i++;
echo "$i . $hsl_gejala[nm_gejala] <br>";
}
?> </td>
</tr>
<tr bgcolor="#FFFFFF">
<td valign="top">Keterangan</td>
<td><?php echo $data['keterangan']; ?></td>
</tr>
<tr bgcolor="#FFFFFF">
<td valign="top">Solusi</td>
<td><?php echo $data['solusi']; ?></td>
</tr>
</table>
</body>
</html>
4.4 Testing
<?php
include "librari/inc.koneksidb.php";
$NOIP = $_SERVER['REMOTE_ADDR'];
# Periksa apabila sudah ditemukan
$sql_cekh = "SELECT * FROM tmp_penyakit WHERE noip='$NOIP'
GROUP BY kd_penyakit";
$qry_cekh = mysql_query($sql_cekh, $koneksi);
$hsl_cekh = mysql_num_rows($qry_cekh);
if ($hsl_cekh == 1) {
$hsl_data = mysql_fetch_array($qry_cekh);
$sql_pasien = "SELECT * FROM tmp_pasien WHERE noip='$NOIP'";
$qry_pasien = mysql_query($sql_pasien, $koneksi);
$hsl_pasien = mysql_fetch_array($qry_pasien);
$sql_in = "INSERT INTO analisa_hasil SET
nama='$hsl_pasien[nama]',kelamin='$hsl_pasien[kelamin]', alamat='$hsl_pasien[alamat]',pekerjaan='$hsl_pasien[pekerjaan]', kd_penyakit='$hsl_data[kd_penyakit]',noip='$hsl_pasien[noip]', tanggal='$hsl_pasien[tanggal]'";
mysql_query($sql_in, $koneksi);
echo"<meta http-equiv='refresh' content='0;
url=index.php?page=hasil'>";
exit;
}
$sqlcek = "SELECT * FROM tmp_analisa WHERE noip='$NOIP'";
$qrycek = mysql_query($sqlcek, $koneksi);
$datacek= mysql_num_rows($qrycek);
if ($datacek >= 1) {
$sqlg = "SELECT gejala.* FROM gejala,tmp_analisa WHERE gejala.kd_gejala=tmp_analisa.kd_gejala
AND tmp_analisa.noip='$NOIP' AND NOT tmp_analisa.kd_gejala IN(SELECT kd_gejala FROM tmp_gejala WHERE noip='$NOIP') ORDER BY gejala.kd_gejala LIMIT 1";
$qryg = mysql_query($sqlg, $koneksi) or die ("Gagal $qryg :
".mysql_error());
$datag = mysql_fetch_array($qryg) or die ("Gagal datag :
".mysql_error());
$kdgejala = $datag['kd_gejala'];
$gejala = $datag['nm_gejala'];
//echo " ADA ($sqlg)";
}else {
$sqlg = "SELECT * FROM gejala ORDER BY kd_gejala LIMIT 1";
$qryg = mysql_query($sqlg, $koneksi);
$datag = mysql_fetch_array($qryg);
$kdgejala = $datag['kd_gejala'];
$gejala = $datag['nm_gejala'];
}
?>
<html>
<head>
<title>Form Utama Penelusuran</title>
<body>
<form action="?page=konsulcek" method="post" name="form1"
target="_self">
<table width="100%" border="0" cellpadding="2" cellspacing="1"
bgcolor="#DBEAF5">
<tr>
<td><b>JAWABLAH PERTANYAAN BERIKUT :</b></td>
</tr>
<tr>
<td width="312" bgcolor="#FFFFFF">Apakah Ayam Anda mengalami
<?php echo $gejala; echo "[ $kdgejala ]"; ?> ?
<input name="TxtKdGejala" type="hidden" value="<?php echo
$kdgejala; ?>"></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"> <input type="radio" name="RbPilih"
value="YA" checked>
Benar (YA)
<input type="radio" name="RbPilih" value="TIDAK">
Salah (TIDAK)</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"> <input type="submit" name="Submit"
value="Jawab"></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"> </td>
</tr>
<tr>
<td><strong>GEJALA YANG TERPILIH YA (BENAR)
</strong></td>
</tr>
<tr>
<td bgcolor="#FFFFFF">
<?php
$sql_gjl = "SELECT gejala.* FROM gejala, tmp_gejala WHERE gejala.kd_gejala=tmp_gejala.kd_gejala AND tmp_gejala.noip='$NOIP' ORDER BY tmp_gejala.kd_gejala";
$qry_gjl = mysql_query($sql_gjl, $koneksi) or die ("Gagal Query".mysql_error());
$cekAda = mysql_num_rows($qry_gjl);
if ($cekAda == 0) { echo "BELUM ADA";
}
while($hsl_gjl = mysql_fetch_array($qry_gjl)) {
echo "[ $hsl_gjl[kd_gejala] ] = $hsl_gjl[nm_gejala] <br>";
}
?>
</td>
</tr>
<tr>
<td><strong>PENYAKIT YANG MUNGKIN TERSERANG
</strong></td>
</tr>
<tr>
<td bgcolor="#FFFFFF">
<?php
$sql_pyk = "SELECT penyakit.* FROM penyakit, tmp_penyakit WHERE penyakit.kd_penyakit=tmp_penyakit.kd_penyakit AND tmp_penyakit.noip='$NOIP' GROUP BY tmp_penyakit.kd_penyakit";
$qry_pyk = mysql_query($sql_pyk, $koneksi) or die ("Gagal Query".mysql_error());
$cekAda2 = mysql_num_rows($qry_pyk);
if ($cekAda2 == 0) { echo "BELUM ADA";
while($hsl_pyk = mysql_fetch_array($qry_pyk)) {
echo "[ $hsl_pyk[kd_penyakit] ] = $hsl_pyk[nm_penyakit] <br>";
}
?>
</td>
</tr>
</table>
</form>
</body>
</html>
1
3 2
4
5
6
Gambar IV.18
Grafik Alir Deteksi Penyakit Adenium
Kompleksitas Siklomatis (pengukuran kuantitatif terhadap kompleksitas logis suatu program) dari grafik dapat diperoleh dengan perhitungan :
V(G) = E – N + 2 Dimana :
E = Jumlah edge grafik alir yang ditandakan dengan gambar panah N = Jumlah simpul grafik alir yang ditandakan dengan gambar lingkaran.
Sehingga kompleksitas siklomatisnya adalah V(G)=5 – 6+ 2 = 1
Basis set yang dihasilkan dari jalur independent secara linier adalah jalur sebagai berikut :
1 – 2 – 3 – 4 – 5 – 6
Berdasarkan ketentuan tersebut dari segi kelayakan software, sistem ini telah memenuhi syarat.
4.5 Support
4.5.1 Publikasi Web
Publikasi website Sistem Pakar Online Untuk Mendiagnosa Penyakit Tanaman Adenium Menggunakan Metode Forward Chaining ini menggunakan hosting web ke idhostinger.com. Berikut daftar harga untuk hosting web ke idhostinger.com:
Tabel IV.19 Daftar Harga Hosting Web
Type Harga Spesifikasi hosting
Free Gratis -Disk Space 2000 MB
-Data Transfer 100 GB
-Script Auto Installer 50 Script -Backup Data Terbatas
-Garansi uptime 99%
Bayar Rp.38000/bln -Disk Space Unlimited
-Data Transfer Unlimited
-Script Auto Installer 60 Script -Backup data mingguan
-Garansi uptime 99,5%
Berdasarkan daftar harga diatas penulis memilih web hosting type free, untuk mencoba menghosting dan menjalankannya di web server, dikarenakan spesifikasi layanan web hosting gratis cukup untuk memenuhi kebutuhan minimal website Sistem Pakar Online Untuk Mendiagnosa Penyakit Tanaman Adenium Menggunakan Metode Forward Chaining
Kebutuhan hardware yang digunakan antara lain : Processor , Memory, Monitor, Hard Disk, Keyboard, Mouse. Kebutuhan software meliputi : Sistem Operasi , Software Aplikasi, dan Software Database.
Tabel IV.20
Spesifikasi Hardware dan Software Admin / Pakar
Kebutuhan Keterangan
Sistem Operasi : Windows 7, 8, 10
Processor RAM Hard Disk
: Intel® Atom™ CPU N570 @1.66 GHz 1.67GHz : 2.00 GB
: 500 GB
Monitor : LED
Keyboard : 84 key
Mouse : Standart
Browser : Mozilla Firefox, Google Chrome
Software : Adobe Dreamweaver, Adobe Photoshop, Php MyAdmin
Tabel IV.21
Spesifikasi Hardware dan Software Client
Kebutuhan Keterangan
Sistem Operasi : Windows 7, 8, 10
Processor RAM Hard Disk
: Intel® Atom™ CPU N570 @1.66 GHz 1.67GHz : 1.00 GB
: 500 GB
Monitor : LED
Keyboard : 84 Key
Mouse : Standart
Browser : Mozilla Firefox, Google Chrome, Internet Explorer