Tutorial membuat Aplikasi Kasir dan Tiket Wisata di Java Netbeans Bagian 1

Membuat aplikasi kasir dan aplikasi tiket di java Netbeans

1. Buka aplikasi netbeans
2. Buat project baru dengan nama aplikasi kasir dan tiket (nama aplikasi bebas) kemudian klik Finish.
 
3. Membuat Package untuk kasir dengan cara klik kanak pada Source PackagesNewJava Package… dengan nama home
4. Membuat JFrame Form dengan nama Home dan desain tampilan seperti dibawah


Cara membuat desain seperti diatas :


1. Edit text JMenuBar dengan (nama : Keluar) dan (nama variable : JMenu).
2. Untuk menambahkan gambar, maka edit gambar terlebih dahulu dengan aplikasi edit. Bisa menggunakan Paint atau aplikasi yang lain untuk menentukan ukuran gambar/resize agar pas digunakan. Disini menggunakan height : 225px
3. Klik kanan Jlabel(untuk gambar)propertiestext, lalu hapus isi text.
4. Masuk ke bagian iconpilih eksternal imagepilih gambar yang digunakan.
5. Sesuaikan gambar/foto dengan nama dan NIM menggunakan Jlabel.
6. Ubah nama button text dan variable botton
     •      Button 1 (Edit Text : KASIR), (Variable name : butkasir)
     •      Button 2 (Edit Text : TIKET), (Variable name : buttiket)
7. Edit button
Disini menggunakan background color : black
Font = Agency FB : Bold : 48
Size Button = 319, 110
8. Tambahkan source code berikut pada jMenuMousePressed sebagai menu exit
Klik JMenu(Keluar)EventMousemousePressed


9. Import location package dan file java

10. Tambahkan source code berikut untuk mengarahkan ke frame TiketWisata saat klik button TIKET

11. Tambahkan source code berikut untuk mengarahkan ke frame Kasir saat klik button KASIR

12. Agar ketika project di run dapat muncul di bagian tengah
Klik kanan formpropertiescodeCheck Generate Center.
13. Untuk menjalankan project klik kanan pada project BidangGUI(Home) klik RUN.

5. Membuat Package untuk kasir dengan cara klik kanak pada Source PackagesNewJava Package… dengan nama kasir


Already exists karena saya sudah buat sebelumnya
6. Setelah membuat project selanjutnya membuat jFrameForm dengan nama Kasir kemudian klik Finish

7. Kemudian pilih tab Desain untuk mengedit UI dengan metode drag and drop dengan pallete yang sudah tersedia. Buat UI dan variabelnya seperti dibawah ini.



Keterangan :
1. Menu Bar
2. Menu Item : mMenu
3. jLabel
4. jLabel
5. jTextField : tSearch
6. jTextField : tJumlahHarga
7. jList : lNamaBarang
8. jList : lHargaJumlah
9. jLabel
10. jLabel
11. jLabel
12. jTextField : tTotalHarga
13. jTextField : tBayar
14. jTextField : tKembalian
15. jButton : btnBayar
16. jButton : addHargaJumlah
17. jButton : btnDeleteListBarang
18. jTable : tPembelian
19. jButton : btnDelete
20. jButton : btnClearTable

8. Setelah desain UI sudah selesai sekarang ke bagian coding nya. Pertama deklarasi variabel global dan object atau fungsi yang akan di pakai. Seperti di bawah.


//deklarasi
    static List<Integer> tHarga = new ArrayList<Integer>();
    DefaultListModel mdlNamaBarang = new DefaultListModel();
    DefaultListModel mdlJumlahHarga = new DefaultListModel();
    JList listBarangHarga = new JList(mdlJumlahHarga);
    int baris = 0;
    static Object kolom[] = {"No.", "jumlah Item", "Total Harga", "Tanggal"};
    DefaultTableModel tbl = new DefaultTableModel(kolom, baris);
    List<String> ArrayBarang = new ArrayList<String>();
//    ArrayList<Integer> listTable = new ArrayList<>();
    //array tabel
    static ArrayList<Integer> ArrJumlahItem = new ArrayList<>();
    static ArrayList<Integer> ArrTotal = new ArrayList<>();
    static ArrayList<Date> ArrTanggal = new ArrayList<>();

