You are on page 1of 13

Grace Mariana

124180004
PBO (C) – UAS

1. Class BukuAlamat
Class ini pada konsep MVC berperan sebagai model.
package bukualamat;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;

public class BukuAlamat {

int ID;
String nama, alamat, telepon, tglLahir, jenisKelamin;

public BukuAlamat() {
}

public void addData(String nama, String alamat, String


telepon, java.util.Date tglLahir, String jenisKelamin) {
java.sql.Date sqlDate = new
java.sql.Date(tglLahir.getTime());

try {
String sql = "INSERT INTO bukuAlamat(Nama,
Alamat, Telp, TglLahir, JenisKelamin) VALUES ('"
+ nama + "','"
+ alamat + "','"
+ telepon + "','"
+ sqlDate + "','"
+ jenisKelamin + "')";

Connection connection = Koneksi.configDB();


PreparedStatement preparedStatement =
connection.prepareStatement(sql);
preparedStatement.execute();

JOptionPane.showMessageDialog(null, "Data
berhasil disimpan");
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "NIS Sudah
Ada", "Alert", JOptionPane.ERROR_MESSAGE);
}
}
public void editData(int ID, String nama, String alamat,
String telepon, Date tglLahir, String jenisKelamin) {

java.sql.Date sqlDate = new


java.sql.Date(tglLahir.getTime());

try {
String sql = "UPDATE bukuAlamat SET "
+ " Nama = '" + nama
+ "', Alamat = '" + alamat
+ "', Telp = '" + telepon
+ "', TglLahir = '" + sqlDate
+ "', JenisKelamin = '" + jenisKelamin
+ "' WHERE ID = " + ID;

Connection connection = Koneksi.configDB();


PreparedStatement preparedStatement =
connection.prepareStatement(sql);
preparedStatement.execute();

JOptionPane.showMessageDialog(null, "Data
berhasil diedit");
} catch (Exception e) {
e.printStackTrace();
}
}

public void deleteData(int ID) {


try {
if (ID < 0) {
JOptionPane.showMessageDialog(null, "Data
belum dipilih", "Alert", JOptionPane.ERROR_MESSAGE);
} else {
String sql = "DELETE FROM bukuAlamat WHERE ID
= " + ID;
Connection connection = Koneksi.configDB();
PreparedStatement preparedStatement =
connection.prepareStatement(sql);
preparedStatement.execute();
JOptionPane.showMessageDialog(null, "Data
berhasil dihapus");
}
} catch (Exception e) {
e.printStackTrace();
}
}

public ResultSet loadData(String Name) {


try {
String sql = "SELECT * FROM bukuAlamat WHERE Nama
= '" + Name + "'";
Connection connection = Koneksi.configDB();
Statement statement =
connection.createStatement();
return statement.executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public ResultSet loadData() {
try {
String sql = "SELECT * FROM bukuAlamat;";
Connection connection = Koneksi.configDB();
Statement statement =
connection.createStatement();
return statement.executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

2. Class ViewBukuAlamat
Class ini berperan sebagai View pada konsep MVC dimana berisi form tampilan yang
akan diisi user.

package bukualamat;

import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class ViewBukuAlamat extends JFrame {

private DefaultTableModel tableModel = new


DefaultTableModel();
private JLabel lbID = new JLabel("ID"),
lbNama = new JLabel("Nama"),
lbAlamat = new JLabel("Alamat"),
lbTelp = new JLabel("Telepon"),
lbTglLahir = new JLabel("Tanggal Lahir"),
lbJenisKelamin = new JLabel("Jenis Kelamin");
private JTextField tfID = new JTextField(),
tfNama = new JTextField(),
tfAlamat = new JTextField(),
tfTelp = new JTextField(),
tfTglLahir = new JTextField(),
tfSearch = new JTextField();
private JComboBox cbJenisKelamin = new JComboBox();
private JScrollPane scrollPane = new JScrollPane();
private JTable tbBukuAlamat = new JTable();
private JPanel rootPanel = new JPanel();
private JButton btnAdd = new JButton("Tambah"),
btnEdit = new JButton("Edit"),
btnDelete = new JButton("Hapus"),
btnReset = new JButton("Cancel"),
btnSearch = new JButton("Cari");

public ViewBukuAlamat() {
setTitle("BukuAlamat");
setSize(1000, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
initComponent();
}

private void initComponent() {


add(lbID).setFont(new Font("Tahoma", 0, 14));
add(lbNama).setFont(new Font("Tahoma", 0, 14));
add(lbAlamat).setFont(new Font("Tahoma", 0, 14));
add(lbTelp).setFont(new Font("Tahoma", 0, 14));
add(lbTglLahir).setFont(new Font("Tahoma", 0, 14));
add(lbJenisKelamin).setFont(new Font("Tahoma", 0,
14));
add(tfID).setFont(new Font("Tahoma", 0, 14));
add(tfNama).setFont(new Font("Tahoma", 0, 14));
add(tfAlamat).setFont(new Font("Tahoma", 0, 14));
add(tfTelp).setFont(new Font("Tahoma", 0, 14));
add(tfTglLahir).setFont(new Font("Tahoma", 0, 14));
add(tfSearch).setFont(new Font("Tahoma", 0, 14));
add(cbJenisKelamin).setFont(new Font("Tahoma", 0,
14));
add(btnAdd).setFont(new Font("Tahoma", 0, 14));
add(btnDelete).setFont(new Font("Tahoma", 0, 14));
add(btnEdit).setFont(new Font("Tahoma", 0, 14));
add(btnSearch).setFont(new Font("Tahoma", 0, 14));
add(btnReset).setFont(new Font("Tahoma", 0, 14));
add(tbBukuAlamat).setFont(new Font("Tahoma", 0, 14));
add(scrollPane).setFont(new Font("Tahoma", 0, 14));

lbID.setBounds(10, 60, 100, 20);


lbNama.setBounds(10, 100, 100, 20);
lbAlamat.setBounds(10, 140, 100, 20);
lbTelp.setBounds(10, 180, 100, 20);
lbTglLahir.setBounds(10, 220, 100, 20);
lbJenisKelamin.setBounds(10, 260, 100, 20);

tfID.setBounds(120, 50, 210, 35);


tfID.setEnabled(false);
tfNama.setBounds(120, 95, 210, 35);
tfAlamat.setBounds(120, 135, 210, 35);
tfTelp.setBounds(120, 175, 210, 35);
tfTglLahir.setBounds(120, 215, 210, 35);
tfSearch.setBounds(600, 300, 150, 40);
cbJenisKelamin.setBounds(120, 255, 50, 35);
cbJenisKelamin.setModel(new
DefaultComboBoxModel<>(new String[]{"L", "P"}));

btnAdd.setBounds(100, 300, 80, 40);


btnDelete.setBounds(260, 300, 80, 40);
btnEdit.setBounds(180, 300, 80, 40);
btnReset.setBounds(180, 345, 80, 40);
btnSearch.setBounds(520, 300, 80, 40);

scrollPane.setBounds(350, 50, 600, 250);


scrollPane.setViewportView(tbBukuAlamat);
tableModel = new DefaultTableModel();
tableModel.addColumn("ID");
tableModel.addColumn("Nama");
tableModel.addColumn("Alamat");
tableModel.addColumn("Telepon");
tableModel.addColumn("Tanggal Lahir");
tableModel.addColumn("Jenis Kelamin");

tbBukuAlamat.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
tableClicked(e);
}
});
}

private void tableClicked(MouseEvent event) {


int row = tbBukuAlamat.rowAtPoint(event.getPoint());
String ID = tbBukuAlamat.getValueAt(row,
0).toString();
String nama = tbBukuAlamat.getValueAt(row,
1).toString();
String alamat = tbBukuAlamat.getValueAt(row,
2).toString();
String telepon = tbBukuAlamat.getValueAt(row,
3).toString();
String tglLahir = tbBukuAlamat.getValueAt(row,
4).toString();
String jenisKelamin = tbBukuAlamat.getValueAt(row,
5).toString();

tfID.setText(ID);
tfNama.setText(nama);
tfAlamat.setText(alamat);
tfTelp.setText(telepon);
tfTglLahir.setText(tglLahir);
cbJenisKelamin.setSelectedItem(jenisKelamin);
}

public DefaultTableModel getTableModel() {


return tableModel;
}

public JTextField getTfID() {


return tfID;
}

public JTextField getTfNama() {


return tfNama;
}

public JTextField getTfAlamat() {


return tfAlamat;
}

public JTextField getTfTelp() {


return tfTelp;
}

public JTextField getTfTglLahir() {


return tfTglLahir;
}
public JTextField getTfSearch() {
return tfSearch;
}

public JComboBox getCbJenisKelamin() {


return cbJenisKelamin;
}

public JScrollPane getScrollPane() {


return scrollPane;
}

public JTable getTbBukuAlamat() {


return tbBukuAlamat;
}

public JPanel getRootPanel() {


return rootPanel;
}

public JButton getBtnAdd() {


return btnAdd;
}

public JButton getBtnEdit() {


return btnEdit;
}

public JButton getBtnDelete() {


return btnDelete;
}

public JButton getBtnReset() {


return btnReset;
}

public JButton getBtnSearch() {


return btnSearch;
}

public void setTableModel(DefaultTableModel tableModel) {


this.tableModel = tableModel;
}
}

3. Class ControllerBukuAlamat
Class yang mengontrol antara View dan Model.
package bukualamat;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class ControllerBukuAlamat {

private BukuAlamat bukuAlamat;


private final ViewBukuAlamat viewBukuAlamat;

public ControllerBukuAlamat() {

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(ViewBukuAlamat.class.getNa
me()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(ViewBukuAlamat.class.getNa
me()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(ViewBukuAlamat.class.getNa
me()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException
ex) {

java.util.logging.Logger.getLogger(ViewBukuAlamat.class.getNa
me()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>

this.bukuAlamat = new BukuAlamat();


this.viewBukuAlamat = new ViewBukuAlamat();

viewBukuAlamat.setVisible(true);

initController();
}

private void initController() {

loadTable("");

viewBukuAlamat.getBtnAdd().addActionListener(e -> {
insertData();
});
viewBukuAlamat.getBtnEdit().addActionListener(e -> {
editData();
});

viewBukuAlamat.getBtnDelete().addActionListener(e ->
{
deleteData();
});

viewBukuAlamat.getBtnReset().addActionListener(e -> {
resetForm();
});
viewBukuAlamat.getBtnSearch().addActionListener(e -> {
searchData();
});
}

private void resetForm() {


viewBukuAlamat.getTfID().setText(null);
viewBukuAlamat.getTfNama().setText(null);
viewBukuAlamat.getTfAlamat().setText(null);
viewBukuAlamat.getTfTelp().setText(null);
viewBukuAlamat.getTfTglLahir().setText(null);

viewBukuAlamat.getCbJenisKelamin().setSelectedIndex(0);
}

private void loadTable(String Nama) {

viewBukuAlamat.setTableModel(new
DefaultTableModel());
viewBukuAlamat.getTableModel().addColumn("ID");
viewBukuAlamat.getTableModel().addColumn("Nama");
viewBukuAlamat.getTableModel().addColumn("Alamat");
viewBukuAlamat.getTableModel().addColumn("Telepon");
viewBukuAlamat.getTableModel().addColumn("Tanggal
Lahir");
viewBukuAlamat.getTableModel().addColumn("Jenis
Kelamin");

try {
ResultSet resultSet = null;

if (Nama == "") {
resultSet = bukuAlamat.loadData();
} else {
resultSet = bukuAlamat.loadData(Nama);
}

while (resultSet.next()) {
viewBukuAlamat.getTableModel().addRow(new
Object[]{
resultSet.getString(1),
resultSet.getString(2),
resultSet.getString(3),
resultSet.getString(4),
new SimpleDateFormat("dd-mm-
YYYY").format(dateConvert(resultSet.getString(5), "yyyy-mm-
dd")),
resultSet.getString(6),});

viewBukuAlamat.getTbBukuAlamat().setModel(viewBukuAlamat.getT
ableModel());
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}

private void insertData() {


String nama = viewBukuAlamat.getTfNama().getText();
String alamat =
viewBukuAlamat.getTfAlamat().getText();
String telepon = viewBukuAlamat.getTfTelp().getText();
String jenisKelamin =
viewBukuAlamat.getCbJenisKelamin().getSelectedItem().toString
();
Date tglLahir =
dateConvert(viewBukuAlamat.getTfTglLahir().getText(), "dd-mm-
yyyy");

bukuAlamat.addData(nama, alamat, telepon, tglLahir,


jenisKelamin);
loadTable("");
resetForm();
}

private void editData() {


int ID =
Integer.parseInt(viewBukuAlamat.getTfID().getText());
String nama = viewBukuAlamat.getTfNama().getText();
String alamat =
viewBukuAlamat.getTfAlamat().getText();
String telepon =
viewBukuAlamat.getTfTelp().getText();
String jenisKelamin =
viewBukuAlamat.getCbJenisKelamin().getSelectedItem().toString
();
Date tglLahir =
dateConvert(viewBukuAlamat.getTfTglLahir().getText(), "dd-mm-
yyyy");

bukuAlamat.editData(ID, nama, alamat, telepon,


tglLahir, jenisKelamin);
loadTable("");
resetForm();
}

private void deleteData() {


int ID =
Integer.parseInt(viewBukuAlamat.getTfID().getText());

bukuAlamat.deleteData(ID);
loadTable("");
resetForm();
}

private void searchData() {


loadTable(viewBukuAlamat.getTfSearch().getText());
}

private Date dateConvert(String date, String format) {


SimpleDateFormat formatDate = new
SimpleDateFormat(format);

Date value = null;


try {
value = formatDate.parse(date);
} catch (ParseException pe) {
// deal with ParseException
}
return value;
}
}
4. Class Koneksi
Class ini sebagai penghubung aplikasi dengan database menggunakan library JDBC.

package bukualamat;

import java.sql.Connection;
import java.sql.DriverManager;

public class Koneksi {

public static Connection configDB() {


Connection mysqlConfig;
try {
String url =
"jdbc:mysql://localhost:3306/myDataku?serverTimezone=UTC";
String user = "root";
String pass = "";
mysqlConfig = DriverManager.getConnection(url,
user, pass);
} catch (Exception e) {
System.out.println("Connection Failed ");
throw new Error(e);
}
return mysqlConfig;

5. Class Main
package bukualamat;

public class Main {

public static void main(String[] args) {


new ControllerBukuAlamat();
}

}
6. Output

Gambar 6.1 Tampilan Awal Aplikasi

Gambar 6.2 Tampilan Mengisi/Tambah Data


Gambar 6.3 Tampilan Tambah Data Berhasil Disimpan

Gambar 6.4 Tampilan Edit Data Berhasil


Gambar 6.5 Tampilan Cari Data Berdasarkan Nama

Gambar 6.6 Tampilan Hapus Data Berhasil

You might also like