Advertisement
afrizalwahyuadi66

n

Jan 16th, 2025
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.55 KB | None | 0 0
  1. Berikut adalah gabungan soal, program Python, dan query SQL untuk membuat database serta menyelesaikan tugas:
  2.  
  3.  
  4. ---
  5.  
  6. SOAL
  7.  
  8. Pemrograman Client/Server - Ujian Akhir Semester (UAS)
  9.  
  10. Soal A: Input Data Dosen Mengampu Mata Kuliah
  11.  
  12. 1. User memasukkan NIDN, jika ditemukan maka tampilkan identitas dosen. Jika tidak ditemukan, tampilkan pesan kesalahan dan minta input ulang.
  13.  
  14.  
  15. 2. Setelah identitas dosen ditampilkan, masukkan Kode Mata Kuliah, jika ditemukan tampilkan detail mata kuliah. Jika tidak, minta input ulang.
  16.  
  17.  
  18. 3. Masukkan Tahun Akademik.
  19.  
  20.  
  21. 4. Konfirmasi untuk menyimpan data ke tabel dosen_mengampu. Jika disimpan, data harus masuk ke database.
  22.  
  23.  
  24. 5. Tawarkan untuk mengulang proses input dari awal.
  25.  
  26.  
  27.  
  28. Soal B: Menampilkan Data Dosen Mengampu Mata Kuliah
  29.  
  30. 1. Tampilkan semua data dosen yang mengampu mata kuliah dengan format tabel (gunakan library PrettyTable).
  31.  
  32.  
  33. 2. Data harus diambil dari tabel dengan relasi antar tabel menggunakan INNER JOIN.
  34.  
  35.  
  36.  
  37.  
  38. ---
  39.  
  40. DATABASE SETUP
  41.  
  42. Query untuk Membuat Database dan Tabel
  43.  
  44. CREATE DATABASE IF NOT EXISTS db_uas2023_2024_kls_a;
  45. USE db_uas2023_2024_kls_a;
  46.  
  47. -- Tabel dosen
  48. CREATE TABLE IF NOT EXISTS dosen (
  49. id_dosen INT NOT NULL AUTO_INCREMENT,
  50. NIDN CHAR(10) NOT NULL,
  51. nama_dosen CHAR(50) DEFAULT NULL,
  52. status_dosen CHAR(15) DEFAULT NULL,
  53. jabatan_fungsional CHAR(20) DEFAULT NULL,
  54. pendidikan CHAR(2) DEFAULT NULL,
  55. PRIMARY KEY (NIDN),
  56. KEY id_dosen (id_dosen)
  57. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
  58.  
  59. -- Tabel mata_kuliah
  60. CREATE TABLE IF NOT EXISTS mata_kuliah (
  61. kode_matakuliah CHAR(15) NOT NULL,
  62. nama_matakuliah CHAR(50) DEFAULT NULL,
  63. sks INT DEFAULT '0',
  64. semester CHAR(1) DEFAULT NULL,
  65. status CHAR(6) DEFAULT NULL,
  66. prodi CHAR(30) DEFAULT NULL,
  67. keterangan CHAR(1) DEFAULT NULL,
  68. kelas CHAR(8) DEFAULT NULL,
  69. pilihan ENUM('Y','N') NOT NULL DEFAULT 'N',
  70. tahun_kurikulum VARCHAR(4) NOT NULL,
  71. PRIMARY KEY (kode_matakuliah, tahun_kurikulum)
  72. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  73.  
  74. -- Tabel dosen_mengampu
  75. CREATE TABLE IF NOT EXISTS dosen_mengampu (
  76. id INT NOT NULL AUTO_INCREMENT,
  77. nidn CHAR(10) DEFAULT NULL,
  78. kode_matakuliah CHAR(10) DEFAULT NULL,
  79. tahun_akademik CHAR(9) DEFAULT NULL,
  80. PRIMARY KEY (id)
  81. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
  82.  
  83. Query untuk Mengisi Data Awal
  84.  
  85. -- Data awal dosen
  86. INSERT INTO dosen (id_dosen, NIDN, nama_dosen, status_dosen, jabatan_fungsional, pendidikan) VALUES
  87. (1, '0431180001', 'Suparni, S.Pd., M.Pd.', 'Tidak Tetap', 'Tenaga Pengajar', 'S2'),
  88. (2, '0431180003', 'Dr. H. Marlan, M.Eng.,Sc.', 'Tidak Tetap', 'Lektor', 'S3'),
  89. (3, '2129087601', 'Asep Wildan, S.Pdi., M.Pd.', 'Tidak Tetap', 'Lektor', 'S2');
  90.  
  91. -- Data awal mata kuliah
  92. INSERT INTO mata_kuliah (kode_matakuliah, nama_matakuliah, sks, semester, status, prodi, keterangan, kelas, pilihan, tahun_kurikulum) VALUES
  93. ('TI-11101', 'Mentoring Agama 1', 1, '1', 'Ganjil', 'Teknik Informatika', 'T', 'Reguler', 'N', '2008'),
  94. ('TI-11113', 'Bahasa Inggris 1', 2, '1', 'Ganjil', 'Teknik Informatika', 'T', 'Reguler', 'N', '2008');
  95.  
  96. -- Data awal dosen mengampu
  97. INSERT INTO dosen_mengampu (nidn, kode_matakuliah, tahun_akademik) VALUES
  98. ('0431180001', 'TI-11101', '2024/2025'),
  99. ('0431180003', 'TI-11113', '2024/2025');
  100.  
  101.  
  102. ---
  103.  
  104. PROGRAM PYTHON
  105.  
  106. import mysql.connector
  107. from prettytable import PrettyTable
  108.  
  109. # Koneksi ke database
  110. def connect_to_database():
  111. return mysql.connector.connect(
  112. host="localhost",
  113. user="root",
  114. password="", # Ganti dengan password MySQL Anda
  115. database="db_uas2023_2024_kls_a"
  116. )
  117.  
  118. # Fungsi untuk mendapatkan data dosen berdasarkan NIDN
  119. def get_dosen_by_nidn(cursor, nidn):
  120. cursor.execute("SELECT * FROM dosen WHERE NIDN = %s", (nidn,))
  121. return cursor.fetchone()
  122.  
  123. # Fungsi untuk mendapatkan data mata kuliah berdasarkan kode
  124. def get_matkul_by_kode(cursor, kode_matkul):
  125. cursor.execute("SELECT * FROM mata_kuliah WHERE kode_matakuliah = %s", (kode_matkul,))
  126. return cursor.fetchone()
  127.  
  128. # Fungsi untuk menyimpan data dosen mengampu
  129. def insert_dosen_mengampu(cursor, nidn, kode_matkul, tahun_akademik):
  130. cursor.execute("""
  131. INSERT INTO dosen_mengampu (nidn, kode_matakuliah, tahun_akademik)
  132. VALUES (%s, %s, %s)
  133. """, (nidn, kode_matkul, tahun_akademik))
  134.  
  135. # Fungsi untuk menampilkan data dosen mengampu
  136. def display_dosen_mengampu(cursor):
  137. cursor.execute("""
  138. SELECT
  139. d.NIDN AS "NIDN",
  140. d.nama_dosen AS "Nama Dosen",
  141. mk.kode_matakuliah AS "Kode Mata Kuliah",
  142. mk.nama_matakuliah AS "Nama Mata Kuliah",
  143. dm.tahun_akademik AS "Tahun Akademik"
  144. FROM
  145. dosen_mengampu dm
  146. INNER JOIN dosen d ON dm.nidn = d.NIDN
  147. INNER JOIN mata_kuliah mk ON dm.kode_matakuliah = mk.kode_matakuliah;
  148. """)
  149. records = cursor.fetchall()
  150.  
  151. table = PrettyTable(["NIDN", "Nama Dosen", "Kode Mata Kuliah", "Nama Mata Kuliah", "Tahun Akademik"])
  152. for record in records:
  153. table.add_row(record)
  154. print(table)
  155.  
  156. # Program utama
  157. def main():
  158. db = connect_to_database()
  159. cursor = db.cursor()
  160.  
  161. while True:
  162. print("\n=== Input Data Dosen Mengampu Mata Kuliah ===")
  163. nidn = input("Masukkan NIDN: ")
  164. dosen = get_dosen_by_nidn(cursor, nidn)
  165.  
  166. if dosen:
  167. print(f"Identitas Dosen: {dosen}")
  168. kode_matkul = input("Masukkan Kode Mata Kuliah: ")
  169. matkul = get_matkul_by_kode(cursor, kode_matkul)
  170.  
  171. if matkul:
  172. print(f"Data Mata Kuliah: {matkul}")
  173. tahun_akademik = input("Masukkan Tahun Akademik (contoh: 2024/2025): ")
  174. confirm = input("Simpan data ini? (y/n): ").lower()
  175.  
  176. if confirm == 'y':
  177. insert_dosen_mengampu(cursor, nidn, kode_matkul, tahun_akademik)
  178. db.commit()
  179. print("Data berhasil disimpan.")
  180. else:
  181. print("Data tidak disimpan.")
  182. else:
  183. print("Kode Mata Kuliah tidak ditemukan.")
  184. else:
  185. print("NIDN tidak ditemukan.")
  186.  
  187. ulang = input("Ingin mengulang input data? (y/n): ").lower()
  188. if ulang != 'y':
  189. break
  190.  
  191. print("\n=== Data Dosen Mengampu Mata Kuliah ===")
  192. display_dosen_mengampu(cursor)
  193.  
  194. cursor.close()
  195. db.close()
  196.  
  197. if __name__ == "__main__":
  198. main()
  199.  
  200.  
  201. ---
  202.  
  203. Petunjuk Eksekusi
  204.  
  205. 1. Buat database dan tabel menggunakan query SQL di atas.
  206.  
  207.  
  208. 2. Isi data awal menggunakan query yang telah disediakan.
  209.  
  210.  
  211. 3. Jalankan program Python untuk mengelola data.
  212.  
  213.  
  214. 4. Ikuti instruksi input data di terminal atau IDE.
  215.  
  216.  
  217.  
  218. Jika ada pertanyaan atau penyesuaian, silakan beri tahu!
  219.  
  220.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement