Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Berikut adalah gabungan soal, program Python, dan query SQL untuk membuat database serta menyelesaikan tugas:
- ---
- SOAL
- Pemrograman Client/Server - Ujian Akhir Semester (UAS)
- Soal A: Input Data Dosen Mengampu Mata Kuliah
- 1. User memasukkan NIDN, jika ditemukan maka tampilkan identitas dosen. Jika tidak ditemukan, tampilkan pesan kesalahan dan minta input ulang.
- 2. Setelah identitas dosen ditampilkan, masukkan Kode Mata Kuliah, jika ditemukan tampilkan detail mata kuliah. Jika tidak, minta input ulang.
- 3. Masukkan Tahun Akademik.
- 4. Konfirmasi untuk menyimpan data ke tabel dosen_mengampu. Jika disimpan, data harus masuk ke database.
- 5. Tawarkan untuk mengulang proses input dari awal.
- Soal B: Menampilkan Data Dosen Mengampu Mata Kuliah
- 1. Tampilkan semua data dosen yang mengampu mata kuliah dengan format tabel (gunakan library PrettyTable).
- 2. Data harus diambil dari tabel dengan relasi antar tabel menggunakan INNER JOIN.
- ---
- DATABASE SETUP
- Query untuk Membuat Database dan Tabel
- CREATE DATABASE IF NOT EXISTS db_uas2023_2024_kls_a;
- USE db_uas2023_2024_kls_a;
- -- Tabel dosen
- CREATE TABLE IF NOT EXISTS dosen (
- id_dosen INT NOT NULL AUTO_INCREMENT,
- NIDN CHAR(10) NOT NULL,
- nama_dosen CHAR(50) DEFAULT NULL,
- status_dosen CHAR(15) DEFAULT NULL,
- jabatan_fungsional CHAR(20) DEFAULT NULL,
- pendidikan CHAR(2) DEFAULT NULL,
- PRIMARY KEY (NIDN),
- KEY id_dosen (id_dosen)
- ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
- -- Tabel mata_kuliah
- CREATE TABLE IF NOT EXISTS mata_kuliah (
- kode_matakuliah CHAR(15) NOT NULL,
- nama_matakuliah CHAR(50) DEFAULT NULL,
- sks INT DEFAULT '0',
- semester CHAR(1) DEFAULT NULL,
- status CHAR(6) DEFAULT NULL,
- prodi CHAR(30) DEFAULT NULL,
- keterangan CHAR(1) DEFAULT NULL,
- kelas CHAR(8) DEFAULT NULL,
- pilihan ENUM('Y','N') NOT NULL DEFAULT 'N',
- tahun_kurikulum VARCHAR(4) NOT NULL,
- PRIMARY KEY (kode_matakuliah, tahun_kurikulum)
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
- -- Tabel dosen_mengampu
- CREATE TABLE IF NOT EXISTS dosen_mengampu (
- id INT NOT NULL AUTO_INCREMENT,
- nidn CHAR(10) DEFAULT NULL,
- kode_matakuliah CHAR(10) DEFAULT NULL,
- tahun_akademik CHAR(9) DEFAULT NULL,
- PRIMARY KEY (id)
- ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
- Query untuk Mengisi Data Awal
- -- Data awal dosen
- INSERT INTO dosen (id_dosen, NIDN, nama_dosen, status_dosen, jabatan_fungsional, pendidikan) VALUES
- (1, '0431180001', 'Suparni, S.Pd., M.Pd.', 'Tidak Tetap', 'Tenaga Pengajar', 'S2'),
- (2, '0431180003', 'Dr. H. Marlan, M.Eng.,Sc.', 'Tidak Tetap', 'Lektor', 'S3'),
- (3, '2129087601', 'Asep Wildan, S.Pdi., M.Pd.', 'Tidak Tetap', 'Lektor', 'S2');
- -- Data awal mata kuliah
- INSERT INTO mata_kuliah (kode_matakuliah, nama_matakuliah, sks, semester, status, prodi, keterangan, kelas, pilihan, tahun_kurikulum) VALUES
- ('TI-11101', 'Mentoring Agama 1', 1, '1', 'Ganjil', 'Teknik Informatika', 'T', 'Reguler', 'N', '2008'),
- ('TI-11113', 'Bahasa Inggris 1', 2, '1', 'Ganjil', 'Teknik Informatika', 'T', 'Reguler', 'N', '2008');
- -- Data awal dosen mengampu
- INSERT INTO dosen_mengampu (nidn, kode_matakuliah, tahun_akademik) VALUES
- ('0431180001', 'TI-11101', '2024/2025'),
- ('0431180003', 'TI-11113', '2024/2025');
- ---
- PROGRAM PYTHON
- import mysql.connector
- from prettytable import PrettyTable
- # Koneksi ke database
- def connect_to_database():
- return mysql.connector.connect(
- host="localhost",
- user="root",
- password="", # Ganti dengan password MySQL Anda
- database="db_uas2023_2024_kls_a"
- )
- # Fungsi untuk mendapatkan data dosen berdasarkan NIDN
- def get_dosen_by_nidn(cursor, nidn):
- cursor.execute("SELECT * FROM dosen WHERE NIDN = %s", (nidn,))
- return cursor.fetchone()
- # Fungsi untuk mendapatkan data mata kuliah berdasarkan kode
- def get_matkul_by_kode(cursor, kode_matkul):
- cursor.execute("SELECT * FROM mata_kuliah WHERE kode_matakuliah = %s", (kode_matkul,))
- return cursor.fetchone()
- # Fungsi untuk menyimpan data dosen mengampu
- def insert_dosen_mengampu(cursor, nidn, kode_matkul, tahun_akademik):
- cursor.execute("""
- INSERT INTO dosen_mengampu (nidn, kode_matakuliah, tahun_akademik)
- VALUES (%s, %s, %s)
- """, (nidn, kode_matkul, tahun_akademik))
- # Fungsi untuk menampilkan data dosen mengampu
- def display_dosen_mengampu(cursor):
- cursor.execute("""
- SELECT
- d.NIDN AS "NIDN",
- d.nama_dosen AS "Nama Dosen",
- mk.kode_matakuliah AS "Kode Mata Kuliah",
- mk.nama_matakuliah AS "Nama Mata Kuliah",
- dm.tahun_akademik AS "Tahun Akademik"
- FROM
- dosen_mengampu dm
- INNER JOIN dosen d ON dm.nidn = d.NIDN
- INNER JOIN mata_kuliah mk ON dm.kode_matakuliah = mk.kode_matakuliah;
- """)
- records = cursor.fetchall()
- table = PrettyTable(["NIDN", "Nama Dosen", "Kode Mata Kuliah", "Nama Mata Kuliah", "Tahun Akademik"])
- for record in records:
- table.add_row(record)
- print(table)
- # Program utama
- def main():
- db = connect_to_database()
- cursor = db.cursor()
- while True:
- print("\n=== Input Data Dosen Mengampu Mata Kuliah ===")
- nidn = input("Masukkan NIDN: ")
- dosen = get_dosen_by_nidn(cursor, nidn)
- if dosen:
- print(f"Identitas Dosen: {dosen}")
- kode_matkul = input("Masukkan Kode Mata Kuliah: ")
- matkul = get_matkul_by_kode(cursor, kode_matkul)
- if matkul:
- print(f"Data Mata Kuliah: {matkul}")
- tahun_akademik = input("Masukkan Tahun Akademik (contoh: 2024/2025): ")
- confirm = input("Simpan data ini? (y/n): ").lower()
- if confirm == 'y':
- insert_dosen_mengampu(cursor, nidn, kode_matkul, tahun_akademik)
- db.commit()
- print("Data berhasil disimpan.")
- else:
- print("Data tidak disimpan.")
- else:
- print("Kode Mata Kuliah tidak ditemukan.")
- else:
- print("NIDN tidak ditemukan.")
- ulang = input("Ingin mengulang input data? (y/n): ").lower()
- if ulang != 'y':
- break
- print("\n=== Data Dosen Mengampu Mata Kuliah ===")
- display_dosen_mengampu(cursor)
- cursor.close()
- db.close()
- if __name__ == "__main__":
- main()
- ---
- Petunjuk Eksekusi
- 1. Buat database dan tabel menggunakan query SQL di atas.
- 2. Isi data awal menggunakan query yang telah disediakan.
- 3. Jalankan program Python untuk mengelola data.
- 4. Ikuti instruksi input data di terminal atau IDE.
- Jika ada pertanyaan atau penyesuaian, silakan beri tahu!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement