TUGAS PEMROGRAMAN JAVA P10
SISTEM APLIKASI TOKO BUKU
NAMA : DANY SUKTIAWAN IF. NIM : 12111074
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEHNIK INFORMATIKA UNIVERSITAS MERCUBUANA YOGYAKARTA 2015
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
2
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
3
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.
4
BAB II DATABASE 2.1. Rancangan Tabel Berikut ini rancangan database aplikasi toko buku : 1. * **
2. *
Table tbl_buku Field kode_buku judul_buku kode_kategori pengarang penerbit tahun isbn harga_beli harga_jual stok
Type char(8) NOT NULL varchar(50) NULL char(8) NOT NULL varchar(50) NULL varchar(50) NULL int(4) NULL varchar(25) NULL float NULL float NULL int(10) NULL
Comment
Type char(8) NOT NULL varchar(50) NOT NULL char(8) NOT NULL
Comment
Table tbl_kategori Field kode_kategori nama_kategori no_rak
5
3. *
4. *
5. *
6. *
** **
Table tbl_pelanggan Field kode_plg nama_plg alamat no_telp status_plg
Type char(8) NOT NULL varchar(50) NOT NULL text NOT NULL varchar(15) NOT NULL tinyint(4) NOT NULL
Comment
Table tbl_petugas Field kode_ptg nama_ptg password_ptg status_ptg
Type char(8) NOT NULL varchar(50) NOT NULL varchar(50) NOT NULL tinyint(1) NOT NULL
Comment
Table tbl_supplier Field kode_supplier nama_supplier alamat_supplier no_telp
Type char(8) NOT NULL varchar(50) NOT NULL text NOT NULL int(15) NOT NULL
Comment
Table tbl_pembelian Field faktur tanggal total kode_ptg kode_supplier
Type char(15) NOT NULL datetime NOT NULL float NOT NULL char(8) NOT NULL char(8) NOT NULL
6
Comment
7.
** **
8. *
** ** 9. ** **
Table tbl_detail_beli Field faktur kode_buku judul_buku harga_beli jumlah subtotal
Type char(15) NOT NULL char(8) NOT NULL varchar(50) NOT NULL float NOT NULL int(4) NOT NULL float NOT NULL
Comment
Type char(15) NOT NULL datetime NOT NULL int(4) NOT NULL float NOT NULL float NOT NULL char(8) NOT NULL char(8) NOT NULL
Comment
Type char(15) NOT NULL char(8) NOT NULL varchar(50) NOT NULL float NOT NULL int(4) NOT NULL float NOT NULL
Comment
Table tbl_penjualan Field faktur tanggal total dibayar kembali kode_ptg kode_plg Table tbl_detail_jual Field faktur kode_buku nama_buku harga_jual jumlah subtotal
7
2.2. Relasi Tabel
8
BAB III JDBC 3.1. Tabel Tbl_buku Input /* -------------------------------* Tugas Java P9 * Author : Dany Suktiawan IF. (12111074) * Universitas Mercubuana Yogyakarta -------------------------------- */ import import import import import import
java.awt.*; javax.swing.*; java.awt.event.*; java.io.*; java.sql.*; 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");
9
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);
10
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();
11
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); } } }); }
12
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));
13
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 = ""+
14
"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()); } } });
15
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("");
16
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 import import import
java.awt.*; java.sql.*; javax.swing.*; 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()) { baris = rs.getRow();
17
} 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();
18
frame.setLocationRelativeTo(null); frame.setVisible(true); } }
3.2. Tabel Tbl_kategori 3.3. Tabel Tbl_pelanggan 3.4. Tabel Tbl_petugas 3.5. Tabel Tbl_supplier 3.6. Tabel Tbl_pembelian 3.7. Tabel Tbl_detail_beli 3.8. Tabel Tbl_penjualan 3.9. Tabel Tbl_detail_jual
19
BAB IV MENU 4.1. Menu
Hirarki Menu Aplikasi :
20
4.2. Integrasi Menu
Menu File
Menu Data > Data Buku
21
Menu Data > Data Buku > Input Data Buku
22
Menu Data > Data Buku > Update Data Buku
23
Menu Data > Data Buku > Delete Data Buku
24
Menu Data > Data Buku > View Data Buku
Menu About > About Us
25
BAB V PENUTUP
5.1. Kesimpulan Dengan menggunakan bahasa pemograman java kita dapat membuat suatu Aplikasi berbasis desktop dan mampu terkoneksi dengan database. 5.2. Kesulitan Untuk Kesulitan masih banyak kekurangan dalam penggunaan method maupun fungsi-fungsi program yang masih jauh dari sempurna, seta koneksi database maupun menampilkan hasil laporan dari database.
26