Advertisement
afrizalwahyuadi66

n3

Jan 16th, 2025
8
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.64 KB | None | 0 0
  1. Berikut adalah penyesuaian program Python berdasarkan database yang Anda unggah:
  2.  
  3. Struktur Database
  4.  
  5. 1. Tabel dosen: Menyimpan data dosen.
  6.  
  7.  
  8. 2. Tabel mata_kuliah: Menyimpan data mata kuliah.
  9.  
  10.  
  11. 3. Tabel dosen_mengampu: Menyimpan data hubungan dosen, mata kuliah, dan tahun akademik.
  12.  
  13.  
  14.  
  15. Program Python
  16.  
  17. import mysql.connector
  18. from prettytable import PrettyTable
  19.  
  20. # Koneksi ke database
  21. def connect_to_database():
  22. return mysql.connector.connect(
  23. host="localhost",
  24. user="root",
  25. password="", # Ganti dengan password MySQL Anda
  26. database="db_uas2023_2024_kls_a"
  27. )
  28.  
  29. # Fungsi untuk mendapatkan data dosen berdasarkan NIDN
  30. def get_dosen_by_nidn(cursor, nidn):
  31. cursor.execute("SELECT * FROM dosen WHERE NIDN = %s", (nidn,))
  32. return cursor.fetchone()
  33.  
  34. # Fungsi untuk mendapatkan data mata kuliah berdasarkan kode
  35. def get_matkul_by_kode(cursor, kode_matkul):
  36. cursor.execute("SELECT * FROM mata_kuliah WHERE kode_matakuliah = %s", (kode_matkul,))
  37. return cursor.fetchone()
  38.  
  39. # Fungsi untuk menyimpan data dosen mengampu
  40. def insert_dosen_mengampu(cursor, nidn, kode_matkul, tahun_akademik):
  41. cursor.execute("""
  42. INSERT INTO dosen_mengampu (nidn, kode_matakuliah, tahun_akademik)
  43. VALUES (%s, %s, %s)
  44. """, (nidn, kode_matkul, tahun_akademik))
  45.  
  46. # Fungsi untuk menampilkan data dosen mengampu
  47. def display_dosen_mengampu(cursor):
  48. cursor.execute("""
  49. SELECT
  50. d.NIDN, d.nama_dosen, mk.kode_matakuliah, mk.nama_matakuliah, dm.tahun_akademik
  51. FROM
  52. dosen_mengampu dm
  53. INNER JOIN dosen d ON dm.nidn = d.NIDN
  54. INNER JOIN mata_kuliah mk ON dm.kode_matakuliah = mk.kode_matakuliah
  55. """)
  56. records = cursor.fetchall()
  57.  
  58. table = PrettyTable(["NIDN", "Nama Dosen", "Kode Mata Kuliah", "Nama Mata Kuliah", "Tahun Akademik"])
  59. for record in records:
  60. table.add_row(record)
  61. print(table)
  62.  
  63. # Program utama
  64. def main():
  65. db = connect_to_database()
  66. cursor = db.cursor()
  67.  
  68. while True:
  69. print("\n=== Input Data Dosen Mengampu Mata Kuliah ===")
  70. nidn = input("Masukkan NIDN: ")
  71. dosen = get_dosen_by_nidn(cursor, nidn)
  72.  
  73. if dosen:
  74. print(f"Identitas Dosen: {dosen}")
  75. kode_matkul = input("Masukkan Kode Mata Kuliah: ")
  76. matkul = get_matkul_by_kode(cursor, kode_matkul)
  77.  
  78. if matkul:
  79. print(f"Data Mata Kuliah: {matkul}")
  80. tahun_akademik = input("Masukkan Tahun Akademik (contoh: 2024/2025): ")
  81. confirm = input("Simpan data ini? (y/n): ").lower()
  82.  
  83. if confirm == 'y':
  84. insert_dosen_mengampu(cursor, nidn, kode_matkul, tahun_akademik)
  85. db.commit()
  86. print("Data berhasil disimpan.")
  87. else:
  88. print("Data tidak disimpan.")
  89. else:
  90. print("Kode Mata Kuliah tidak ditemukan.")
  91. else:
  92. print("NIDN tidak ditemukan.")
  93.  
  94. ulang = input("Ingin mengulang input data? (y/n): ").lower()
  95. if ulang != 'y':
  96. break
  97.  
  98. print("\n=== Data Dosen Mengampu Mata Kuliah ===")
  99. display_dosen_mengampu(cursor)
  100.  
  101. cursor.close()
  102. db.close()
  103.  
  104. if __name__ == "__main__":
  105. main()
  106.  
  107. Langkah-langkah:
  108.  
  109. 1. Sesuaikan konfigurasi koneksi database (host, user, password, dan database).
  110.  
  111.  
  112. 2. Jalankan program di terminal/IDE Python.
  113.  
  114.  
  115. 3. Input data sesuai prompt:
  116.  
  117. NIDN untuk mengecek dosen.
  118.  
  119. Kode Mata Kuliah untuk mengecek mata kuliah.
  120.  
  121. Tahun akademik untuk menyimpan data.
  122.  
  123.  
  124.  
  125. 4. Setelah selesai input, program akan menampilkan data dosen mengampu mata kuliah dalam format tabel.
  126.  
  127.  
  128.  
  129. Jika ada kebutuhan lain atau kendala, silakan beri tahu!
  130.  
  131.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement