TUGAS PEMROGRAMAN JAVA P10
SISTEM APLIKASI TOKO BUKU
NAMA : DANY SUKTIAWAN IF.
NIM : 12111074
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEHNIK INFORMATIKA
UNIVERSITAS MERCUBUANA YOGYAKARTA
2
DAFTAR ISI
COVER ... 1
DAFTAR ISI ... 2
BAB I PENDAHULUAN ... 3
1.1.
Latar Belakang ... 3
1.2.
Alasan Pemilihan Masalah ... 3
BAB II DATABASE ... 5
2.1.
Rancangan Tabel ... 5
2.2.
Relasi Tabel ... 8
BAB III JDBC ... 9
3.1.
Tabel Tbl_buku ... 9
3.2.
Tabel Tbl_kategori ... 19
3.3.
Tabel Tbl_pelanggan ... 19
3.4.
Tabel Tbl_petugas ... 19
3.5.
Tabel Tbl_supplier ... 19
3.6.
Tabel Tbl_pembelian ... 19
3.7.
Tabel Tbl_detail_beli ... 19
3.8.
Tabel Tbl_penjualan ... 19
3.9.
Tabel Tbl_detail_jual ... 19
BAB IV MENU ... 20
4.1.
Menu ... 20
4.2.
Integrasi Menu ... 21
BAB V PENUTUP ... 26
5.1.
Kesimpulan ... 26
5.2.
Kesulitan ... 26
3
BAB I
PENDAHULUAN
1.1. Latar Belakang
Dalam dunia modern sekarang ini, suatu informasi yang dihasilkan
merupakan sebuah proses dari sebuah data yang diatur dengan baik sehingga
hal ini sangatlah penting dalam pengambilan suatu keputusan. Tanpa adanya
pengolahan data tentunya informasi tidak dapat berjalan dengan maksimal.
Metode pegolahan data juga merupakan salah satu penentu dari mutu data itu
sendiri, karena data yang baik adalah data yang masih sesuai dengan keadaan
sebenarnya atau up to date dan tidak megakibatkan kerancuan data.
Proses pengolahan data pada toko buku ada yang masih bersifat Manual
sehingga pengolahan data masih terdapat beberapa kerancuan dan kurangnya
efisien dalam pengelolaan data. Hal ini dapat dikatakan kurang efektif dan efisien,
dikarenakan sulit untuk mencatat dan menghitung banyaknya jenis buku yang ada,
banyaknya jumlah buku, maupun besarnya jumlah harga. Banyaknya jumlah buku
yang dijual dan tingkat keramaian pembeli dapat mengakibatkan penjual
mengalami kesulitan untuk mengelola dan menghitung transaksi penjualan secara
cepat, tepat, dan efisien.
Dokumen ini merupakan diskripsi dari aplikasi penggajian pegawai yang
menggunakan bahasa pemograman berbasis java, selain itu dokumen ini juga untuk
memenuhi tugas mata kuliah Pemograman Java.
1.2. Alasan Pemilihan Masalah
Alasan Pemilihan judul ini sesuai dengan pembahasan pada bab
pendahuluan diatas, bahwa masih ada toko buku yang menggunakan
4
operasional secara manual. Selain itu juga dalam proses pembuatan laporan
menjadi lebih mudah dan efesien bagi administrasi. Penulis menggunakan judul
sistem aplikasi toko buku ini dikarenakan juga ruang lingkup analisa data yang tidak
terlalu rumit.
5
BAB II
DATABASE
2.1. Rancangan Tabel
Berikut ini rancangan database aplikasi toko buku :
1. Table tbl_buku
Field
Type
Comment
*
kode_buku
char(8) NOT NULL
judul_buku
varchar(50) NULL
**
kode_kategori
char(8) NOT NULL
pengarang
varchar(50) NULL
penerbit
varchar(50) NULL
tahun
int(4) NULL
isbn
varchar(25) NULL
harga_beli
float NULL
harga_jual
float NULL
stok
int(10) NULL
2. Table tbl_kategori
Field
Type
Comment
*
kode_kategori
char(8) NOT NULL
nama_kategori
varchar(50) NOT NULL
no_rak
char(8) NOT NULL
6
3. Table tbl_pelanggan
Field
Type
Comment
*
kode_plg
char(8) NOT NULL
nama_plg
varchar(50) NOT NULL
alamat
text NOT NULL
no_telp
varchar(15) NOT NULL
status_plg
tinyint(4) NOT NULL
4. Table tbl_petugas
Field
Type
Comment
*
kode_ptg
char(8) NOT NULL
nama_ptg
varchar(50) NOT NULL
password_ptg varchar(50) NOT NULL
status_ptg
tinyint(1) NOT NULL
5. Table tbl_supplier
Field
Type
Comment
*
kode_supplier
char(8) NOT NULL
nama_supplier
varchar(50) NOT NULL
alamat_supplier text NOT NULL
no_telp
int(15) NOT NULL
6. Table tbl_pembelian
Field
Type
Comment
*
faktur
char(15) NOT NULL
tanggal
datetime NOT NULL
total
float NOT NULL
**
kode_ptg
char(8) NOT NULL
**
kode_supplier
char(8) NOT NULL
7
7. Table tbl_detail_beli
Field
Type
Comment
**
faktur
char(15) NOT NULL
**
kode_buku
char(8) NOT NULL
judul_buku
varchar(50) NOT NULL
harga_beli
float NOT NULL
jumlah
int(4) NOT NULL
subtotal
float NOT NULL
8. Table tbl_penjualan
Field
Type
Comment
*
faktur
char(15) NOT NULL
tanggal
datetime NOT NULL
total
int(4) NOT NULL
dibayar
float NOT NULL
kembali
float NOT NULL
**
kode_ptg
char(8) NOT NULL
**
kode_plg
char(8) NOT NULL
9. Table tbl_detail_jual
Field
Type
Comment
**
faktur
char(15) NOT NULL
**
kode_buku
char(8) NOT NULL
nama_buku
varchar(50) NOT NULL
harga_jual
float NOT NULL
jumlah
int(4) NOT NULL
subtotal
float NOT NULL
8
2.2. Relasi Tabel
9
BAB III
JDBC
3.1. Tabel Tbl_buku
Input
/* --- * Tugas Java P9* Author : Dany Suktiawan IF. (12111074) * Universitas Mercubuana Yogyakarta --- */ import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; import java.sql.*; import java.util.regex.Pattern;
class Input_Buku extends JFrame {
JLabel labelKdBuku = new JLabel("Kode Buku"); JTextField textKdBuku = new JTextField(8); JLabel labelJudul = new JLabel("Judul Buku"); JTextField textJudul = new JTextField(100);
JLabel labelKategori = new JLabel("Kode Kategori"); final JComboBox comboKategori = new JComboBox();
JLabel labelPengarang = new JLabel("Pengarang"); JTextField textPengarang = new JTextField(50); JLabel labelPenerbit = new JLabel("Penerbit"); JTextField textPenerbit = new JTextField(50);
JLabel labelThnTerbit = new JLabel("Tahun Terbit"); JTextField textThnTerbit = new JTextField(4);
JLabel labelIsbn = new JLabel("ISBN"); JTextField textIsbn = new JTextField(25);
JLabel labelHrgbeli = new JLabel("Harga Beli"); JTextField textHrgbeli = new JTextField(15); JLabel labelHrgjual = new JLabel("Harga Jual"); JTextField textHrgjual = new JTextField(15); JLabel labelStok = new JLabel("Stok");
JTextField textStok = new JTextField(10);
JButton buttonSAVE = new JButton("SAVE"); JButton buttonEXIT = new JButton("EXIT");
10
Input_Buku(){
setTitle("Input Data Buku"); setLocation(300,100); setSize(430, 300); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } void GUI() { getContentPane().setLayout(null); getContentPane().add(labelKdBuku); labelKdBuku.setBounds(10,10,90,20); getContentPane().add(textKdBuku); textKdBuku.setBounds(140,10,100,20); getContentPane().add(labelJudul); labelJudul.setBounds(10,30,90,20); getContentPane().add(textJudul); textJudul.setBounds(140,30,250,20); getContentPane().add(labelKategori); labelKategori.setBounds(10,50,90,20); getContentPane().add(comboKategori); comboKategori.setBounds(140,50,250,20); getContentPane().add(labelPengarang); labelPengarang.setBounds(10,70,90,20); getContentPane().add(textPengarang); textPengarang.setBounds(140,70,250,20); getContentPane().add(labelPenerbit); labelPenerbit.setBounds(10,90,90,20); getContentPane().add(textPenerbit); textPenerbit.setBounds(140,90,250,20); getContentPane().add(labelThnTerbit); labelThnTerbit.setBounds(10,110,90,20); getContentPane().add(textThnTerbit); textThnTerbit.setBounds(140,110,100,20); getContentPane().add(labelIsbn); labelIsbn.setBounds(10,130,90,20); getContentPane().add(textIsbn); textIsbn.setBounds(140,130,250,20); getContentPane().add(labelHrgbeli); labelHrgbeli.setBounds(10,150,90,20); getContentPane().add(textHrgbeli); textHrgbeli.setBounds(140,150,100,20); getContentPane().add(labelHrgjual); labelHrgjual.setBounds(10,170,90,20);
11
getContentPane().add(textHrgjual); textHrgjual.setBounds(140,170,100,20); getContentPane().add(labelStok); labelStok.setBounds(10,190,90,20); getContentPane().add(textStok); textStok.setBounds(140,190,100,20); getContentPane().add(buttonSAVE); buttonSAVE.setBounds(140,230,90,20); getContentPane().add(buttonEXIT); buttonEXIT.setBounds(240,230,80,20); setVisible(true); } void Eksekusi_input() { //button exit buttonEXIT.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { if(JOptionPane.showConfirmDialog(null, "Apakah anda benar-benar akan keluar?", "Konfirmasi",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) { System.exit(0); } } }); //button save buttonSAVE.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String kdbuku, judul, kdkategori, pengarang, penerbit, isbn;
String thnterbit, hrgbeli, hrgjual, stok;
kdbuku = textKdBuku.getText(); judul = textJudul.getText();
Pattern pat = Pattern.compile(" - "); String strs[] = pat.split(comboKategori.getSelectedItem().toString()); kdkategori = strs[0]; pengarang = textPengarang.getText(); penerbit = textPenerbit.getText(); thnterbit = textThnTerbit.getText(); isbn = textIsbn.getText(); hrgbeli = textHrgbeli.getText(); hrgjual = textHrgjual.getText(); stok = textStok.getText();
12
DBConnection open = new DBConnection(); Connection mysql = open.getConnection(); try { Statement stmt = mysql.createStatement();
String sql = "INSERT INTO tbl_buku VALUES ('"+kdbuku+"','"+judul+"','"+kdkategori+"','"+pengarang+"','" +penerbit+"','"+thnterbit+"','"+isbn+"','"+hrgbeli+"','"+hrgj ual+"','"+stok+"');"; int i = stmt.executeUpdate(sql); if(i==1) {
JOptionPane.showMessageDialog(null, "Input Data Buku "+kdbuku+" Berhasil Disimpan");
textKdBuku.setText(""); textJudul.setText(""); textPengarang.setText(""); textPenerbit.setText(""); textThnTerbit.setText(""); textIsbn.setText(""); textHrgbeli.setText(""); textHrgjual.setText(""); textStok.setText(""); comboKategori.setEditable(true); comboKategori.setSelectedItem(""); Get_Kategoribuku call = new Get_Kategoribuku(); call.Get_kodekategori(); comboKategori.setEditable(false); } } catch(Exception ex) { JOptionPane.showMessageDialog(null, ex.getMessage() + kdkategori); } } }); }
13
public static void main(String[] args) { Input_Buku eksekusi = new Input_Buku();
Get_Kategoribuku call = new Get_Kategoribuku(); eksekusi.GUI(); eksekusi.Eksekusi_input(); call.Get_kodekategori(); } }
Search
//button search buttonSEARCH.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { String Search;
String kdbuku, judul, idpenerbit;
DBConnection open = new DBConnection(); Connection mysql = open.getConnection(); try { Search = textKdBuku.getText(); Statement stmt = mysql.createStatement();
String sql = "SELECT * FROM tbl_buku WHERE kode_buku like '"+Search+"'";
ResultSet i = stmt.executeQuery(sql); if(i.next()) { textKdBuku.setText(i.getString(1)); textJudul.setText(i.getString(2)); comboKategori.setEditable(true); comboKategori.setSelectedItem(i.getString(3)); textPengarang.setText(i.getString(4)); textPenerbit.setText(i.getString(5)); textThnTerbit.setText(i.getString(6)); textIsbn.setText(i.getString(7)); textHrgbeli.setText(i.getString(8));
14
textHrgjual.setText(i.getString(9));
textStok.setText(i.getString(10));
comboKategori.setEditable(false); } else {
JOptionPane.showMessageDialog(null, "Data Buku Tidak Ada"); } } catch(Exception ex) { JOptionPane.showMessageDialog(null, ex.getMessage()); } } });
Edit
//button update buttonUPDATE.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { String kdbuku, judul, kdkategori, pengarang, penerbit, isbn;
String thnterbit, hrgbeli, hrgjual, stok;
kdbuku = textKdBuku.getText(); judul = textJudul.getText();
Pattern pat = Pattern.compile(" - "); String strs[] = pat.split(comboKategori.getSelectedItem().toString()); kdkategori = strs[0]; pengarang = textPengarang.getText(); penerbit = textPenerbit.getText(); thnterbit = textThnTerbit.getText(); isbn = textIsbn.getText(); hrgbeli = textHrgbeli.getText(); hrgjual = textHrgjual.getText(); stok = textStok.getText(); //update ke database DBConnection open = new DBConnection(); Connection mysql = open.getConnection(); try { Statement stmt = mysql.createStatement(); String sql = ""+
15
"UPDATE tbl_buku SET judul_buku ='"+judul +"', kode_kategori = '"+kdkategori +"', pengarang = '"+pengarang +"', penerbit = '"+penerbit +"', tahun = '"+thnterbit +"', isbn = '"+isbn +"', harga_beli = '"+hrgbeli +"', harga_jual = '"+hrgjual +"', stok = '"+stok +"' WHERE kode_buku='"+kdbuku+"'"; int i = stmt.executeUpdate(sql); if(i==1) {
JOptionPane.showMessageDialog(null, "Update Data Buku "+kdbuku+" Berhasil Disimpan");
textKdBuku.setText(""); textJudul.setText(""); textPengarang.setText(""); textPenerbit.setText(""); textThnTerbit.setText(""); textIsbn.setText(""); textHrgbeli.setText(""); textHrgjual.setText(""); textStok.setText(""); comboKategori.setEditable(true); comboKategori.setSelectedItem(""); Get_Kategoribuku call = new Get_Kategoribuku(); call.Get_kodekategori(); comboKategori.setEditable(false); } } catch(Exception ex) { JOptionPane.showMessageDialog(null, ex.getMessage()); } } });
16
Delete
//button delete
buttonDELETE.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { String kdbuku, judul, kdkategori, pengarang, penerbit, isbn;
String thnterbit, hrgbeli, hrgjual, stok;
kdbuku = textKdBuku.getText(); judul = textJudul.getText();
Pattern pat = Pattern.compile(" - "); String strs[] = pat.split(comboKategori.getSelectedItem().toString()); kdkategori = strs[0]; pengarang = textPengarang.getText(); penerbit = textPenerbit.getText(); thnterbit = textThnTerbit.getText(); isbn = textIsbn.getText(); hrgbeli = textHrgbeli.getText(); hrgjual = textHrgjual.getText(); stok = textStok.getText(); //delete ke database DBConnection open = new DBConnection(); Connection mysql = open.getConnection(); try { Statement stmt = mysql.createStatement();
String sql = "DELETE FROM tbl_buku "
+" WHERE kode_buku='"+kdbuku+"'";
int i = stmt.executeUpdate(sql); if(i==1) {
JOptionPane.showMessageDialog(null, "Delete Data Buku "+kdbuku+" Berhasil"); textKdBuku.setText(""); textJudul.setText(""); textPengarang.setText(""); textPenerbit.setText(""); textThnTerbit.setText(""); textIsbn.setText(""); textHrgbeli.setText(""); textHrgjual.setText("");
17
textStok.setText(""); comboKategori.setEditable(true); comboKategori.setSelectedItem(""); Get_Kategoribuku call = new Get_Kategoribuku(); call.Get_kodekategori(); comboKategori.setEditable(false); } } catch(Exception ex) { JOptionPane.showMessageDialog(null, ex.getMessage()); } } });
View
import java.awt.*; import java.sql.*; import javax.swing.*; import javax.swing.table.*;public class View_Buku extends JPanel {
String[] header = {"Kode Buku", "Judul", "Kategori", "pengarang", "penerbit", "th_terbit", "isbn","hrg_beli", "hrg_jual", "Stok"};
JTable table = new JTable();
JScrollPane scrollTable = new JScrollPane(); private Object[][] dataTable = null;
View_Buku() {
DBConnection open = new DBConnection(); Connection mysql = open.getConnection();
try {
Statement stmt = mysql.createStatement(); String sql = "SELECT * FROM tbl_buku"; ResultSet rs = stmt.executeQuery(sql); ResultSetMetaData meta = rs.getMetaData();
int kolom = meta.getColumnCount(); int baris = 0;
while(rs.next()) {
18
}
dataTable = new Object[baris][kolom]; int x = 0; rs.beforeFirst(); while(rs.next()) { dataTable[x][0] = rs.getString("kode_buku"); dataTable[x][1] = rs.getString("judul_buku"); dataTable[x][2] = rs.getString("kode_kategori"); dataTable[x][3] = rs.getString("pengarang"); dataTable[x][4] = rs.getString("penerbit"); dataTable[x][5] = rs.getString("tahun"); dataTable[x][6] = rs.getString("isbn"); dataTable[x][7] = rs.getString("harga_beli"); dataTable[x][8] = rs.getString("harga_jual"); dataTable[x][9] = rs.getString("stok"); x++; } scrollTable.setViewportView(table); table.setModel(new DefaultTableModel(dataTable, header)); add(scrollTable, BorderLayout.NORTH); stmt.close(); rs.close(); } catch(Exception ex) { //JOptionPane.showMessageDialog(null, "Tabel Buku Belum ada, silahkan lakukan setup tabel buku terlebih dahulu"); JOptionPane.showMessageDialog(null, ex.getMessage()); } } void GUI() {
JFrame frame = new JFrame("Data Buku");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); View_Buku content = new View_Buku();
content.setOpaque(true);
frame.setContentPane(content); frame.pack();