diff --git a/Task1/.vscode/settings.json b/Task1/.vscode/settings.json
new file mode 100644
index 0000000..718e504
--- /dev/null
+++ b/Task1/.vscode/settings.json
@@ -0,0 +1,8 @@
+{
+ "java.project.sourcePaths": ["src"],
+ "java.project.outputPath": "bin",
+ "java.project.referencedLibraries": [
+ "lib/**/*.jar",
+ "c:\\Program Files\\Java\\mysql-connector-j-8.0.32\\mysql-connector-j-8.0.32.jar"
+ ]
+}
diff --git a/Task1/README.md b/Task1/README.md
new file mode 100644
index 0000000..95f3b55
--- /dev/null
+++ b/Task1/README.md
@@ -0,0 +1,20 @@
+- pada package com.config
+terdapat method connection() yang bertanggung jawab untuk membuat koneksi ke database menggunakan JDBC (Java Database Connectivity).
+
+
+- pada config com.controller
+terdapat method getDatabase() yang bertanggung jawab untuk mengambil data dari tabel tb_produk dalam database.
+terdapat method insertDB(String product, Long i, Integer stok) yang bertanggung jawab untuk untuk menyisipkan (insert) data baru ke dalam tabel tb_produk.
+terdapat method updateNamaDB(int id, String name), updateHargaDB(int id, Long harga), dan updateStokDB(int id, Integer stok) yang bertanggung jawab untuk memperbarui data dalam tabel tb_produk berdasarkan ID dengan mengubah nilai NAMA, HARGA, dan JUMLAH masing-masing.
+terdapat method deleteDB(String nama) yang bertanggung jawab untuk menghapus data dalam tabel tb_produk berdasarkan NAMA.
+terdapat method getProdukbyNama(String nama) yang bertanggung jawab untuk mengambil data produk berdasarkan NAMA dari tabel tb_produk.
+
+- pada com.layouts
+pada class DeleteData terdapat method showDeleteData() yang berfungsi untuk menghapus data.
+pada class InsertData terdapat method showInsertData() yang berfungsi untuk menambahkan data baru.
+pada class Menu terdapat method showMenu() yang berfungsi untuk menampilkan pilihan menu dan method SelectMenu() yang berfungsi untuk mengeksekusi angka menu yang diinput.
+pada class ReadData terdapat method showReadData() yang berfungsi untuk menampilkan seluruh isi data.
+pada class UpdateData terdapat method showUpdateData(String nama) yang bertanggung jawab untuk menampilkan menu pengeditan data produk dan method showEditNama(String nama), showEditHarga(String nama), dan showEditStok(String nama) ketiga metode ini bertanggung jawab untuk menampilkan menu dan menghandle pengeditan data nama, harga, dan jumlah (stok) produk.
+
+- pada com.models
+terdapat method main method yang berfungsi menjalankan program tersebut.
\ No newline at end of file
diff --git a/Task1/bin/App.class b/Task1/bin/App.class
new file mode 100644
index 0000000..02667fb
Binary files /dev/null and b/Task1/bin/App.class differ
diff --git a/Task1/bin/com/config/MyConfig.class b/Task1/bin/com/config/MyConfig.class
new file mode 100644
index 0000000..f2d1014
Binary files /dev/null and b/Task1/bin/com/config/MyConfig.class differ
diff --git a/Task1/bin/com/controller/controllerDB.class b/Task1/bin/com/controller/controllerDB.class
new file mode 100644
index 0000000..2a7e9c6
Binary files /dev/null and b/Task1/bin/com/controller/controllerDB.class differ
diff --git a/Task1/bin/com/layouts/DeleteData.class b/Task1/bin/com/layouts/DeleteData.class
new file mode 100644
index 0000000..24176af
Binary files /dev/null and b/Task1/bin/com/layouts/DeleteData.class differ
diff --git a/Task1/bin/com/layouts/InsertData.class b/Task1/bin/com/layouts/InsertData.class
new file mode 100644
index 0000000..fd55be3
Binary files /dev/null and b/Task1/bin/com/layouts/InsertData.class differ
diff --git a/Task1/bin/com/layouts/Menu.class b/Task1/bin/com/layouts/Menu.class
new file mode 100644
index 0000000..30204b7
Binary files /dev/null and b/Task1/bin/com/layouts/Menu.class differ
diff --git a/Task1/bin/com/layouts/ReadData.class b/Task1/bin/com/layouts/ReadData.class
new file mode 100644
index 0000000..43652ff
Binary files /dev/null and b/Task1/bin/com/layouts/ReadData.class differ
diff --git a/Task1/bin/com/layouts/UpdateData.class b/Task1/bin/com/layouts/UpdateData.class
new file mode 100644
index 0000000..d6d7e6a
Binary files /dev/null and b/Task1/bin/com/layouts/UpdateData.class differ
diff --git a/Task1/bin/com/models/Produk.class b/Task1/bin/com/models/Produk.class
new file mode 100644
index 0000000..135e209
Binary files /dev/null and b/Task1/bin/com/models/Produk.class differ
diff --git a/Task1/src/App.java b/Task1/src/App.java
new file mode 100644
index 0000000..12004d0
--- /dev/null
+++ b/Task1/src/App.java
@@ -0,0 +1,9 @@
+
+import com.layouts.Menu;
+public class App {
+ public static void main(String[] args) throws Exception {
+ Menu.showMenu();
+ }
+
+
+}
diff --git a/Task1/src/com/config/MyConfig.java b/Task1/src/com/config/MyConfig.java
new file mode 100644
index 0000000..2c485bb
--- /dev/null
+++ b/Task1/src/com/config/MyConfig.java
@@ -0,0 +1,456 @@
+package com.config;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+public class MyConfig {
+
+ private static final String DB_URL = "jdbc:mysql://localhost:3306/db_produk";
+ private static final String DB_USER = "root";
+ private static final String DB_PASS = "";
+
+ protected static Connection connect;
+ protected static PreparedStatement preparedStatement;
+ protected static ResultSet resultSet;
+ protected static String query;
+
+ public static void connection() {
+ try {
+ connect = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
+ System.out.println("Sudah TerConnect database, Sukses");
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+
+
+ }
+ }
+
+}
+
+// jTable1 = new javax.swing.JTable();
+
+// jTable1.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(jTable1);
+
+
+// import java.sql.Connection;
+// import java.sql.DriverManager;
+// import java.sql.PreparedStatement;
+// import java.sql.ResultSet;
+// import java.sql.SQLException;
+// import java.sql.Statement;
+// import javax.swing.table.DefaultTableModel;
+
+// public class App extends javax.swing.JFrame {
+// private int totalBelanja = 0;
+// /**
+// * Creates new form App
+// */
+// public App() {
+// initComponents();
+// loadData();
+// }
+
+// private void loadData() {
+// // Konfigurasi koneksi database
+// String url = "jdbc:mysql://localhost:3306/db_produk";
+// String username = "root";
+// String password = "";
+
+// // Koneksi ke database
+// try (Connection conn = DriverManager.getConnection(url, username, password)) {
+// // Statement untuk menjalankan query
+// Statement stmt = conn.createStatement();
+
+// // Query untuk mengambil data dari tabel
+// String query = "SELECT * FROM tb_produk";
+
+// // Eksekusi query dan ambil hasilnya
+// ResultSet rs = stmt.executeQuery(query);
+
+// // Buat model tabel
+// DefaultTableModel model = (DefaultTableModel) tabel.getModel();
+
+// // Hapus semua baris yang ada di tabel
+// model.setRowCount(0);
+
+// // Loop melalui hasil query dan tambahkan data ke dalam model tabel
+// while (rs.next()) {
+// int id = rs.getInt("ID");
+// String nama = rs.getString("Nama");
+// long harga = rs.getLong("Harga");
+// int jumlah = rs.getInt("jumlah");
+
+// // Tambahkan data ke dalam baris baru pada model tabel
+// model.addRow(new Object[]{id, nama, harga, jumlah});
+// }
+
+// // Tutup statement dan result set
+// stmt.close();
+// rs.close();
+// } catch (SQLException e) {
+// e.printStackTrace();
+// }
+// }
+// @SuppressWarnings("unchecked")
+// //
+// private void initComponents() {
+
+// jPanel1 = new javax.swing.JPanel();
+// jPanel2 = new javax.swing.JPanel();
+// jLabel1 = new javax.swing.JLabel();
+// jScrollPane1 = new javax.swing.JScrollPane();
+// tabel = new javax.swing.JTable();
+// jLabel2 = new javax.swing.JLabel();
+// jLabel3 = new javax.swing.JLabel();
+// jLabel4 = new javax.swing.JLabel();
+// textNama = new javax.swing.JTextField();
+// textHarga = new javax.swing.JTextField();
+// textJumlah = new javax.swing.JTextField();
+// buttonTambah = new javax.swing.JButton();
+// buttonHapus = new javax.swing.JButton();
+// buttonClear = new javax.swing.JButton();
+// jPanel3 = new javax.swing.JPanel();
+// jLabel5 = new javax.swing.JLabel();
+// jLabel6 = new javax.swing.JLabel();
+// jLabel7 = new javax.swing.JLabel();
+// textTotal = new javax.swing.JTextField();
+// textTunai = new javax.swing.JTextField();
+// textKembali = new javax.swing.JTextField();
+// buttonSimpan = new javax.swing.JButton();
+// buttonBayar = new javax.swing.JButton();
+
+// setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+
+// jPanel1.setBackground(new java.awt.Color(51, 51, 51));
+
+// jPanel2.setBackground(new java.awt.Color(102, 102, 102));
+// jPanel2.setForeground(new java.awt.Color(51, 51, 51));
+
+// jLabel1.setFont(new java.awt.Font("Comic Sans MS", 0, 18)); // NOI18N
+// jLabel1.setForeground(new java.awt.Color(255, 255, 255));
+// jLabel1.setText("CASH-COMP");
+
+// javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
+// jPanel2.setLayout(jPanel2Layout);
+// jPanel2Layout.setHorizontalGroup(
+// jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addGroup(jPanel2Layout.createSequentialGroup()
+// .addContainerGap()
+// .addComponent(jLabel1)
+// .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+// );
+// jPanel2Layout.setVerticalGroup(
+// jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addGroup(jPanel2Layout.createSequentialGroup()
+// .addContainerGap()
+// .addComponent(jLabel1)
+// .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+// );
+
+// tabel.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 [] {
+// "ID", "NAMA", "HARGA", "JUMLAH"
+// }
+// ) {
+// Class[] types = new Class [] {
+// java.lang.Integer.class, java.lang.String.class, java.lang.Long.class, java.lang.Integer.class
+// };
+
+// public Class getColumnClass(int columnIndex) {
+// return types [columnIndex];
+// }
+// });
+// jScrollPane1.setViewportView(tabel);
+
+// jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+// jLabel2.setForeground(new java.awt.Color(255, 255, 255));
+// jLabel2.setText("Nama Barang");
+
+// jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+// jLabel3.setForeground(new java.awt.Color(255, 255, 255));
+// jLabel3.setText("Harga Barang");
+
+// jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+// jLabel4.setForeground(new java.awt.Color(255, 255, 255));
+// jLabel4.setText("Jumlah Barang");
+
+// textNama.setBackground(new java.awt.Color(102, 102, 102));
+// textNama.setForeground(new java.awt.Color(255, 255, 255));
+
+// textHarga.setBackground(new java.awt.Color(102, 102, 102));
+// textHarga.setForeground(new java.awt.Color(255, 255, 255));
+
+// textJumlah.setBackground(new java.awt.Color(102, 102, 102));
+// textJumlah.setForeground(new java.awt.Color(255, 255, 255));
+// textJumlah.addActionListener(new java.awt.event.ActionListener() {
+// public void actionPerformed(java.awt.event.ActionEvent evt) {
+// textJumlahActionPerformed(evt);
+// }
+// });
+
+// buttonTambah.setBackground(new java.awt.Color(102, 102, 102));
+// buttonTambah.setText("ADD");
+// buttonTambah.addActionListener(new java.awt.event.ActionListener() {
+// public void actionPerformed(java.awt.event.ActionEvent evt) {
+// buttonTambahActionPerformed(evt);
+// }
+// });
+
+// buttonHapus.setBackground(new java.awt.Color(102, 102, 102));
+// buttonHapus.setText("DELETE");
+// buttonHapus.addActionListener(new java.awt.event.ActionListener() {
+// public void actionPerformed(java.awt.event.ActionEvent evt) {
+// buttonHapusActionPerformed(evt);
+// }
+// });
+
+// buttonClear.setBackground(new java.awt.Color(153, 0, 0));
+// buttonClear.setText("CLEAR");
+
+// jPanel3.setBackground(new java.awt.Color(153, 153, 153));
+
+// jLabel5.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+// jLabel5.setForeground(new java.awt.Color(255, 255, 255));
+// jLabel5.setText("Total");
+
+// jLabel6.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+// jLabel6.setForeground(new java.awt.Color(255, 255, 255));
+// jLabel6.setText("Cash");
+
+// jLabel7.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+// jLabel7.setForeground(new java.awt.Color(255, 255, 255));
+// jLabel7.setText("Change");
+
+// textTotal.setBackground(new java.awt.Color(204, 204, 204));
+
+// textTunai.setBackground(new java.awt.Color(204, 204, 204));
+
+// textKembali.setBackground(new java.awt.Color(204, 204, 204));
+
+// buttonSimpan.setBackground(new java.awt.Color(102, 102, 102));
+// buttonSimpan.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+// buttonSimpan.setText("ADD TO CART");
+
+// buttonBayar.setBackground(new java.awt.Color(102, 102, 102));
+// buttonBayar.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+// buttonBayar.setText("PAY");
+
+// javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+// jPanel3.setLayout(jPanel3Layout);
+// jPanel3Layout.setHorizontalGroup(
+// jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addGroup(jPanel3Layout.createSequentialGroup()
+// .addContainerGap()
+// .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addGroup(jPanel3Layout.createSequentialGroup()
+// .addComponent(jLabel7)
+// .addGap(18, 18, 18)
+// .addComponent(textKembali))
+// .addGroup(jPanel3Layout.createSequentialGroup()
+// .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addComponent(jLabel5)
+// .addComponent(jLabel6))
+// .addGap(35, 35, 35)
+// .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addComponent(textTotal)
+// .addComponent(textTunai)))
+// .addGroup(jPanel3Layout.createSequentialGroup()
+// .addComponent(buttonSimpan)
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+// .addComponent(buttonBayar)
+// .addGap(0, 43, Short.MAX_VALUE)))
+// .addContainerGap())
+// );
+// jPanel3Layout.setVerticalGroup(
+// jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addGroup(jPanel3Layout.createSequentialGroup()
+// .addContainerGap()
+// .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+// .addComponent(jLabel5)
+// .addComponent(textTotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+// .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+// .addComponent(jLabel6)
+// .addComponent(textTunai, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+// .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+// .addComponent(jLabel7)
+// .addComponent(textKembali, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE)
+// .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+// .addComponent(buttonSimpan)
+// .addComponent(buttonBayar))
+// .addContainerGap())
+// );
+
+// javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+// jPanel1.setLayout(jPanel1Layout);
+// jPanel1Layout.setHorizontalGroup(
+// jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addGroup(jPanel1Layout.createSequentialGroup()
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+// .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+// .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
+// .addContainerGap()
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+// .addComponent(jScrollPane1)
+// .addGroup(jPanel1Layout.createSequentialGroup()
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+// .addGroup(jPanel1Layout.createSequentialGroup()
+// .addComponent(buttonTambah, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+// .addComponent(buttonHapus, javax.swing.GroupLayout.DEFAULT_SIZE, 127, Short.MAX_VALUE))
+// .addGroup(jPanel1Layout.createSequentialGroup()
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addComponent(jLabel2)
+// .addComponent(jLabel3)
+// .addComponent(jLabel4))
+// .addGap(25, 25, 25)
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+// .addComponent(textNama, javax.swing.GroupLayout.DEFAULT_SIZE, 150, Short.MAX_VALUE)
+// .addComponent(textHarga)
+// .addComponent(textJumlah)))
+// .addComponent(buttonClear, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+// .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
+// .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+// );
+// jPanel1Layout.setVerticalGroup(
+// jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addGroup(jPanel1Layout.createSequentialGroup()
+// .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+// .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+// .addGroup(jPanel1Layout.createSequentialGroup()
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+// .addComponent(jLabel2)
+// .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+// .addComponent(jLabel3)
+// .addComponent(textHarga, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+// .addComponent(textJumlah, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+// .addComponent(jLabel4))
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+// .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+// .addComponent(buttonTambah)
+// .addComponent(buttonHapus))
+// .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+// .addComponent(buttonClear))
+// .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+// .addGap(0, 3, Short.MAX_VALUE))
+// );
+
+// javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+// getContentPane().setLayout(layout);
+// layout.setHorizontalGroup(
+// layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+// );
+// layout.setVerticalGroup(
+// layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+// .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+// );
+
+// pack();
+// setLocationRelativeTo(null);
+// }//
+
+// private void textJumlahActionPerformed(java.awt.event.ActionEvent evt) {
+// // TODO add your handling code here:
+// }
+
+// private void buttonHapusActionPerformed(java.awt.event.ActionEvent evt) {
+// // TODO add your handling code here:
+// }
+
+// private void buttonTambahActionPerformed(java.awt.event.ActionEvent evt) {
+// // TODO add your handling code here:
+// }
+
+// /**
+// * @param args the command line arguments
+// */
+// public static void main(String args[]) {
+// /* Set the Nimbus look and feel */
+// //
+// /* 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(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+// } catch (InstantiationException ex) {
+// java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+// } catch (IllegalAccessException ex) {
+// java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+// } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+// java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+// }
+// //
+
+// /* Create and display the form */
+// java.awt.EventQueue.invokeLater(new Runnable() {
+// public void run() {
+// new App().setVisible(true);
+// }
+// });
+// }
+
+// // Variables declaration - do not modify
+// private javax.swing.JButton buttonBayar;
+// private javax.swing.JButton buttonClear;
+// private javax.swing.JButton buttonHapus;
+// private javax.swing.JButton buttonSimpan;
+// private javax.swing.JButton buttonTambah;
+// private javax.swing.JLabel jLabel1;
+// private javax.swing.JLabel jLabel2;
+// private javax.swing.JLabel jLabel3;
+// private javax.swing.JLabel jLabel4;
+// private javax.swing.JLabel jLabel5;
+// private javax.swing.JLabel jLabel6;
+// private javax.swing.JLabel jLabel7;
+// private javax.swing.JPanel jPanel1;
+// private javax.swing.JPanel jPanel2;
+// private javax.swing.JPanel jPanel3;
+// private javax.swing.JScrollPane jScrollPane1;
+// private javax.swing.JTable tabel;
+// private javax.swing.JTextField textHarga;
+// private javax.swing.JTextField textJumlah;
+// private javax.swing.JTextField textKembali;
+// private javax.swing.JTextField textNama;
+// private javax.swing.JTextField textTotal;
+// private javax.swing.JTextField textTunai;
+// // End of variables declaration
+// }
diff --git a/Task1/src/com/controller/controllerDB.java b/Task1/src/com/controller/controllerDB.java
new file mode 100644
index 0000000..405538d
--- /dev/null
+++ b/Task1/src/com/controller/controllerDB.java
@@ -0,0 +1,123 @@
+package com.controller;
+
+import java.sql.SQLException;
+
+import com.config.MyConfig;
+import com.models.Produk;
+
+public class controllerDB extends MyConfig {
+ public static void getDatabase(){
+ connection();
+
+ try {
+ String query = "SELECT NAMA, HARGA, JUMLAH FROM `tb_produk` ORDER BY ID DESC";
+ preparedStatement = connect.prepareStatement(query);
+ resultSet = preparedStatement.executeQuery();
+
+ while (resultSet.next()){
+
+
+ System.out.println(
+ resultSet.getString("NAMA")+", Rp."+
+ resultSet.getInt("HARGA")+", stock = "+
+ resultSet.getInt("JUMLAH"));
+ }
+
+ preparedStatement.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+
+ }
+ }
+
+ public static boolean insertDB(String product, Long i, Integer stok) {
+ connection();
+ query = "INSERT INTO `tb_produk` (NAMA, HARGA, JUMLAH) VALUES (?, ?, ?)";
+ try {
+ preparedStatement = connect.prepareStatement(query);
+ preparedStatement.setString(1, product);
+ preparedStatement.setLong(2, i);
+ preparedStatement.setInt(3, stok);
+ preparedStatement.executeUpdate();
+ preparedStatement.close();
+ return true;
+ } catch (SQLException e) {
+ e.printStackTrace();
+
+ }
+ return false;
+ }
+ public static void updateNamaDB(int id, String name) {
+ connection();
+ query= "UPDATE `tb_produk` SET NAMA=? WHERE ID=?";
+ try {
+ preparedStatement = connect.prepareStatement(query);
+ preparedStatement.setString(1, name);
+ preparedStatement.setInt(2, id);
+ preparedStatement.executeUpdate();
+ preparedStatement.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ public static void updateHargaDB(int id, Long harga) {
+ connection();
+ query= "UPDATE `tb_produk` SET HARGA=? WHERE ID=?";
+ try {
+ preparedStatement = connect.prepareStatement(query);
+ preparedStatement.setLong(1, harga);
+ preparedStatement.setInt(2, id);
+ preparedStatement.executeUpdate();
+ preparedStatement.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ public static void updateStokDB(int id, Integer stok) {
+ connection();
+ query= "UPDATE `tb_produk` SET JUMLAH=? WHERE ID=?";
+ try {
+ preparedStatement = connect.prepareStatement(query);
+ preparedStatement.setInt(1, stok);
+ preparedStatement.setInt(2, id);
+ preparedStatement.executeUpdate();
+ preparedStatement.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ public static boolean deletDB(String nama) {
+ connection();
+ query= "DELETE FROM `tb_produk` WHERE NAMA=?";
+ try {
+ preparedStatement = connect.prepareStatement(query);
+ preparedStatement.setString(1, nama);
+ int rowDelete = preparedStatement.executeUpdate();
+ if (rowDelete>0) {
+ return true;
+ }
+ preparedStatement.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+ public static Produk getProdukbyNama(String nama){
+ Produk produk = null;
+ connection();
+ query = "SELECT * FROM `tb_produk` WHERE NAMA=?";
+ try {
+ preparedStatement = connect.prepareStatement(query);
+ preparedStatement.setString(1, nama);
+ resultSet = preparedStatement.executeQuery();
+
+ while (resultSet.next()) {
+ produk = new Produk(resultSet.getInt("ID"), resultSet.getString("NAMA"), resultSet.getLong("HARGA"), resultSet.getInt("JUMLAH"));
+ }
+ preparedStatement.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return produk;
+ }
+}
diff --git a/Task1/src/com/layouts/DeleteData.java b/Task1/src/com/layouts/DeleteData.java
new file mode 100644
index 0000000..32432b7
--- /dev/null
+++ b/Task1/src/com/layouts/DeleteData.java
@@ -0,0 +1,35 @@
+package com.layouts;
+
+import java.util.Scanner;
+
+import com.controller.controllerDB;
+
+public class DeleteData {
+ public static void showDeleteData(){
+ Scanner sc = new Scanner(System.in);
+ System.out.println("---------------------------------------------");
+ System.out.println("SILAHKAN PILIH DATA YANG INGIN DIHAPUS ");
+ System.out.println("---------------------------------------------");
+ controllerDB.getDatabase();
+ System.out.println("---------------------------------------------");
+ System.out.println("***Catatan: input nama produk dengan benar!!!");
+ System.out.print("Pilih Nama Produk: ");
+ String nama = sc.nextLine();
+ System.out.println("---------------------------------------------");
+
+ if (controllerDB.deletDB(nama)) {
+ System.out.println("BERHASIL MENGHAPUS DATA");
+
+ }else{
+ System.out.println("GAGAL MENGHAPUS DATA");
+ System.out.println("----------------------------------------------");
+ DeleteData.showDeleteData();
+
+ }
+
+ System.out.println("----------------------------------------------");
+ Menu.showMenu();
+ sc.close();
+ }
+
+}
diff --git a/Task1/src/com/layouts/InsertData.java b/Task1/src/com/layouts/InsertData.java
new file mode 100644
index 0000000..1d9bd24
--- /dev/null
+++ b/Task1/src/com/layouts/InsertData.java
@@ -0,0 +1,35 @@
+package com.layouts;
+
+import java.util.Scanner;
+
+import com.controller.controllerDB;
+
+public class InsertData {
+ public static void showInsertData(){
+ try {
+ Scanner sc = new Scanner(System.in);
+ System.out.println("------------------------------------");
+ System.out.println("SILAHKAN INPUT PRODUK");
+ System.out.println("------------------------------------");
+ System.out.println("NAMA");
+ String name = sc.nextLine();
+ System.out.println("HARGA");
+ long harga = sc.nextInt();
+ System.out.println("STOK");
+ int stok = sc.nextInt();
+ System.out.println("------------------------------------");
+ if (controllerDB.insertDB(name, harga, stok)) {
+ System.out.println("BERHASIL INSERT DATA");
+
+ }else{
+ System.out.println("GAGAL MENAMBAHKAN DATA");
+ }
+ System.out.println("------------------------------------");
+ Menu.showMenu();
+ sc.close();
+
+ } catch (Exception e) {
+ InsertData.showInsertData();
+ }
+ }
+}
diff --git a/Task1/src/com/layouts/Menu.java b/Task1/src/com/layouts/Menu.java
new file mode 100644
index 0000000..811eec0
--- /dev/null
+++ b/Task1/src/com/layouts/Menu.java
@@ -0,0 +1,59 @@
+package com.layouts;
+
+import java.util.Scanner;
+
+
+public class Menu{
+ public static void showMenu(){
+ System.out.println("----------------------------------------");
+ System.out.println("------------ SELAMAT DATANG ------------");
+ System.out.println("----------------------------------------");
+ System.out.println("1] READ DATA ");
+ System.out.println("2] INSERT DATA ");
+ System.out.println("3] EDIT DATA ");
+ System.out.println("4] DELETE DATA ");
+ System.out.println("5] EXIT ");
+ System.out.println("-----------------------------------------");
+ System.out.print("PILIH: ");
+ SelectMenu();
+ }
+ public static void SelectMenu(){
+ Scanner sc = new Scanner(System.in);
+ try {
+
+ int menu = sc.nextInt();
+ switch (menu) {
+ case 1:
+ ReadData.showReadData();
+ break;
+ case 2:
+ InsertData.showInsertData();
+ break;
+ case 3:
+ UpdateData.showUpdateData(null);
+ break;
+ case 4:
+ DeleteData.showDeleteData();
+ break;
+ case 5:
+ System.out.println("------------------------------------------");
+ System.out.println("TERIMA KASIH DAN SAMPAI JUMPA");
+ System.out.println("------------------------------------------");
+ break;
+
+ default:
+ System.out.println("MAAF MENU TIDAK ADA DIPILIHAN");
+ Menu.showMenu();
+ break;
+
+ }
+ sc.close();
+ } catch (Exception e) {
+ System.out.println("INPUTAN BERUPA ANGKA");
+ showMenu();
+ }
+
+
+ }
+}
+
diff --git a/Task1/src/com/layouts/ReadData.java b/Task1/src/com/layouts/ReadData.java
new file mode 100644
index 0000000..67569c3
--- /dev/null
+++ b/Task1/src/com/layouts/ReadData.java
@@ -0,0 +1,58 @@
+package com.layouts;
+
+import java.util.Scanner;
+
+import com.controller.controllerDB;
+
+public class ReadData {
+
+
+ public static void showReadData(){
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("-----------------------------------");
+ System.out.println("DATA PRODUK");
+ System.out.println("-----------------------------------");
+ controllerDB.getDatabase();
+ System.out.println("-----------------------------------");
+
+ System.out.println("1. MENU ");
+ System.out.println("2. EXIT ");
+ System.out.print("Pilih bang: ");
+ try {
+ int selectMenu = sc.nextInt();
+ switch (selectMenu) {
+ case 1:
+ Menu.showMenu();
+ break;
+ case 2:
+ System.out.println("-----------------------------------------");
+ System.out.println("SAMPAI JUMPA KEMBALI...");
+ System.out.println("-----------------------------------------");
+ System.exit(selectMenu);
+ break;
+
+ default:
+ System.out.println("----------------------------------------------");
+ System.out.println("MAAF MENU YANG DIPILIH TIDAK TERSEDIA");
+ System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ ReadData.showReadData();
+ break;
+ }
+
+ } catch (Exception e) {
+ System.out.println("==============================================");
+ System.out.println("MASUKKAN INPUTAN ANGKA BANG");
+ System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ ReadData.showReadData();
+ }
+
+
+
+
+ System.out.println("--------------------------------");
+ Menu.showMenu();
+ sc.close();
+ }
+
+}
diff --git a/Task1/src/com/layouts/UpdateData.java b/Task1/src/com/layouts/UpdateData.java
new file mode 100644
index 0000000..eb6b85f
--- /dev/null
+++ b/Task1/src/com/layouts/UpdateData.java
@@ -0,0 +1,123 @@
+package com.layouts;
+
+import java.util.Scanner;
+
+import com.controller.controllerDB;
+import com.models.Produk;
+
+public class UpdateData {
+ //private String nama;
+
+ public static void showUpdateData(String nama){
+ Scanner sc = new Scanner(System.in);
+ System.out.println("=------------------------------------");
+ System.out.println("SILAHKAN PILIH DATA YANG INGIN DIEDIT ");
+ System.out.println("-------------------------------------");
+ controllerDB.getDatabase();
+ System.out.println("----------------------------------------------");
+ System.out.println("***Catatan: input nama produk dengan benar!!!");
+ System.out.print("Pilih Nama Produk: ");
+ nama = sc.nextLine();
+ //ControllerDB.getProdukbyNama(selectData);
+
+ System.out.println("----------------------------------------------");
+ System.out.println("SILAHKAN UPDATE PRODUK");
+ System.out.println("----------------------------------------------");
+ System.out.println("1. UPDATE NAMA ");
+ System.out.println("2. UPDATE HARGA ");
+ System.out.println("3. UPDATE JUMLAH ");
+ System.out.println("----------------------------------------------");
+ System.out.print("Pilih Menu Produk : ");
+
+ try {
+
+ int selectMenu = sc.nextInt();
+ switch (selectMenu) {
+ case 1:
+ showEditNama(nama);
+ break;
+ case 2:
+ showEditHarga(nama);
+ break;
+ case 3:
+ showEditStok(nama);
+ break;
+ default:
+ System.out.println("MAAF NAMA YANG DIPILIH TIDAK TERSEDIA");
+ Menu.showMenu();
+ }
+ System.out.println("----------------------------------------------");
+ Menu.showMenu();
+ sc.close();
+ } catch (Exception e) {
+ System.out.println("Input data produk dengan benar!!");
+ System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ Menu.showMenu();
+ }
+ }
+
+ public static void showEditNama(String nama){
+ Scanner sc = new Scanner(System.in);
+
+ Produk produk = controllerDB.getProdukbyNama(nama);
+
+ System.out.println("==============================================");
+ System.out.println("EDIT NAMA ");
+ System.out.println("==============================================");
+ System.out.println( "NAMA AWAL: "+ produk.getNama());
+ System.out.println("----------------------------------------------");
+ System.out.println("NAMA BARU: ");
+ String namaBaru = sc.nextLine();
+ controllerDB.updateNamaDB(produk.getId(), namaBaru);
+
+ System.out.println("==============================================");
+ System.out.println("BERHASIL UPDATE DATA NAMA");
+ System.out.println("-----------------------------------------------");
+ Menu.showMenu();
+ sc.close();
+ }
+
+ public static void showEditHarga(String nama){
+ Scanner sc = new Scanner(System.in);
+
+ Produk produk = controllerDB.getProdukbyNama(nama);
+ System.out.println("==============================================");
+ System.out.println("EDIT HARGA ");
+ System.out.println("==============================================");
+ System.out.println( "HARGA AWAL: "+ produk.getHarga());
+ System.out.println("----------------------------------------------");
+ System.out.println("HARGA BARU: ");
+ long hargaBaru = sc.nextInt();
+ controllerDB.updateHargaDB(produk.getId(), hargaBaru);
+
+ System.out.println("==============================================");
+ System.out.println("BERHASIL UPDATE DATA HARGA");
+ System.out.println("----------------------------------------------");
+ Menu.showMenu();
+ sc.close();
+ }
+ public static void showEditStok(String nama){
+ Scanner sc = new Scanner(System.in);
+
+ Produk produk = controllerDB.getProdukbyNama(nama);
+
+ System.out.println("==============================================");
+ System.out.println("EDIT JUMLAH ");
+ System.out.println("==============================================");
+ System.out.println( "JUMLAH AWAL: "+ produk.getStok());
+ System.out.println("----------------------------------------------");
+ System.out.println("JUMLAH BARU: ");
+ int stokBaru = sc.nextInt();
+ controllerDB.updateStokDB(produk.getId(), stokBaru);
+
+ System.out.println("==============================================");
+ System.out.println("BERHASIL UPDATE DATA JUMLAH");
+ System.out.println("----------------------------------------------");
+ Menu.showMenu();
+ sc.close();
+ }
+
+
+}
+
+
diff --git a/Task1/src/com/models/Produk.java b/Task1/src/com/models/Produk.java
new file mode 100644
index 0000000..b8ad4e1
--- /dev/null
+++ b/Task1/src/com/models/Produk.java
@@ -0,0 +1,40 @@
+package com.models;
+
+public class Produk {
+ private int id;
+ private String nama;
+ private long harga;
+ private int stok;
+
+ public Produk(int id, String nama, long harga, int stok) {
+ this.id = id;
+ this.nama = nama;
+ this.harga = harga;
+ this.stok = stok;
+ }
+ public int getId() {
+ return id;
+ }
+ public void setId(int id) {
+ this.id = id;
+ }
+ public String getNama() {
+ return nama;
+ }
+ public void setNama(String nama) {
+ this.nama = nama;
+ }
+ public long getHarga() {
+ return harga;
+ }
+ public void setHarga(long harga) {
+ this.harga = harga;
+ }
+ public int getStok() {
+ return stok;
+ }
+ public void setStok(int stok) {
+ this.stok = stok;
+ }
+
+}
diff --git a/Task2/.vscode/settings.json b/Task2/.vscode/settings.json
new file mode 100644
index 0000000..acd2672
--- /dev/null
+++ b/Task2/.vscode/settings.json
@@ -0,0 +1,6 @@
+{
+ "java.project.referencedLibraries": [
+ "lib/**/*.jar",
+ "c:\\Program Files\\Java\\mysql-connector-j-8.0.32\\mysql-connector-j-8.0.32.jar"
+ ]
+}
\ No newline at end of file
diff --git a/Task2/build.xml b/Task2/build.xml
new file mode 100644
index 0000000..48d135b
--- /dev/null
+++ b/Task2/build.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+ Builds, tests, and runs the project AplikasiKasir.
+
+
+
diff --git a/Task2/build/classes/.netbeans_automatic_build b/Task2/build/classes/.netbeans_automatic_build
new file mode 100644
index 0000000..e69de29
diff --git a/Task2/build/classes/.netbeans_update_resources b/Task2/build/classes/.netbeans_update_resources
new file mode 100644
index 0000000..e69de29
diff --git a/Task2/build/classes/App$1.class b/Task2/build/classes/App$1.class
new file mode 100644
index 0000000..adae9c7
Binary files /dev/null and b/Task2/build/classes/App$1.class differ
diff --git a/Task2/build/classes/App$2.class b/Task2/build/classes/App$2.class
new file mode 100644
index 0000000..3cac256
Binary files /dev/null and b/Task2/build/classes/App$2.class differ
diff --git a/Task2/build/classes/App$3.class b/Task2/build/classes/App$3.class
new file mode 100644
index 0000000..acd534e
Binary files /dev/null and b/Task2/build/classes/App$3.class differ
diff --git a/Task2/build/classes/App$4.class b/Task2/build/classes/App$4.class
new file mode 100644
index 0000000..8fa6c16
Binary files /dev/null and b/Task2/build/classes/App$4.class differ
diff --git a/Task2/build/classes/App$5.class b/Task2/build/classes/App$5.class
new file mode 100644
index 0000000..2e0bc72
Binary files /dev/null and b/Task2/build/classes/App$5.class differ
diff --git a/Task2/build/classes/App$6.class b/Task2/build/classes/App$6.class
new file mode 100644
index 0000000..aaadca4
Binary files /dev/null and b/Task2/build/classes/App$6.class differ
diff --git a/Task2/build/classes/App$7.class b/Task2/build/classes/App$7.class
new file mode 100644
index 0000000..00ec9e7
Binary files /dev/null and b/Task2/build/classes/App$7.class differ
diff --git a/Task2/build/classes/App$8.class b/Task2/build/classes/App$8.class
new file mode 100644
index 0000000..61acf64
Binary files /dev/null and b/Task2/build/classes/App$8.class differ
diff --git a/Task2/build/classes/App.class b/Task2/build/classes/App.class
new file mode 100644
index 0000000..800ff08
Binary files /dev/null and b/Task2/build/classes/App.class differ
diff --git a/Task2/build/classes/App.form b/Task2/build/classes/App.form
new file mode 100644
index 0000000..f2d844f
--- /dev/null
+++ b/Task2/build/classes/App.form
@@ -0,0 +1,461 @@
+
+
+
diff --git a/Task2/manifest.mf b/Task2/manifest.mf
new file mode 100644
index 0000000..328e8e5
--- /dev/null
+++ b/Task2/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/Task2/nbproject/build-impl.xml b/Task2/nbproject/build-impl.xml
new file mode 100644
index 0000000..a07447b
--- /dev/null
+++ b/Task2/nbproject/build-impl.xml
@@ -0,0 +1,1771 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set src.dir
+ Must set test.src.dir
+ Must set build.dir
+ Must set dist.dir
+ Must set build.classes.dir
+ Must set dist.javadoc.dir
+ Must set build.test.classes.dir
+ Must set build.test.results.dir
+ Must set build.classes.excludes
+ Must set dist.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No tests executed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set JVM to use for profiling in profiler.info.jvm
+ Must set profiler agent JVM arguments in profiler.info.jvmargs.agent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+ java -jar "${dist.jar.resolved}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must set fix.includes
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set profile.class
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+ Some tests failed; see details above.
+
+
+
+ Must select some files in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+ Must select one file in the IDE or set test.class
+
+
+
+ Must select one file in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Task2/nbproject/genfiles.properties b/Task2/nbproject/genfiles.properties
new file mode 100644
index 0000000..280ab50
--- /dev/null
+++ b/Task2/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=306947de
+build.xml.script.CRC32=0b1e5832
+build.xml.stylesheet.CRC32=f85dc8f2@1.107.0.48
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=306947de
+nbproject/build-impl.xml.script.CRC32=69fa4c21
+nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.107.0.48
diff --git a/Task2/nbproject/private/private.properties b/Task2/nbproject/private/private.properties
new file mode 100644
index 0000000..18a4274
--- /dev/null
+++ b/Task2/nbproject/private/private.properties
@@ -0,0 +1,2 @@
+compile.on.save=true
+user.properties.file=C:\\Users\\vfxki\\AppData\\Roaming\\NetBeans\\18\\build.properties
diff --git a/Task2/nbproject/private/private.xml b/Task2/nbproject/private/private.xml
new file mode 100644
index 0000000..97a8375
--- /dev/null
+++ b/Task2/nbproject/private/private.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ file:/C:/Users/vfxki/Documents/NetBeansProjects/AplikasiKasir/src/App.java
+
+
+
diff --git a/Task2/nbproject/project.properties b/Task2/nbproject/project.properties
new file mode 100644
index 0000000..7ce2c1a
--- /dev/null
+++ b/Task2/nbproject/project.properties
@@ -0,0 +1,97 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processor.options=
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+ ${run.classpath}
+debug.modulepath=\
+ ${run.modulepath}
+debug.test.classpath=\
+ ${run.test.classpath}
+debug.test.modulepath=\
+ ${run.test.modulepath}
+# Files in build.classes.dir which should be excluded from distribution jar
+dist.archive.excludes=
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/AplikasiKasir.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+dist.jlink.dir=${dist.dir}/jlink
+dist.jlink.output=${dist.jlink.dir}/AplikasiKasir
+excludes=
+file.reference.mysql-connector-j-8.0.32.jar=C:\\Program Files\\Java\\mysql-connector-j-8.0.32\\mysql-connector-j-8.0.32.jar
+includes=**
+jar.compress=false
+javac.classpath=\
+ ${file.reference.mysql-connector-j-8.0.32.jar}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.external.vm=true
+javac.modulepath=
+javac.processormodulepath=
+javac.processorpath=\
+ ${javac.classpath}
+javac.source=17
+javac.target=17
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+javac.test.modulepath=\
+ ${javac.modulepath}
+javac.test.processorpath=\
+ ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.html5=false
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+# The jlink additional root modules to resolve
+jlink.additionalmodules=
+# The jlink additional command line parameters
+jlink.additionalparam=
+jlink.launcher=true
+jlink.launcher.name=AplikasiKasir
+main.class=App
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=false
+platform.active=default_platform
+run.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project.
+# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
+# To set system properties for unit tests define test-sys-prop.name=value:
+run.jvmargs=
+run.modulepath=\
+ ${javac.modulepath}
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+run.test.modulepath=\
+ ${javac.test.modulepath}
+source.encoding=UTF-8
+src.dir=src
+test.src.dir=test
diff --git a/Task2/nbproject/project.xml b/Task2/nbproject/project.xml
new file mode 100644
index 0000000..4ca3dbe
--- /dev/null
+++ b/Task2/nbproject/project.xml
@@ -0,0 +1,15 @@
+
+
+ org.netbeans.modules.java.j2seproject
+
+
+ AplikasiKasir
+
+
+
+
+
+
+
+
+
diff --git a/Task2/src/App.form b/Task2/src/App.form
new file mode 100644
index 0000000..f2d844f
--- /dev/null
+++ b/Task2/src/App.form
@@ -0,0 +1,461 @@
+
+
+
diff --git a/Task2/src/App.java b/Task2/src/App.java
new file mode 100644
index 0000000..c37013c
--- /dev/null
+++ b/Task2/src/App.java
@@ -0,0 +1,545 @@
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.swing.JOptionPane;
+import javax.swing.table.DefaultTableModel;
+
+public class App extends javax.swing.JFrame {
+ private int totalBelanja = 0;
+ /**
+ * Creates new form App
+ */
+ public App() {
+ initComponents();
+ loadData();
+ }
+
+ private void loadData() {
+ // Konfigurasi koneksi database
+ String url = "jdbc:mysql://localhost:3306/db_produk";
+ String username = "root";
+ String password = "";
+
+ // Koneksi ke database
+ try (Connection conn = DriverManager.getConnection(url, username, password)) {
+ // Statement untuk menjalankan query
+ Statement stmt = conn.createStatement();
+
+ // Query untuk mengambil data dari tabel
+ String query = "SELECT * FROM tb_produk";
+
+ // Eksekusi query dan ambil hasilnya
+ ResultSet rs = stmt.executeQuery(query);
+
+ // Buat model tabel
+ DefaultTableModel model = (DefaultTableModel) tabel.getModel();
+
+ // Hapus semua baris yang ada di tabel
+ model.setRowCount(0);
+
+ // Loop melalui hasil query dan tambahkan data ke dalam model tabel
+ while (rs.next()) {
+ int id = rs.getInt("ID");
+ String nama = rs.getString("NAMA");
+ long harga = rs.getLong("HARGA");
+ int jumlah = rs.getInt("JUMLAH");
+
+ // Tambahkan data ke dalam baris baru pada model tabel
+ model.addRow(new Object[]{id, nama, harga, jumlah});
+ }
+
+ // Tutup statement dan result set
+ stmt.close();
+ rs.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPanel1 = new javax.swing.JPanel();
+ jPanel2 = new javax.swing.JPanel();
+ jLabel1 = new javax.swing.JLabel();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ tabel = new javax.swing.JTable();
+ jLabel2 = new javax.swing.JLabel();
+ jLabel3 = new javax.swing.JLabel();
+ jLabel4 = new javax.swing.JLabel();
+ textNama = new javax.swing.JTextField();
+ textHarga = new javax.swing.JTextField();
+ textJumlah = new javax.swing.JTextField();
+ buttonTambah = new javax.swing.JButton();
+ buttonHapus = new javax.swing.JButton();
+ buttonClear = new javax.swing.JButton();
+ jPanel3 = new javax.swing.JPanel();
+ jLabel5 = new javax.swing.JLabel();
+ jLabel6 = new javax.swing.JLabel();
+ jLabel7 = new javax.swing.JLabel();
+ textTotal = new javax.swing.JTextField();
+ textTunai = new javax.swing.JTextField();
+ textKembali = new javax.swing.JTextField();
+ buttonSimpan = new javax.swing.JButton();
+ buttonBayar = new javax.swing.JButton();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+
+ jPanel1.setBackground(new java.awt.Color(51, 51, 51));
+
+ jPanel2.setBackground(new java.awt.Color(102, 102, 102));
+ jPanel2.setForeground(new java.awt.Color(51, 51, 51));
+
+ jLabel1.setFont(new java.awt.Font("Comic Sans MS", 0, 18)); // NOI18N
+ jLabel1.setForeground(new java.awt.Color(255, 255, 255));
+ jLabel1.setText("CASH-COMP");
+
+ javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
+ jPanel2.setLayout(jPanel2Layout);
+ jPanel2Layout.setHorizontalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel1)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ jPanel2Layout.setVerticalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel1)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+
+ tabel.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 [] {
+ "ID", "NAMA", "HARGA", "JUMLAH"
+ }
+ ) {
+ Class[] types = new Class [] {
+ java.lang.Integer.class, java.lang.String.class, java.lang.Long.class, java.lang.Integer.class
+ };
+
+ public Class getColumnClass(int columnIndex) {
+ return types [columnIndex];
+ }
+ });
+ jScrollPane1.setViewportView(tabel);
+
+ jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel2.setForeground(new java.awt.Color(255, 255, 255));
+ jLabel2.setText("Nama Barang");
+
+ jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel3.setForeground(new java.awt.Color(255, 255, 255));
+ jLabel3.setText("Harga Barang");
+
+ jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel4.setForeground(new java.awt.Color(255, 255, 255));
+ jLabel4.setText("Jumlah Barang");
+
+ textNama.setBackground(new java.awt.Color(102, 102, 102));
+ textNama.setForeground(new java.awt.Color(102, 102, 102));
+
+ textHarga.setBackground(new java.awt.Color(102, 102, 102));
+
+ textJumlah.setBackground(new java.awt.Color(102, 102, 102));
+ textJumlah.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ textJumlahActionPerformed(evt);
+ }
+ });
+
+ buttonTambah.setBackground(new java.awt.Color(102, 102, 102));
+ buttonTambah.setText("ADD");
+ buttonTambah.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ String nama = textNama.getText();
+ String hargaStr = textHarga.getText();
+ String jumlahStr = textJumlah.getText();
+
+ long harga = Long.parseLong(hargaStr);
+ int jumlah = Integer.parseInt(jumlahStr);
+
+ String url = "jdbc:mysql://localhost:3306/db_produk";
+ String username = "root";
+ String password = "";
+
+ try (Connection conn = DriverManager.getConnection(url, username, password)) {
+ String query = "INSERT INTO tb_produk (NAMA, HARGA, jumlah) VALUES (?, ?, ?)";
+ PreparedStatement pstmt = conn.prepareStatement(query);
+ pstmt.setString(1, nama);
+ pstmt.setLong(2, harga);
+ pstmt.setInt(3, jumlah);
+ pstmt.executeUpdate();
+ pstmt.close();
+
+ // Mengosongkan field setelah menambahkan produk
+ textNama.setText("");
+ textHarga.setText("");
+ textJumlah.setText("");
+
+ // Memuat ulang data
+ loadData();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(null, "Gagal menambahkan data");
+ }
+ }
+ });
+
+ buttonHapus.setBackground(new java.awt.Color(102, 102, 102));
+ buttonHapus.setText("DELETE");
+ buttonHapus.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ // Mendapatkan indeks baris yang dipilih
+ int selectedRow = tabel.getSelectedRow();
+
+ if (selectedRow != -1) {
+ // Mendapatkan nilai ID pada kolom "ID" di baris yang dipilih
+ int id = (int) tabel.getValueAt(selectedRow, 0);
+
+ // Konfigurasi koneksi database
+ String url = "jdbc:mysql://localhost:3306/db_produk";
+ String username = "root";
+ String password = "";
+
+ // Koneksi ke database
+ try (Connection conn = DriverManager.getConnection(url, username, password)) {
+ // Statement untuk menjalankan query
+ Statement stmt = conn.createStatement();
+
+ // Query untuk menghapus data dari tabel berdasarkan ID
+ String query = "DELETE FROM tb_produk WHERE ID = " + id;
+
+ // Eksekusi query
+ int affectedRows = stmt.executeUpdate(query);
+
+ if (affectedRows > 0) {
+ // Hapus baris dari model tabel
+ DefaultTableModel model = (DefaultTableModel) tabel.getModel();
+ model.removeRow(selectedRow);
+ }
+ // Tutup statement
+ stmt.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+});
+
+ buttonClear.setBackground(new java.awt.Color(153, 0, 0));
+ buttonClear.setText("CLEAR");
+ buttonClear.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ textNama.setText("");
+ textHarga.setText("");
+ textJumlah.setText("");
+ }
+ });
+
+ jPanel3.setBackground(new java.awt.Color(153, 153, 153));
+
+ jLabel5.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jLabel5.setForeground(new java.awt.Color(255, 255, 255));
+ jLabel5.setText("Total");
+
+ jLabel6.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jLabel6.setForeground(new java.awt.Color(255, 255, 255));
+ jLabel6.setText("Cash");
+
+ jLabel7.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jLabel7.setForeground(new java.awt.Color(255, 255, 255));
+ jLabel7.setText("Change");
+
+ textTotal.setBackground(new java.awt.Color(204, 204, 204));
+
+ textTunai.setBackground(new java.awt.Color(204, 204, 204));
+
+ textKembali.setBackground(new java.awt.Color(204, 204, 204));
+
+ buttonSimpan.setBackground(new java.awt.Color(102, 102, 102));
+ buttonSimpan.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ buttonSimpan.setText("ADD TO CART");
+ buttonSimpan.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ int selectedRow = tabel.getSelectedRow();
+
+ if (selectedRow != -1) {
+ try {
+ // Mendapatkan data stok pada kolom "Stok" di baris yang dipilih
+ int jumlah = (int) tabel.getValueAt(selectedRow, 3);
+ if (jumlah > 0) {
+ // Mengurangi stok dengan 1
+ jumlah--;
+
+ // Memperbarui stok di dalam tabel
+ tabel.setValueAt(jumlah, selectedRow, 3);
+
+ // Mendapatkan ID barang dari kolom "ID" di baris yang dipilih
+ int id = (int) tabel.getValueAt(selectedRow, 0);
+
+ // Menghubungkan ke database
+ String url = "jdbc:mysql://localhost:3306/db_produk";
+ String username = "root";
+ String password = "";
+ Connection connection = DriverManager.getConnection(url, username, password);
+
+ // Update stok di database
+ String query = "UPDATE tb_produk SET jumlah = ? WHERE id = ?";
+ PreparedStatement statement = connection.prepareStatement(query);
+ statement.setInt(1, jumlah);
+ statement.setInt(2, id);
+ statement.executeUpdate();
+
+ // Lakukan sesuatu dengan stok yang telah diperbarui
+
+ // Menutup koneksi ke database
+ statement.close();
+ connection.close();
+ } else {
+ System.out.println("Stok barang kosong");
+ }
+
+ double hargaBarang = Double.parseDouble(tabel.getValueAt(selectedRow, 2).toString());
+
+ // Menambahkan harga barang ke total belanjaan
+ totalBelanja += hargaBarang;
+
+ // Memperbarui label atau field yang menampilkan total belanjaan
+ textTotal.setText(String.valueOf("Rp. " + totalBelanja));
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ });
+
+
+ buttonBayar.setBackground(new java.awt.Color(102, 102, 102));
+ buttonBayar.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ buttonBayar.setText("PAY");
+ buttonBayar.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ String input = textTunai.getText();
+ try {
+ int number = Integer.parseInt(input);
+ int totalKembalian = number - totalBelanja;
+ if (totalKembalian < 0){
+ textKembali.setText("Uang anda tidak cukup");
+ } else {
+ textKembali.setText(String.valueOf("RP. " + totalKembalian));
+ }
+
+ } catch (NumberFormatException ex) {
+ // Tangani kesalahan jika String tidak dapat diubah menjadi integer
+ textKembali.setText("Inputan Hanya Berupa Angka");
+ }
+ }
+ });
+
+ javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+ jPanel3.setLayout(jPanel3Layout);
+ jPanel3Layout.setHorizontalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addComponent(jLabel7)
+ .addGap(18, 18, 18)
+ .addComponent(textKembali))
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel5)
+ .addComponent(jLabel6))
+ .addGap(35, 35, 35)
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(textTotal)
+ .addComponent(textTunai)))
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addComponent(buttonSimpan)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(buttonBayar)
+ .addGap(0, 43, Short.MAX_VALUE)))
+ .addContainerGap())
+ );
+ jPanel3Layout.setVerticalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel5)
+ .addComponent(textTotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel6)
+ .addComponent(textTunai, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel7)
+ .addComponent(textKembali, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE)
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(buttonSimpan)
+ .addComponent(buttonBayar))
+ .addContainerGap())
+ );
+
+ javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+ jPanel1.setLayout(jPanel1Layout);
+ jPanel1Layout.setHorizontalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addComponent(jScrollPane1)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(buttonTambah, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(buttonHapus, javax.swing.GroupLayout.DEFAULT_SIZE, 127, Short.MAX_VALUE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel2)
+ .addComponent(jLabel3)
+ .addComponent(jLabel4))
+ .addGap(25, 25, 25)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(textNama, javax.swing.GroupLayout.DEFAULT_SIZE, 150, Short.MAX_VALUE)
+ .addComponent(textHarga)
+ .addComponent(textJumlah)))
+ .addComponent(buttonClear, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ jPanel1Layout.setVerticalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel2)
+ .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel3)
+ .addComponent(textHarga, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(textJumlah, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel4))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(buttonTambah)
+ .addComponent(buttonHapus))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(buttonClear))
+ .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGap(0, 3, Short.MAX_VALUE))
+ );
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+ getContentPane().setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ );
+
+ pack();
+ setLocationRelativeTo(null);
+ }// //GEN-END:initComponents
+
+ private void textJumlahActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textJumlahActionPerformed
+ // TODO add your handling code here:
+ }//GEN-LAST:event_textJumlahActionPerformed
+
+ private void buttonHapusActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHapusActionPerformed
+ // TODO add your handling code here:
+ }//GEN-LAST:event_buttonHapusActionPerformed
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[]) {
+ /* Set the Nimbus look and feel */
+ //
+ /* 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(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ } catch (InstantiationException ex) {
+ java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ } catch (IllegalAccessException ex) {
+ java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+ java.util.logging.Logger.getLogger(App.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ }
+ //
+
+ /* Create and display the form */
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ new App().setVisible(true);
+ }
+ });
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton buttonBayar;
+ private javax.swing.JButton buttonClear;
+ private javax.swing.JButton buttonHapus;
+ private javax.swing.JButton buttonSimpan;
+ private javax.swing.JButton buttonTambah;
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JLabel jLabel3;
+ private javax.swing.JLabel jLabel4;
+ private javax.swing.JLabel jLabel5;
+ private javax.swing.JLabel jLabel6;
+ private javax.swing.JLabel jLabel7;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JPanel jPanel3;
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JTable tabel;
+ private javax.swing.JTextField textHarga;
+ private javax.swing.JTextField textJumlah;
+ private javax.swing.JTextField textKembali;
+ private javax.swing.JTextField textNama;
+ private javax.swing.JTextField textTotal;
+ private javax.swing.JTextField textTunai;
+ // End of variables declaration//GEN-END:variables
+}
\ No newline at end of file