STUDI KASUS: Membuat Aplikasi Program Penggajian Tanpa Error Dengan Visual Basic .Net

Biasanya kalau kita sedang belajar visual basic apapun versinya tidak luput dari yang namanya error atau bug, kadang-kadang sebagai pemula yang baru belajar ketika program sudah jalan menganggap sudah bebas dari error sebenarnya tidak demikian banyak error yang tidak kelihatan terjadi dibelakang layar. Untuk itu memang harus benar-benar teliti dan wajib menguji program yang anda buat untuk mencari error sekecil apapun dengan menguji beberapa kemungkinan termasuk kesalahan user.

Untuk itu dalam artikel blog ini saya akan membuat Studi Kasus cara membuat Aplikasi Penggajian tanpa error termasuk menghindari kesalahan user.

Aplikasi Program Pengggajian di VB.Net


Studi Kasus:

Sebuah perusahaan PT. SENTOSA SEJAHTERA membuat aplikasinya sendiri dalam menangani sistem penggajian dengan sebuah aplikasi yang dibuatnya.

Si operator menginput Nama dan NIK secara manual lalu memilih Golongan untuk mengisi gaji pokok dan transport. Tiap golongan memiliki Gaji Pokok dan Uang Transport yang berbeda kemudian mengisi kode jabatan untuk mengisi jabatan dan tunjangan jabatan.Setelah itu operator memilih status pernikahan, tunjangan akan di berikan sesuai statusnya termasuk tunjangan anak dan keluarga, jika belum nikah tidak dapat tunjangan, kemudian operator menekan tombol hitung untuk memperoleh Gaji Kotor yang didapat.

Berdasarkan Kasus diatas di buatlah Aplikasi Penggajian dengan Visual Basic .Net. Pembuatan dilakukan melalui beberapa tahapan mulai dari :

  1.  Membuat Form, 
  2.  Menyediakan kontrol ke Form,
  3.  Mendesain Form dan
  4.  Pengkodean

1. Membuat Form

  •  Buka Microsoft Visual Studio Anda
  •  Klik Create a New Project
  •  Cari template Windows Form App (WinForms) dan klik templatenya
  •  Klik Next
  •  Ketik nama Project > Folder Peyimpanan
  •  Klik Next
  •  Pilih Framework .NET 6.0
  •  Klik Create (tunggu...sampai Form1 muncul)

2. Menyediakan Kontrol Form

  • Label
  • GroupBox
  • TextBox
  • Button
  • ListBox

Atur Properties tiap kontrol

Kontrol Name Keterangan
Label1 Label1 Text : PT. SENTOSA SEJAHATERA (SS), Font:DS-DIGITAL, 24, Bold
GroupBox1 GroupBox1 Text : DATA KARYAWAN, Font:Segoe UI, 12, Bold
Label2 Label2 Text:Nik, MaxLength:6
Label3 Label3 Text:Nama
TextBox TextBoxNik Text:""
TextBox TextBoxNama Text:""
Label4 Label4 Text:Golongan
ComboBox ComboBoxGolongan Text:""
Label5 Label5 Text: Kode Jabatan
ListBox ListBoxKodeJabatan Text:ListBoxKodeJabatan
GroupBox2 GroupBox2 Text : GAJI DAN TRANSPORT, fONT:Segoe UI, 12, Bold
Label6 Label6 Text:Gaji Pokok
Label7 Label7 Text:Uang Transport
Label LabelGapok Text:LabelGapok, BorderStyle:Fixed3D
Label LabelTransport Text:LabelTransport, BorderStyle:Fixed3D
GroupBox3 GroupBox3 Text : TUNJANGAN JABATAN, FONT:Segoe UI, 12, Bold
Label8 Label8 Text:Jabatan
Label9 Label9 Text:Tunjangan Jabatan
Label LabelJabatan Text:LabelJabatan, BorderStyle:Fixed3D
Label LabelTunjab Text:LabelTunjab, BorderStyle:Fixed3D
GroupBox4 GroupBox4 Text : STATUS, FONT:Segoe UI, 12, Bold
RadioButton RadioButtonNikah Text:Nikah
RadioButton RadioButtonBNikah Text:Belum Nikah
RadioButton RadioButtonDJ Text:Duda/Janda
GroupBox5 GroupBox5 Text : Tunjangan Keluarga dan anak, FONT:Segoe UI, 12, Bold
Label10 Label10 Text:Jumlah Anak
Label11 Label11 Text:Tunjangan Anak
Label12 Label12 Text:Tunjangan Keluarga
TextBox TextBoxJumlahAnak Text:""
Label LabelTunjanganAnak Text:LabelTunjanganAnak, BorderStyle:Fixed3D
Label LabelTunKel Text:LabelTunKel, BorderStyle:Fixed3D
Label13 Label13 Text:GAJI KOTOR,Fontsize:14, Bold
Label LabelGajiKotor Text:LabelGajiKotor, BorderStyle:Fixed3D, Fontsize:14, Bold
Button1 ButtonHitung Text:HITUNG
Button2 ButtonClear Text:CLEAR
Button3 ButtonKeluar Text:KELUAR


