Aplikasi Sistem Informasi Kepegawaian Menggunakan Bahasa Pemograman Java

Kali saya berbagi untuk yang ingin belajar mengenai pemrogaman java… Kali ini saya membuat aplikasi desktop tentang sistem informasi kepegawaian. Untuk hasil aplikasinya perhatikan gambar berikut !!



Tool yang saya pergunakan yaitu
- Neatbeans 7.1
- Xampp 1.7.1
- Jcalender 1.3.2
  Aplikasi dekstop ini saya gunakan Jcalender untuk lebih memudahkan lagi dalam penginputan tanggal selain juga lebih keren untuk tampilan interfacenya !
untuk sobat yang mau download klik link download di bawah ini :
Download Jcalender 1.3.2

  •  Langkah pertama yaitu silahkan anda membuka aplikasi neatbeans tersebut kemudian silahkan anda membuat sebuah project baru. Kemudian desain sebuah form menurut kreatifitas anda (supaya tidak bingung nantinya untuk komponen jTexfield, Radiobutton, Jcombobox, Tabel serta menu tombolnya disesuaiakan saja dulu).
  • Langkah kedua silahkan copy paste koding dibawah ini dan letakkan di bagian atas menu source pada neatbeans tersebut .
import java.sql.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.swing.*;
import javax.swing.table.TableModel.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
  • kemudian buat database di xampp untuk kali ini nama database saya yaitu ‘bappeda’ dan untuk nama tabelnya yaitu ‘pengangkatan’, untuk koding SQL nya sebagai berikut:
CREATE TABLE IF NOT EXISTS `pengangkatan` ( `nip` varchar(21) NOT NULL, `pejabat` varchar(100) NOT NULL, `surat` varchar(100) NOT NULL, `tanggal` date NOT NULL, `pangkat` varchar(100) NOT NULL, `tmt` date NOT NULL, `janji` varchar(50) NOT NULL, PRIMARY KEY (`nip`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

  • Kemudian tambahkan script dibawah ini dibawah langkah kedua untuk menu publiknya :
public class menupns extends javax.swing.JFrame {
Connection con=null;
ResultSet rs=null;
TableModelcoba tb=null;
DateFormat dt;
String tanggal;
String formattgl;
SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");
TableModelcoba DftTabMode;
TableColumn column;
 /**
* Creates new form menupns
*/ public menupns() {
super("Identitas Data PNS");
try { Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bappeda","root","");
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery("select * from pengangkatan ORDER BY nip ASC");
tb=new TableModelcoba(rs);
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
} initComponents();
dt = new SimpleDateFormat("yyyy-MM-dd");
formattgl = dt.format(new java.util.Date());
tampil("first");
jTable1.setModel(tb);
lebarKolom();
setLocation(200,50);
}

  • Langkah selanjutnya yaitu klik dua kali button save yang sebelumnya tadi telah kita buat, kemudian masukkan script dibawah ini: 
try {

String nip = jTextField7.getText();
String pejabat = jTextField8.getText();
String surat = jTextField9.getText();
String pangkat = (String) jComboBox3.getSelectedItem();
if(jRadioButton1.isSelected()==true){ String janji = jRadioButton1.getText();
}
if(jRadioButton2.isSelected()==true){ String janji = jRadioButton2.getText();
}
String sql = "INSERT INTO pengangkatan(nip,pejabat,surat,tanggal,pangkat,tmt,janji) " + "VALUES (?,?,?,?,?,?,?)";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, nip);
stmt.setString(2, pejabat);
stmt.setString(3, surat);
stmt.setString(4, tanggal);
stmt.setString(5, pangkat);
stmt.setString(6, formattgl);
if(jRadioButton1.isSelected()==true){ String janji = jRadioButton1.getText();
stmt.setString(7, janji);
} if(jRadioButton2.isSelected()==true){ String janji = jRadioButton2.getText();
stmt.setString(7, janji);
}
int count = stmt.executeUpdate();
JOptionPane.showMessageDialog(null, +count + " Data Telah Masuk");
refresh();
tampil("last");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
 }

  • Langkah selanjutnya yaitu klik dua kali button update yang sebelumnya tadi telah kita buat, kemudian masukkan script dibawah ini:

        try {
            String nip = jTextField7.getText();
            String pejabat = jTextField8.getText();
            String surat = jTextField9.getText();
            String pangkat = (String) jComboBox3.getSelectedItem();
            if(jRadioButton1.isSelected()==true){
                String janji = jRadioButton1.getText();
            }
            if(jRadioButton2.isSelected()==true){
                String janji = jRadioButton2.getText();
            }
         
            String sql = "UPDATE pengangkatan SET pejabat=?,surat=?,tanggal=?,pangkat=?,tmt=?,janji=? "
                    + " WHERE nip=?";
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.setString(1, pejabat);
            stmt.setString(2, surat);
            stmt.setString(3, tanggal);
            stmt.setString(4, pangkat);
            stmt.setString(5, formattgl);
            if(jRadioButton1.isSelected()==true){
                String janji = jRadioButton1.getText();
                stmt.setString(6, janji);
            }
            if(jRadioButton2.isSelected()==true){
                String janji = jRadioButton2.getText();
                stmt.setString(6, janji);
            }
            stmt.setString(7, nip);
            int count = stmt.executeUpdate();
            JOptionPane.showMessageDialog(null, count + " Data Telah Diubah");
            stmt.close();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }

  • Langkah selanjutnya yaitu klik dua kali button delete yang sebelumnya tadi telah kita buat, kemudian masukkan script dibawah ini:
try {
 String nip = jTextField7.getText();
String sqlInsert = "DELETE FROM pengangkatan " + " WHERE " + " nip=?";
PreparedStatement stmt = con.prepareStatement(sqlInsert);
stmt.setString(1, nip);
int count = stmt.executeUpdate();
JOptionPane.showMessageDialog(null, count + " Data Telah DiHapus");
stmt.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}

  • Langkah selanjutnya yaitu klik dua kali button refresh yang sebelumnya tadi telah kita buat, kemudian masukkan script dibawah ini:
try {
 jTextField7.setText("");
jTextField8.setText("");
jTextField9.setText("");
jDateChooser1.setDate(null);
jDateChooser2.setDate(null);
} catch (Exception e) {
}

  • Langkah selanjutnya yaitu kita membuat windows activated, silahkan kembali ke tempat form desain pada neatbens terus klik kanan frame pilih event kemudian pilih window terus klik windowaktivated[form windowaktivated], Untuk lebih jelasakan lihat gambar berikut:


    kemudian masukkan script berikut :
try { Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bappeda","root","");
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery("select * from pengangkatan ORDER BY nip ASC");
tb=new TableModelcoba(rs);
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage()); }
jTable1.setModel(tb);
lebarKolom();
}

  • langkah selanjutnya masukkan script menu void :


