Penentuan Jumlah Produksi Optimal Minuman Teh Menggunakan Metode Fuzzy Sugeno Dan Metode Fuzzy Tsukamoto (Studi Kasus : PT.Sinar Sosro Tanjung Morawa)

(1)

LISTING PROGRAM

1. Form Login

Imports System.Data.OleDb Imports System.IO

Public Class frmLogin

Dim strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Database\Contacts.accdb;Persist Security Info=False;" Dim con As New OleDbConnection

Dim cmd As New OleDbCommand Dim da As New OleDbDataAdapter Dim dt As New DataTable

Dim save_tag As String

Private Sub cmdLogin_Click(sender As Object, e As EventArgs)

End Sub

Private Sub frmLogin_Deactivate(sender As Object, e As EventArgs) Handles Me.Deactivate

End Sub

Private Sub frmLogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'frmMenu.Show()

'Me.GroupBox1.Anchor = AnchorStyles.Top Or AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right

' Me.Parent = frmMenu Dim conString As String

conString = "Microsoft.ACE.OLEDB.12.0;Data

Source=|DataDirectory|\dbMinuman.accdb;Jet OLEDB:Database Password=nurul" End Sub

Private Sub cmdCancel_Click(sender As Object, e As EventArgs) Close()

End Sub

Private Sub txtPassword_KeyDown(sender As Object, e As KeyEventArgs) End Sub

Private Sub txtPassword_TextChanged(sender As Object, e As EventArgs)


(2)

End Sub

Private Sub txtUser_LostFocus(sender As Object, e As EventArgs)

End Sub

Private Sub txtUser_TextChanged(sender As Object, e As EventArgs)

End Sub

Private Sub cmdCancel_Click_1(sender As Object, e As EventArgs) Handles cmdCancel.Click

Close() End Sub

Private Sub cmdLogin_Click_1(sender As Object, e As EventArgs) Handles cmdLogin.Click

If txtUser.Text = "nurul" And txtPassword.Text = "nurul" Then Me.Hide()

frmMenu.Show() Else

Dialog.lbltext.Text = "Maaf, Username atau Password anda salah" Dim a As String = Dialog.ShowDialog

If a = "OK" Then Close()

'MsgBox("Username atau Password anda salah!", vbCritical + vbOKOnly, "Kesalahan")

End If End If End Sub

Private Sub txtUser_LostFocus1(sender As Object, e As EventArgs) Handles txtUser.LostFocus

If txtUser.TextLength <= 0 Then OvalShape3.Visible = True

OvalShape3.BackColor = Color.Red RectangleShape1.BorderColor = Color.Red cmdLogin.Enabled = False

End If End Sub

Private Sub txtUser_TextChanged_1(sender As Object, e As EventArgs) Handles txtUser.TextChanged


(3)

OvalShape3.Visible = True If Len(txtUser.Text) = 0 Then

OvalShape3.BackColor = Color.Red RectangleShape1.BorderColor = Color.Red cmdLogin.Enabled = False

Else

OvalShape3.BackColor = Color.LimeGreen RectangleShape1.BorderColor = Color.LimeGreen End If

End Sub

Private Sub txtPassword_KeyDown1(sender As Object, e As KeyEventArgs) Handles txtPassword.KeyDown

If e.KeyCode = Keys.Enter Then cmdLogin.PerformClick() End If

End Sub

Private Sub txtPassword_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtPassword.KeyPress

End Sub

Private Sub txtPassword_TextChanged_1(sender As Object, e As EventArgs) Handles txtPassword.TextChanged

OvalShape2.Visible = True

If Len(txtPassword.Text) = 0 Then OvalShape2.BackColor = Color.Red RectangleShape2.BorderColor = Color.Red cmdLogin.Enabled = False

Else

OvalShape2.BackColor = Color.LimeGreen RectangleShape2.BorderColor = Color.LimeGreen cmdLogin.Enabled = True

End If End Sub End Class

2. Form Menu Utama

Public Class frmMenu

Private Sub frmMenu_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Me.Parent = Panel1


(4)

Dim img As Bitmap = CType(Me.BackgroundImage, Bitmap) ' Panel1.Parent = Panel2

' Label1.Parent = Panel1

' Label1.BackColor = Color.Transparent

