Selasa, 25 Juni 2019

Form Penjualan Barang Aplikasi Minimarket - Java MySQL


     Pada form ini, dibuat untuk melakukan penjualan barang. Nantinya, form ini akan terdapat dua buah tabel. Tabel yang pertama adalah tabel daftar barang, yaitu untuk melihat barang apa saja yang ada, dimana barang tersebut akan ditampilkan ketika stok-nya lebih dari nol, jika stok kurang maka tidak akan ditampilkan. Setelah dibeli, barang akan di tampung pada tabel kedua. Untuk itu simak lebih teliti pada panduan berikut ini :
1. Buatlah sebuah JForm, desain bebas akan tetapi juga dapat mengikuti desain form seperti berikut :


2. Dan beri nama masing-masing txtfield, jDateChooser, button, table, serta jLabel. Selanjutnya, dalam form ini, ketika user belum melakukan transaksi baru. ada beberapa fungsi yang di setEnabled False pada kondisi awal, yaitu :
private void kondisiawal() {
        btninsert.setEnabled(false);
        btndelete.setEnabled(false);
        txt_idbarang.setEnabled(false);
        txt_jmlh.setEnabled(false);
        tbl_barangbeli.setEnabled(false);
        txt_tot.setEnabled(false);
        txt_bayar.setEnabled(false);
        clear();
        btntransaksibaru.setEnabled(true);
        idPenjualan = "";
    }
Sedangkan setelah kondisi transaksi aktif akan di setEnabled True, yaitu : 
 private void kondisiAktif() {
        btninsert.setEnabled(true);
        btndelete.setEnabled(true);
        txt_jmlh.setEnabled(true);
        tbl_barangbeli.setEnabled(true);
        btntransaksibaru.setEnabled(false);
        txt_bayar.setEnabled(true);
        clear();
    }
3. Setelah itu kita akan membuat kode tanggal secara otomatis pada saat button transaksi baru di klik. Sebelumnya kita juga pernah melakukannya pada transaksi pengadaan sebelumnya. Masih ingat? jika tidak saya akan memberikan source code diman source code tersebut termasuk bernama InsertTabelPenjualan ( ):
 private String insertTabelPenjualan() {
        try {
            Date date = new Date();
            SimpleDateFormat dateformat=new SimpleDateFormat ("yyyy-MM-dd");
            String tanggal=dateformat.format(date);
            txttanggal.setDate(date);

            SimpleDateFormat dateformat2=new SimpleDateFormat ("dd.MM.yyyy");
            String tanggal2=dateformat2.format(date);
            int count = 100;
            String sqltanggal = "select tanggal_penjualan,id_penjualan from penjualan";
            resultSet = statement.executeQuery(sqltanggal);
            while (resultSet.next()) {
                String data1 = resultSet.getString(1);
                String data2 = resultSet.getString(2);
                if (data1.equals(tanggal)) {
                    if (count == Integer.valueOf(data2.substring(14, 17))) {
                        count++;
                    }
                }
            }
            idPenjualan = "TJ." + tanggal2 + "." + count;
            String sql = "insert into penjualan values('" + idPenjualan + "','"+Form_Login.userLogin+"','" + tanggal + "',0)";
            statement.executeUpdate(sql);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
        return idPenjualan;
    }
Keterangan : source code diatas akan menampilkan kode tanggal secara otomatis. sehingga tidak perlu melakukan inputan.

4. Berikutnya adalah , langkah untuk membuat bagaimana jika terjadi transaksi maka terdapat stok barang yang berkurang dan langsung ditampilkan pada tabel. Maka perlu adanya update stok barang. Jika terjadi cancel dalam melakukan transaksi, maka stok barang harus bertambah, sehingga kita membutuhkan update stok barang. kemudian laba akan dihitung pada tiap transaksi. Berikut source code untuk menghitung laba :
Source code memperoleh laba :
 private double hitungLaba() throws SQLException {
        Vector vektorIdPengadaan = new Vector();
        Vector vektorIdBarang = new Vector();
        Vector jum = new Vector();
        Vector hargaBeli = new Vector();
        Vector hargaJual = new Vector();
        double laba = 0;
        try {
            String sql = "select r.id_pengadaan,r.id_barang,r.harga_beli_satuan,b.harga_jual,r.belum_terjual "
                    + "from rel_pengadaan_barang r,barang b "
                    + "where r.id_barang=b.id_barang AND r.id_barang='" + txt_idbarang.getText() + "' and r.belum_terjual>0";
            resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                vektorIdPengadaan.addElement(resultSet.getString(1));
                vektorIdBarang.addElement(resultSet.getString(2));
                hargaBeli.addElement(resultSet.getDouble(3));
                hargaJual.addElement(resultSet.getDouble(4));
                jum.addElement(resultSet.getInt(5));
            }
            int jumlah;
            int jumlahJual = Integer.valueOf(txt_jmlh.getText());
            for (int i = 0; i < vektorIdPengadaan.size(); i++) {
                jumlah = jum.elementAt(i) - jumlahJual;
                if (jumlah >= 0) {
                    try {
                        String query = "update rel_pengadaan_barang set belum_terjual=" + jumlah + " where id_pengadaan='" + vektorIdPengadaan.elementAt(i) + "' and id_barang='" + vektorIdBarang.elementAt(i) + "'";
                        statement.executeUpdate(query);
                        laba = laba + (hargaJual.elementAt(i) - hargaBeli.elementAt(i)) * jumlahJual;
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(null, e.getMessage());
                    }
                    break;
                } else {
                    try {
                        String query1 = "update rel_pengadaan_barang set belum_terjual=" + 0 + " where id_pengadaan='" + vektorIdPengadaan.elementAt(i) + "' and id_barang='" + vektorIdBarang.elementAt(i) + "'";
                        statement.executeUpdate(query1);
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(null, e.getMessage());
                    }
                    laba = laba + (hargaJual.elementAt(i) - hargaBeli.elementAt(i)) * jum.elementAt(i);
                    jumlahJual = -1 * jumlah;
                }
            }
        } catch (NumberFormatException n) {
            JOptionPane.showMessageDialog(null, n.getMessage());
        }
        return laba;
    }
Source code untuk update stok barang : 
 private void UpdateStok(String ubah) {
        int stokBaru = 0;
        try {
            if(ubah.equals("insert")){
                stokBaru = cekStok() - Integer.parseInt(txt_jmlh.getText());
            }else if(ubah.equals("delete")){
                stokBaru=cekStok()+jml_awal;
            }
            String total = "UPDATE barang set stok ='" + stokBaru + "' where id_barang = '" + id_barang + "'";
            statement.executeUpdate(total);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
            System.out.println("" + e.getMessage());
        }
    }
5. Bagaimana untuk menampilkan data pada tabel pertama dan tabel kedua? Untuk tabel pertama merupakan tabel dimana tabel tersebut untuk melihat stok-stok yang tersedia atau sudah kosong. Langkahnya adalah :
private void selectTabelHargaJual(){
        Object header[] = {"ID BARANG","NAMA BARANG","HARGA JUAL","STOK"};
        DefaultTableModel defaultTable = new DefaultTableModel(null,header);
        tbl_barangjual.setModel(defaultTable);

        int baris = tbl_barangjual.getRowCount();
        for (int i = 0; i < baris; i++) {
            defaultTable.removeRow(i);
        }

        String sql_select = "select id_barang,nama_barang,harga_jual,stok from barang where stok > 0";
        try {
            statement = k.connection.createStatement();
            resultSet = statement.executeQuery(sql_select);

            while(resultSet.next()){
                String idBarang = resultSet.getString(1);
                String namaBarang = resultSet.getString(2);
                String harga_jual = resultSet.getString(3);
                String stok = resultSet.getString(4);

                String kolom[] = {idBarang,namaBarang,harga_jual,stok};
                defaultTable.addRow(kolom);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
Kemudian tabel kedua merupakan tabel untuk mengetahui pembelian barang : 
   private void selectTabelHargaBeli() {
        Object header[] = {"ID PENJUALAN", "ID BARANG", "NAMA BARANG", "HARGA", "JUMLAH", "TOTAL HARGA"};
        DefaultTableModel defaultTable = new DefaultTableModel(null, header);
        tbl_barangbeli.setModel(defaultTable);

        int baris = tbl_barangbeli.getRowCount();
        for (int i = 0; i < baris; i++) {
            defaultTable.removeRow(i);
        }

        String sql_select = "select r.id_penjualan,r.id_barang,b.nama_barang,b.harga_jual,r.jumlah,r.total_harga "
                + "from rel_penjualan_barang r, barang b where r.id_barang = b.id_barang and r.id_penjualan ='" + idPenjualan + "'";
        try {
            statement = k.connection.createStatement();
            resultSet = statement.executeQuery(sql_select);

            while (resultSet.next()) {
                String idjual = resultSet.getString(1);
                String idBarang = resultSet.getString(2);
                String namaBarang = resultSet.getString(3);
                String harga = resultSet.getString(4);
                String jml = resultSet.getString(5);
                String total = resultSet.getString(6);

                String kolom[] = {idjual, idBarang, namaBarang, harga, jml, total};
                defaultTable.addRow(kolom);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
            System.out.println("" + e.getMessage());
        }
    }
6. Kemudian berikutnya untuk melengkapi saya akan tampilkan source code insert dan delete. Dimana kedua fungsi tersebut sangat penting untuk melakukan insert data serta menghapus data jika terjadi kekeliruan peng-entrian data :
Source code insert data :
private void insertRelPenjualan() {
        double total = Integer.parseInt(txt_jmlh.getText()) * Double.parseDouble(txt_hrga.getText());

        try {
            String sql = "INSERT INTO rel_penjualan_barang "
                    + "VALUES('" + txt_idbarang.getText() + "','" + idPenjualan + "','" + txt_jmlh.getText() + "','"+hitungLaba()+"','" + total + "')";
            statement = k.connection.createStatement();
            statement.executeUpdate(sql);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
            System.out.println("" + e.getMessage());
        }
    }
Source code delete data :
private void delete(){
        String sql_delete="DELETE FROM rel_penjualan_barang WHERE ID_PENJUALAN='"+idPenjualan+"' AND ID_BARANG='"+idHapus.getText()+"'";
        try {
            statement=k.connection.createStatement();
            statement.executeUpdate(sql_delete);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Data masih digunakan!!");
            System.out.println(""+e.getMessage());
        }
    }
Kemudian jalankan programnya, dan coba lakukan transaksi : 

SetEnabled False ( ) :
Sebelum transaksi baru di klik

SetEnabled True ( ) :
Sesudah transaksi baru di klik

Insert Data  :
Pembelian barang "Pensil" sejumlah 2 

Barang telah masuk dan stok berkurang

Delete data :
Delete pada nama barang : "Pensil"

Stok kembali seperti sebelum di jual

Sabtu, 18 Mei 2019

contoh ERD dan LRS perpustakaan

Contoh Entity Relationship Diagram(ERD) dan Logical Record Structure(LRS) Perpustakaan
Sebelum mulai,sebaiknya kita mengetahui pengertian dan bagian-bagian dari ERD dan LRS
Pengertian Menurut Entity Relationship Diagram (ERD)
          Menurut salah satu para ahli, Brady dan Loonam (2010), Entity Relationship diagram (ERD) merupakan teknik yang digunakan untuk memodelkan kebutuhan data dari suatu organisasi, biasanya oleh System Analys dalam tahap analisis persyaratan proyek pengembangan system. Sementara seolah-olah teknik diagram atau alat peraga memberikan dasar untuk desain database relasional yang mendasari sistem informasi yang dikembangkan. ERD bersama-sama dengan detail pendukung merupakan model data yang pada gilirannya digunakan sebagai spesifikasi untuk database.
Apakah komponen yang terbentuk didalam Entity Relationship Diagram (ERD)?
Dalam pembentukan ERD terdapat 3 komponen yang akan dibentuk yaitu :
a. Entitas
entity (entitas) yaitu suatu obyek yang dapat dibedakan dari lainnya yang dapat diwujudkan dalam basis data. Pengertian lainnya menurut Brady dan Loonam (2010), entitas adalah objek yang menarik di bidang organisasi yang dimodelkan.
Contoh : Pegawai,Datapenyimpanan dan Buku.
b.  Hubungan (relasi/relationship)
Suatu hubungan adalah hubungan antara dua jenis entitas dan direpresentasikan sebagai garis lurus yang menghubungkan dua entitas.
Contoh : petugas Melayani Anggota,relasinya adalah Melayani
c.  Atribut
Atribut memberikan informasi lebih rinci tentang jenis entitas. Atribut memiliki struktur internal berupa tipe data. Jenis-jenis atribut :


·                     Atribut Key
Atribut Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data ( Row/Record ) dalam tabel secara unik. Dikatakan unik jika pada atribut yang dijadikan key tidak boleh ada baris data dengan nilai yang sama
Contoh : No_pegawai,No_anggota
·                     Atribut simple
atribut yang bernilai atomic, tidak dapat dipecah/ dipilah lagi
Contoh : Alamat, penerbit, tahun terbit, nama.
·                     Atribut Multivalue
nilai dari suatu attribute yang mempunyai lebih dari satu (multivalue) nilai dari atrribute yang bersangkutan
Contoh : dari sebuah buku, yaitu terdapat beberapa pengarang.
·                     Atribut Composite
Atribut composite adalah suatu atribut yang terdiri dari beberapa atribut yang lebih kecil yang mempunyai arti tertentu yang masih bisah dipecah lagi atau mempunyai sub attribute.
Contoh : dari entitas nama yaitu nama depan, nama tengah, dan nama belakang
·                     Atribut Derivatif
Atribut yang tidak harus disimpan dalam database Ex. Total. atau atribut yang dihasilkan dari atribut lain atau dari suatu relationship. Atribut ini dilambangkan dengan bentuk oval yang bergaris putus-putus
Derajat relasi atau kardinalitas rasio
Menjelaskan jumlah maksimum hubungan antara satu entitas dengan entitas lainnya
·                     One to One (1:1)
Setiap anggota entitas A hanya boleh berhubungan dengan satu anggota entitas B, begitu pula sebaliknya.
·                     One to many (1:M / Many)
Setiap anggota entitas A dapat berhubungan dengan lebih dari satu anggota entitas B tetapi tidak sebaliknya.
·                     Many to Many (M:M)
Setiap entitas A dapat berhubungan dengan banyak entitas himpunan entitas B dan demikian pula sebaliknya
Simbol-simbol untuk membuat diagram ERD:
contoh Entity Relationship Diagram (ERD) dari perpustakaan : 
1. Menentukan Entitas:
 entitas yg terlibat :
            *Mahasiswa
            *Anggota
            *Petugas
            *Buku
             *Data Penyimpanan
       

2Penentuan Kardinalitas Relasi
Hubungan :
a.Mahasiswa mendaftar menjadi Anggota:
   Tabel Utama:Mahasiswa
   Table Kedua:Anggota
   Attribute penghubung : Nim(Nim di Anggota)      
b.Anggota Meminjam sebuah Buku:
   Tabel Utama:Anggota
   Table Kedua:Buku
   Attribute penghubung : No.Aggota(No.aggota di meminjam)
c.Buku Melalui Pegawai:
   Tabel Utama:Buku
   Table Kedua:Pegawai
   Attribute penghubung : ID(ID di melalui)
d.Pegawai memiliki Data Penyimpanan:
   Tabel Utama:pegawai
   Table Kedua:Data penyimpanan
   Attribute penghubung : Paraf


3.Mentukan Atribut
Atribut
*Mahasiswa :
            -Nim
            -Nama
            -Alamat
            -No.Telp
*Anggota :
            -No.aggota(anggota)
            -Nim
            -No.Telp
*Buku :
            -No.Buku
            -Judul
            -Th.terbit
            -Penerbit
*Pegawai:
           - ID
           - Nama
           - No.Telp
          - Alamat
*Data Penyimpanan:
          - No.Anggota
          - No.Buku
          - Tgl Pinjam
          - Tgl kembali
          - Judul Buku
          - Nama Peminjam
          - Paraf
4.Pembuatan ERD
Pengertian Logical Record Structure(LRS)
LRS adalah representasi dari struktur record-record pada tabel-tabel yang terbentuk dari hasil relasi antar himpunan entitas.
Berikut adalah LRS dari ERD diatas : 
Relasi atau Kardinalitas dari ERD diatas adalah : 


a.Mahasiswa mendaftar menjadi Anggota:
   Relationship : One-to-one (1:1)
b.Anggota Meminjam buku:
   Relationship : One-to-many (1:M)
  
c.Buku Melalui Petugas:
   Relationship : Many-to-1 (M:1)
  
d.Petugas Memiliki Data Penyimpanan:
   Relationship : One-to-Many (1:M)

Komentar

Postingan populer dari blog ini

Cara Membuat Database mysql dari command prompt

Cara membuat databases MYSQL dengan menggunakan CMD

1.Pastikan bahwa kita sudah install aplikasi Xampp kemudian kita aktifkan Apache dan MYSQL .seperti gambar dibawah ini.

2.Buka Command Promt dengan Menekan tombol Windows + R pada keyboardKetik CMD kemudian OK


3.Seperti ini halaman awalnya

4.Setelah itu kita ketik cd c:\lalu kita enter Lalu kita ketik lagi “xampp\mysql\bin\mysql.exe” –u root –p lalu enter
5.Jika sudah ada tulisan “WELCOME TO THE MYSQL” berarti andah sudah berhasil. Pada saat diminta untuk memasukkan password (saat instalasi xampp, secara default tidak ada password), tekan Enter pada keyboard (menandakan tidak ada password saat memasuki user root).