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:

  1. Bagian 1: Merancang Class dan Relasi — model data Buku, Anggota, Peminjaman, invariant, dan class diagram relasi antarobjek.
  2. Bagian 2: Mengelola Koleksi Buku — tambah, hapus dengan syarat, daftar anggota, dan pencarian judul/penulis yang tidak peka huruf besar-kecil.
  3. Bagian 3: Menerapkan Peminjaman — lima gerbang pinjam, pengembalian yang memulihkan stok, dan tampilan peminjaman aktif.
  4. Bagian 4: Menyimpan dan Memuat Data — format berkas teks, penyimpanan dengan std::ofstream, pemuatan fail-closed, dan round-trip antar-proses.
  5. Bagian 5: Menguji Alur Peminjaman — program final berskenario terekam dan test harness 42 pemeriksaan sebagai bukti akhir.