Advertisement
Guest User

Mesin Kasir

a guest
Jan 22nd, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.81 KB | None | 0 0
  1. package main;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.SQLException;
  5. import java.util.ArrayList;
  6. import javax.swing.JOptionPane;
  7. import javax.swing.table.DefaultTableModel;
  8.  
  9. public class MesinKasir extends javax.swing.JFrame {
  10.    
  11.     DefaultTableModel table = new DefaultTableModel();
  12.  
  13.     public MesinKasir() {
  14.         initComponents();
  15.         table.addColumn("ID");
  16.         table.addColumn("Name");
  17.         table.addColumn("Price");
  18.         table.addColumn("Quantity");
  19.         table.addColumn("Total");
  20.        
  21.         jTable1.setModel(table);
  22.     }
  23.  
  24.     @SuppressWarnings("unchecked")
  25.     // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  26.     private void initComponents() {
  27.  
  28.         jLabel1 = new javax.swing.JLabel();
  29.         jLabel2 = new javax.swing.JLabel();
  30.         jLabel3 = new javax.swing.JLabel();
  31.         txtId = new javax.swing.JTextField();
  32.         txtPrice = new javax.swing.JTextField();
  33.         txtName = new javax.swing.JTextField();
  34.         btnSearch = new javax.swing.JButton();
  35.         jScrollPane1 = new javax.swing.JScrollPane();
  36.         jTable1 = new javax.swing.JTable();
  37.         txtTotal = new javax.swing.JTextField();
  38.         txtPayment = new javax.swing.JTextField();
  39.         txtChange = new javax.swing.JTextField();
  40.         jLabel4 = new javax.swing.JLabel();
  41.         jLabel5 = new javax.swing.JLabel();
  42.         jLabel6 = new javax.swing.JLabel();
  43.         btnAdd = new javax.swing.JButton();
  44.         jLabel7 = new javax.swing.JLabel();
  45.         txtQuantity = new javax.swing.JTextField();
  46.         btnConfirm = new javax.swing.JButton();
  47.         btnCheckout = new javax.swing.JButton();
  48.  
  49.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  50.  
  51.         jLabel1.setText("ID");
  52.  
  53.         jLabel2.setText("Name");
  54.  
  55.         jLabel3.setText("Price");
  56.  
  57.         btnSearch.setText("Search");
  58.         btnSearch.addActionListener(new java.awt.event.ActionListener() {
  59.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  60.                 btnSearchActionPerformed(evt);
  61.             }
  62.         });
  63.  
  64.         jTable1.setModel(new javax.swing.table.DefaultTableModel(
  65.             new Object [][] {
  66.                 {null, null, null, null, null},
  67.                 {null, null, null, null, null},
  68.                 {null, null, null, null, null},
  69.                 {null, null, null, null, null}
  70.             },
  71.             new String [] {
  72.                 "ID", "Name", "Price", "Quantity", "Total"
  73.             }
  74.         ) {
  75.             boolean[] canEdit = new boolean [] {
  76.                 false, false, false, false, true
  77.             };
  78.  
  79.             public boolean isCellEditable(int rowIndex, int columnIndex) {
  80.                 return canEdit [columnIndex];
  81.             }
  82.         });
  83.         jScrollPane1.setViewportView(jTable1);
  84.  
  85.         jLabel4.setText("Total");
  86.  
  87.         jLabel5.setText("Payment");
  88.  
  89.         jLabel6.setText("Change");
  90.  
  91.         btnAdd.setText("Add New Item");
  92.         btnAdd.addActionListener(new java.awt.event.ActionListener() {
  93.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  94.                 btnAddActionPerformed(evt);
  95.             }
  96.         });
  97.  
  98.         jLabel7.setText("Quantity");
  99.  
  100.         btnConfirm.setText("Confirm");
  101.         btnConfirm.addActionListener(new java.awt.event.ActionListener() {
  102.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  103.                 btnConfirmActionPerformed(evt);
  104.             }
  105.         });
  106.  
  107.         btnCheckout.setText("Checkout");
  108.         btnCheckout.addActionListener(new java.awt.event.ActionListener() {
  109.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  110.                 btnCheckoutActionPerformed(evt);
  111.             }
  112.         });
  113.  
  114.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  115.         getContentPane().setLayout(layout);
  116.         layout.setHorizontalGroup(
  117.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  118.             .addGroup(layout.createSequentialGroup()
  119.                 .addContainerGap()
  120.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  121.                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  122.                         .addGap(0, 5, Short.MAX_VALUE)
  123.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  124.                             .addComponent(btnAdd, javax.swing.GroupLayout.Alignment.TRAILING)
  125.                             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  126.                                 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  127.                                     .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  128.                                         .addGroup(layout.createSequentialGroup()
  129.                                             .addComponent(btnCheckout)
  130.                                             .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  131.                                             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  132.                                                 .addComponent(jLabel4)
  133.                                                 .addComponent(jLabel5)
  134.                                                 .addComponent(jLabel6))
  135.                                             .addGap(18, 18, 18)
  136.                                             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  137.                                                 .addComponent(txtPayment, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
  138.                                                 .addComponent(txtTotal, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
  139.                                                 .addComponent(txtChange, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)))
  140.                                         .addComponent(btnConfirm))
  141.                                     .addGap(14, 14, 14))
  142.                                 .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE))))
  143.                     .addGroup(layout.createSequentialGroup()
  144.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  145.                             .addComponent(jLabel7)
  146.                             .addComponent(jLabel3)
  147.                             .addComponent(jLabel2)
  148.                             .addComponent(jLabel1))
  149.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  150.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  151.                             .addGroup(layout.createSequentialGroup()
  152.                                 .addComponent(txtId)
  153.                                 .addGap(18, 18, 18)
  154.                                 .addComponent(btnSearch))
  155.                             .addComponent(txtName)
  156.                             .addComponent(txtPrice)
  157.                             .addComponent(txtQuantity))))
  158.                 .addContainerGap())
  159.         );
  160.         layout.setVerticalGroup(
  161.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  162.             .addGroup(layout.createSequentialGroup()
  163.                 .addContainerGap()
  164.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  165.                     .addComponent(jLabel1)
  166.                     .addComponent(txtId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  167.                     .addComponent(btnSearch))
  168.                 .addGap(18, 18, 18)
  169.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  170.                     .addComponent(jLabel2)
  171.                     .addComponent(txtName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  172.                 .addGap(18, 18, 18)
  173.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  174.                     .addComponent(jLabel3)
  175.                     .addComponent(txtPrice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  176.                 .addGap(18, 18, 18)
  177.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  178.                     .addComponent(jLabel7)
  179.                     .addComponent(txtQuantity, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  180.                 .addGap(18, 18, 18)
  181.                 .addComponent(btnAdd)
  182.                 .addGap(18, 18, 18)
  183.                 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
  184.                 .addGap(18, 18, 18)
  185.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  186.                     .addComponent(txtTotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  187.                     .addComponent(jLabel4)
  188.                     .addComponent(btnCheckout))
  189.                 .addGap(18, 18, 18)
  190.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  191.                     .addComponent(txtPayment, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  192.                     .addComponent(jLabel5))
  193.                 .addGap(18, 18, 18)
  194.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  195.                     .addComponent(txtChange, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  196.                     .addComponent(jLabel6))
  197.                 .addGap(18, 18, 18)
  198.                 .addComponent(btnConfirm)
  199.                 .addContainerGap(12, Short.MAX_VALUE))
  200.         );
  201.  
  202.         pack();
  203.     }// </editor-fold>                        
  204.  
  205.     private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) {                                          
  206.         search();
  207.     }                                        
  208.  
  209.     private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                      
  210.         add();
  211.     }                                      
  212.  
  213.     private void btnCheckoutActionPerformed(java.awt.event.ActionEvent evt) {                                            
  214.         checkOut();
  215.     }                                          
  216.  
  217.     private void btnConfirmActionPerformed(java.awt.event.ActionEvent evt) {                                          
  218.         confirmPayment();
  219.     }                                          
  220.  
  221.     public static void main(String args[]) {
  222.         /* Set the Nimbus look and feel */
  223.         //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
  224.         /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
  225.          * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
  226.          */
  227.         try {
  228.             for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
  229.                 if ("Nimbus".equals(info.getName())) {
  230.                     javax.swing.UIManager.setLookAndFeel(info.getClassName());
  231.                     break;
  232.                 }
  233.             }
  234.         } catch (ClassNotFoundException ex) {
  235.             java.util.logging.Logger.getLogger(MesinKasir.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  236.         } catch (InstantiationException ex) {
  237.             java.util.logging.Logger.getLogger(MesinKasir.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  238.         } catch (IllegalAccessException ex) {
  239.             java.util.logging.Logger.getLogger(MesinKasir.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  240.         } catch (javax.swing.UnsupportedLookAndFeelException ex) {
  241.             java.util.logging.Logger.getLogger(MesinKasir.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  242.         }
  243.         //</editor-fold>
  244.  
  245.         /* Create and display the form */
  246.         java.awt.EventQueue.invokeLater(new Runnable() {
  247.             public void run() {
  248.                 new MesinKasir().setVisible(true);
  249.             }
  250.         });
  251.     }
  252.    
  253.     private void add(){
  254.         int totalHarga = Integer.parseInt(txtPrice.getText()) * Integer.parseInt(txtQuantity.getText());
  255.        
  256.         table.addRow(new Object[]{
  257.            
  258.             txtId.getText(),
  259.             txtName.getText(),
  260.             txtPrice.getText(),
  261.             txtQuantity.getText(),
  262.             totalHarga
  263.         });
  264.        
  265.         jTable1.setModel(table);
  266.     }
  267.    
  268.     private void checkOut(){
  269.         int totalHarga = 0;
  270.         int size = jTable1.getRowCount();
  271.         for(int i = 0; i < size; i++){
  272.             totalHarga = totalHarga + (int) jTable1.getValueAt(i, 4);
  273.         }
  274.         txtTotal.setText(""+totalHarga);
  275.     }
  276.    
  277.     private void confirmPayment(){
  278.         int total = Integer.parseInt(txtTotal.getText());
  279.         int payment = Integer.parseInt(txtPayment.getText());
  280.         int change = payment - total;
  281.         txtChange.setText(""+change);
  282.         insertDataTransaction();
  283.         clearForm();
  284.     }
  285.    
  286.     private void search(){
  287.         String id = txtId.getText();
  288.         try {
  289.             String sql = "SELECT name, price FROM tb_barang WHERE id="+id;
  290.             java.sql.Connection conn = (Connection) Config.configDB();
  291.             java.sql.Statement stm = conn.createStatement();
  292.             java.sql.ResultSet result = stm.executeQuery(sql);
  293.             while(result.next()){
  294.                  txtName.setText(result.getString(1));
  295.                  txtPrice.setText(result.getString(2));
  296.             }
  297.         } catch(SQLException e){
  298.             showMessage(e.getMessage());
  299.         }
  300.     }
  301.    
  302.     private void clearForm(){
  303.         table.setRowCount(0);
  304.         jTable1.setModel(table);
  305.         txtId.setText(null);
  306.         txtName.setText(null);
  307.         txtPrice.setText(null);
  308.         txtQuantity.setText(null);
  309.     }
  310.    
  311.     private void insertDataTransaction(){
  312.         try{
  313.             ArrayList<String> list = new ArrayList();
  314.             int row = jTable1.getRowCount();
  315.             int col = jTable1.getColumnCount();
  316.             for(int i = 0; i < row; i++ ){
  317.                 for(int j = 0; j < col; j++){
  318.                     list.add(String.valueOf(jTable1.getValueAt(i, j)));
  319.                 }
  320.                 String sql = "INSERT INTO `tb_transaksi` (`name`, `price`, `quantity`, `total`) VALUES ('"+list.get(1)+"' , '"+list.get(2)+"' , '"+list.get(3)+"' , '"+list.get(4)+"')";
  321.                 java.sql.Connection conn = (Connection) Config.configDB();
  322.                 java.sql.PreparedStatement pst = conn.prepareStatement(sql);
  323.                 pst.execute();
  324.                 list.clear();
  325.             }
  326.         } catch (SQLException e){
  327.             showMessage(e.getMessage());
  328.         }
  329.     }
  330.    
  331.     private void showMessage(String text){
  332.         JOptionPane.showMessageDialog(this, text);
  333.     }
  334.  
  335.     // Variables declaration - do not modify                    
  336.     private javax.swing.JButton btnAdd;
  337.     private javax.swing.JButton btnCheckout;
  338.     private javax.swing.JButton btnConfirm;
  339.     private javax.swing.JButton btnSearch;
  340.     private javax.swing.JLabel jLabel1;
  341.     private javax.swing.JLabel jLabel2;
  342.     private javax.swing.JLabel jLabel3;
  343.     private javax.swing.JLabel jLabel4;
  344.     private javax.swing.JLabel jLabel5;
  345.     private javax.swing.JLabel jLabel6;
  346.     private javax.swing.JLabel jLabel7;
  347.     private javax.swing.JScrollPane jScrollPane1;
  348.     private javax.swing.JTable jTable1;
  349.     private javax.swing.JTextField txtChange;
  350.     private javax.swing.JTextField txtId;
  351.     private javax.swing.JTextField txtName;
  352.     private javax.swing.JTextField txtPayment;
  353.     private javax.swing.JTextField txtPrice;
  354.     private javax.swing.JTextField txtQuantity;
  355.     private javax.swing.JTextField txtTotal;
  356.     // End of variables declaration                  
  357. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement