Proyek ini membangun sistem manajemen perpustakaan berbasis terminal dari nol sampai teruji penuh. Domainnya kaya relasi: struct Buku dan struct Anggota berdiri sendiri, sementara struct Peminjaman menghubungkan keduanya sambil membawa aturan main — stok tidak boleh negatif, satu anggota maksimal meminjam tiga buku, dan satu pasangan (ISBN, anggota) hanya boleh punya satu peminjaman aktif. Seluruh program tumbuh dalam satu berkas src/perpustakaan.cpp yang cukup dikompilasi dengan satu perintah, dan antarmukanya berupa baris perintah berkolom | dari stdin (BUKU, ANGGOTA, PINJAM, KEMBALI, CARI, HAPUS, SIMPAN, MUAT, LAPOR). Karena skenario berupa data dan bukan ketikan manual, alur peminjaman bisa direkam, dibagikan, dan dijalankan ulang secara persis sama — fondasi pengujian di bagian akhir.
Cara kerja lima bagiannya bertingkat: kita menyatakan invariant lebih dulu sebagai kontrak, menegakkannya lewat gerbang validasi di dalam class, dan melaporkan kegagalan lewat tipe kembalian (bool, std::optional, std::expected) alih-alih pesan yang dicetak sembarangan. Persistensi memakai teks polos berformat kolom yang dimuat dengan strategi fail-closed — berkas rusak ditolak tanpa merusak state di memori — dan semuanya dikunci oleh mini test harness berisi 42 pemeriksaan yang menuntut exit code 0.
Daftar bagian:
- Bagian 1: Merancang Class dan Relasi — model data
Buku,Anggota,Peminjaman, invariant, dan class diagram relasi antarobjek. - Bagian 2: Mengelola Koleksi Buku — tambah, hapus dengan syarat, daftar anggota, dan pencarian judul/penulis yang tidak peka huruf besar-kecil.
- Bagian 3: Menerapkan Peminjaman — lima gerbang
pinjam, pengembalian yang memulihkan stok, dan tampilan peminjaman aktif. - Bagian 4: Menyimpan dan Memuat Data — format berkas teks, penyimpanan dengan
std::ofstream, pemuatan fail-closed, dan round-trip antar-proses. - Bagian 5: Menguji Alur Peminjaman — program final berskenario terekam dan test harness 42 pemeriksaan sebagai bukti akhir.
Rancang struct Buku, Anggota, dan Peminjaman beserta invariant dan relasi antarobjeknya sebagai fondasi sistem perpustakaan.
Buka → # Bagian 2: Mengelola Koleksi BukuBangun operasi tambah, hapus, daftar anggota, dan pencarian judul atau penulis yang tidak peka huruf besar-kecil di atas class Perpustakaan.
Buka → # Bagian 3: Menerapkan PeminjamanTerapkan alur pinjam dan kembalikan dengan lima gerbang validasi, pelacakan status peminjaman, dan pemulihan stok yang terjamin.
Buka → # Bagian 4: Menyimpan dan Memuat DataPindahkan seluruh state perpustakaan ke berkas teks berformat kolom, muat ulang dengan aman, dan buktikan round-trip antar-proses.
Buka → # Bagian 5: Menguji Alur PeminjamanKunci seluruh perilaku sistem perpustakaan dengan program final berskenario terekam dan test harness 42 pemeriksaan yang menuntut exit code 0.
Buka →