9. Setelah itu coding di bagian componentShown dengan cara Klik kanan pada Frame KasirEventComponentComponenShown


10. Tulis kode seperti dibawah ini, kode dibawah berfungsi untuk menampilkan data ke List dan set table model saat form dijalankan


//code 

String[] listBarang = getListBarang();
        for (int i = 0;i<listBarang.length;i++){
            mdlNamaBarang.addElement(listBarang[i]);
            lNamaBarang.setModel(mdlNamaBarang);
        } 
        tTotalHarga.setEditable(false);
        tKembalian.setEditable(false);
        tPembelian.setModel(tbl);

//end

11. Agar saat list nama barang di select kemudian button tambah di klik akan menambah nama barang dan harga sesuai yang di select di list nama barang dan menampilkan total harga. Tambahkan kode berikut di ActionPerformed addHargaJumlah. Untuk menambahkan action performed klik btn dua di desain atau klik kananEventsActionactionPerformed
  

//code

private void addHargaJumlahActionPerformed(java.awt.event.ActionEvent evt) {                                               
        // TODO add your handling code here:
        int index;
        //get list barang
        String[] listBarang = getListBarang();
        
        List <String> ArrayBarang = new ArrayList<String>();
        ArrayBarang = lNamaBarang.getSelectedValuesList();
        String[] ArrBarang = new String [ArrayBarang.size()];
        ArrBarang = ArrayBarang.toArray(ArrBarang);
        String select = lNamaBarang.getSelectedValue();
        
        //call function find index
        index = mencari(listBarang,select);
        Integer[] ArrHarga =getListHarga();
        if (index==-1){
            JOptionPane.showMessageDialog(this, "kesalahan");
        }else{
        for(int i=0; i<ArrayBarang.size(); i++){
            mdlJumlahHarga.addElement(ArrBarang[i]+" @"+ArrHarga[index]);
            lHargaJumlah.setModel(mdlJumlahHarga);
            tHarga.add(ArrHarga[index]);
            
            }
        }
        int hasil = getTotal();
        tTotalHarga.setText(""+hasil);  
    }    

//end

12. Kemudian saat jTextField tBayar di isi jumlah uang pembayaran user maka jTextField tKembalian akan menampilkan kembalian dengan rumus tBayar – tTotalHarga. Masukkan kode seperti dibawah.


//code

private void tBayarKeyReleased(java.awt.event.KeyEvent evt) {                                   
        // TODO add your handling code here:
        int kembalian;
        int total_harga = Integer.parseInt(tTotalHarga.getText());
        int bayar = Integer.parseInt(tBayar.getText());
        
        kembalian = getKembalian(bayar, total_harga);
        tKembalian.setText(String.valueOf(kembalian));
    }    

//end

13. Agar saat jButton btnBayar diklik akan menambahkan hasil pergitungan ke jTable tPembelian. Masukkan kode seperti dibawah.


private void btnBayarActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String total_harga = tTotalHarga.getText().toString();
        Date tgl = new Date();
        int hasil;
        int total_item, row;
        hasil = getTotal();
        total_item = tHarga.size();
        tbl.getDataVector().removeAllElements();
        tbl.fireTableDataChanged();
        if (total_harga.equals("")) {
            JOptionPane.showMessageDialog(this, "Data masih kosong");
        } else {
            ArrTotal.add(hasil);
            ArrJumlahItem.add(total_item);
            ArrTanggal.add(tgl);
            for (int i = 0; i < ArrTotal.size(); i++) {
                row = i + 1;
                tbl.addRow(new Object[]{row, ArrJumlahItem.get(i), ArrTotal.get(i), ArrTanggal.get(i)});
            }
            tPembelian.setModel(tbl);
            tTotalHarga.setText("");
            tBayar.setText("");
            tKembalian.setText("");
            clear();
            tHarga.removeAll(tHarga);
        }
    }

14. Agar saat jTextField tSearch diisi masukkan jList lNamaBarang akan menampilkan hasil yang relevan tambahkan kode dibawah ini :


//code

private void tSearchKeyReleased(java.awt.event.KeyEvent evt) {                                    

        clearListBarang();
        String[] listBarang = getListBarang();
        String cari = tSearch.getText();
        for (int i =0;i<listBarang.length;i++){
            if (containsIgnoreCase(listBarang[i],cari)){
                mdlNamaBarang.addElement(listBarang[i]);
                lNamaBarang.setModel(mdlNamaBarang);
            }
        }
    }          