' Panel1.BackColor = Color.FromArgb(90, Color.OrangeRed) End Sub

Private Sub KELUARToolStripMenuItem_Click(sender As Object, e As EventArgs) AboutBox1.Show()

End Sub

Private Sub MinumanToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MinumanToolStripMenuItem.Click

frmData.Show() End Sub

Private Sub ProsesUtamaToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProsesUtamaToolStripMenuItem.Click

frmProses.Show() End Sub

Private Sub KELUARToolStripMenuItem1_Click(sender As Object, e As EventArgs) Dim keluar As String = MsgBox("Yakin ingin keluar?", vbYesNo + vbQuestion) If keluar = vbYes Then

End End If End Sub

Private Sub LaporanUtamaToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LaporanUtamaToolStripMenuItem.Click

frmLaporan.Show() End Sub

Private Sub Panel2_Paint(sender As Object, e As PaintEventArgs) Handles Panel2.Paint End Sub

End Class

3. Form Proses

Imports System.Math Imports System.Data.OleDb Public Class frmProses Dim nilai As Double


(5)

Private Sub btnSugeno_Click(sender As Object, e As EventArgs) Handles btnSugeno.Click 'Masukkan nilai2 variabel berdasarkan inputan

AlSugeno()

frmSugeno.Show() End Sub

Private Sub frmProses_GotFocus(sender As Object, e As EventArgs) Handles Me.GotFocus Call GetNilai()

End Sub

Private Sub frmProses_Load(sender As Object, e As EventArgs) Handles MyBase.Load dateUpdate = False

Call GetNilai() End Sub

Private Sub btnTsuka_Click(sender As Object, e As EventArgs) Handles btnTsuka.Click 'Masukkan nilai2 variabel berdasarkan inputan

AlTsukamoto()

frmTsukamoto.Show() End Sub

Sub GetNilai()

Dim strConn3 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/database\dbMinuman.accdb;Persist Security Info=false;" Dim con3 As New OleDbConnection

Dim cmd3 As New OleDbCommand Dim da3 As New OleDbDataAdapter Dim dt3 As New DataTable

Dim cmdtxt3 As String = Nothing

cmdtxt3 = "SELECT * FROM minuman" Try

'The connection

con3.ConnectionString = strConn3 con3.Open()

'The OLEDB Command With cmd3

.Connection = con3

.CommandType = CommandType.Text .CommandText = cmdtxt3

End With

da.SelectCommand = cmd3 da.Fill(dt)


(6)

Dim arrPermintaan(dt.Rows.Count - 1) As Double Dim arrPersediaan(dt.Rows.Count - 1) As Double Dim arrProduksi(dt.Rows.Count - 1) As Double Dim arrTahun(dt.Rows.Count - 1) As Double Dim arrBulan(dt.Rows.Count - 1) As Double Dim arrBulanTahun(dt.Rows.Count - 1) As Double Dim maxBulan As Integer

Dim maxTahun As Integer Dim lastBulan As Double Dim lastTahun As Double Dim i As Integer

For i = 0 To dt.Rows.Count - 1

arrPermintaan(i) = Val(dt.Rows(i)("permintaan", DataRowVersion.Original)) Next

For i = 0 To dt.Rows.Count - 1

arrPersediaan(i) = dt.Rows(i)("persediaan", DataRowVersion.Original) Next

For i = 0 To dt.Rows.Count - 1

arrProduksi(i) = dt.Rows(i)("jlh_produksi", DataRowVersion.Original) Next

For i = 0 To dt.Rows.Count - 1

arrTahun(i) = (Val(dt.Rows(i)("tahun", DataRowVersion.Original))) Next

maxTahun = nilaiMax(arrTahun)

'pilih arrBulan yang tahunnya = maxTahun Dim indeksMaxTahun As Integer = 0 For i = 0 To dt.Rows.Count - 1

If (Val(dt.Rows(i)("tahun", DataRowVersion.Original)) = maxTahun) Then arrBulan(i) = Val(dt.Rows(i)("bulan", DataRowVersion.Original)) Else

arrBulan(i) = 0 End If

Next

maxBulan = nilaiMax(arrBulan) lastTahun = maxTahun


(7)

Dim LastDate As DateTime = (DateTime.Parse(lastBulan & "/" & lastTahun)) Dim nextDate As DateTime = LastDate.AddMonths(1)

