Diagram Sequence Diagram Kelas Desain Rincian Algoritma Setiap Method Pada Tiap Kelas

13 HalamanPilihTabel Boundary Kelas ini berisi tampilan untuk memilih tabel basisdata yang akan digunakan untuk proses deteksi outlier. 14 HalamanTentang Boundary Kelas ini berisi tampilan informasi tentang sistem. 15 HalamaUtama Boundary Kelas ini berisi tentang tampilan halaman utama dari sistem yang terdiri dari proses input data, seleksi tabel, dan deteksi outlier.

4.3.3 Diagram Sequence

Diagram Sequence digunakan untuk menggambarkan perilaku pada setiap skenario dan digunakan untuk memberikan gambaran detail dari setiap diagram use case. 1. Diagram Sequence Input Data dari File .xls atau .csv. 2. Diagram Sequence Input Data dari Tabel Basisdata. 3. Diagram Sequence Deteksi Outlier. 4. Diagram Sequence Simpan Hasil Deteksi Outlier. 5. Diagram Sequence Seleksi Atribut. Untuk penjelasan rinci dari masing-masing diagram sequence dapat dilihat pada lampiran 7.

4.3.4 Diagram Kelas Desain

Diagram kelas desain adalah diagram yang berisi kelas yang akan digunakan untuk pembuatan sistem. Diagram Kelas Desain memuat semua kelas untuk menjalankan semua fungsi pada sistem dapat dilihat pada lampiran 8. Untuk rincian atribut dan method untuk masing-masing diagram kelas dapat dilihat pada lampiran 9.

4.3.5 Rincian Algoritma Setiap Method Pada Tiap Kelas

1. Rincian

Algoritma pada Method di Kelas DatabaseController. Nama Method Fungsi Method Algoritma Method tampilTabelOracleCo nnection conn Menampilkan seluruh daftar tabel yang ada di database Oracle. 1. Membuat kueri untuk menampilkan daftar tabel dari basisdata Oracle dengan sintaks: select table_name from user_tables user_tables. 2. Mengeksekusi kueri. 3. Mengembalikan nilai rset yang berisi daftar tabel yang ada pada basisdata Oracle. tampilTabelMYSql Connection conn Menampilkan seluruh dartar tabel yang ada di database mySQL. 1. Membuat kueri untuk menampilkan daftar tabel dari basisdata MySQL dengan sintaks: show tables. 2. Mengeksekusi kueri. 3. Mengembalikan nilai rset yang berisi daftar tabel yang ada pada basisdata mySQL. selectTableConnectio n conn, String namaTable Menampilkan isi tabel berdasarkan tabel yang dipilih. 1. Membuat kueri untuk menampilkan daftar tabel dari basisdata MySQL dengan sintaks: select from + namaTable. 2. Mengeksekusi kueri. 3. Mengembalikan nilai rset yang berisi daftar tabel yang sesuai dengan parameter “namaTable” pada kueri.

2. Rincian Algoritma pada Method di Kelas KoneksiDatabase.

Nama Method Fungsi Method Algoritma Method KoneksiDataBaseSQL String url, String user, String password Melakukan koneksi ke Database MySQL. 1. Membuat koneksi basis data SQL ke dalam method connection = DriverManager.getConnectionurl, user, password. Parameter tersebut dicocokkan dengan nilai dari inputan pengguna pada login ke dalam database. 2. Jika inputan benar maka kan muncul pesan Koneksi Berhasil”. 3. JIka tidak maka akan muncul pesan error. 4. Mengembalikan connection. KoneksiDataBaseOrac leString url, String user, String password Melakukan koneksi ke Database Oracle 1. Membuat koneksi basis data Oracle ke dalam method connection = DriverManager.getConnectionurl, user, password. Parameter tersebut dicocokkan dengan nilai dari inputan pengguna pada login ke dalam database. 2. Jika inputan benar maka kan muncul pesan Koneksi Berhasil”. 3. JIka tidak maka akan muncul pesan error. 4. Mengembalikan connection. OracleConnectedStri ng url, String username, String password Mengecek apakah sistem sudah terhubung dengan 1. Jika parameter pada method KoneksiDataBaseOracleString url, String user, String password terisi database Oracle atau belum. maka akan mengembalikan nilai true. 2. Jika tidak, maka akan mengembalikan nilai false. SQLConnectedString url, String username, String password Mengecek apakah sistem sudah terhubung dengan database MySQL atau belum. 1. Jika parameter pada method KoneksiDataBaseSQLString url, String user, String password terisi maka akan mengembalikan nilai true. 2. Jika tidak, maka akan mengembalikan nilai false. getClosed Memutuskan koneksi basis data. 1. Mengecek apakah sistem masih terhubung ke database, maka akan memanggil method Connected. 2. Jika ya maka tutup koneksi dan mengembalikan nilai true. 3. Jika tidak maka mengembalikan nilai false.

