{"id":178,"date":"2025-08-28T14:34:05","date_gmt":"2025-08-28T14:34:05","guid":{"rendered":"https:\/\/learn.rantissi.my.id\/?p=178"},"modified":"2025-08-28T14:34:06","modified_gmt":"2025-08-28T14:34:06","slug":"proyek-besar-aplikasi-gui-manajemen-data-mahasiswa","status":"publish","type":"post","link":"https:\/\/learn.rantissi.my.id\/index.php\/2025\/08\/28\/proyek-besar-aplikasi-gui-manajemen-data-mahasiswa\/","title":{"rendered":"Proyek Besar: Aplikasi GUI Manajemen Data Mahasiswa"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Fitur yang Akan Dibuat:<\/h2>\n\n\n\n<p>\u2705 Form input (Entry)<br>\u2705 Tombol \u201cSimpan\u201d \u2192 menulis ke file <code>mahasiswa.csv<\/code><br>\u2705 Tombol \u201cLihat Semua\u201d \u2192 menampilkan semua isi file<br>\u2705 Tombol \u201cCari NIM\u201d \u2192 menampilkan data mahasiswa tertentu<br>\u2705 Opsi keluar<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Struktur Kode Dasar:<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>import tkinter as tk\nimport csv\nimport os\n\n# Menyimpan data ke CSV\ndef simpan_data():\n    nama = entry_nama.get()\n    nim = entry_nim.get()\n    prodi = entry_prodi.get()\n    if not nama or not nim or not prodi:\n        label_status.config(text=\"Semua field wajib diisi!\")\n        return\n    with open(\"mahasiswa.csv\", \"a\", newline='') as file:\n        writer = csv.writer(file)\n        writer.writerow(&#91;nama, nim, prodi])\n    label_status.config(text=f\"Data {nama} berhasil disimpan!\")\n    entry_nama.delete(0, tk.END)\n    entry_nim.delete(0, tk.END)\n    entry_prodi.delete(0, tk.END)\n\n# Menampilkan semua data\ndef lihat_semua():\n    if not os.path.exists(\"mahasiswa.csv\"):\n        label_status.config(text=\"Belum ada data!\")\n        return\n    with open(\"mahasiswa.csv\", \"r\") as file:\n        reader = csv.reader(file)\n        text_output.delete(\"1.0\", tk.END)\n        for row in reader:\n            text_output.insert(tk.END, f\"Nama: {row&#91;0]}, NIM: {row&#91;1]}, Prodi: {row&#91;2]}\\n\")\n\n# Cari berdasarkan NIM\ndef cari_nim():\n    target = entry_cari.get()\n    ditemukan = False\n    if not os.path.exists(\"mahasiswa.csv\"):\n        label_status.config(text=\"Belum ada data!\")\n        return\n    with open(\"mahasiswa.csv\", \"r\") as file:\n        reader = csv.reader(file)\n        for row in reader:\n            if row&#91;1] == target:\n                text_output.delete(\"1.0\", tk.END)\n                text_output.insert(tk.END, f\"DATA DITEMUKAN:\\nNama: {row&#91;0]}\\nNIM: {row&#91;1]}\\nProdi: {row&#91;2]}\")\n                ditemukan = True\n                break\n    if not ditemukan:\n        text_output.delete(\"1.0\", tk.END)\n        text_output.insert(tk.END, \"Data tidak ditemukan.\")\n\n# GUI Setup\nwindow = tk.Tk()\nwindow.title(\"Manajemen Mahasiswa\")\nwindow.geometry(\"400x500\")\n\ntk.Label(window, text=\"Nama\").pack()\nentry_nama = tk.Entry(window)\nentry_nama.pack()\n\ntk.Label(window, text=\"NIM\").pack()\nentry_nim = tk.Entry(window)\nentry_nim.pack()\n\ntk.Label(window, text=\"Prodi\").pack()\nentry_prodi = tk.Entry(window)\nentry_prodi.pack()\n\ntk.Button(window, text=\"Simpan Data\", command=simpan_data).pack(pady=5)\n\ntk.Label(window, text=\"Cari NIM\").pack()\nentry_cari = tk.Entry(window)\nentry_cari.pack()\ntk.Button(window, text=\"Cari\", command=cari_nim).pack(pady=5)\n\ntk.Button(window, text=\"Lihat Semua Data\", command=lihat_semua).pack(pady=5)\n\ntext_output = tk.Text(window, height=10)\ntext_output.pack()\n\nlabel_status = tk.Label(window, text=\"\", fg=\"green\")\nlabel_status.pack()\n\ntk.Button(window, text=\"Keluar\", command=window.quit).pack(pady=5)\n\nwindow.mainloop()<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Fitur yang Akan Dibuat: \u2705 Form input (Entry)\u2705 Tombol \u201cSimpan\u201d \u2192 menulis ke file mahasiswa.csv\u2705 Tombol \u201cLihat Semua\u201d \u2192 menampilkan semua isi file\u2705 Tombol \u201cCari NIM\u201d \u2192 menampilkan data mahasiswa tertentu\u2705 Opsi keluar Struktur Kode Dasar:<\/p>\n","protected":false},"author":1,"featured_media":20,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,9,7],"tags":[],"class_list":["post-178","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","category-projek","category-python"],"_links":{"self":[{"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/posts\/178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/comments?post=178"}],"version-history":[{"count":1,"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/posts\/178\/revisions"}],"predecessor-version":[{"id":179,"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/posts\/178\/revisions\/179"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/media\/20"}],"wp:attachment":[{"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/media?parent=178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/categories?post=178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/learn.rantissi.my.id\/index.php\/wp-json\/wp\/v2\/tags?post=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}