Assalamualaikum,wr.wb.
Pada kesempatan kali ini saya akan mendeskripsikan aplikasi yang telah saya buat untuk memenuhi tugas UAS.
1. Deskripsi Program :
Mesin kasir ini di buat dengan konsep konsumen dapat memilih produk yang akan di beli. Dan setiap konsumen yang memilih suatu barang, Program Transaksi Penjualan ini dapat mengetahui harga harga dari barang yang di beli konsumen. Produk yang akan di beli oleh konsumen akan masuk ke dalam list tabel untuk kemudian akhirnya akan di jumlah secara total. Dan jika ada komsumen yang baru mesin kasir ini dapat di hapus jumlah pembelanjaan konsumen yang sebelum nya.
1. Konsumen datang ke Supermarket
2. Konsumen memilih barang yang mau di beli
3. Jika semua barang sudah di pilih, pergi ke kasir
4. Kasir akan menginput jumlah pembayaran produk konsumen
5. Total pembayaran konsumen belum termasuk PPN
6. Kasir menambahkan 10% dari subtotal produk yang di beli konsumen.
7. Keluar hasil total pembayaran
8. Konsumen membayar produk yang di beli
9. Jika ada kembalian, kasir akan memberikan uang kembalian konsumen.
10. Selesai
2. Flowchart Program :
3. Berikut ini tampilan Program Transaksi Penjualan :
Dan setelah kasir menambahkan 10% dari subtotal pembayaran untuk PPN :
Cara membuat program ini :
A. Buat project baru
Jalankan software Java NetBeans dan membuat sebuah project baru dengan memilih File > New project > buat nama project Penjualan
Selanjutnya kamu dapat membuat class dengan cara Klik kanan pada package > New > Java class dan buat 3 class dengan nama, seperti: ModelBarang, ModelPenjualan dan Penjualan.
Buat desain Frame untuk tampilan program Anda dengan cara Klik kanan pada package > New > JFrame Form > buat nama frame UIPenjualan.
Cara Membuat Desain Program
B. Lihat hasil Program
Anda dapat menjalankan program dengan memilih Run Main Project(F6) atau Pilih Project > Klik kanan > Run. Selanjutnya akan muncul program yang telah Anda buat.
4. Buat script pada class ModelBarang seperti berikut ini :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package penjualan;
/**
*
* @author user
*/
public class ModelBarang {
private String namaBarang;
private String satuan;
private double harga;
public ModelBarang(String namaBarang, String satuan, double harga) {
this.namaBarang = namaBarang;
this.satuan = satuan;
this.harga = harga;
}
@Override
public String toString() {
return this.namaBarang;
}
/**
* @return the namaBarang
*/
public String getNamaBarang() {
return namaBarang;
}
/**
* @param namaBarang the namaBarang to set
*/
public void setNamaBarang(String namaBarang) {
this.namaBarang = namaBarang;
}
/**
* @return the satuan
*/
public String getSatuan() {
return satuan;
}
/**
* @param satuan the satuan to set
*/
public void setSatuan(String satuan) {
this.satuan = satuan;
}
/**
* @return the harga
*/
public double getHarga() {
return harga;
}
/**
* @param harga the harga to set
*/
public void setHarga(double harga) {
this.harga = harga;
}
}
Buat script pada class ModelPenjualan seperti berikut ini :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package penjualan;
import javax.swing.table.DefaultTableModel;
/**
*
* @author master
*/
public class ModelPenjualan {
private double subTotal=0;
private double ppn=0;
private double total=0;
private DefaultTableModel tabel = new DefaultTableModel();
public ModelPenjualan(){
getTabel().addColumn("Barang");
getTabel().addColumn("Harga");
getTabel().addColumn("Qty");
getTabel().addColumn("Satuan");
getTabel().addColumn("Jumlah");
}
public double countSubtotal(){
double subTotal=0;
int i=0;
while(i<table.getRowCount()){
subTotal=subTotal+Double.parseDouble(tabel.getValueAt(i, 4).toString());
i++;
}
return subTotal;
}
int i=0;
while(i<table.getRowCount()){
subTotal=subTotal+Double.parseDouble(tabel.getValueAt(i, 4).toString());
i++;
}
return subTotal;
}
public double countPPN(){
ppn=subTotal*0.1;
return ppn;
}
public double countTotal(){
total=subTotal+ppn;
return total;
}
/**
* @return the subTotal
*/
public double getSubTotal() {
return subTotal;
}
/**
* @param subTotal the subTotal to set
*/
public void setSubTotal(double subTotal) {
this.subTotal = subTotal;
}
/**
* @return the ppn
*/
public double getPpn() {
return ppn;
}
/**
* @param ppn the ppn to set
*/
public void setPpn(double ppn) {
this.ppn = ppn;
}
/**
* @return the total
*/
public double getTotal() {
return total;
}
/**
* @param total the total to set
*/
public void setTotal(double total) {
this.total = total;
}
/**
* @return the tabel
*/
public DefaultTableModel getTabel() {
return tabel;
}
/**
* @param tabel the tabel to set
*/
public void setTabel(DefaultTableModel tabel) {
this.tabel = tabel;
}
}
Untuk menghubungkan antara class dan desain frame Anda dapat membuat script pada class Penjualanseperti berikut ini :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package penjualan;
/**
*
* @author user
*/
public class Penjualan {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
UIPenjualan penjualan = new UIPenjualan();
penjualan.setVisible(true);
}
}
Buat script pada desain frame UIPenjualan seperti berikut ini :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package penjualan;
import java.awt.event.KeyEvent;
import java.text.NumberFormat;
import javax.swing.table.TableColumn;
/**
*
* @author Asus
*/
public class UIPenjualan extends javax.swing.JFrame {
ModelBarang barang;
ModelPenjualan penjualan=new ModelPenjualan();
/**
* Creates new form UIPenjualan
*/
public UIPenjualan() {
initComponents();
fillComboBarang();
tblbarang.setModel(penjualan.getTabel());
}
private void fillComboBarang(){
ModelBarang barang1 = new ModelBarang("Susu", "Kaleng", 11000);
ModelBarang barang2 = new ModelBarang("Rokok", "Bungkus", 16000);
ModelBarang barang3 = new ModelBarang("Snack", "Bungkus", 6500);
ModelBarang barang4 = new ModelBarang("Sabun", "Batang", 2000);
ModelBarang barang5 = new ModelBarang("Pewangi", "Bungkus", 2000);
ModelBarang barang6 = new ModelBarang("Beras", "Liter", 10000);
ModelBarang barang7 = new ModelBarang("Sarden", "Kaleng", 16000);
cboBarang.addItem(barang1);
cboBarang.addItem(barang2);
cboBarang.addItem(barang3);
cboBarang.addItem(barang4);
cboBarang.addItem(barang5);
cboBarang.addItem(barang6);
cboBarang.addItem(barang7);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
Barang = new javax.swing.JLabel();
Harga = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
cboBarang = new javax.swing.JComboBox();
lblharga = new javax.swing.JLabel();
txtquantity = new javax.swing.JTextField();
lblsatuan = new javax.swing.JLabel();
btnsimpan = new javax.swing.JButton();
btnhapus = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tblbarang = new javax.swing.JTable();
jLabel5 = new javax.swing.JLabel();
lblsubtotal = new javax.swing.JLabel();
chkPPN = new javax.swing.JCheckBox();
lblppn = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
lbltotal = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel1.setText("Program Transaksi Penjualan");
Barang.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
Barang.setText("Barang");
Harga.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
Harga.setText("Harga");
jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel4.setText("Quantity");
cboBarang.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cboBarangActionPerformed(evt);
}
});
lblharga.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
lblharga.setText("harga barang");
txtquantity.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtquantityActionPerformed(evt);
}
});
txtquantity.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
txtquantityKeyPressed(evt);
}
});
lblsatuan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
lblsatuan.setText("jLabel5");
btnsimpan.setText("Total");
btnsimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnsimpanActionPerformed(evt);
}
});
btnhapus.setText("Hapus");
btnhapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnhapusActionPerformed(evt);
}
});
tblbarang.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(tblbarang);
jLabel5.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel5.setText("Sub Total");
lblsubtotal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
lblsubtotal.setText("jLabel6");
chkPPN.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
chkPPN.setText("PPN 10%");
chkPPN.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
chkPPNActionPerformed(evt);
}
});
lblppn.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
lblppn.setText("jLabel6");
jLabel7.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel7.setText("Total");
lbltotal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
lbltotal.setText("jLabel8");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4)
.addComponent(Harga)
.addComponent(Barang))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 283, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(txtquantity)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(lblsatuan))
.addComponent(cboBarang, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(lblharga, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(40, 40, 40)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(btnsimpan, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnhapus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addGap(39, 39, 39))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 394, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(15, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5)
.addComponent(chkPPN)
.addComponent(jLabel7))
.addGap(27, 27, 27)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblppn)
.addComponent(lblsubtotal, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lbltotal))
.addGap(64, 64, 64))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(22, 22, 22)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Barang)
.addComponent(cboBarang, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Harga)
.addComponent(btnsimpan))
.addComponent(lblharga, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(txtquantity, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblsatuan)
.addComponent(btnhapus))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(lblsubtotal))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(chkPPN)
.addComponent(lblppn))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7)
.addComponent(lbltotal))
.addContainerGap(88, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void txtquantityActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void txtquantityKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if(evt.getKeyCode()==KeyEvent.VK_ENTER)
btnsimpan.requestFocus();
}
private void cboBarangActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
barang = (ModelBarang)cboBarang.getSelectedItem();
lblharga.setText(NumberFormat.getNumberInstance().format(barang.getHarga()));
lblsatuan.setText(barang.getSatuan());
}
private void btnsimpanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String[] data = new String[5];
double harga, jumlah=0;
int qty=0;
data[0]=barang.getNamaBarang();
harga=barang.getHarga();
data[1]=String.valueOf(barang.getHarga());
qty=Integer.parseInt(txtquantity.getText());
data[2]=txtquantity.getText();
data[3]=barang.getSatuan();
jumlah=harga*qty;
data[4]=String.valueOf(jumlah);
penjualan.getTabel().addRow(data);
lblsubtotal.setText(NumberFormat.getNumberInstance().format(penjualan.countSubtotal()));
chkPPNActionPerformed(null);
cboBarang.requestFocus();
}
private void chkPPNActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (chkPPN.isSelected())
lblppn.setText(NumberFormat.getNumberInstance().format(penjualan.countPPN()));
else{
lblppn.setText("0");
penjualan.setPpn(0);
}
lbltotal.setText(NumberFormat.getNumberInstance().format(penjualan.countTotal()));
}
private void btnhapusActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
penjualan.getTabel().removeRow(0);
lblsubtotal.setText(NumberFormat.getNumberInstance().format(penjualan.countSubtotal()));
chkPPNActionPerformed(null);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(UIPenjualan.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(UIPenjualan.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(UIPenjualan.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(UIPenjualan.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(() -> {
new UIPenjualan().setVisible(true);
});
}
// Variables declaration - do not modify
private javax.swing.JLabel Barang;
private javax.swing.JLabel Harga;
private javax.swing.JButton btnhapus;
private javax.swing.JButton btnsimpan;
private javax.swing.JComboBox cboBarang;
private javax.swing.JCheckBox chkPPN;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel7;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblharga;
private javax.swing.JLabel lblppn;
private javax.swing.JLabel lblsatuan;
private javax.swing.JLabel lblsubtotal;
private javax.swing.JLabel lbltotal;
private javax.swing.JTable tblbarang;
private javax.swing.JTextField txtquantity;
// End of variables declaration
private void lblppnActionPerformed(Object object) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
Terima Kasih.
Tidak ada komentar:
Posting Komentar