Mini Project: Gudang Bahan Teazzi
Tempel isi db_bahan.py dan main.py, atau buka file .zip-mu, lalu klik Nilai. Grader memanggil setiap fungsimu di database teazzi.db yang baru, lalu memeriksa isi tabelnya sendiri: data tersimpan, WHERE tepat sasaran, dan query aman. Semua berjalan di browsermu, kodenya tidak dikirim ke mana pun.

Hasil akan muncul di sini: nilai total dari 100, poin mana yang lolos, dan log setiap pengujian (fungsi apa yang dipanggil, apa yang dikembalikan, dan isi tabel bahan menurut grader) supaya kamu bisa melihat di mana kodenya salah.
db_bahan.py berisi semua urusan database (variabel dan fungsi saja), main.py memanggilnya lewat import db_bahan tanpa menulis SQL. Jangan pakai input().NAMA_DB = "teazzi.db", koneksi() mengembalikan sqlite3.connect(NAMA_DB), dan buat_tabel() menjalankan CREATE TABLE IF NOT EXISTS bahan dengan kolom id INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT NOT NULL, satuan TEXT NOT NULL, stok INTEGER NOT NULL.tambah_bahan(nama, satuan, stok), lihat_bahan() → list tuple (id, nama, satuan, stok) urut id, cari_bahan(id_bahan) → satu tuple atau None, ubah_stok(id_bahan, stok_baru) dan hapus_bahan(id_bahan) → return cursor.rowcount. Setiap perubahan data di-commit().stok_menipis(batas) → list tuple (nama, stok) yang stoknya di bawah batas, urut id.? dan tuple. Jangan menyusun SQL dengan f-string, %, .format(), atau +.total_transaksi = 0 naik 1 setiap kali tambah_bahan, ubah_stok, atau hapus_bahan dipanggil (pakai keyword global).PADANAN_JDBC dengan kunci "koneksi", "query_aman", dan "hasil_select" berisi nama padanan Java (JDBC) untuk sqlite3.connect(), execute() dengan ?, dan hasil fetchall().| Poin | Yang dinilai | Bobot |
|---|
Belum ada file. Kalau satu NPM mengumpulkan beberapa kali, nilai yang dipakai adalah yang tertinggi.
CSV berisi NPM, nama, nilai, rincian B1–B10, dan catatan. "Salin" menyalin tabel dengan pemisah tab, jadi bisa langsung di-paste ke Excel atau Google Sheets.