stBulan = (Month(nextDate)) stTahun = Year(nextDate)

lblBT.Text = (DateTime.Parse(nextDate)).ToString("Y") minta_max = nilaiMax(arrPermintaan)

minta_min = nilaiMin(arrPermintaan) sedia_max = nilaiMax(arrPersediaan) sedia_min = nilaiMin(arrPersediaan) prod_max = nilaiMax(arrProduksi) prod_min = nilaiMin(arrProduksi) dt.Rows.Clear()

Catch ex As Exception

MsgBox(ex.Message, vbCritical) Finally

con3.Dispose() con3.Close() End Try

End Sub

Private Sub btnKembali_Click(sender As Object, e As EventArgs) Handles btnKembali.Click Me.Hide()

frmMenu.Show() End Sub

Sub GetMonth()

Dim cmdtxt2 As String = Nothing

cmdtxt2 = "SELECT * FROM minuman" Try

con.ConnectionString = strConn con.Open()

With cmd

.Connection = con

.CommandType = CommandType.Text .CommandText = cmdtxt2


(8)

da.SelectCommand = cmd da.Fill(dt)

Dim arrTahun(dt.Rows.Count - 1) As Double Dim arrBulan(dt.Rows.Count - 1) As Double Dim arrBulanTahun(dt.Rows.Count - 1) As Double Dim maxTahunBulan As Double

Dim lastBulan As Double Dim lastTahun As Double Dim itemIndex As Integer

Dim i As Integer

For i = 0 To dt.Rows.Count - 1

arrTahun(i) = Val(dt.Rows(i)("tahun")) arrBulan(i) = Val(dt.Rows(i)("bulan"))

arrBulanTahun(i) = Val(dt.Rows(i)("tahun")) + Val(dt.Rows(i)("bulan")) Next

maxTahunBulan = nilaiMax(arrBulanTahun)

itemIndex = Array.IndexOf(arrBulanTahun, maxTahunBulan) lastTahun = arrTahun(itemIndex)

lastBulan = arrBulan(itemIndex)

lblBT.Text = (lastTahun & " " & lastBulan) Catch ex As Exception

MsgBox(ex.Message, vbCritical) Finally

con.Dispose() con.Close() End Try End Sub

Sub AlSugeno()

Dim run_time As Stopwatch = Stopwatch.StartNew() 'Cari Nilai2 X, Y, dan Z berdasarkan variabel2 sebelumnya pminta = Val(txtminta.Text) 'Nilai

psediaan = Val(txtSedia.Text) 'Nilai Y

run_time.Start() 'Mengukur Running Time Algoritma Sugeno : Waktu Mulai '----PERMINTAAN---


(9)

'Terdiri dari 2 himpunan Fuzzy : Turun dan Naik If pminta < minta_min Then

s_pmtT = 1 s_pmtN = 0

ElseIf pminta >= minta_min And pminta <= minta_max Then s_pmtT = (minta_max - pminta) / (minta_max - minta_min) s_pmtN = (pminta - minta_min) / (minta_max - minta_min) ElseIf pminta > minta_max Then

s_pmtT = 0 s_pmtN = 1 End If

'----PERSEDIAAN---

'Terdiri dari 2 himpunan Fuzzy : Sedikit dan Banyak If psediaan < sedia_min Then

s_smS = 1 s_smB = 0

ElseIf psediaan >= sedia_min And psediaan <= sedia_max Then s_smS = (sedia_max - psediaan) / (sedia_max - sedia_min) s_smB = (psediaan - sedia_min) / (sedia_max - sedia_min) ElseIf psediaan > sedia_max Then

s_smS = 0 s_smB = 1 End If

'----PRODUKSI---

'Tidak mempunyai himpunan Fuzzy

'Nilai alfa-predikat dan Z dari setiap aturan

'-RULE 1 - Jika permintaan TURUN dan persediaan BANYAK maka produksi barang = Permintaan - Persediaan

Dim rule1 As Double = If(s_pmtT < s_smB, s_pmtT, s_smB) Dim z1 As Double = pminta - psediaan

'-RULE 2 - Jika permintaan TURUN dan persediaan SEDIKIT maka produksi barang = permintaan

