Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # %%
- print("hello")
- # %%
- import sqlite3
- conn = sqlite3.connect('uas2.db')
- cursor = conn.cursor()
- # %%
- cursor.execute('DROP TABLE IF EXISTS siswa')
- cursor.execute('''
- CREATE TABLE IF NOT EXISTS siswa (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- nim TEXT UNIQUE NOT NULL,
- nama TEXT NOT NULL,
- skor INTEGER
- )
- ''')
- conn.commit()
- # %%
- users_data = [
- ('0501', 'Budi'),
- ('0502', 'Tita'),
- ]
- cursor.executemany("INSERT INTO siswa (nim, nama) VALUES (?, ?)", users_data)
- conn.commit()
- # %%
- cursor.execute('DROP TABLE IF EXISTS soal')
- cursor.execute('''
- CREATE TABLE IF NOT EXISTS soal (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- deskripsi TEXT UNIQUE NOT NULL,
- tingkat_kesulitan integer NOT NULL -- 1:mudah, 2:sedang, 3:sulit
- )
- ''')
- conn.commit()
- # %%
- data_soal = [
- ('Ibu kota Jawa Barat', 1),
- ('Ibu kota Jawa Tengah', 2),
- ('Ibu kota Maluku Utara', 3),
- ]
- cursor.executemany("INSERT INTO soal (deskripsi, tingkat_kesulitan) VALUES (?, ?)", data_soal)
- conn.commit
- # %%
- cursor.execute('DROP TABLE IF EXISTS pilihan')
- cursor.execute('''
- CREATE TABLE IF NOT EXISTS pilihan (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- id_soal INTEGER NOT NULL,
- is_benar BOOLEAN NOT NULL,
- deskripsi TEXT UNIQUE NOT NULL
- )
- ''')
- conn.commit()
- # %%
- data_pilihan_soal = [
- ( 1,"Bandung",1),
- ( 1,"Jakarta", 0),
- ( 1,"Banten",0),
- ( 2,"Semarang",1),
- ( 2,"Yogyakarta",0),
- ( 2,"Solo",0),
- ( 3,"Sofifi",1),
- ( 3,"Tidore",0),
- ( 3,"Maluku",0),
- ]
- cursor.executemany("INSERT INTO pilihan (id_soal,deskripsi, is_benar) VALUES (?, ?, ?)", data_pilihan_soal)
- conn.commit()
- # %%
- # %%
- # %%
- cursor.execute('DROP TABLE IF EXISTS jawaban')
- cursor.execute('''
- CREATE TABLE IF NOT EXISTS jawaban (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- id_siswa INTEGER NOT NULL,
- id_soal INTEGER NOT NULL,
- jawaban_id_pilihan INTEGER NOT NULL
- )
- ''')
- conn.commit()
- # %%
- def proses_test(id):
- conn = sqlite3.connect('uas2.db')
- cursor = conn.cursor()
- cursor.execute("SELECT nama FROM siswa WHERE id=?", (id,))
- siswa = cursor.fetchone()
- print(f"Selamat datang {siswa[0]}")
- cursor.execute("SELECT id, deskripsi, tingkat_kesulitan FROM soal ORDER BY RANDOM()")
- soal = cursor.fetchall()
- cc = 0
- for s in soal:
- cc = cc + 1
- print(f"No: {cc}")
- print(f"{s[1]}")
- cursor.execute("SELECT id, deskripsi, is_benar FROM pilihan WHERE id_soal=? ORDER BY RANDOM()", (s[0],))
- pilihan = cursor.fetchall()
- cc2 = 1
- peta = []
- for p in pilihan:
- print(f"{cc2} {p[1]}")
- peta.append(p[0]) # simpan id pilihan
- cc2 = cc2 + 1
- print(peta)
- jawaban = int(input("Jawaban anda: "))
- jawab_id = peta[jawaban-1] #jawab akan berisi id pilihan, harus seperti ini karena random
- print(jawab_id)
- cursor.execute("INSERT INTO jawaban (id_siswa, id_soal, jawaban_id_pilihan) VALUES (?, ?, ?)", (id, s[0], jawab_id))
- conn.commit()
- # %%
- def hitung_skor(id):
- conn = sqlite3.connect('uas2.db')
- cursor = conn.cursor()
- cursor.execute("SELECT id, nama FROM siswa WHERE id=?", (id,))
- siswa = cursor.fetchone()
- print(f"Hitung skor {siswa[1]}")
- cursor.execute("SELECT id_soal, jawaban_id_pilihan FROM jawaban WHERE id_siswa=?", (id,))
- jawaban = cursor.fetchall()
- skor = 0
- for j in jawaban:
- cursor.execute("SELECT id, is_benar FROM pilihan WHERE id_soal=? and is_benar", (j[0],))
- jawab_benar = cursor.fetchone()
- if jawab_benar[0] == j[1]:
- skor += 1
- # if is_benar[0] == 1:
- # skor += 1
- print(f"Skor: {skor}")
- cursor.execute("UPDATE siswa SET skor=? WHERE id=?", (skor, id))
- conn.commit()
- # %%
- hitung_skor(1)
- # %%
- # %%
- conn = sqlite3.connect('uas2.db')
- cursor = conn.cursor()
- print("Masukkan NIM siswa : ")
- nim = input()
- cursor.execute("SELECT id FROM siswa WHERE nim = ?", (nim,))
- result = cursor.fetchone()
- if result:
- id = result[0]
- print("ID siswa dengan NIM", nim, "adalah", id)
- proses_test(id)
- hitung_skor(id)
- else:
- print("NIM tidak ditemukan")
- conn.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement