View difference between Paste ID: 3Q6vVZ4A and P38BTA95
SHOW: | | - or go back to the newest paste.
1
-----------------------
2
Nama file: Buku.java
3
-----------------------
4
5
public class Buku {
6
    String judul;
7
    String penulis;
8
    int tahunTerbit;
9
10
    // Konstruktor
11
    Buku(String judul, String penulis, 
12
    int tahunTerbit) {
13
        this.judul = judul;
14
        this.penulis = penulis;
15
        this.tahunTerbit = tahunTerbit;
16
    }
17
18
    // Metode untuk menampilkan informasi buku
19
    void tampilInfo() {
20
        System.out.println("Judul: " + 
21
        judul);
22
        System.out.println("Penulis: " + 
23
        penulis);
24
        System.out.println("Tahun Terbit: " +
25
        tahunTerbit);
26
    }
27
}
28
29
-----------------------
30
Nama file: BukuFiksi.java
31
-----------------------
32
33
public class BukuFiksi extends Buku {
34
    String genre;
35
36
    // Konstruktor
37
    BukuFiksi(
38
        String judul, 
39
        String penulis, 
40
        int tahunTerbit, 
41
        String genre
42
        ) {
43
        super(judul, penulis, tahunTerbit);
44
        this.genre = genre;
45
    }
46
47
    // Override metode tampilInfo untuk menampilkan genre tambahan
48
    @Override
49
    void tampilInfo() {
50
        super.tampilInfo();
51
        System.out.println("Genre: " + 
52
        genre);
53
    }
54
}
55
56
-----------------------
57
Nama file: BukuNonFiksi.java
58
-----------------------
59
60
public class BukuNonFiksi  extends Buku{
61
    String topik;
62
63
    // Konstruktor
64
    BukuNonFiksi(
65
        String judul, 
66
        String penulis, 
67
        int tahunTerbit, 
68
        String topik) {
69
        super(judul, penulis, tahunTerbit);
70
        this.topik = topik;
71
    }
72
73
    // Override metode tampilInfo untuk menampilkan topik tambahan
74
    @Override
75
    void tampilInfo() {
76
        super.tampilInfo();
77
        System.out.println("Topik: " + topik);
78
    }
79
}
80
81
82
-----------------------
83
Nama file: Perpustakaan.java
84
-----------------------
85
86
import java.util.ArrayList;
87
import java.util.List;
88
89
public class Perpustakaan {
90
List<Buku> koleksiBuku = new ArrayList<>();
91
92
    // Metode untuk menambahkan buku (Create)
93
    void tambahBuku(Buku buku) {
94
        koleksiBuku.add(buku);
95
    }
96
97
    // Metode untuk menampilkan semua buku (Read)
98
    void tampilkanSemuaBuku() {
99
        for (Buku buku : koleksiBuku) {
100
            buku.tampilInfo();
101
            System.out.println("--------------");
102
        }
103
    }
104
105
    // Metode untuk mencari buku berdasarkan judul (Read)
106
    Buku cariBuku(String judul) {
107
        for (Buku buku : koleksiBuku) {
108
            if (buku.judul.equals(judul)) {
109
                return buku;
110
            }
111
        }
112
        return null;
113
    }
114
115
    // Metode untuk menghapus buku (Delete)
116
    void hapusBuku(Buku buku) {
117
        koleksiBuku.remove(buku);
118
    }
119
}
120
121
-----------------------
122
Nama file: FormPerpustakaan.java
123
-----------------------
124
125
import javax.swing.*;
126
import java.awt.*;
127-
        Perpustakaan perpustakaan = new Perpustakaan();