Dim rule2 As Double = If(s_pmtT < s_smS, s_pmtT, s_smS) Dim z2 As Double = pminta

'-RULE 3 - Jika permintaan NAIK dan persediaan barang BANYAK maka produksi barang = permintaan

Dim rule3 As Double = If(s_pmtN < s_smB, s_pmtN, s_smB) Dim z3 As Double = pminta


(10)

'-RULE 4 - Jika permintaan NAIK dan persediaan SEDIKIT maka produksi barang = 1.25 * (permintaan-persediaan)

Dim rule4 As Double = If(s_pmtN < s_smB, s_pmtN, s_smS) Dim z4 As Double = 1.25 * pminta - psediaan

'Menghitung Z akhir (Produksi Akhir) dengan merata-rata semua z berbobot

s_defuzzy = ((rule1 * z1) + (rule2 * z2) + (rule3 * z3) + (rule4 * z4)) / (rule1 + rule2 + rule3 + rule4)

run_time.Stop() 'Mengukur Running Time Algoritma Sugeno : Waktu Selesai s_runtime = run_time.Elapsed.TotalMilliseconds

End Sub

Sub AlTsukamoto()

Dim run_time As Stopwatch = Stopwatch.StartNew() 'Cari Nilai2 X, Y, dan Z berdasarkan variabel2 sebelumnya pminta = Val(txtminta.Text) 'Nilai

psediaan = Val(txtSedia.Text) 'Nilai Y

run_time.Start() 'Mengukur Running Time Algoritma Sugeno : Waktu Mulai '----PERMINTAAN---

'Terdiri dari 2 himpunan Fuzzy : Turun dan Naik If pminta < minta_min Then

t_pmtT = 1 t_pmtN = 0

ElseIf pminta >= minta_min And pminta <= minta_max Then t_pmtT = (minta_max - pminta) / (minta_max - minta_min) t_pmtN = (pminta - minta_min) / (minta_max - minta_min) ElseIf pminta > minta_max Then

t_pmtT = 0 t_pmtN = 1 End If

'----PERSEDIAAN---

'Terdiri dari 2 himpunan Fuzzy : Sedikit dan Banyak If psediaan < sedia_min Then

t_smS = 1 t_smB = 0

ElseIf psediaan >= sedia_min And psediaan <= sedia_max Then t_smS = (sedia_max - psediaan) / (sedia_max - sedia_min) t_smB = (psediaan - sedia_min) / (sedia_max - sedia_min) ElseIf psediaan > sedia_max Then

t_smS = 0 t_smB = 1


(11)

End If

'Nilai alfa-predikat dan Z dari setiap aturan

'-RULE 1 - Jika permintaan TURUN dan persediaan BANYAK maka produksi barang berkurang

Dim rule1 As Double = If(t_pmtT < t_smB, t_pmtT, t_smB) '(produksi max - z)/permintaan terbesar = alfap1

Dim z1 As Double = prod_max - (minta_max * rule1)

'-RULE 2 - Jika permintaan TURUN dan persediaan SEDIKIT maka produksi barang berkurang

Dim rule2 As Double = If(t_pmtT < t_smS, t_pmtT, t_smS) Dim z2 As Double = prod_max - (minta_max * rule2)

'-RULE 3 - Jika permintaan NAIK dan persediaan barang BANYAK maka produksi barang bertambah

Dim rule3 As Double = If(t_pmtN < t_smB, t_pmtN, t_smB) Dim z3 As Double = prod_min + (minta_max * rule3)

'-RULE 4 - Jika permintaan NAIK dan persediaan SEDIKIT maka produksi barang bertambah

Dim rule4 As Double = If(t_pmtN < t_smB, t_pmtN, t_smS) Dim z4 As Double = prod_min + (minta_max * rule4)

'Menghitung Z akhir (Produksi Akhir) dengan merata-rata semua z berbobot

t_defuzzy = ((rule1 * z1) + (rule2 * z2) + (rule3 * z3) + (rule4 * z4)) / (rule1 + rule2 + rule3 + rule4)

run_time.Stop() 'Mengukur Running Time Algoritma Sugeno : Waktu Selesai t_runtime = run_time.Elapsed.TotalMilliseconds

End Sub

