Software User Manajemen Model

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