void refresh(){
    try {
            Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                               ResultSet.CONCUR_READ_ONLY);
            rs=stmt.executeQuery("select * from pengangkatan");
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }       
    }
      
 
     public void tampil(String s){
        try{
            if (s.equals("previous")) rs.previous();
            if (s.equals("next")) rs.next();
            if (s.equals("first")) rs.first();
            if (s.equals("last")) rs.last();
            jTextField7.setText(rs.getString("nip"));
            jTextField8.setText(rs.getString("pejabat"));
            jTextField9.setText(rs.getString("surat"));
            jDateChooser1.setDate(rs.getDate("tanggal"));
            jComboBox3.setSelectedItem(rs.getString("pangkat"));
            jDateChooser2.setDate(rs.getDate("tmt"));
            if(rs.getString("janji").equalsIgnoreCase("Sudah")){
                        jRadioButton1.setSelected(true);
                    }
            if(rs.getString("janji").equalsIgnoreCase("Belum")){
                        jRadioButton2.setSelected(true);
                    }
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null,e.getMessage());                           
        }       
    }
     

    void display_table(){
        int row=jTable1.getSelectedRow();
        String kunci=String.valueOf(jTable1.getValueAt(row, 0));
        try {
            rs.first();
            do {               
                if (rs.getString("nip").equals(kunci)) {
                    jTextField7.setText(rs.getString("nip"));
                    jTextField8.setText(rs.getString("pejabat"));
                    jTextField9.setText(rs.getString("surat"));
                    jDateChooser1.setDate(rs.getDate("tanggal"));
                    jComboBox3.setSelectedItem(rs.getString("pangkat"));
                    jDateChooser2.setDate(rs.getDate("tmt"));
                    if(rs.getString("janji").equalsIgnoreCase("Sudah")){
                        jRadioButton1.setSelected(true);
                    }
                    if(rs.getString("janji").equalsIgnoreCase("Belum")){
                        jRadioButton2.setSelected(true);
                    }
                }
            } while (rs.next());
           
            refresh();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
   
    
    void lebarKolom(){
                    TableColumn column;
                    jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
                    column = jTable1.getColumnModel().getColumn(0);
                    column.setPreferredWidth(150);
                    column = jTable1.getColumnModel().getColumn(1);
                    column.setPreferredWidth(200);
                    column = jTable1.getColumnModel().getColumn(2);
                    column.setPreferredWidth(180);
                    column = jTable1.getColumnModel().getColumn(3);
                    column.setPreferredWidth(130);
                    column = jTable1.getColumnModel().getColumn(4);
                    column.setPreferredWidth(150);               
                    column = jTable1.getColumnModel().getColumn(5);
                    column.setPreferredWidth(100);
                column = jTable1.getColumnModel().getColumn(6);
                    column.setPreferredWidth(100);
                }

  • langkah selanjutnya kita memasukkan script display table pada tabel yang tabel, caranya klik kanan pada tabel kemudian pilih Event kemudian pilih focus kemudian klik focusGained, untuk lebih jelasnya perhatikan gambar dibawah ini :


Kemudian masukkan script ini
display_table();

  • kembali lagi di tabel tersebut klik kanan pada tabel lagi kemudian pilih Event kemudian pilih Key kemudian klik KeyPressed (sama halnya dengan kegiatan pada gambar untuk menu focus). Kemudian masukkan script ini:
display_table();
          lakukan langkah tersebut dengan script yang sama untuk menu key – keyReleased serta untuk menu Mouse – MouseClicked. 

  • Pada aplikasi ini untuk menu tanggal saya menggunakan JCalender 1.3.2 (JDatechooser), untuk aplikasi nya silahkan anda download dengan klik link pada menu tool yang saya sebutkan diatas serta cara untuk mengimpor aplikasi tersebut kedalan neatbeans, silahkan anda search di google, banyak kok situs yang menyediakan cara untuk impor JCalender ke Neatbens 
         Nb : Untuk yang tidak menggunakan JDateChosser silahakan sesuaiakan koding tersebut




  • Klik kanan menu JDateChosser pada label tanggal kemudian pilih Event – PropertyCahnge-propertychange[Datechooser], untuk lebih jelasnya perhatikan gambar dibawah ini.
 

          kemudian masukkan script dibawah ini :

if (jDateChooser1.getDate() != null) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
tanggal = format.format(jDateChooser1.getDate());
}

  • Pada aplikasi ini kita menggunakan 2 JDateChooser yaitu pada label T.M.T PNS, silahkan lakukan yang sama pada JDatechooser sebelumnya kemudian masukkan script berikut :
if (jDateChooser2.getDate() != null) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
formattgl = format.format(jDateChooser2.getDate());
}

Ok gann, silahkan di Run, kalau tidak ada terjadi kesalahan maka model aplikasi dekstopnya akan seperti pada gambar ini gan !!!

Share On:

9 comments:

  1. maaf izin copas gan.mau ane tiru dikit2.gak banyak kok sambil ane belajar.terima kasih gan.mantap.

    ReplyDelete
  2. maaf izin copas gan.mau ane tiru dikit2.gak banyak kok sambil ane belajar.terima kasih gan.mantap.

    ReplyDelete
  3. mantap gan,....... izin kopas n belajar,....

    ReplyDelete
  4. Bagi dong, source sma databasenya, 😂

    ReplyDelete