Private Sub btnSekaligus_Click(sender As Object, e As EventArgs) Handles btnSekaligus.Click

Call GetNilai() AlSugeno() AlTsukamoto()

frmProsesSekaligus.Show() End Sub

Public Function nilaiMax(ByVal itemList() As Double) Dim max As Integer = Nothing


(12)

For i As Integer = 0 To (itemList.Length - 1) If i = 0 Then

max = itemList(i) Else

If itemList(i) > max Then max = itemList(i) End If

Next

nilaiMax = max End Function

Public Function nilaiMin(ByVal itemList() As Double) Dim min As Integer = Nothing

For i As Integer = 0 To (itemList.Length - 1) If i = 0 Then

min = itemList(i) Else

If itemList(i) < min Then min = itemList(i) End If

Next

nilaiMin = min End Function

Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked Call GetNilai()

End Sub

Private Sub txtminta_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtminta.KeyPress

inputValidasi(e) End Sub

Private Sub txtSedia_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtSedia.KeyPress

inputValidasi(e) End Sub


(13)

4. Form Simpan Ke Laporan

Public Class frmProsesSekaligus

Private Sub frmProsesSekaligus_Load(sender As Object, e As EventArgs) Handles MyBase.Load

If psediaan <= 0 Or pminta <= 0 Then

MsgBox("Silahkan mengisi data terlebih dahulu") Close()

frmProses.Show() Else

lblumt.Text = Math.Round(s_pmtT, 2) lblumtt.Text = Math.Round(t_pmtT, 2) lblumn.Text = Math.Round(s_pmtN, 2) lblumnt.Text = Math.Round(t_pmtN, 2) lblust.Text = Math.Round(s_smB, 2) lblustt.Text = Math.Round(t_smB, 2) lblusn.Text = Math.Round(s_smS, 2) lblusnt.Text = Math.Round(t_smS, 2) lblNama.Text = "Teh Botol Sosro"

lblDefuz.Text = Math.Round(s_defuzzy, 2) lblDefuzT.Text = Math.Round(t_defuzzy, 2) lblRun.Text = s_runtime

lblRunT.Text = t_runtime lblMintaMax.Text = minta_max lblMintaMin.Text = minta_min lblSediaMAx.Text = sedia_max lblSediaMin.Text = sedia_min lblProMax.Text = prod_max lblProMin.Text = prod_min End If

End Sub

Private Sub btnKembali_Click(sender As Object, e As EventArgs) Close()

frmProses.Show() End Sub


(14)

Private Sub btnSimpan_Click_1(sender As Object, e As EventArgs) Handles btnSimpan.Click Dim cmdtxt As String = Nothing

Dim cmdtxt2 As String = Nothing

cmdtxt = "Insert into fuzzy([bulan],[tahun],[permintaan], [persediaan], [rk sugeno], [rk tsukamoto], [rt sugeno], [rt tsukamoto])" & _

" Values('" & stBulan & "','" & stTahun & "','" & pminta & "'," & psediaan & "," & Math.Round(Val(lblDefuz.Text), 2) & " ," & Math.Round(Val(lblDefuzT.Text), 2) & "," & Str(s_runtime) & "," & Str(t_runtime) & ") "

cmdtxt2 = "Insert into minuman([nama], [bulan], [tahun], [permintaan], [persediaan], [jlh_produksi])" & _

"Values('" & "Teh Botol Sosro" & "','" & stBulan & "','" & stTahun & "'," & pminta & "," & psediaan & "," & Math.Round(Val(lblDefuz.Text), 0) & " ) "

Try

con.ConnectionString = strConn con.Open()

With cmd

.Connection = con

.CommandType = CommandType.Text .CommandText = cmdtxt

End With

cmd.ExecuteNonQuery() With cmd

.Connection = con

.CommandType = CommandType.Text .CommandText = cmdtxt2

End With

cmd.ExecuteNonQuery() dateUpdate = False

MsgBox("Data berhasil disimpan") Catch ex As Exception

MsgBox(ex.Message, vbCritical) Finally

con.Dispose() con.Close() End Try End Sub

Private Sub btnKembali_Click_1(sender As Object, e As EventArgs) Handles btnKembali.Click

Close()

frmProses.Show() End Sub


(15)

End Class

5. Form Sugeno

Public Class frmSugeno

