Selasa, 04 Februari 2014

Membuat Aplikasi PayRoll Menggunakan C# dan MySql Versi 1 - Bag. 5 (Bonus 1)

Kali ini saya akan memberikan bonus pertama untuk seri tutorial “Membuat Aplikasi Payroll Menggunakan C# dan MySql V1” ini.  Mudah-mudahan ada beberapa bonus lainnya yang akan menyusul :). Bonus kali ini adalah melengkapi aplikasi kita dengan fasilitas Login.
Form login ini berfungsi untuk membatasi user dalam menggunakan aplikasi yaitu yang terkait dengan pengelolaan data-data tertentu di dalam database. Disini ada 2 level user yaitu User Administrator dan User biasa (User). Dalam contoh kali ini apabila yang login adalah Administrator, maka semua menu akan aktif, akan tetapi kalau yang login adalah User biasa (User), maka menu Pegawai dan Petugas akan tidak aktif.
Untuk membuat fasilitas login ini, di dalam database “DB_PayrollDAO” buat tabel Petugas seperti berikut :


Kemudian buat class LoginDAO.cs, class Petugas.cs dan Form Login frmLogin.cs seperti gambar di bawah ini :

Untuk kode programnya silahkan ikuti seperti petunjuk di bawah ini.


Kode Program pada class Petugas.cs :
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Text;
    5 
    6 namespace AplikasiPayrollDAO.Model
    7 {
    8     public class Petugas
    9     {
   10         private string kode_Petugas;
   11         public string Kode_Petugas
   12         {
   13             get { return kode_Petugas; }
   14             set { kode_Petugas = value; }
   15         }
   16 
   17         private string nama_Petugas;
   18         public string Nama_Petugas
   19         {
   20             get { return nama_Petugas; }
   21             set { nama_Petugas = value; }
   22         }
   23 
   24         private string password_Petugas;
   25         public string Password_Petugas
   26         {
   27             get { return password_Petugas; }
   28             set { password_Petugas = value; }
   29         }
   30 
   31         private string status_Petugas;
   32         public string Status_Petugas
   33         {
   34             get { return status_Petugas; }
   35             set { status_Petugas = value; }
   36         }
   37     }
   38 }


Kode Program pada class LoginDAO.cs :
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Text;
    5 
    6 using MySql.Data.MySqlClient;
    7 using AplikasiPayrollDAO.Model;
    8 
    9 namespace AplikasiPayrollDAO.DAO
   10 {
   11     public class LoginDAO
   12     {
   13         private MySqlConnection conn;
   14         private string strSql = string.Empty;
   15 
   16         //constructor
   17         public LoginDAO(MySqlConnection conn)
   18         {
   19             this.conn = conn;
   20         }
   21 
   22         //Buat Method MappingRowToObject
   23         public Petugas MappingRowToObject(MySqlDataReader dtr)
   24         {
   25             Petugas lgn = new Petugas();
   26 
   27             lgn.Kode_Petugas = dtr["Kode_Petugas"] is DBNull ? string.Empty : dtr["Kode_Petugas"].ToString();
   28             lgn.Nama_Petugas = dtr["Nama_Petugas"] is DBNull ? string.Empty : dtr["Nama_Petugas"].ToString();
   29             lgn.Password_Petugas = dtr["Password_Petugas"] is DBNull ? string.Empty : dtr["Password_Petugas"].ToString();
   30             lgn.Status_Petugas = dtr["Status_Petugas"] is DBNull ? string.Empty : dtr["Status_Petugas"].ToString();
   31 
   32             return lgn;
   33         }
   34 
   35         //Salin record berdasarkan Primary Key di dalam tabel Petugas ke dalam class Login.cs
   36         public Petugas GetByKodePetugas(string Kode_Petugas)
   37         {
   38             Petugas lgn = null;
   39 
   40             strSql = "SELECT * FROM Petugas WHERE Kode_Petugas = @1";
   41 
   42             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
   43             {
   44                 cmd.Parameters.AddWithValue("@1", Kode_Petugas);
   45 
   46                 using (MySqlDataReader dtr = cmd.ExecuteReader())
   47                 {
   48                     if (dtr.Read())
   49                     {
   50                         lgn = MappingRowToObject(dtr);
   51                     }
   52                 }
   53             }
   54 
   55             return lgn;
   56         }
   57 
   58         //Cek tabel Petugas apakah terdapat record dengan Kode_Jabatan yang disebutkan
   59         public char CheckRecord(string Kode_Petugas, string Password_Petugas)
   60         {
   61             char YN = 'N';
   62             strSql = "SELECT * FROM Petugas WHERE Kode_Petugas = @1 AND Password_Petugas =@2";
   63 
   64             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
   65             {
   66                 cmd.Parameters.AddWithValue("@1", Kode_Petugas);
   67                 cmd.Parameters.AddWithValue("@2", Password_Petugas);
   68 
   69                 using (MySqlDataReader dtr = cmd.ExecuteReader())
   70                 {
   71                     if (dtr.HasRows)
   72                     {
   73                         YN = 'Y';
   74                     }
   75                     else
   76                     {
   77                         YN = 'N';
   78                     }
   79                 }
   80             }
   81 
   82             return YN;
   83         }
   84     }
   85 }