3. Rincian Algrotima pada Method di Kelas Graph.

Nama Method Fungsi Method Algoritma Method addVertexString label, ListDouble nilai Membuat vertex untuk membentuk graph. 1. Membaca parameter berupa label dan list nilai. 2. Membuat vertex baru dengan label dan nilai yang diinputkan melalui parameter. addEdgeint awal, int akhir, Double nilai Mengisi nilai edge pada vertex. 1. Membaca parameter berupa awal, akhir, dan nilai. 2. Mengisi nilai jarak kedalam edge[awal][akhir] dan edge[akhir][awal]. inputDataJTable jTableData Menginputkan data dari Jtable ke dalam matrix dalam graph. 1. Selama i = 0 dan i tidak lebih dari jumlah baris dalam jTable maka lakukan langkah dibawah ini maka membuat variable label bertipe String dan listNilai yang bertipe arrayList Double. 2. Selama j = 0 dan j tidak lebih dari jumlah baris dalam jTable. Jika j = 0 maka set label = data yang ada dalam baris dan kolom tabel tersebut. 3. Selama j = 0 maka cek data tersebut merupakan data numerik, jika ya maka masukkan data pada baris i, j, dan jika tidak maka masukkan nilai 0.0 ke dalam arrayList nilai. 4. Memanggil nilai addVertex dengan inputan label dan list Nilai. 5. Selama i = 0 dan i tidak lebih dari jumlah baris pada jTable, selama j = i + 1 dan j tidak lebih dari jumlah baris dari jTable, dan jika i tidak sama dengan j maka panggil method addEdge dan memasukkan inputan j dan j kemudian menghitung jarak berdasarkan rumus Ecludiian Distance dengan memanggil method cariJarakEcludian. cariJarakEcludian int indexAwal, int indexTujuan Menghitung jarak dengan rumus Euclidean Distance. 1. Membaca nilai parameter input method yaitu nilai awal dan nilai akhir. 2. Membuat dua buah list yaitu a dan b. a merupakan vertexList indexAwal dan b merupakan vertexList indexAkhir. 3. Mengisi vertexList[awal].getNilai da vertexList[akhir].getNilai. 4. Selama i a.size maka lakukan perhitungan total = total + Math.powa.geti - b.geti, 2; 5. Mengembalikan Math.sqrttotal. tampilJarakEuclidean Untuk menampilkan perhitungan jarak dengan menggunakan rumus Euclidean Distance. 1. Jika i = 0 dan I kurang dari jumlah baris vertexList maka akan menampilkan vertexList[i] dengan memanggil method getLabel. 2. Jika i = 0 dan i kurang dari jumlah baris adjMat maka akan menampilkan vertexList[i] dengan memanggil method getLabel. 3. Jika j = 0 dan j kurang dari jumlah baris vertexList maka akan menampilkan adjMat[i][j]. cariRNeighborhoodD ouble radius, int indeks Untuk mencari RNeighborhood. 1. Membuat ArrayList dengan nama a. 2. Selama i = 0 dan i kurang dari jumlah baris vertexList, cek apakah adjMat[indeks][i] = -1, dan adjMat[indeks][i] = 0, lalu cek apakah adjMat[indeks[i] kurang dari sama dengan radius. Jika ya maka tambahkan vertexList[i] ke dalam array a. 3. Mengembalikan a. cariAnggotaRNeighbo rint indeks, Double radius Untuk mencari anggota RNeighbor. 1. Set semua wasVisited dari semua obyek vertex menjadi false. 2. Membuat variabel AnggotaRNeighbor bertipe Double, temp1 bertipe Double, dan anggotaNpir yang bertipe int. 3. Selama i = 0 dan i tidak lebih dari jumlah baris vertexList, dan adjMAt[indeks][i] = -1 dan wasVisited == false, jika ya maka cek apakah adjMat[indeks][i] kurang dari sama dengan radius, jika ya maka set adjMat[indeks][i] ke dalam variabel temp1. 4. Memanggil variabel anggotaNpir untuk menampung npir[i]. 5. Set AnggotaRNeighbor = temp1. 6. Kemudian ubah wasVisited dari arrayList menjadi true dengan memanggil method Search2 dengan inputan temp1, indeks. 7. Mengembalikan AnggotaRNeighbor. setAnggotaRNeighbor String label, Double radius Untuk mengeset anggotaRNeighbor ke dalam vertex. 1. Membuat variabel indeks dengan memanggil method Search dengan parameter label. 2. Memanggil method setrNeighbors pada vertexList[indeks] dengan inputan hasil dari cariRNeighborhood dengan inputan vertexList[indeks].getAnggotaRNei ghbor, index. setRNeighborhoodStr ing label Untuk mengeset variable RNeighborhood ke dalam vertex. 1. Membuat variabel indeks dengan memanggil method Seacrh dengan parameter label. 2. Memanggil method setAnggotaRNeighbors pada vertexList[indeks] dengan inputan hasil dari cariAnggotaRNeighborhood dengan parameter indeks dan radius. setNpir Untuk mengeset npir. 1. Membuat variabel x. 2. Selama i = 0 dan i tidak lebih dari jumlah baris adjMat, jika j = 0 dan j tidak lebih dari jumlah barus vertexList, maka akan di cek apakah adjmat[i][j] tidak kurang dari sama dengan radius, jika ya maka x = x + 1. Mengeset rneighbors[i][j] = j. 3. Mengeset npir[i] = x; 4. Mengesey nilai x = 0; tampilRNeighbor Untuk menampilkan anggota npir dan npi, r 1. Membuat variabel rn. 2. Selama i = 0 dan i tidak lebih dari jumlah barus adjMat, dan jika j = 0 dan j tidak lebih dari jumlah baris j, cek apakah adjMat[i][j] tidak lebih dari sama dengan radius, jika ya maka rn = rn + 1 dan menampilkan anggota npir dengan memanggil adjMat[i][j]. 3. Menampilkan npi,r dengan memanggil atribut rn. 4. Mengeset niali rn = 0; cariARNeighborhood Double radius, int indeks Untuk mencari anggota ARneighbor. 1. Membuat ArrayList dengan nama a. 2. Selama i = 0 dan i kurang dari jumlah baris vertexList, cek apakah adjMat[indeks][i] = -1, dan adjMat[indeks][i] = 0, lalu cek apakah adjMat[indeks[i] kurang dari sama dengan alpha radius. Jika ya maka tambahkan vertexList[i] ke dalam array a. 3. Mengembalikan a. cariAnggotaARNeigh borint indeks, Double radius Untuk mencari anggota ARneighbor. 1. Set semua wasVisited dari semua obyek vertex menjadi false. 2. Membuat variabel AnggotaARNeighbor bertipe Double, temp2 bertipe Double, dan anggotaNpar yang bertipe int. 3. Selama i = 0 dan i tidak lebih dari jumlah baris vertexList, dan adjMAt[indeks][i] = -1 dan wasVisited == false, jika ya maka cek apakah adjMat[indeks][i] kurang dari sama dengan alpha radius, jika ya maka set adjMat[indeks][i] ke dalam variabel temp2. 4. Memanggil variabel anggotaNpar untuk menampung npar[i]. 5. Set AnggotaARNeighbor = temp2. 6. Kemudian ubah wasVisited dari arrayList menjadi true dengan memanggil method Search2 dengan inputan temp2, indeks. 7. Mengembalikan AnggotaARNeighbor. setAnggotaARNeighb orString label, Double radius Untuk mengeset anggotaARNeighbor ke dalam vertex. 1. Membuat variabel indeks dengan memanggil method Seacrh dengan parameter label. 2. Memanggil method setrNeighbors pada vertexList[indeks] dengan inputan hasil dari cariARNeighborhood dengan inputan vertexList[indeks].getAnggotaAR Neighbor, index. setARNeighborhood String label Untuk mengeset variable ARNeighborhood ke dalam vertex. 1. Membuat variabel indeks dengan memanggil method Search dengan parameter label. 2. Memanggil method setAnggotaARNeighbors pada vertexList[indeks] dengan inputan hasil dari cariAnggotaARNeighborhood dengan parameter indeks dan radius. setNpar Untuk mengeset npar. 1. Membuat variabel x. 2. Selama i = 0 dan i tidak lebih dari jumlah baris adjMat, jika j = 0 dan j tidak lebih dari jumlah barus vertexList, maka akan di cek apakah adjmat[i][j] tidak kurang dari sama dengan alpha radius jika ya maka x = x + 1. Mengeset arneighbors[i][j] = j. 3. Mengeset npar[i] = x; 4. Mengesey nilai x = 0; tampilARNeighbor Untuk menampilkan anggota npar dan npa, r 1. Membuat variabel arn. 2. Selama i = 0 dan i tidak lebih dari jumlah barus adjMat, dan jika j = 0 dan j tidak lebih dari jumlah baris j, cek apakah adjMat[i][j] tidak lebih dari sama dengan radius, jika ya maka arn = arn + 1 dan menampilkan anggota npar dengan memanggil adjMat[i][j]. 3. Menampilkan npa,r dengan memanggil atribut arn. 4. Mengeset niali arn = 0; setJumlahAnggota Untuk mengeset jumlah anggota. 1. Membuat variabel x dan y dengan tipe int. 2. Selama i = 0 dan i kurang dari jumlah baris adjMat, dan selama j = 0 dan j kurang dari jumlah baris vertexList, jika ya maka cek apakah adjMat[i][j] kurang dari sama dengan radius, jika ya x = x + 1 dan set rneighbors[i][j] = j. 3. Jika tidak set rneighbors[i][j] = max. 4. Cek apakah adjmat[i][j] kurang dari sama dengan alpha radius, jika ya maka y = y + 1 dan set arneighbors[i][j] = j. 5. Set npir[i] = x. 6. Set npar[i] = y. 7. Set nilai x = 0. 8. Set nilai y = 0. cariLoci Untuk mencari outlier. 1. Membuat variabel jml_npar, jml_npar2, avgNpira, stdevNpira, mdef, omdef, komdef dengan tipe Double. 2. Memanggil method setJumlahAnggota. 3. Mengecek apakah rneighbor[i][j] tidak sama dengan max. jika ya maka jml_npar = jml_npar + npar[j]. npar[j] digunakan untuk menyimpan nilai rneighbors yang kurang dari max. 4. Menghitung rata-rata npar dengan rumus avgNpira = jml_npar npir[i]. 5. Menampilkan avgNpira dengan memanggil hasil perhitungan avgNpira. 6. Mengecek apakah rneighbor[i][j] tidak sama dengan max. jika ya maka ekseksui rumus jml_npar2 = jml_npar2 + Math.pownpar[j] - avgNpira, 2. 7. Menghitung standar deviasi npira dengan memanggil rumus stdevNpira = Math.sqrtjml_npar2 npir[i]. 8. Menampilkan stdevNpira dengan memanggil hasil perhitungan stdevNpira. 9. Menghitung nilai mdef dengan rumus mdef = 1 - npar[i] avgNpira. 10. Menampilkan nilai mdef dengan memanggil hasil perhitungan mdef. 11. Mengeset mdef kedalam vertexList[i] dengan memanggil method setMdef. 12. Menghitung omdef dengan rumus omdef = stdevNpira avgNpira. 13. Menampilkan nilai omdef dengan memanggil hasil perhitungan omdef. 14. Mengeset omdef kedalam vertexList[i] dengan memanggil method setOmdef. 15. Menghitung komdef dengan rumus komdef = konstanta omdef. 16. Menampilkan nilai komdef dengan memanggil hasil perhitungan komdef. 17. Mengeset komdef kedalam vertexList[i] dengan memanggil method setKomdef. 18. Jika nilai mdef lebih besar dari komdef maka akan dianggap sebagai outlier, jika tidak maka bukan outlier. 19. Mengeset jml_npar = 0.0; 20. Mengeset jml_npar2 = 0.0; 21. Mengeset nilai mdef = 0.0. 22. Mengeset nilai omdef = 0.0. 23. Mengeset nilai komdef = 0.0. setDataLociString label Untuk mengeset tabel HasilDeteksiOutlier 1. Membuat ArrayList dengan nama dlc yang bertipe ListDataLoci. agar hasil deteksi outlier dapat di tampilkan ke dalam tabel. 2. Membuat atribut dl dengan tipe DataLoci. 3. Mengecek apakah nilai Mdef lebih besar dari nilai Komdef dengan cara memanggil method getMdef dan getKomdef. 4. Jika ya, membuat obyek baru dengan nama dl untuk mengeset label, mdef, dan komdef dengan memanggil method getLabel, getMdef, dan getKomdef. 5. Menambahkan obyek dl kedalam ListDataLoci. 6. Membuat obyek dari LociTabelModel dengan nama ltm. 7. Mengembalikan ltm.

4. Rincian

Algrotima pada Method di Kelas CheckBoxTableModel. Nama Method Fungsi Method Algoritma Method addint a, SeleksiAtribut field_m Menambah data ke dalam CheckBoxTableMode. 1. Membaca parameter a dan field_m. 2. Menambahkan nilai field_m sebagai data di index ke-a ke dalam list. removeRow Menghapus atribut yang di hapus dari tabel seleksi atribut. 1. Membuat ArrayList bertipe SeleksiAtribut dengan nama sa. 2. Selama select kurang dari list maka di cek apakah atribut tersebut telah dipilih. Jika ya maka nilai select ditambahkan pada ArrayList sa. 3. Mengeset list = sa.

5. Rincian Algrotima pada Method di Kelas HalamanUtama.

Nama Method Fungsi Method Algoritma Method pilihFile Untuk memilih file bertipe .xls atau .csv. 1. Menampilkan kotak dialog Open File. 2. namaFile menangkap nama file terpilih. 3. Cut_namaFile = namaFile.split\\. 4. Jika cut_namafile adalah .xls maka jalankan langkah pada tabel pilih .xls 5. Jika cut_namafile adalah .csv maka jalankan langkah pada tabel pilih .csv 6. Jika buka .xls dan .csv maka menampilkan pesan peringatan. pilihDataBaseKoneks iDataBase kdb, String table Untuk memasukkan data dari tabel basisdata. 1. Mengambil isi tabel dari basis data melalui method selectTable kdb.getConnection, table. 2. Membuat vector baru columnName dan data. 3. Selama i = 1, dan i kurang dari sama dengan columnCount maka columnName diisi dengan nama kolom ke i yang didapat dari basisdata melalui method getColumnName. 4. Selama rset.next benar maka buat vector data2 diisi dengan baris di kolom ke i. 5. Tambahkan data2 ke dalam data. 6. Selama i = 1 dan i kurang dari sama dengan columnCount maka data2 diisi dengan data pada setiap baris di kolom ke i. 7. Tambahkan data2 ke dalam data. 8. Selama i = 0 dan i kurang dari model.getColumnCount, membuat obyek seleksiAtribut kemudian memanggil method setAtribut untuk memanggil columnName. 9. Memanggil setPilihfalse. 10. Menambahkan seleksiAtribut kedalam cexboxtable. 11. Atur tabel dataPreprocessTable. hapusAtribut Menghapus atribut tabel data sesuai atribut yang dipilih pengguna. 1. Selama i = 0 dan i kurang dari jumlah baris seleksiTable. 2. Jika seleksiTable.getValueAti, 1.equalstrue maka cek apakah nilai ke i dari seleksiTable berisi nama kolom pada dataPreprocessTable. 3. Membuat variabel tcol1 dengan inisialisasi nilai dataPreprocessTable.getColumnM odel.getColumnj. 4. Membuat variabel tcol 2 dengan inisialisasi nilai dataOutlierTable.getColumnMode l.getColumnj. 5. Hapus kolom pada dataPreprocessTable. 6. Hapus kolom pada dataOutlierTable. 7. Hapus baris pada cekboxtable. submitData Memasukkan data pada tabel data pada tab Preprocessing dan tab Deteksi Outlier. 1. Membuat varaibel tableModel dengan mengambil model dari tabel dataPreprocessTable. 2. Mengeset dataOutlierTable dengan tablemodel. 3. Mengeset dataOutlierTable.setAutoCreateR owSortertrue. 4. Menampilkan tabel pada tabel Deteksi pada tabbed pane Deteksi Outlier dengan jTabbedPane1.setSelectedCompo nentdeteksiPanel dan jTabbedPane1.setEnabledAt1, true; prosesDeteksi Menerima input radius dan alpha untuk proses deteksi outlier. 1. Jika nilai radius kosong akan menampilkan pesan “Nilai radius tidak boleh kosong ”, lakukan pengisian ulang parameter tersebut. 2. Jika nilai alpha kosong akan menampilkan pesan “Nilai alpha tidak boleh kosong ”, lakukan pengisian ulang parameter tersebut. 3. Jika nilai konstanta kosong akan menampilkan pesan “Nilai konstanta tidak boleh kosong ”, lakukan pengisian ulang parameter tersebut. 4. Membuat variabel t1 bertipe long. 5. Jika nilai radius, alpha, dan konstanta terisi, maka cek apakah nilai radius lebih besar dari 0, nilai alpha lebih besar dari 0, nilai alpha kurang dari sama dengan 1, dan nilai konstanta bilangan bulat positif lebih besar dari 0. 6. Jika tidak akan menampilkan pesan “Nilai radius harus bilangan real + \n + nilai alpha antara 0- 1 + \n + dan nilai konstanta harus bilangan bulat positif 0. 7. Jika ya buat obyek baru dengan nama graph dan memanggil jumlah baris pada dataOutlierTable. 8. Mengeset radius. 9. Mengeset alpha. 10. Mengeset konstanta. 11. Memanggil method inputData ke dalam dataOutlierTable. 12. Memanggil method tampilJarakEuclidean. 13. Memanggil method tampilRNeighbor. 14. Memanggil method tampilARNeighbor. 15. Memanggil method cariLoci. 16. Mengeset HasilOutlierTable dengan mengeset model untuk setDataLocidataOutlierTable.get ColumnName0. 17. Membuat variabel t2 bertipe long. 18. Menghitung waktu proses deteksi dengan rumus t2 - t1 java.lang.Math.pow10, -9 dan menampilkan pada lamaDeteksiTextField. simpanLoci Untuk menyimpan hasil deteksi outlier ke dalam file .xls, .doc, atau .txt. 1. Membuat obyek fileChooser. 2. Membaca lokasi penyimpanan file dan disimpan dalam variabel filename. 3. Membaca format file yang dipilih pengguna dengan fileChooser.getFileFilter.getDes cription kemudian ditampung dalam variabel ext. 4. Jika ext = Microsoft Excel .xls maka format yang dipilih adalah .xls. 5. Membuat variabel model dengan memanggil model pada HasilOutlierTable. 6. Membuat obyek excel yang bertipe FileWriter. 7. Jika i = 0 dan i kurang dari jumlah kolom, maka memanggil method write yang berisi model.getColumnNamei. 8. Jika i = 0 dan i kurang dari jumlah baris, jika j = 0 dan j kurang dari jumlah kolom, maka memanggil method write yang berisi model.getValueAti, j.toString. 9. Excel.close. 10. Jika ext = Microsoft Word .doc maka format yang dipilih adalah .doc. 11. Membuat obyek bfw yang bertipe BufferedWriter. 12. Jika i = 0 dan i kurang dari jumlah kolom, HasilOutlierTable maka memanggil method write yang berisi HasilOutlierTable.getColumnNam ei. 13. Jika i = 0 dan i kurang dari jumlah baris HasilOutlierTable, jika j = 0 dan j kurang dari jumlah kolom HasilOutlierTable, maka memanggil method write yang berisi HasilOutlierTable.getValueAti, j.toString. 14. bfw.close; 15. Jika ext = Text Documents .txt maka format yang dipilih adalah .txt. 16. Membuat obyek bfw yang bertipe BufferedWriter. 17. Jika i = 0 dan i kurang dari jumlah kolom, HasilOutlierTable maka memanggil method write yang berisi HasilOutlierTable.getColumnNam ei. 18. Jika i = 0 dan i kurang dari jumlah baris HasilOutlierTable, jika j = 0 dan j kurang dari jumlah kolom HasilOutlierTable, maka memanggil method write yang berisi HasilOutlierTable.getValueAti, j.toString. 19. bfw.close; 20. Jika proses simpan gagal akan menampilkan pesan “Penyimpanan Gagal”. 21. Jika proses simpan berhasil akan mnampilkan pesan “Hasil Deteksi Outlier Telah Berhasil Disimpan”.

4.4 Perancangan Struktur Data