Private Sub frmSugeno_Load(sender As Object, e As EventArgs) Handles MyBase.Load If psediaan <= 0 Or pminta <= 0 Then

MsgBox("Silahkan mengisi data terlebih dahulu") Close()

frmProses.Show() Else

lblumt.Text = Math.Round(s_pmtT, 2) lblumn.Text = Math.Round(s_pmtN, 2) lblust.Text = Math.Round(s_smB, 2) lblusn.Text = Math.Round(s_smS, 2) lblNama.Text = "Teh Botol Sosro"

lblDefuz.Text = Math.Round(s_defuzzy, 2)

lblMintaMax.Text = minta_max lblMintaMin.Text = minta_min lblSediaMAx.Text = sedia_max lblSediaMin.Text = sedia_min lblProMax.Text = prod_max lblProMin.Text = prod_min End If

End Sub

Private Sub btnKembali_Click(sender As Object, e As EventArgs) Handles btnKembali.Click

Close()

frmProses.Show() End Sub

End Class


(16)

Public Class frmTsukamoto

Private Sub frmTsukamoto_Load(sender As Object, e As EventArgs) Handles MyBase.Load

If psediaan <= 0 Or pminta <= 0 Then

MsgBox("Silahkan mengisi data terlebih dahulu") Close()

frmProses.Show() Else

lblumt.Text = Math.Round(t_pmtT, 2) lblumn.Text = Math.Round(t_pmtN, 2) lblust.Text = Math.Round(t_smB, 2) lblusn.Text = Math.Round(t_smS, 2)

lblNama.Text = "Teh Botol Sosro"

lblDefuz.Text = Math.Round(t_defuzzy, 2) lblMintaMax.Text = minta_max

lblMintaMin.Text = minta_min lblSediaMAx.Text = sedia_max lblSediaMin.Text = sedia_min lblProMax.Text = prod_max lblProMin.Text = prod_min End If

End Sub

Private Sub btnKembali_Click(sender As Object, e As EventArgs) Handles btnKembali.Click

Me.Dispose() Close()

frmProses.Show() End Sub

End Class

7. Form Laporan Public Class frmLaporan

Private Sub LoginForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load dt2.Rows.Clear()


(17)

DataGridView1.Rows.Clear() Fill_Grid(DataGridView1) With DataGridView1

.RowHeadersVisible = False .Columns(0).Visible = False

.Columns(1).HeaderText = "Bulan" .Columns(2).HeaderText = "Tahun" .Columns(3).HeaderText = "Permintaan" .Columns(4).HeaderText = "Persediaan" .Columns(5).HeaderText = "Ranking Sugeno" .Columns(6).HeaderText = "Ranking Tsukamoto" .Columns(7).HeaderText = "Runnin Time Sugeno" .Columns(8).HeaderText = "Running Time Tsukamoto" End With

lblTanggal.Text = Date.Now End Sub

Sub Fill_Grid(grid As Windows.Forms.DataGridView) Dim x As Integer

'# Refreshes the grid.

'# this method is useful when you want to reload the grid with new values after saving entries

If grid.Rows.Count > 0 Then While x < grid.Rows.Count grid.Rows.RemoveAt(x) End While

End If

'# Setting how the grid behaves or looks like when filled/loaded

'# you may add more properties here if necessary e.g alternating row background colors With grid

.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill .RowHeadersVisible = False

.SelectionMode = DataGridViewSelectionMode.FullRowSelect End With

'# Setting and opening a connection to the database via connection string con2.ConnectionString = strConn

con2.Open()

'# Represents an SQL statement or stored procedure to execute against a data source. With cmd2


(18)

.Connection = con2

.CommandType = CommandType.Text .CommandText = "Select * from fuzzy" End With

da2.SelectCommand = cmd2 grid.DataSource = dt2 da2.Fill(dt2)

'# hide some of the unwanted columns 'For i As Integer = 6 To 17

'grid.Columns(i).Visible = False 'Next

'grid.Columns(0).Visible = False

'#closing the connection con2.Dispose()

con2.Close() End Sub

Private Sub btnKembali_Click(sender As Object, e As EventArgs) Handles btnKembali.Click

Close()

frmMenu.Show() End Sub

End Class

8. Module

Imports System.Data.OleDb Module Module1