127+
128
public class FormPerpustakaan extends JFrame {
129-
        // Menambahkan buku
129+
130-
        Buku buku1 = new BukuFiksi(
130+
    // inisiasi perpustakaan
131-
            "Harry Potter", 
131+
    private Perpustakaan perpustakaan = new Perpustakaan();
132-
            "J.K. Rowling", 
132+
133-
            1997, 
133+
    // inisiasi komponen
134-
            "Fantasi");
134+
    private JTextField txtJudul = new JTextField();
135-
        Buku buku2 = new BukuNonFiksi(
135+
    private JTextField txtPenulis = new JTextField();
136-
            "Think and Grow Rich", 
136+
    private JTextField txtTahun = new JTextField();
137-
            "Napoleon Hill", 
137+
    private JTextField txtGenreTopik = new JTextField();
138-
            1937, 
138+
139-
            "Motivasi");
139+
    private JComboBox<String> cmbJenis = new JComboBox<>(new String[] { "Fiksi", "NonFiksi" });
140-
        perpustakaan.tambahBuku(buku1);
140+
    private JTextArea areaOutput = new JTextArea(5, 5);
141-
        perpustakaan.tambahBuku(buku2);
141+
142
    public FormPerpustakaan() {
143-
        // Menampilkan semua buku
143+
        // JFrame
144-
        System.out.println("Semua Buku:");
144+
        setTitle("Form Perpustakaan");
145-
        perpustakaan.tampilkanSemuaBuku();
145+
        setSize(350, 400);
146
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
147-
        // Mencari buku
147+
        setLocationRelativeTo(null);
148-
        Buku bukuDicari = perpustakaan.cariBuku(
148+
        setLayout(null);
149-
            "Think and Grow Rich");
149+
150-
        if (bukuDicari != null) {
150+
        // judul
151-
            System.out.println("\nBuku ditemukan:");
151+
        JLabel lblJudul = new JLabel("Judul:");
152-
            bukuDicari.tampilInfo();
152+
        lblJudul.setBounds(20, 20, 80, 25);
153
        add(lblJudul);
154-
            System.out.println("Buku tidak ditemukan.");
154+
155
        txtJudul.setBounds(100, 20, 200, 25);
156
        add(txtJudul);
157-
        // Menghapus buku
157+
158-
        perpustakaan.hapusBuku(buku1);
158+
        // penulis
159-
        System.out.println("\nSetelah menghapus buku:");
159+
        JLabel lblPenulis = new JLabel("Penulis:");
160-
        perpustakaan.tampilkanSemuaBuku();
160+
        lblPenulis.setBounds(20, 50, 80, 25);
161
        add(lblPenulis);
162
163
        txtPenulis.setBounds(100, 50, 200, 25);
164
        add(txtPenulis);
165
166
        // tahun terbit
167
        JLabel lblTahunTerbit = new JLabel("Tahun:");
168
        lblTahunTerbit.setBounds(20, 80, 80, 25);
169
        add(lblTahunTerbit);
170
171
        txtTahun.setBounds(100, 80, 50, 25);
172
        add(txtTahun);
173
174
        // jenis buku
175
        JLabel lblJenis = new JLabel("Jenis Buku:");
176
        lblJenis.setBounds(20, 110, 80, 25);
177
        add(lblJenis);
178
179
        cmbJenis.setBounds(100, 110, 200, 25);
180
        add(cmbJenis);
181
182
        // genre atau topik
183
        JLabel lblGenreTopik = new JLabel("Genre/Topik:");
184
        lblGenreTopik.setBounds(20, 140, 80, 25);
185
        add(lblGenreTopik);
186
187
        txtGenreTopik.setBounds(100, 140, 200, 25);
188
        add(txtGenreTopik);
189
190
        // tombol tambah
191
        JButton btnTambah = new JButton("Tambah");
192
        btnTambah.setBounds(20, 180, 90, 30);
193
        add(btnTambah);
194
195
        // tombol hapus
196
        JButton btnHapus = new JButton("Hapus");
197
        btnHapus.setBounds(115, 180, 90, 30);
198
        add(btnHapus);
199
200
        // tombol tampil
201
        JButton btnTampil = new JButton("Tampil");
202
        btnTampil.setBounds(210, 180, 90, 30);
203
        add(btnTampil);
204
205
        // area output
206
        areaOutput.setEditable(true);
207
208
        // bungkus dengan JScrollPane
209
        JScrollPane scrollPane = new JScrollPane(areaOutput);
210
        scrollPane.setBounds(20, 230, 280, 100);
211
        add(scrollPane);
212
213
        // tambahkan action listener untuk tombol
214
        btnTambah.addActionListener(e -> tambahBuku());
215
        btnHapus.addActionListener(e -> hapusBuku());
216
        btnTampil.addActionListener(e -> tampilkanSemuaBuku());
217
    }
218
219
    private void tampilkanSemuaBuku() {
220
        areaOutput.setText("Daftar Buku:\n");
221
        for (Buku b : perpustakaan.koleksiBuku) {
222
            areaOutput.append("Judul: " + b.judul + "\n");
223
            areaOutput.append("Penulis: " + b.penulis + "\n");
224
            areaOutput.append("Tahun: " + b.tahunTerbit + "\n");
225
226
            if (b instanceof BukuFiksi) {
227
                areaOutput.append("Genre: " + ((BukuFiksi) b).genre + "\n");
228
            } else if (b instanceof BukuNonFiksi) {
229
                areaOutput.append("Topik: " + ((BukuNonFiksi) b).topik + "\n");
230
            }
231
            areaOutput.append("----------------------\n");
232
        }
233
    }
234
235
    private void tambahBuku() {
236
        try {
237
            String judul = txtJudul.getText();
238
            String penulis = txtPenulis.getText();
239
            int tahun = Integer.parseInt(txtTahun.getText());
240
            String genreTopik = txtGenreTopik.getText();
241
242
            // simpan buku berdasarkan jenisnya
243
            Buku buku;
244
            if (cmbJenis.getSelectedItem().equals("Fiksi")) {
245
                buku = new BukuFiksi(judul, penulis, tahun, genreTopik);
246
            } else {
247
                buku = new BukuNonFiksi(judul, penulis, tahun, genreTopik);
248
            }
249
250
            perpustakaan.tambahBuku(buku);
251
            areaOutput.append("Buku berhasil ditambahkan!\n");
252
        } catch (Exception ex) {
253
            JOptionPane.showMessageDialog(this, "Input tidak valid!");
254
        }
255
    }
256
257
    private void hapusBuku() {
258
        String judul = JOptionPane.showInputDialog(this, "Masukkan judul buku yang ingin dihapus:");
259
        Buku b = perpustakaan.cariBuku(judul);
260
        if (b != null) {
261
            perpustakaan.hapusBuku(b);
262
            areaOutput.append("Buku berhasil dihapus!\n");
263
        } else {
264
            areaOutput.append("Buku tidak ditemukan.\n");
265
        }
266
    }
267
}
268
269
-----------------------
270
Nama file: Main.java
271
-----------------------
272
273
import javax.swing.SwingUtilities;
274
275
public class Main {
276
    public static void main(String[] args){
277
        SwingUtilities.invokeLater(() -> {
278
            FormPerpustakaan form = new FormPerpustakaan();
279
            form.setVisible(true);
280
        });
281
    }
282
}
283