Assalammu’alaikum …
udah lama gag posting..
kali ini iseng posting soal Ai yang cukup aneh dan hasilnya pun saya sendiri masih bingung heuheuheu…
Soalnya sederhana, mengenai sistem panasehat keungan kemana seseorang berinvestasi.
kasus : Seorang user ingin berkonsultasi, Apakah tepat jika dia berinvestasi pada stock saham IBM ??? (ceritanya.. )
nah rule yang ada atau knowledge yang di sediakan simple ajo.. yaitu :
R1 : jika A dan C, Maka E;
R2 : jika D dan C, Maka F;
R3 : jika B dan E, Maka F;
R5 : jika F , Maka G;
dengan data :
A : mempunyai minimal $10000;
B : Lebih Muda dari 30 tahun;
C : Pendidikan Stingkat Universitas;
D : Pendapatan tahunan minimal $ 40000;
E : Investasi Sekuritas;
F : Investasi Grawth Stock
G : Investasi Saham IBM;
simple kan )
nah fakta sementara yg didapat pada studi kasus bahwa si user yang nekat beli saham IBM ini memiliki kriteria :
1. Mempunyai uang $1000
2. Umurnya masih dibawah 30 tahun..
nah gmn tuh c komputer bisa baca dan menentukan si user ini pantas mendapatkan yang mana? ataukah cocok jadi pengangguran sajah ??? )
Bahasa yang saya pake kebetulan adalah java dengan IDE netBeans /, database MySQL, dan kebetulan pake JPA eclipse link karena lagi males bikin DAO dan lain2nya untuk berhubungan dengan service database )
nah lalu jangan lupa buat databasenya dulu…
nama database : artint
table :
lalu… pertama kita bikin projectnya .. diharapkan sudah mengerti bikinnya
nah karena memakai MVC, tentunya kita bagi 3 bagian kelasnya yaitu : Model, View, dan Controller… apakah itu? karena lagi males bahas, dilewat aja dulu kali ya…
kedua.. import semua library yg dibutuhkan cuman : jdbc dan JPAeclipse Link 2.0 sajah ..
trs buat class entitas dan persistence nya … dengan klik kanan projectnya ->pilih “other”->pilih “Persistence” -> Entity From Class Database
lain kali ngbahasa JPA eclipse mungkin ya /
ketiga kita buat class View-nya dulu gan… seperti dibawah ini : (memakai kelas yg turunan dari JPanel) ;D
nama kelas : PanelExpert.java
ya klo bingung karena kepanjangan .. ya bikin aja panel ampe kurang lebih kaya gini :
nah kalo udah jadi, (plus udah jadi bikin methode accessor tiap2 inputan/getter dan setter)
nah sekaran bikin deh kelas controll misalnya namanya : ControlExpert.java
nah terus yang ke 4, bikin interface listener buat nyambungin si ketiga kelas td biar poolll.. kecuali hasilnya mau ditangani di kelas model aja..
nama file : ListenerExpert.java
owh iya ketinggalan saya buat class untuk service koneksi database yang sifatnya statis.. jd harusnya buat ini dulu :
lanjut kita buat kelas modelnya dengan nama file ModelExpert.java:
nah tinggal buat satu class JDialog, atau JFrame, kalo saya pake JDialog..
misal : FormExpert.java
trs tinggal drag semua komponen yang ada di class PanelExpert.java (class View nya) ke JDialog yg kita buat misal yang saya FormExpert.java , nanti codenya jd seperti ini :
nah kalo gini kan mudah.. Hehehhe…
jangan lupa menghubungkan setiap kelasnya agar bisa saling berkomunikasi .. seperti pada source code yang sudah saya masukan hehhe..
kira2 hasilnya nanti jadi kaya gini :
dan klo dipencet tombolnya “Tentukan Investasi yang Cocok” maka :
sekian.. mohon maaf belum bisa menjelaskan dengan detail dan dengan baik.. karena pertama saya masih belajar menulis artikel yang baik dan benar juga indah, dan kedua nulis artikelnya buru2…
lain kali saya perbaiki dan menambah beberapa bagian yang dirasa perlu dan kurang.. /
semoga tulisan yang ribet , gag jelas ini dapat membantu dan bermanfaat
udah lama gag posting..
kali ini iseng posting soal Ai yang cukup aneh dan hasilnya pun saya sendiri masih bingung heuheuheu…
Soalnya sederhana, mengenai sistem panasehat keungan kemana seseorang berinvestasi.
kasus : Seorang user ingin berkonsultasi, Apakah tepat jika dia berinvestasi pada stock saham IBM ??? (ceritanya.. )
nah rule yang ada atau knowledge yang di sediakan simple ajo.. yaitu :
R1 : jika A dan C, Maka E;
R2 : jika D dan C, Maka F;
R3 : jika B dan E, Maka F;
R5 : jika F , Maka G;
dengan data :
A : mempunyai minimal $10000;
B : Lebih Muda dari 30 tahun;
C : Pendidikan Stingkat Universitas;
D : Pendapatan tahunan minimal $ 40000;
E : Investasi Sekuritas;
F : Investasi Grawth Stock
G : Investasi Saham IBM;
simple kan )
nah fakta sementara yg didapat pada studi kasus bahwa si user yang nekat beli saham IBM ini memiliki kriteria :
1. Mempunyai uang $1000
2. Umurnya masih dibawah 30 tahun..
nah gmn tuh c komputer bisa baca dan menentukan si user ini pantas mendapatkan yang mana? ataukah cocok jadi pengangguran sajah ??? )
Bahasa yang saya pake kebetulan adalah java dengan IDE netBeans /, database MySQL, dan kebetulan pake JPA eclipse link karena lagi males bikin DAO dan lain2nya untuk berhubungan dengan service database )
nah lalu jangan lupa buat databasenya dulu…
nama database : artint
table :
1. data{no [int auto_increment primary key], Abjad [varchar(2)], Mean [varchar(100)], val [int]}
2. knowledge{no [int auto_increment primary key], rule [varchar(10)], result [varchar(10)]}
lalu… pertama kita bikin projectnya .. diharapkan sudah mengerti bikinnya
nah karena memakai MVC, tentunya kita bagi 3 bagian kelasnya yaitu : Model, View, dan Controller… apakah itu? karena lagi males bahas, dilewat aja dulu kali ya…
kedua.. import semua library yg dibutuhkan cuman : jdbc dan JPAeclipse Link 2.0 sajah ..
trs buat class entitas dan persistence nya … dengan klik kanan projectnya ->pilih “other”->pilih “Persistence” -> Entity From Class Database
lain kali ngbahasa JPA eclipse mungkin ya /
ketiga kita buat class View-nya dulu gan… seperti dibawah ini : (memakai kelas yg turunan dari JPanel) ;D
nama kelas : PanelExpert.java
001 | /* |
002 | * To change this template, choose Tools | Templates |
003 | * and open the template in the editor. |
004 | */ |
005 |
006 | /* |
007 | * PanelExpert.java |
008 | * |
009 | * Created on Nov 14, 2010, 1:42:41 PM |
010 | */ |
011 |
012 | package expertsystem.hendri.karisma.view; |
013 |
014 | import javax.swing.JComboBox; |
015 | import javax.swing.JOptionPane; |
016 | import javax.swing.JTextField; |
017 | import expertsystem.hendri.karisma.controller.ControlExpert; |
018 | import expertsystem.hendri.karisma.listener.ListenerExpert; |
019 | import expertsystem.hendri.karisma.model.ModelExpert; |
020 |
021 | /** |
022 | * |
023 | * @author hendri |
024 | */ |
025 | public class PanelExpert extends javax.swing.JPanel implements ListenerExpert { |
026 |
027 | private ModelExpert model; |
028 | private ControlExpert controller; |
029 |
030 | /** Creates new form PanelExpert */ |
031 | public PanelExpert() { |
032 | initComponents(); |
033 |
034 | model = new ModelExpert(); |
035 | controller = new ControlExpert(); |
036 |
037 | model.setListener(this); |
038 | controller.setModel(model); |
039 |
040 | } |
041 |
042 | /** This method is called from within the constructor to |
043 | * initialize the form. |
044 | * WARNING: Do NOT modify this code. The content of this method is |
045 | * always regenerated by the Form Editor. |
046 | */ |
047 | @SuppressWarnings ( "unchecked" ) |
048 | // |
049 | private void initComponents() { |
050 |
051 | jLabel1 = new javax.swing.JLabel(); |
052 | jLabel2 = new javax.swing.JLabel(); |
053 | jLabel3 = new javax.swing.JLabel(); |
054 | jLabel4 = new javax.swing.JLabel(); |
055 | jLabel5 = new javax.swing.JLabel(); |
056 | jLabel6 = new javax.swing.JLabel(); |
057 | textNama = new javax.swing.JTextField(); |
058 | textUang = new javax.swing.JTextField(); |
059 | textUmur = new javax.swing.JTextField(); |
060 | comboPendidikan = new javax.swing.JComboBox(); |
061 | textPendapatan = new javax.swing.JTextField(); |
062 | jLabel7 = new javax.swing.JLabel(); |
063 | jLabel8 = new javax.swing.JLabel(); |
064 | jLabel9 = new javax.swing.JLabel(); |
065 | jButton1 = new javax.swing.JButton(); |
066 |
067 | jLabel1.setText( "Masukan Data dibawah Berikut" ); |
068 |
069 | jLabel2.setText( "Nama :" ); |
070 |
071 | jLabel3.setText( "Jumlah Uang Yang Dimiliki :" ); |
072 |
073 | jLabel4.setText( "Umur :" ); |
074 |
075 | jLabel5.setText( "Tingkat Pendidikan Terakhir :" ); |
076 |
077 | jLabel6.setText( "Pendapatan Tahunan :" ); |
078 |
079 | textUmur.addActionListener( new java.awt.event.ActionListener() { |
080 | public void actionPerformed(java.awt.event.ActionEvent evt) { |
081 | textUmurActionPerformed(evt); |
082 | } |
083 | }); |
084 |
085 | comboPendidikan.setModel( new javax.swing.DefaultComboBoxModel( new String[] { "TK" , "SD" , "SMP" , "SMA" , "Perguruan Tinggi" })); |
086 |
087 | jLabel7.setText( "$" ); |
088 |
089 | jLabel8.setText( "Tahun" ); |
090 |
091 | jLabel9.setText( "$" ); |
092 |
093 | jButton1.setText( "Tentukan Investasi yang cocok" ); |
094 | jButton1.addActionListener( new java.awt.event.ActionListener() { |
095 | public void actionPerformed(java.awt.event.ActionEvent evt) { |
096 | jButton1ActionPerformed(evt); |
097 | } |
098 | }); |
099 |
100 | javax.swing.GroupLayout layout = new javax.swing.GroupLayout( this ); |
101 | this .setLayout(layout); |
102 | layout.setHorizontalGroup( |
103 | layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
104 | .addGap( 0 , 437 , Short.MAX_VALUE) |
105 | .addGroup(layout.createSequentialGroup() |
106 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
107 | .addGroup(layout.createSequentialGroup() |
108 | .addGap( 12 , 12 , 12 ) |
109 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
110 | .addGroup(layout.createSequentialGroup() |
111 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
112 | .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING) |
113 | .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING) |
114 | .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING) |
115 | .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING) |
116 | .addComponent(jLabel6, javax.swing.GroupLayout.Alignment.TRAILING)) |
117 | .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
118 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
119 | .addGroup(layout.createSequentialGroup() |
120 | .addComponent(jLabel7) |
121 | .addGap( 4 , 4 , 4 ) |
122 | .addComponent(textUang, javax.swing.GroupLayout.PREFERRED_SIZE, 148 , javax.swing.GroupLayout.PREFERRED_SIZE)) |
123 | .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, 157 , javax.swing.GroupLayout.PREFERRED_SIZE) |
124 | .addGroup(layout.createSequentialGroup() |
125 | .addComponent(textUmur, javax.swing.GroupLayout.PREFERRED_SIZE, 64 , javax.swing.GroupLayout.PREFERRED_SIZE) |
126 | .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
127 | .addComponent(jLabel8)) |
128 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) |
129 | .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() |
130 | .addComponent(jLabel9) |
131 | .addGap( 3 , 3 , 3 ) |
132 | .addComponent(textPendapatan, javax.swing.GroupLayout.PREFERRED_SIZE, 162 , javax.swing.GroupLayout.PREFERRED_SIZE)) |
133 | .addComponent(comboPendidikan, javax.swing.GroupLayout.PREFERRED_SIZE, 193 , javax.swing.GroupLayout.PREFERRED_SIZE)))) |
134 | .addComponent(jLabel1))) |
135 | .addGroup(layout.createSequentialGroup() |
136 | .addGap( 114 , 114 , 114 ) |
137 | .addComponent(jButton1))) |
138 | .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
139 | ); |
140 | layout.setVerticalGroup( |
141 | layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
142 | .addGap( 0 , 302 , Short.MAX_VALUE) |
143 | .addGroup(layout.createSequentialGroup() |
144 | .addContainerGap() |
145 | .addComponent(jLabel1) |
146 | .addGap( 28 , 28 , 28 ) |
147 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
148 | .addComponent(jLabel2) |
149 | .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
150 | .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) |
151 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
152 | .addComponent(jLabel3) |
153 | .addComponent(textUang, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
154 | .addComponent(jLabel7)) |
155 | .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) |
156 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
157 | .addComponent(jLabel4) |
158 | .addComponent(textUmur, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
159 | .addComponent(jLabel8)) |
160 | .addGap( 18 , 18 , 18 ) |
161 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
162 | .addComponent(jLabel5) |
163 | .addComponent(comboPendidikan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
164 | .addGap( 18 , 18 , 18 ) |
165 | .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) |
166 | .addComponent(jLabel6) |
167 | .addComponent(jLabel9) |
168 | .addComponent(textPendapatan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) |
169 | .addGap( 38 , 38 , 38 ) |
170 | .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 43 , javax.swing.GroupLayout.PREFERRED_SIZE) |
171 | .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
172 | ); |
173 | } // |
174 |
175 | public JComboBox getComboPendidikan() { |
176 | return comboPendidikan; |
177 | } |
178 |
179 | public void setComboPendidikan(JComboBox comboPendidikan) { |
180 | this .comboPendidikan = comboPendidikan; |
181 | } |
182 |
183 | public JTextField getTextNama() { |
184 | return textNama; |
185 | } |
186 |
187 | public void setTextNama(JTextField textNama) { |
188 | this .textNama = textNama; |
189 | } |
190 |
191 | public JTextField getTextPendapatan() { |
192 | return textPendapatan; |
193 | } |
194 |
195 | public void setTextPendapatan(JTextField textPendapatan) { |
196 | this .textPendapatan = textPendapatan; |
197 | } |
198 |
199 | public JTextField getTextUang() { |
200 | return textUang; |
201 | } |
202 |
203 | public void setTextUang(JTextField textUang) { |
204 | this .textUang = textUang; |
205 | } |
206 |
207 | public JTextField getTextUmur() { |
208 | return textUmur; |
209 | } |
210 |
211 | public void setTextUmur(JTextField textUmur) { |
212 | this .textUmur = textUmur; |
213 | } |
214 |
215 | private void textUmurActionPerformed(java.awt.event.ActionEvent evt) { |
216 | // TODO add your handling code here: |
217 | } |
218 |
219 | private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { |
220 | // TODO add your handling code here: |
221 | controller.activeExpert( this ); |
222 | } |
223 |
224 | // Variables declaration - do not modify |
225 | private javax.swing.JComboBox comboPendidikan; |
226 | private javax.swing.JButton jButton1; |
227 | private javax.swing.JLabel jLabel1; |
228 | private javax.swing.JLabel jLabel2; |
229 | private javax.swing.JLabel jLabel3; |
230 | private javax.swing.JLabel jLabel4; |
231 | private javax.swing.JLabel jLabel5; |
232 | private javax.swing.JLabel jLabel6; |
233 | private javax.swing.JLabel jLabel7; |
234 | private javax.swing.JLabel jLabel8; |
235 | private javax.swing.JLabel jLabel9; |
236 | private javax.swing.JTextField textNama; |
237 | private javax.swing.JTextField textPendapatan; |
238 | private javax.swing.JTextField textUang; |
239 | private javax.swing.JTextField textUmur; |
240 | // End of variables declaration |
241 |
242 | public void onCheck(ModelExpert model) { |
243 |
244 | JOptionPane.showMessageDialog( this , "Hasilnya adalah " +model.getResult()); |
245 |
246 | } |
247 |
248 | } |
nah kalo udah jadi, (plus udah jadi bikin methode accessor tiap2 inputan/getter dan setter)
nah sekaran bikin deh kelas controll misalnya namanya : ControlExpert.java
01 | /* |
02 | * To change this template, choose Tools | Templates |
03 | * and open the template in the editor. |
04 | */ |
05 | package expertsystem.hendri.karisma.controller; |
06 |
07 | import javax.swing.JOptionPane; |
08 | import expertsystem.hendri.karisma.model.ModelExpert; |
09 | import expertsystem.hendri.karisma.view.PanelExpert; |
10 |
11 | /** |
12 | * |
13 | * @author hendri |
14 | */ |
15 | public class ControlExpert { |
16 |
17 | private ModelExpert model; |
18 |
19 | public void setModel(ModelExpert model) { |
20 | this .model = model; |
21 | } |
22 |
23 | public void activeExpert(PanelExpert form) { |
24 |
25 | String nama = form.getTextNama().getText(); |
26 | String uang = form.getTextUang().getText(); |
27 | String umur = form.getTextUmur().getText(); |
28 | String pendidikan = form.getComboPendidikan().getSelectedItem().toString(); |
29 | String pendapatan = form.getTextPendapatan().getText(); |
30 | Integer uangInt; |
31 | Integer umurInt; |
32 | Integer pendapatanInt; |
33 |
34 | if (uang.equals( "" )) { |
35 | uangInt = new Integer( 0 ); |
36 | } else { |
37 | uangInt = new Integer(uang); |
38 | } |
39 |
40 | if (umur.equals( "" )) { |
41 | umurInt = new Integer( 0 ); |
42 | } else { |
43 | umurInt = new Integer(umur); |
44 | } |
45 | if (pendapatan.equals( "" )) { |
46 | pendapatanInt = new Integer( 0 ); |
47 | } else { |
48 | pendapatanInt = new Integer(pendapatan); |
49 | } |
50 |
51 | if (nama.equals( "" )) { |
52 | JOptionPane.showMessageDialog(form, "Nama tidak valid!" ); |
53 |
54 | } else { |
55 | model.setNama(nama); |
56 | model.setJumlahUang(uangInt); |
57 | model.setUmur(umurInt); |
58 | model.setTingkatPendidikan(pendidikan); |
59 | model.setPendapatan(pendapatanInt); |
60 | model.onCheck(); |
61 |
62 | } |
63 |
64 | } |
65 | } |
nama file : ListenerExpert.java
01 | /* |
02 | * To change this template, choose Tools | Templates |
03 | * and open the template in the editor. |
04 | */ |
05 |
06 | package expertsystem.hendri.karisma.listener; |
07 |
08 | import expertsystem.hendri.karisma.model.ModelExpert; |
09 |
10 | /** |
11 | * |
12 | * @author hendri |
13 | */ |
14 | public interface ListenerExpert { |
15 |
16 | public void onCheck(ModelExpert model); |
17 |
18 | } |
01 | /* |
02 | * To change this template, choose Tools | Templates |
03 | * and open the template in the editor. |
04 | */ |
05 |
06 | package expertsystem.hendri.karisma.database.service; |
07 |
08 | import javax.persistence.EntityManager; |
09 | import javax.persistence.EntityManagerFactory; |
10 | import javax.persistence.Persistence; |
11 |
12 | /** |
13 | * |
14 | * @author hendri |
15 | */ |
16 | public class Database { |
17 |
18 | private static EntityManagerFactory entityManagerFactory; |
19 | private static EntityManager entityManager; |
20 |
21 | public static EntityManagerFactory getConnection(){ |
22 |
23 | if (entityManagerFactory == null ){ |
24 | entityManagerFactory = Persistence.createEntityManagerFactory( "ExpertSystemPU" ); |
25 |
26 | } |
27 | return entityManagerFactory; |
28 | } |
29 | public static EntityManager getEntityManager(){ |
30 |
31 | if (entityManager == null ){ |
32 | entityManager = getConnection().createEntityManager(); |
33 | } |
34 |
35 | return entityManager; |
36 |
37 | } |
38 |
39 | } |
001 | /* |
002 | * To change this template, choose Tools | Templates |
003 | * and open the template in the editor. |
004 | */ |
005 | package expertsystem.hendri.karisma.model; |
006 |
007 | import java.util.List; |
008 | import javax.persistence.EntityManager; |
009 | import javax.persistence.Query; |
010 | import expertsystem.hendri.karisma.database.entitas.Data; |
011 | import expertsystem.hendri.karisma.database.entitas.Knowledge; |
012 | import expertsystem.hendri.karisma.database.service.database; |
013 | import expertsystem.hendri.karisma.listener.ListenerExpert; |
014 |
015 | /** |
016 | * |
017 | * @author hendri |
018 | */ |
019 | public class ModelExpert { |
020 |
021 | private String nama; |
022 | private int jumlahUang; |
023 | private int umur; |
024 | private String tingkatPendidikan; |
025 | private int pendapatan; |
026 | private String result; |
027 |
028 | public ListenerExpert getListener() { |
029 | return listener; |
030 | } |
031 |
032 | public void setListener(ListenerExpert listener) { |
033 | this .listener = listener; |
034 | } |
035 |
036 | public String getResult() { |
037 | return result; |
038 | } |
039 |
040 | public void setResult(String result) { |
041 | this .result = result; |
042 | } |
043 | private ListenerExpert listener; |
044 |
045 | public int getJumlahUang() { |
046 | return jumlahUang; |
047 | } |
048 |
049 | public void setJumlahUang( int jumlahUang) { |
050 | this .jumlahUang = jumlahUang; |
051 | } |
052 |
053 | public String getNama() { |
054 | return nama; |
055 | } |
056 |
057 | public void setNama(String nama) { |
058 | this .nama = nama; |
059 | } |
060 |
061 | public int getPendapatan() { |
062 | return pendapatan; |
063 | } |
064 |
065 | public void setPendapatan( int pendapatan) { |
066 | this .pendapatan = pendapatan; |
067 | } |
068 |
069 | public String getTingkatPendidikan() { |
070 | return tingkatPendidikan; |
071 | } |
072 |
073 | public void setTingkatPendidikan(String tingkatPendidikan) { |
074 | this .tingkatPendidikan = tingkatPendidikan; |
075 | } |
076 |
077 | public int getUmur() { |
078 | return umur; |
079 | } |
080 |
081 | public void setUmur( int umur) { |
082 | this .umur = umur; |
083 | } |
084 |
085 | protected void fireOnCheck() { |
086 | if (listener != null ) { |
087 | listener.onCheck( this ); |
088 | } |
089 | } |
090 |
091 | public void onCheck() { |
092 |
093 | String ans = "" ; |
094 |
095 | EntityManager manager = database.getEntityManager(); |
096 | Query query = manager.createNamedQuery( "Data.findAll" ); |
097 | List data = query.getResultList(); |
098 |
099 | Query queryKnowledge = manager.createNamedQuery( "Knowledge.findAll" ); |
100 | List know = queryKnowledge.getResultList(); |
101 |
102 | if (jumlahUang > 0 ) { |
103 | if (jumlahUang >= data.get( 0 ).getVal()) { |
104 | ans = ans + data.get( 0 ).getAbjad(); |
105 | } |
106 | } |
107 | if (umur > 0 ) { |
108 | if (umur < data.get( 1 ).getVal()) { ans = ans + data.get( 1 ).getAbjad(); } } if ((!tingkatPendidikan.equals( "" )) && tingkatPendidikan.equals(data.get( 2 ).getMean())) { ans = ans + data.get( 2 ).getAbjad(); } if (pendapatan > 0 ) { |
109 | if (pendapatan >= data.get( 3 ).getVal()) { |
110 | ans = ans + data.get( 3 ).getAbjad(); |
111 | } |
112 | } |
113 |
114 | int r1 = 0 ; |
115 |
116 | for ( int i = 0 ; i < know.size(); i++) { r1 = ans.indexOf(know.get(i).getRule().charAt( 0 )); if (know.get(i).getRule().length() >= 2 ) { |
117 | int r2 = ans.indexOf(know.get(i).getRule().charAt( 1 )); |
118 | if ((r1 > - 1 ) && (r2 > - 1 )) { |
119 |
120 | r2 = ans.indexOf(know.get(i).getResult()); |
121 |
122 | if (r2 == - 1 ) { |
123 | ans = ans + know.get(i).getResult(); |
124 | i = - 1 ; |
125 |
126 | } |
127 | } |
128 | } else { |
129 | if (r1 > - 1 ) { |
130 | r1 = ans.indexOf(know.get(i).getResult()); |
131 |
132 | if (r1 <= - 1 ) { |
133 | ans = ans + know.get(i).getResult(); |
134 | i = - 1 ; |
135 |
136 | } |
137 | } |
138 | } |
139 |
140 | } |
141 |
142 | for ( int i = 0 ; i < data.size(); i++) { |
143 | r1 = ans.indexOf(data.get(i).getAbjad()); |
144 | if (r1 != - 1 ) { |
145 | setResult(data.get(i).getMean() + " dengan urutan " + ans); |
146 | } |
147 | } |
148 | fireOnCheck(); |
149 |
150 | } |
151 | } |
misal : FormExpert.java
trs tinggal drag semua komponen yang ada di class PanelExpert.java (class View nya) ke JDialog yg kita buat misal yang saya FormExpert.java , nanti codenya jd seperti ini :
01 | /* |
02 | * To change this template, choose Tools | Templates |
03 | * and open the template in the editor. |
04 | */ |
05 |
06 | /* |
07 | * FormExpert.java |
08 | * |
09 | * Created on Nov 14, 2010, 1:57:56 PM |
10 | */ |
11 |
12 | package expertsystem.hendri.karisma.view; |
13 |
14 | /** |
15 | * |
16 | * @author hendri |
17 | */ |
18 | public class FormExpert extends javax.swing.JDialog { |
19 |
20 | /** Creates new form FormExpert */ |
21 | public FormExpert(java.awt.Frame parent, boolean modal) { |
22 | super(parent, modal); |
23 | initComponents(); |
24 | } |
25 |
26 | /** This method is called from within the constructor to |
27 | * initialize the form. |
28 | * WARNING: Do NOT modify this code. The content of this method is |
29 | * always regenerated by the Form Editor. |
30 | */ |
31 | @SuppressWarnings("unchecked") |
32 | // |
33 | private void initComponents() { |
34 |
35 | panelExpert1 = new expertsystem.hendri.karisma.view.PanelExpert(); |
36 |
37 | setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); |
38 |
39 | javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); |
40 | getContentPane().setLayout(layout); |
41 | layout.setHorizontalGroup( |
42 | layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
43 | .addGroup(layout.createSequentialGroup() |
44 | .addComponent(panelExpert1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
45 | .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
46 | ); |
47 | layout.setVerticalGroup( |
48 | layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |
49 | .addGroup(layout.createSequentialGroup() |
50 | .addContainerGap() |
51 | .addComponent(panelExpert1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) |
52 | .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) |
53 | ); |
54 |
55 | pack(); |
56 | }// |
57 |
58 | /** |
59 | * @param args the command line arguments |
60 | */ |
61 | public static void main(String args[]) { |
62 | java.awt.EventQueue.invokeLater( new Runnable() { |
63 | public void run() { |
64 | FormExpert dialog = new FormExpert( new javax.swing.JFrame(), true ); |
65 | dialog.addWindowListener( new java.awt.event.WindowAdapter() { |
66 | public void windowClosing(java.awt.event.WindowEvent e) { |
67 | System.exit( 0 ); |
68 | } |
69 | }); |
70 | dialog.setVisible( true ); |
71 | } |
72 | }); |
73 | } |
74 |
75 | // Variables declaration - do not modify |
76 | private systemexpert.hendri.karisma.view.PanelExpert panelExpert1; |
77 | // End of variables declaration |
78 |
79 | } |
jangan lupa menghubungkan setiap kelasnya agar bisa saling berkomunikasi .. seperti pada source code yang sudah saya masukan hehhe..
kira2 hasilnya nanti jadi kaya gini :
dan klo dipencet tombolnya “Tentukan Investasi yang Cocok” maka :
sekian.. mohon maaf belum bisa menjelaskan dengan detail dan dengan baik.. karena pertama saya masih belajar menulis artikel yang baik dan benar juga indah, dan kedua nulis artikelnya buru2…
lain kali saya perbaiki dan menambah beberapa bagian yang dirasa perlu dan kurang.. /
semoga tulisan yang ribet , gag jelas ini dapat membantu dan bermanfaat