End Module Module Moduleku

Public strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/database\dbMinuman.accdb;Persist Security Info=false;" Public con As New OleDbConnection

Public cmd As New OleDbCommand Public da As New OleDbDataAdapter


(19)

Public dt As New DataTable

Public con2 As New OleDbConnection Public cmd2 As New OleDbCommand Public da2 As New OleDbDataAdapter Public dt2 As New DataTable

Public save_tag As String Public nm As String Public ids As String

'Variabel berawalan s_ menyatakan variabel yang menampung nilai2 proses Algoritma Sugeno

'variabel inputan

Public minta_max As Double Public minta_min As Double Public sedia_max As Double Public sedia_min As Double Public prod_max As Double Public prod_min As Double 'variabel proses

Public pminta As Double Public psediaan As Double Public produksi As Double

Public s_pmtT As Double 'himpunan fuzy Turun Public s_pmtN As Double 'himpunan fuzzy Naik Public s_smS As Double 'himpunan fuzzy : sedikit Public s_smB As Double 'himpunan fuzzy : banyak Public s_defuzzy As Double

Public s_runtime As Double

'Variabel berawalan t_ menyatakan variabel yang menampung nilai2 proses Algoritma Tsukamoto

Public t_pmtT As Double 'himpunan fuzy Turun Public t_pmtN As Double 'himpunan fuzzy Naik Public t_smS As Double 'himpunan fuzzy : sedikit Public t_smB As Double 'himpunan fuzzy : banyak Public t_pmt As Double

Public t_pmn As Double

Public t_defuzzy As Double Public t_runtime As Double


(20)

Public stBulan As Integer Public stTahun As Integer

' Public isFilled As Boolean = False 'Public session As Boolean = False Public dateUpdate As Boolean

Sub inputValidasi(E As KeyPressEventArgs) 'hanya memperbolehkan angka saja

If Asc(E.KeyChar) <> 13 AndAlso Asc(E.KeyChar) <> 8 AndAlso Not IsNumeric(E.KeyChar) Then

'Tidak melakukan aksi apapun E.Handled = True

End If End Sub


(1)

End Class

5. Form Sugeno

Public Class frmSugeno

Private Sub frmSugeno_Load(sender As Object, e As EventArgs) Handles MyBase.Load If psediaan <= 0 Or pminta <= 0 Then

MsgBox("Silahkan mengisi data terlebih dahulu") Close()

frmProses.Show() Else

lblumt.Text = Math.Round(s_pmtT, 2) lblumn.Text = Math.Round(s_pmtN, 2) lblust.Text = Math.Round(s_smB, 2) lblusn.Text = Math.Round(s_smS, 2) lblNama.Text = "Teh Botol Sosro"

lblDefuz.Text = Math.Round(s_defuzzy, 2)

lblMintaMax.Text = minta_max lblMintaMin.Text = minta_min lblSediaMAx.Text = sedia_max lblSediaMin.Text = sedia_min lblProMax.Text = prod_max lblProMin.Text = prod_min End If

End Sub

Private Sub btnKembali_Click(sender As Object, e As EventArgs) Handles btnKembali.Click

Close()

frmProses.Show() End Sub

End Class


(2)

Public Class frmTsukamoto

Private Sub frmTsukamoto_Load(sender As Object, e As EventArgs) Handles MyBase.Load

If psediaan <= 0 Or pminta <= 0 Then

MsgBox("Silahkan mengisi data terlebih dahulu") Close()

frmProses.Show() Else

lblumt.Text = Math.Round(t_pmtT, 2) lblumn.Text = Math.Round(t_pmtN, 2) lblust.Text = Math.Round(t_smB, 2) lblusn.Text = Math.Round(t_smS, 2)

lblNama.Text = "Teh Botol Sosro"

lblDefuz.Text = Math.Round(t_defuzzy, 2) lblMintaMax.Text = minta_max

lblMintaMin.Text = minta_min lblSediaMAx.Text = sedia_max lblSediaMin.Text = sedia_min lblProMax.Text = prod_max lblProMin.Text = prod_min End If

End Sub

Private Sub btnKembali_Click(sender As Object, e As EventArgs) Handles btnKembali.Click

Me.Dispose() Close()

frmProses.Show() End Sub

End Class

7. Form Laporan

