{"id":25421369,"url":"https://github.com/ifwhy/java-oop-library","last_synced_at":"2026-04-20T04:03:35.577Z","repository":{"id":276804034,"uuid":"930352005","full_name":"ifwhy/java-oop-library","owner":"ifwhy","description":"Sistem Pengelolaan Buku adalah aplikasi Java berbasis OOP dengan MySQL untuk CRUD data buku. Kini dengan GUI dan validasi data. 🚀📚","archived":false,"fork":false,"pushed_at":"2025-02-10T14:14:31.000Z","size":3094,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T15:22:45.388Z","etag":null,"topics":["book","java","library-management","mysql","swing-gui"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ifwhy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-10T13:54:14.000Z","updated_at":"2025-02-10T14:14:34.000Z","dependencies_parsed_at":"2025-02-10T15:32:52.213Z","dependency_job_id":null,"html_url":"https://github.com/ifwhy/java-oop-library","commit_stats":null,"previous_names":["ifwhy/java-oop-library"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifwhy%2Fjava-oop-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifwhy%2Fjava-oop-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifwhy%2Fjava-oop-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifwhy%2Fjava-oop-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ifwhy","download_url":"https://codeload.github.com/ifwhy/java-oop-library/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239195487,"owners_count":19598036,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["book","java","library-management","mysql","swing-gui"],"created_at":"2025-02-16T20:39:13.554Z","updated_at":"2026-04-20T04:03:30.547Z","avatar_url":"https://github.com/ifwhy.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ch1\u003e 📚 Manajemen Buku Perpustakaan\u003c/h1\u003e\n\n\u003cimg src=\"./assets/Library - OOP.png\" /\u003e\n\n\u003cp\u003e🚀 Sebuah aplikasi berbasis Java dengan paradigma OOP untuk mengelola data buku dengan database MySQL. \u003c/p\u003e\n\n\u003cimg src=\"https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white\" alt=\"Java Badge\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/mysql-4479A1.svg?style=for-the-badge\u0026logo=mysql\u0026logoColor=white\" alt=\"MySQL Badge\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/IntelliJIDEA-000000.svg?style=for-the-badge\u0026logo=intellij-idea\u0026logoColor=white\" alt=\"IntellijIDEA Badge\"\u003e\n\n\u003cp align=\"justify\"\u003eAplikasi ini dikembangkan menggunakan \u003cb\u003eObject-Oriented Programming (OOP)\u003c/b\u003e dengan struktur modular yang rapi. Fitur utama mencakup \u003cb\u003eCRUD buku, pencarian, validasi data\u003c/b\u003e, serta \u003cb\u003eGraphical User Interface \u003c/b\u003e (GUI) untuk kemudahan penggunaan. \u003c/p\u003e\n\n\u003c/div\u003e\n\n---\n\n## 📌 Table of Contents\n\n1. ✨ [Fitur](#fitur)\n2. 📈 [Pengembangan Dari Sebelumnya](#pengembangan-dari-sebelumnya)\n3. 📂 [Struktur Proyek](#struktur-proyek)\n4. 🛠 [Sebelum Menjalankan Program](#sebelum-menjalankan-program)\n5. 🚀 [Cara Menjalankan Aplikasi](#cara-menjalankan-aplikasi)\n6. 🔧 [Teknologi yang Digunakan](#teknologi-yang-digunakan)\n7. 🤝 [Kontribusi](#kontribusi)\n8. 📜 [Lisensi](#lisensi)\n\n---\n\n## \u003ca name=\"fitur\"\u003e ✨ Fitur \u003c/a\u003e\n\n✅ **Tambah Buku**: Tambahkan buku baru dengan detail seperti **judul, penulis, penerbit, dan tahun terbit**.  \n✅ **Hapus Buku**: Hapus buku dari sistem berdasarkan **ID unik**.  \n✅ **Daftar Buku**: Tampilkan semua daftar buku yang tersimpan di database.  \n✅ **Validasi Data**: Pastikan data buku sesuai aturan sebelum disimpan.  \n✅ **Cari Buku**: Temukan buku berdasarkan **keyword pencarian** yang dimasukkan pengguna.  \n✅ **GUI Modern**: Tidak lagi berbasis **console**, sekarang dengan tampilan lebih user-friendly.  \n✅ **Terintegrasi dengan MySQL**: Data buku disimpan ke **database MySQL**, bukan file `.txt` lagi.\n\n---\n\n## \u003ca name=\"pengembangan-dari-sebelumnya\"\u003e📈 Pengembangan Dari Sebelumnya\u003c/a\u003e\n\n[Proyek 2](./Proyek%202/) merupakan pengembangan lanjutan dari [Proyek 1](./Proyek%201/).\n\n| Proyek 1                          | Proyek 2                              |\n| --------------------------------- | ------------------------------------- |\n| ❌ Berbasis **console**           | ✅ **Graphical User Interface (GUI)** |\n| ❌ Data disimpan di **file .txt** | ✅ Data disimpan di **MySQL**         |\n\n---\n\n## \u003ca name=\"struktur-proyek\"\u003e📂 Struktur Proyek\u003c/a\u003e\n\nProyek ini menggunakan pendekatan **Separation of Concerns (SoC)** untuk memisahkan tanggung jawab tiap komponen:\n\n📌 **`entity/`**: Menyimpan class model `Buku.java` yang merepresentasikan data buku.  \n📌 **`repository/`**: Berisi `BukuRepository` untuk interaksi dengan **database**.  \n📌 **`service/`**: Menghubungkan antara **controller** dan **repository**.  \n📌 **`controller/`**: Mengelola alur data dari dan ke **antarmuka pengguna**.  \n📌 **`validation/`**: Menangani **validasi input** sebelum disimpan.  \n📌 **`view/`**: Menyediakan **Graphical User Interface (GUI)** bagi pengguna.  \n📌 **`utils/`**: Berisi fungsi tambahan seperti **pengelolaan input/output**.\n\n---\n\n## \u003ca name=\"sebelum-menjalankan-program\"\u003e🛠 Sebelum Menjalankan Program\u003c/a\u003e\n\n1. **Pastikan MySQL sudah terinstall**, bisa menggunakan **XAMPP** atau **Laragon**.\n2. **Buat database** `Perpustakaan` di MySQL.\n3. **Jalankan SQL berikut** untuk membuat tabel **buku**:\n\n```sql\nCREATE DATABASE Perpustakaan;\n\nUSE Perpustakaan;\n\nCREATE TABLE buku (\n    id INT(3) AUTO_INCREMENT PRIMARY KEY,\n    judul VARCHAR(255) NOT NULL,\n    penulis VARCHAR(255) NOT NULL,\n    penerbit VARCHAR(255) NOT NULL,\n    tahun_terbit INT(4) NOT NULL\n);\n\nINSERT INTO buku (judul, penulis, penerbit, tahun_terbit) VALUES\n('Bumi Manusia', 'Pramoedya Ananta Toer', 'Gramedia', 1980),\n('Orang-Orang Biasa', 'Andrea Hirata', 'Bentang Pustaka', 2022),\n('Laskar Pelangi', 'Andrea Hirata', 'Gramedia', 2005);\n```\n\n---\n\n## \u003ca name=\"cara-menjalankan-aplikasi\"\u003e🚀 Cara Menjalankan Aplikasi\u003c/a\u003e\n\n1. **Pastikan JDK 8+ terinstall**.\n2. **Jalankan MySQL Server** melalui PHPMyAdmin atau CLI.\n3. **Jalankan file utama** `Responsi2_PPBO_L0123068_SC.java`.\n4. **Mulai mengelola buku** melalui GUI aplikasi!\n\n---\n\n## \u003ca name=\"teknologi-yang-digunakan\"\u003e🔧 Teknologi yang Digunakan\u003c/a\u003e\n\n- ☕ **Java** → Bahasa pemrograman utama.\n- 🗄 **MySQL** → Database untuk menyimpan data buku.\n- 🎨 **Java Swing** → GUI yang modern dan interaktif.\n- 🏗 **MVC Architecture** → Pemisahan logika aplikasi agar lebih terstruktur.\n\n---\n\n## \u003ca name=\"kontribusi\"\u003e🤝 Kontribusi \u003c/a\u003e\n\nKontribusi sangat diterima! Ikuti langkah berikut untuk berkontribusi:\n\n1. **Fork** repositori ini.\n2. **Buat branch baru** (`git checkout -b feature-xyz`).\n3. **Lakukan perubahan** dan **commit** (`git commit -m \"Menambahkan fitur XYZ\"`).\n4. **Push branch ke GitHub** (`git push origin feature-xyz`).\n5. **Buka pull request**, dan tunggu review! 🚀\n\n---\n\n## \u003ca name=\"lisensi\"\u003e📜 Lisensi \u003c/a\u003e\n\nProyek ini **gratis** untuk digunakan dan dimodifikasi untuk keperluan belajar dan pengembangan.\n\n💡 **Keep Coding, Stay Awesome!** 💻✨\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fifwhy%2Fjava-oop-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fifwhy%2Fjava-oop-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fifwhy%2Fjava-oop-library/lists"}