Kode Program pada class frmLogin.cs :
    1 using System;
    2 using System.Collections.Generic;
    3 using System.ComponentModel;
    4 using System.Data;
    5 using System.Drawing;
    6 using System.Linq;
    7 using System.Text;
    8 using System.Windows.Forms;
    9 
   10 using AplikasiPayrollDAO.DAO;
   11 using AplikasiPayrollDAO.Model;
   12 using AplikasiPayrollDAO.View;
   13 
   14 namespace AplikasiPayrollDAO.View
   15 {
   16     public partial class frmLogin : Form
   17     {
   18         private LoginDAO lgnDAO = null;
   19         private frmMenuUtama frmParent = null;
   20 
   21         //untuk menampung return value operasi database
   22         private char resultChr = 'N';
   23 
   24 
   25         public frmLogin(frmMenuUtama frmMU, DBConnection conn)
   26         {
   27             InitializeComponent();
   28 
   29             //Objek form menu utama
   30             frmParent = frmMU;
   31 
   32             //disable menu pada form menuutama
   33             frmParent.DisEnbMenuItem(false, false, false, false, false, false, false, false, false, false, true, true);
   34 
   35             //Buat objek lgnDAO untuk operasi database
   36             lgnDAO = new LoginDAO(conn.GetConnection());                      
   37         }
   38 
   39         //Method untuk menghanlde MessageBox.show
   40         private void msgInfo(string prompt)
   41         {
   42             MessageBox.Show(prompt, "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);
   43         }
   44 
   45         //Method untuk mengosongkan input
   46         private void ClearTextBox()
   47         {
   48             txtKodePetugas.Clear();
   49             txtPassword.Clear();
   50 
   51             txtKodePetugas.Focus();
   52         }
   53 
   54         private void btnBatal_Click(object sender, EventArgs e)
   55         {
   56             ClearTextBox();
   57         }
   58 
   59         private void btnTutup_Click(object sender, EventArgs e)
   60         {
   61             ClearTextBox();
   62             this.Hide();
   63         }
   64 
   65         private void btnMasuk_Click(object sender, EventArgs e)
   66         {
   67             if (txtKodePetugas.Text == "" || txtPassword.Text == "")
   68             {
   69                 msgInfo("Lengkapi terlebih dahulu Kode Petugas dan Password Petugas...");
   70             }
   71             else if (txtKodePetugas.Text.Length > 5 || txtPassword.Text.Length > 10)
   72             {
   73                 msgInfo("Kode Petugas Maksimum 5 Karakter...\nNama Petugas Maksimum 10 Karakter ");
   74             }
   75             else
   76             {
   77                 Petugas lgn = new Petugas();
   78 
   79                 lgn.Kode_Petugas = txtKodePetugas.Text;
   80                 lgn.Password_Petugas = txtPassword.Text;
   81 
   82                 //msgInfo("Cek Records");
   83                 resultChr = lgnDAO.CheckRecord(txtKodePetugas.Text, txtPassword.Text);
   84 
   85                 if (resultChr == 'Y')
   86                 {
   87                     lgn = lgnDAO.GetByKodePetugas(txtKodePetugas.Text);
   88 
   89                     //Informasi Panel
   90                     frmParent.statusStripPanel(lgn.Kode_Petugas, lgn.Nama_Petugas, lgn.Status_Petugas);
   91 
   92                     if (lgn.Status_Petugas == "Administrator")
   93                     {
   94                         //Setting Menu Administrator
   95                         frmParent.DisEnbMenuItem(true, true, true, true, true, true, true, true, true, true, false, true);
   96                     }
   97                     else
   98                     {
   99                         //Setting Menu User
  100                         frmParent.DisEnbMenuItem(true, true, true, true, false, false, true, true, true, true, false, true);
  101                     }
  102 
  103                     //Sembunyikan Form Login; 
  104                     ClearTextBox();
  105                     this.Hide();
  106                 }
  107                 else
  108                 {
  109                     msgInfo("Periksa kembali Kode Petugas dan Password yang anda masukkan !!!");                  
  110                 }    
  111             }
  112         }
  113     }
  114 }


Perbaikan dan Tambahan Kode Program class frmMenuUtama.cs :
Edit constructor frmMenuUtama :



















Tambahkan Public Method seperti berikut :
   39 //Setting Menu
   40         public void DisEnbMenuItem(bool fil, bool gol, bool jab, bool pot, bool peg, bool pet, bool trans, bool lap, bool util, bool kel, bool mas, bool sel)
   41         {
   42             fileToolStripMenuItem.Enabled = fil;
   43             golonganToolStripMenuItem.Enabled = gol;
   44             jabatanToolStripMenuItem.Enabled = jab;
   45             potonganToolStripMenuItem.Enabled = pot;
   46             pegawaiToolStripMenuItem.Enabled = peg;
   47             petugasToolStripMenuItem.Enabled = pet;
   48 
   49             transaksiToolStripMenuItem.Enabled = trans;
   50             laporanToolStripMenuItem.Enabled = lap;
   51             utilityToolStripMenuItem.Enabled = util;
   52 
   53             keluarToolStripMenuItem.Enabled = kel;
   54             masukToolStripMenuItem.Enabled = mas;
   55             selesaiToolStripMenuItem.Enabled = sel;
   56         }
   57 
   58         //informasi petugas
   59         public void statusStripPanel(string panel1, string panel2, string panel3)
   60         {
   61             Panel1.Text = panel1 + "          ";
   62             Panel2.Text = panel2 + "          ";
   63             Panel3.Text = panel3 + "          ";
   64         }


Dan tambahkan Private Method seperti berikut :
   85 private void loginToolStripMenuItem_Click(object sender, EventArgs e)
   86         {
   87             frmMasuk.Show();           
   88         }
   89 
   90         private void keluarToolStripMenuItem1_Click(object sender, EventArgs e)
   91         {
   92             DisEnbMenuItem(false, false, false, false, false, false, false, false, false, false, true, true);
   93             statusStripPanel("Kode", " Nama", "Status");
   94         }
   95 
   96         private void selesaiToolStripMenuItem_Click(object sender, EventArgs e)
   97         {
   98             this.Close();
   99         }   


Selesai sudah pembuatan fasilitas login untuk aplikasi payroll ini. Silahkan jalankan aplikasi yang sudah anda buat, namun sebelumnya jangan lupa untuk memasukkan 2 buah record ke dalam tabel Petugas, dimana 1 record berisi Status Pegawai = Administrator dan sebuah record lagi berisi Status Pegawai = User. Perhatikan gambar di bawah ini :

Untuk source code program dapat di download disini. Sekian dulu tutorial kali ini, mudah-mudahan bonus berikutnya bisa segera saya tulis. Selamat mencoba.

1 komentar:

  1. gan bisa minta source codenya yang sdah lengkap dengan tmbhan fitur lainnya ?

    BalasHapus