Public Class frmLaporan

Private Sub LoginForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load dt2.Rows.Clear()


(3)

DataGridView1.Rows.Clear() Fill_Grid(DataGridView1) With DataGridView1

.RowHeadersVisible = False .Columns(0).Visible = False

.Columns(1).HeaderText = "Bulan" .Columns(2).HeaderText = "Tahun" .Columns(3).HeaderText = "Permintaan" .Columns(4).HeaderText = "Persediaan" .Columns(5).HeaderText = "Ranking Sugeno" .Columns(6).HeaderText = "Ranking Tsukamoto" .Columns(7).HeaderText = "Runnin Time Sugeno" .Columns(8).HeaderText = "Running Time Tsukamoto" End With

lblTanggal.Text = Date.Now End Sub

Sub Fill_Grid(grid As Windows.Forms.DataGridView) Dim x As Integer

'# Refreshes the grid.

'# this method is useful when you want to reload the grid with new values after saving entries

If grid.Rows.Count > 0 Then While x < grid.Rows.Count grid.Rows.RemoveAt(x) End While

End If

'# Setting how the grid behaves or looks like when filled/loaded

'# you may add more properties here if necessary e.g alternating row background colors With grid

.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill .RowHeadersVisible = False

.SelectionMode = DataGridViewSelectionMode.FullRowSelect End With

'# Setting and opening a connection to the database via connection string con2.ConnectionString = strConn

con2.Open()

'# Represents an SQL statement or stored procedure to execute against a data source. With cmd2


(4)

.Connection = con2

.CommandType = CommandType.Text .CommandText = "Select * from fuzzy" End With

da2.SelectCommand = cmd2 grid.DataSource = dt2 da2.Fill(dt2)

'# hide some of the unwanted columns 'For i As Integer = 6 To 17

'grid.Columns(i).Visible = False 'Next

'grid.Columns(0).Visible = False

'#closing the connection con2.Dispose()

con2.Close() End Sub

Private Sub btnKembali_Click(sender As Object, e As EventArgs) Handles btnKembali.Click

Close()

frmMenu.Show() End Sub

End Class

8. Module

Imports System.Data.OleDb Module Module1

End Module Module Moduleku

Public strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/database\dbMinuman.accdb;Persist Security Info=false;" Public con As New OleDbConnection

Public cmd As New OleDbCommand Public da As New OleDbDataAdapter


(5)

Public dt As New DataTable

Public con2 As New OleDbConnection Public cmd2 As New OleDbCommand Public da2 As New OleDbDataAdapter Public dt2 As New DataTable

Public save_tag As String Public nm As String Public ids As String

'Variabel berawalan s_ menyatakan variabel yang menampung nilai2 proses Algoritma Sugeno

'variabel inputan

Public minta_max As Double Public minta_min As Double Public sedia_max As Double Public sedia_min As Double Public prod_max As Double Public prod_min As Double 'variabel proses

Public pminta As Double Public psediaan As Double Public produksi As Double

Public s_pmtT As Double 'himpunan fuzy Turun Public s_pmtN As Double 'himpunan fuzzy Naik Public s_smS As Double 'himpunan fuzzy : sedikit Public s_smB As Double 'himpunan fuzzy : banyak Public s_defuzzy As Double

Public s_runtime As Double

'Variabel berawalan t_ menyatakan variabel yang menampung nilai2 proses Algoritma Tsukamoto

Public t_pmtT As Double 'himpunan fuzy Turun Public t_pmtN As Double 'himpunan fuzzy Naik Public t_smS As Double 'himpunan fuzzy : sedikit Public t_smB As Double 'himpunan fuzzy : banyak Public t_pmt As Double

Public t_pmn As Double

Public t_defuzzy As Double Public t_runtime As Double


(6)

Public stBulan As Integer Public stTahun As Integer

' Public isFilled As Boolean = False 'Public session As Boolean = False Public dateUpdate As Boolean

Sub inputValidasi(E As KeyPressEventArgs) 'hanya memperbolehkan angka saja

If Asc(E.KeyChar) <> 13 AndAlso Asc(E.KeyChar) <> 8 AndAlso Not IsNumeric(E.KeyChar) Then

'Tidak melakukan aksi apapun E.Handled = True

End If End Sub