//end

15. Fungsi untuk jButton btnClearTable
//code

private void btnClearTableActionPerformed(java.awt.event.ActionEvent evt) {                                              
        tbl.getDataVector().removeAllElements();
        tbl.fireTableDataChanged();
    }
//end
16. Fungsi untuk jButton btnDelete
//code
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        int  baris = tPembelian.getSelectedRow();
        tbl.removeRow(baris);
        listTable.remove(baris);
    }
//end
17. Fungsi untuk jButton btnDeleteListBarang
//code
private void btnDeleteListBarangActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        // TODO add your handling code here:
        tTotalHarga.setText("");
        tBayar.setText("");
        tKembalian.setText("");
        clear();
        tHarga.removeAll(tHarga);
    }      
//end
18. Menu Item mMenu 
//code
private void mMenuMousePressed(java.awt.event.MouseEvent evt) {                                   
        // TODO add your handling code here:
        Home home = new Home();
        home.setLocationRelativeTo(this);
        this.setVisible(false);
        home.setVisible(true);
    }  
//end
19. Sampai langkah ini masih ada yang merah atau error karena kita belum menambahkan fungsi. Tambahkan fungsi di bawah main seperti di bawah ini.

//fungsi
    private static int mencari (String[] nilai, String cari){
        for (int i =0;i<nilai.length;i++){
            if (cari.equals(nilai[i])){
                return i;
            }
        }return -1;
    }
    
    static String[] getListBarang(){
        ArrayList<String> listBarang = new ArrayList<>();
        listBarang.add("Mie Sedaap Goreng");
        listBarang.add("Mie Sedaap Kuah");
        listBarang.add("Mie Indomie");
        listBarang.add("Aqua 1500 ml");
        listBarang.add("Aqua 330 ml");
        listBarang.add("Aqua 250 ml");
        listBarang.add("Aqua 600 ml");
        listBarang.add("Le Mineral 330 ml");
        listBarang.add("Le Mineral 600 ml");
        listBarang.add("Le Mineral 1500 ml");
        //convert arraylist to array barang
        String[] ArrBarang = new String [listBarang.size()];
        ArrBarang = listBarang.toArray(ArrBarang);
        return ArrBarang;
    }
    static Integer[] getListHarga(){
        //list harga
        ArrayList<Integer> listHarga = new ArrayList<>();
        listHarga.add(2500);
        listHarga.add(2500);
        listHarga.add(2500);
        listHarga.add(5000);
        listHarga.add(2000);
        listHarga.add(1500);
        listHarga.add(3000);
        listHarga.add(2000);
        listHarga.add(3000);
        listHarga.add(5000);
        //convert arraylist to array harga
        Integer[] ArrHarga = new Integer[listHarga.size()];
        ArrHarga = listHarga.toArray(ArrHarga);
        return ArrHarga;
    }
    
    public static int getKembalian(int byr, int ttl){
        int kembali = byr-ttl;
        return kembali;
    }
   
    public static int getTotal() {
        int hasil = 0;
        for (int harga : tHarga){
                hasil += harga;
            }
        return hasil;
    }

    public void clear(){
         if(mdlJumlahHarga.size() > 0){
         mdlJumlahHarga.removeAllElements();
         mdlJumlahHarga.clear();
         listBarangHarga.removeAll();
         }
        }
    public void clearListBarang(){
         if(mdlNamaBarang.size() > 0){
         mdlNamaBarang.removeAllElements();
         mdlNamaBarang.clear();
         lNamaBarang.removeAll();
         }
        }
    
    public static boolean containsIgnoreCase(String str, String subString) {
        return str.toLowerCase().contains(subString.toLowerCase());
    }

20. Kalau sudah selesai pastikan semua code sudah ditulis dengan benar, kemudina coba run. Kalo masih ada error bisa dilihat error nya apa, kemungkinan ada salah syntax atau typo. Sampai sini kita sudah selesai membuat aplikasi kasir di Package kasir. Tutorial selanjutnya membuat aplikasi tiket wisata


Full project bisa di download di GitHub https://github.com/dicky16/uas

Post a Comment

0 Comments