3. Mendesain Form

Desain Form Penggajian di VB .Net


4. Pengkodean

Buka jendela kode lalu bersihkan kode yang ada dengan CTRL+A dan tekan Del kemudian Copy-Paste kode dibawag ini di jendela kode :

Imports System.Windows.Forms.VisualStyles.VisualStyleElement

Public Class Form1

    Private Sub TextBoxNik_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBoxNik.KeyPress
        'validasi NIK harus angka
        If Not Char.IsDigit(e.KeyChar) AndAlso Not Char.IsControl(e.KeyChar) Then
            e.Handled = True
        End If

        'penekanan tombol enter focus ke nama
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            TextBoxNama.Focus()
        End If
    End Sub

    Private Sub ListBoxKodeJabatan_SelectedIndexChanged(sender As Object, e As EventArgs) _
Handles ListBoxKodeJabatan.SelectedIndexChanged

        If ListBoxKodeJabatan.SelectedItem Is Nothing Then Exit Sub

        Dim data() As String =
        ListBoxKodeJabatan.SelectedItem.ToString().Split("-"c)

        Dim kode As String = data(0)
        Dim jabatan As String = data(1)

        'mengambil label Jabatan
        LabelJabatan.Text = jabatan

        'mengambil Tunjangan Jabatan
        Select Case kode
            Case "J001" : LabelTunjab.Text = 5000000.ToString("N0")
            Case "J002" : LabelTunjab.Text = 3000000.ToString("N0")
            Case "J003" : LabelTunjab.Text = 800000.ToString("N0")
            Case "J004" : LabelTunjab.Text = 500000.ToString("N0")
            Case "J005" : LabelTunjab.Text = 300000.ToString("N0")
        End Select

    End Sub


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'menormalkan kembali ke form awal
        Call kosong()

        'menambahkan kode golongan ke combobox
        ComboBoxGolongan.Items.Add("A001")
        ComboBoxGolongan.Items.Add("B001")
        ComboBoxGolongan.Items.Add("C001")
        ComboBoxGolongan.SelectedIndex = 0

        'menambahkan kode jabatan
        ListBoxKodeJabatan.Items.Add("J001-Direktur")
        ListBoxKodeJabatan.Items.Add("J002-Manager")
        ListBoxKodeJabatan.Items.Add("J003-Kabag")
        ListBoxKodeJabatan.Items.Add("J004-Kasi")
        ListBoxKodeJabatan.Items.Add("J005-Karu")

        ' menampilkan item terpilih pertama di listbox
        If ListBoxKodeJabatan.Items.Count > 0 Then
            ListBoxKodeJabatan.SelectedIndex = 0
        End If
    End Sub

    Private Sub ComboBoxGolongan_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBoxGolongan.SelectedIndexChanged
        'menampilkan gaji pokok dan transport berdasarkan Golongan
        Select Case ComboBoxGolongan.Text
            Case "A001"
                LabelGapok.Text = 8000000.ToString("N0")
                LabelTransport.Text = 250000.ToString("N0")
            Case "B001"
                LabelGapok.Text = 6500000.ToString("N0")
                LabelTransport.Text = 200000.ToString("N0")
            Case "C001"
                LabelGapok.Text = 4500000.ToString("N0")
                LabelTransport.Text = 150000.ToString("N0")
        End Select

    End Sub

    Private Sub ButtonClear_Click(sender As Object, e As EventArgs) Handles ButtonClear.Click
        'menormalkan kembali for ke awal
        Call kosong()
        RadioButtonNikah.Checked = False
        RadioButtonBNikah.Checked = False
        RadioButtonDJ.Checked = False
        TextBoxNik.Focus()

    End Sub

    Sub kosong()
        TextBoxNik.Text = ""
        TextBoxNama.Text = ""
        LabelGapok.Text = 0
        LabelTransport.Text = 0
        LabelJabatan.Text = "-"
        TextBoxJumlahAnak.Text = ""
        LabelTunjab.Text = 0
        LabelTunKel.Text = 0
        LabelTunjanganAnak.Text = 0
        LabelGajiKotor.Text = 0

    End Sub

    Private Sub RadioButtonBNikah_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButtonBNikah.CheckedChanged
        LabelTunKel.Text = 0
        TextBoxJumlahAnak.Text = 0
        TextBoxJumlahAnak.Enabled = False
    End Sub
    Private Sub RadioButtonNikah_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButtonNikah.CheckedChanged
        LabelTunKel.Text = 150000
        TextBoxJumlahAnak.Enabled = True
        TextBoxJumlahAnak.Text = ""
    End Sub

    Private Sub RadioButtonDJ_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButtonDJ.CheckedChanged
        LabelTunKel.Text = 100000
        TextBoxJumlahAnak.Enabled = True
        TextBoxJumlahAnak.Text = ""
    End Sub

    Private Sub TextBoxJumlahAnak_TextChanged(sender As Object, e As EventArgs) Handles TextBoxJumlahAnak.TextChanged
        Dim jumlahAnak As Integer

        If Integer.TryParse(TextBoxJumlahAnak.Text, jumlahAnak) Then
            LabelTunjanganAnak.Text = (jumlahAnak * 7500).ToString("N0")
        Else
            LabelTunjanganAnak.Text = "0"
        End If

        'kode dibawah ini alternatif boleh dihapus

        'If TextBoxJumlahAnak.Text = "" Then
        'lTunjanganAnak.Text = "0"
        'Else
        'LabelTunjanganAnak.Text = TextBoxJumlahAnak.Text * 7500
        'End If


    End Sub

    Private Sub TextBoxJumlahAnak_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBoxJumlahAnak.KeyPress
        'hanya input angka
        If Not Char.IsDigit(e.KeyChar) AndAlso Not Char.IsControl(e.KeyChar) Then
            e.Handled = True
        End If
    End Sub

    Private Sub ButtonHitung_Click(sender As Object, e As EventArgs) Handles ButtonHitung.Click

        ' Validasi NIK panjang harus 6 digit
        If Not IsNumeric(TextBoxNik.Text) OrElse TextBoxNik.Text.Length <> 6 Then
            MessageBox.Show("NIK harus di isi, terdiri dari 6 angka", "Validasi", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            TextBoxNik.Focus()
            Exit Sub
        End If

        'validasi nama tidak boleh kosong
        If TextBoxNama.Text = "" Then
            MsgBox("Lengkapi data, Nama belum di isi", vbInformation, "Informasi")
            TextBoxNama.Focus()
            Exit Sub
        End If

        'validasi jika Golongan belum dipilih
        If LabelGapok.Text = 0 Then
            MsgBox("Golongan Belum terpilih", vbInformation, "Informasi")
            ComboBoxGolongan.Focus()
            Exit Sub
        End If

        'validasi jika Kode Jabatan belum dipilih
        If LabelTunjab.Text = 0 Then
            MsgBox("Kode jabatan Belum terpilih", vbInformation, "Informasi")
            ListBoxKodeJabatan.Focus()
            Exit Sub
        End If

        'validasi Status jika belum ada yang dipilih
        If RadioButtonNikah.Checked = False And RadioButtonBNikah.Checked = False And RadioButtonDJ.Checked = False Then
            MsgBox("Status Belum dipilih", vbInformation, "Informasi")
            Exit Sub
        End If

        'validasi jumlah anak harus di isi, 0 jika tidak mempunyai anak
        If TextBoxJumlahAnak.Text = "" Then
            MsgBox("Jumlah Anak belum diisi? Jika tidak mempunyai Anak isi 0?", vbInformation, "Informasi")
            TextBoxJumlahAnak.Focus()
        Else
            'menghitung gaji kotor
            Dim gapok, transport, tunjab, tunjAnak, tunKel As Decimal

            Decimal.TryParse(LabelGapok.Text, gapok)
            Decimal.TryParse(LabelTransport.Text, transport)
            Decimal.TryParse(LabelTunjab.Text, tunjab)
            Decimal.TryParse(LabelTunjanganAnak.Text, tunjAnak)
            Decimal.TryParse(LabelTunKel.Text, tunKel)

            Dim total As Decimal = gapok + transport + tunjab + tunjAnak + tunKel

            LabelGajiKotor.Text = total.ToString("N0")

        End If
    End Sub

Private Sub ButtonKeluar_Click(sender As Object, e As EventArgs) Handles ButtonKeluar.Click
        Me.Close()
    End Sub

End Class

Simpan dan jalankan Program.

Demikianlah artikel pada hari ini membahas STUDI KASUS: Membuat Aplikasi Proram Penggajian Tanpa Error Dengan Visual Basic .Net. semoga artikel ini bermanfaat buat kita semua.Amin.

Selamat mencoba semoga berhasil.

Post a Comment for "STUDI KASUS: Membuat Aplikasi Program Penggajian Tanpa Error Dengan Visual Basic .Net"