41
} catch SQLException exception { conn.rollback;
throw exception; }
}
2. Button Batal
Merupakan sebuah tombol yang akan mengembalikan semua text field dalam sistem simulasi menjadi bersih kembali
sehingga tidak harus menghapusnya satu persatu. 3.
Button Keluar Merupakan sebuah tombol yang fungsinya adalah untuk
menutup sistem.
4.2.2 Software User
Berikut adalah fungsi-fungsi dan tahap-tahap peramalan pada
software user :
1. Button Prediksi
Merupakan sebuah tombol untuk melakukan prediksi. Berbeda dengan software tester, software user akan langsung
menghitung keempat mode peramalan sekaligus. Keempat mode peramalan yang dihitung akan dicari MAPE terkecil dan
MAPE terkecil itulah yang akan dikeluarkan sebagai hasil peramalan. Langkah fungsi buttonPrediksi dalam melakukan
prediksi peramalan adalah sebagai berikut : a.
Mencari data penjualan dalam database untuk diproses
public void cariDataUserClass usr throws SQLException {
PreparedStatement statement = null; ResultSet result = null;
String p = ; try {
conn.setAutoCommitfalse;
42
String sql = Select jumlah from penjualanAinun where
+ kodePenjualan=?; statement
= conn.prepareStatementsql;
statement.setString1, usr.getKodePjualan;
result = statement.executeQuery; if result.next {
p = result.getStringjumlah; Double
pr =
Double.parseDoublep; usr.setPjualanpr;
} conn.commit;
} catch SQLException exception { conn.rollback;
throw exception; }
}
b. Melakukan peramalan
public void
hitungMAUserClass sm
throws SQLException {
int[] windowSizes = {3}; double[] data = new double[24];
for int i = 0; i 24; i++ { if sm.getBulan 10 {
sm.setBlnStr0 +
sm.getBulan; } else {
String bln
= String.valueOfsm.getBulan;
43
sm.setBlnStrbln; }
UserDB.getKoneksi.cariDatasm; sm.setBulansm.getBulan + 1;
if sm.getBulan == 13 { sm.setBulan1;
sm.setTahunsm.getTahun + 1; }
data[i] = sm.getPjualan; }
int i = 1; for int windSize : windowSizes {
MA ma = new MAwindSize; for double x : data {
if x = 0 { sm.setNoi;
ma.newNumx; sm.setDatax;
double p = ma.getAvg; sm.setPrediksip;
UserDB.getKoneksi.catatPrediksm; }
i++; }
} }
c. Menghitung dengan algoritma moving average
package testerPack; import java.util.LinkedList;
import java.util.Queue;
44
public class MA { private final QueueDouble window = new
LinkedListDouble; private final int period;
private double sum; public MAint period {
assert period 0 : Period must be a positive integer;
this.period = period; }
public void newNumdouble num { sum += num;
window.addnum; if window.size period {
sum -= window.remove; }
} public double getAvg {
if window.isEmpty { return
0; technically
the average is undefined
} return sum window.size;
} }
d. Memasukkan hasil prediksi kedalam table bantu
public void catatPredikUserClass usr throws SQLException {
PreparedStatement pstmt = null;
45
try { conn.setAutoCommitfalse;
String sql = update barangPredik set penjualan=? ,prediksi=?
+ where no=?; pstmt = conn.prepareStatementsql;
pstmt.setDouble3, usr.getNo; pstmt.setDouble2,
usr.getPrediksi; pstmt.setDouble1, usr.getData;
pstmt.executeUpdate; conn.commit;
} catch SQLException exception { conn.rollback;
throw exception; } finally {
try { conn.setAutoCommittrue;
if pstmt = null { pstmt.close;
} } catch SQLException exception {
throw exception; }
} }
e. Mencari prediksi
public void cariPredik1UserClass usr throws SQLException {
PreparedStatement statement = null; ResultSet result = null;
String p = ;
46
try { conn.setAutoCommitfalse;
String sql = Select prediksi from barangPredik where
+ no=?; statement
= conn.prepareStatementsql;
statement.setInt1, usr.getNo1 + 14;
result = statement.executeQuery; if result.next {
p =
result.getStringprediksi; Double
pr =
Double.parseDoublep; usr.setPrediksipr;
} conn.commit;
} catch SQLException exception { conn.rollback;
throw exception; }
} public
void cariPredik2UserClass
usr throws SQLException {
PreparedStatement statement = null; ResultSet result = null;
String p = ; try {
conn.setAutoCommitfalse; String sql = Select prediksi from
47
barangPredik where + no=?;
statement =
conn.prepareStatementsql; statement.setInt1, usr.getNo1 +
13; result = statement.executeQuery;
if result.next { p
= result.getStringprediksi;
Double pr
= Double.parseDoublep;
usr.setPrediksipr; }
conn.commit; } catch SQLException exception {
conn.rollback; throw exception;
} }
public void
cariPredik3UserClass usr
throws SQLException { PreparedStatement statement = null;
ResultSet result = null; String p = ;
try { conn.setAutoCommitfalse;
String sql = Select prediksi from barangPredik where
+ no=?; statement
=
48
conn.prepareStatementsql; statement.setInt1,
usr.getNo1+12; result = statement.executeQuery;
if result.next { p
= result.getStringprediksi;
Double pr
= Double.parseDoublep;
usr.setPrediksipr; }
conn.commit; } catch SQLException exception {
conn.rollback; throw exception;
} }
f. Mencari MAPE dan menampilkan hasil
public void mapeNormalUserClass sm throws SQLException {
int setno = sm.getNo - 6; int jum = 0;
sm.setNosetno; sm.setMAPE0;
sm.setMAPE10; sm.setJum0;
for int j = 0; j 6; j++ { UserDB.getKoneksi.cariSelisihsm;
int no = sm.getNo + 1; sm.setNono;
int mape = sm.getMAPE;
49
jum = jum + mape; }
public void mapeVar1UserClass sm throws SQLException {
UserDB.getKoneksi.cariPredik1sm; int setno = sm.getNo1 + 18;
int jum = 0; sm.setNosetno;
sm.setMAPE0; for int j = 0; j 6; j++ {
UserDB.getKoneksi.cariSelisih1sm; int no = sm.getNo + 1;
sm.setNono; int mape = sm.getMAPE;
jum = jum + mape; }
int mapes = jum 6; if mapes sm.getMAPE1 {
sm.setJumsm.getPrediksi; sm.setMAPE1mapes;
} }
public void mapeVar2UserClass sm throws SQLException {
UserDB.getKoneksi.cariPredik2sm; int setno = sm.getNo1 + 18;
int jum = 0; sm.setNosetno;
sm.setMAPE0; for int j = 0; j 6; j++ {
50
UserDB.getKoneksi.cariSelisih2sm; int no = sm.getNo + 1;
sm.setNono; int mape = sm.getMAPE;
jum = jum + mape; }
int mapes = jum 6; if mapes sm.getMAPE1 {
sm.setJumsm.getPrediksi; sm.setMAPE1mapes;
} }
public void mapeVar3UserClass sm throws SQLException {
UserDB.getKoneksi.cariPredik3sm; int setno = sm.getNo1 + 18;
int jum = 0; sm.setNosetno;
sm.setMAPE0; for int j = 0; j 6; j++ {
UserDB.getKoneksi.cariSelisih3sm; int no = sm.getNo + 1;
sm.setNono; int mape = sm.getMAPE;
jum = jum + mape; }
int mapes = jum 6; if mapes sm.getMAPE1 {
sm.setJumsm.getPrediksi; sm.setMAPE1mapes;
} int stok = int sm.getJum;
51
sm.setHasilRekomendasi pengadaan stok untuk \nbarang
+sm.getNamaBrg+\npada bulan
+ sm.getNamaBulan + tahun + sm.getTahun +
adalah +stok; }
g. Mencari selisih error
public void cariSelisihUserClass usr throws SQLException {
PreparedStatement statement = null; ResultSet result = null;
int p = 0; try {
conn.setAutoCommitfalse; String sql = select ABSselect
penjualan from barangpredik +
where no=?-select
prediksi from +
barangpredik where
no=?select penjualan + from barangpredik where
no=?100 as MAPE from dual; statement
= conn.prepareStatementsql;
statement.setInt1, usr.getNo + 1;
statement.setInt2, usr.getNo; statement.setInt3, usr.getNo +
1; result = statement.executeQuery;
52
if result.next { p = result.getIntmape;
usr.setMAPEp; }
conn.commit; } catch SQLException exception {
conn.rollback; throw exception;
} }
public void cariSelisih1UserClass usr throws SQLException {
PreparedStatement statement = null; ResultSet result = null;
int p = 0; try {
conn.setAutoCommitfalse; String sql = select ABSselect
penjualan from barangpredik +
where no=?-select
prediksi from +
barangpredik where
no=?select penjualan + from barangpredik where
no=?100 as MAPE from dual; statement
= conn.prepareStatementsql;
statement.setInt1, usr.getNo; statement.setInt2, usr.getNo -
10; statement.setInt3, usr.getNo;
result = statement.executeQuery;
53
if result.next { p = result.getIntmape;
usr.setMAPEp; }
conn.commit; } catch SQLException exception {
conn.rollback; throw exception;
} }
public void cariSelisih2UserClass usr throws SQLException {
PreparedStatement statement = null; ResultSet result = null;
int p = 0; try {
conn.setAutoCommitfalse; String sql = select ABSselect
penjualan from barangpredik +
where no=?-select
prediksi from +
barangpredik where
no=?select penjualan + from barangpredik where
no=?100 as MAPE from dual; statement
= conn.prepareStatementsql;
statement.setInt1, usr.getNo; statement.setInt2, usr.getNo -
11; statement.setInt3, usr.getNo;
54
result = statement.executeQuery; if result.next {
p = result.getIntmape; usr.setMAPEp;
} conn.commit;
} catch SQLException exception { conn.rollback;
throw exception; }
} public void cariSelisih3UserClass usr
throws SQLException { PreparedStatement statement = null;
ResultSet result = null; int p = 0;
try { conn.setAutoCommitfalse;
String sql = select ABSselect penjualan from barangpredik
+ where
no=?-select prediksi from
+ barangpredik
where no=?select penjualan
+ from barangpredik where no=?100 as MAPE from dual;
statement =
conn.prepareStatementsql; statement.setInt1, usr.getNo;
statement.setInt2, usr.getNo - 12;
55
statement.setInt3, usr.getNo; result = statement.executeQuery;
if result.next { p = result.getIntmape;
usr.setMAPEp; }
conn.commit; } catch SQLException exception {
conn.rollback; throw exception;
} }
2. Button Batal
Merupakan sebuah tombol yang akan mengembalikan semua text field dalam sistem simulasi menjadi bersih kembali
sehingga tidak harus menghapusnya satu persatu. 3.
Button Keluar Merupakan sebuah tombol yang fungsinya adalah untuk
menutup sistem. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
4.3 Manajemen Dialog