Fitur yang Akan Dibuat:
✅ Form input (Entry)
✅ Tombol “Simpan” → menulis ke file mahasiswa.csv
✅ Tombol “Lihat Semua” → menampilkan semua isi file
✅ Tombol “Cari NIM” → menampilkan data mahasiswa tertentu
✅ Opsi keluar
Struktur Kode Dasar:
import tkinter as tk
import csv
import os
# Menyimpan data ke CSV
def simpan_data():
nama = entry_nama.get()
nim = entry_nim.get()
prodi = entry_prodi.get()
if not nama or not nim or not prodi:
label_status.config(text="Semua field wajib diisi!")
return
with open("mahasiswa.csv", "a", newline='') as file:
writer = csv.writer(file)
writer.writerow([nama, nim, prodi])
label_status.config(text=f"Data {nama} berhasil disimpan!")
entry_nama.delete(0, tk.END)
entry_nim.delete(0, tk.END)
entry_prodi.delete(0, tk.END)
# Menampilkan semua data
def lihat_semua():
if not os.path.exists("mahasiswa.csv"):
label_status.config(text="Belum ada data!")
return
with open("mahasiswa.csv", "r") as file:
reader = csv.reader(file)
text_output.delete("1.0", tk.END)
for row in reader:
text_output.insert(tk.END, f"Nama: {row[0]}, NIM: {row[1]}, Prodi: {row[2]}\n")
# Cari berdasarkan NIM
def cari_nim():
target = entry_cari.get()
ditemukan = False
if not os.path.exists("mahasiswa.csv"):
label_status.config(text="Belum ada data!")
return
with open("mahasiswa.csv", "r") as file:
reader = csv.reader(file)
for row in reader:
if row[1] == target:
text_output.delete("1.0", tk.END)
text_output.insert(tk.END, f"DATA DITEMUKAN:\nNama: {row[0]}\nNIM: {row[1]}\nProdi: {row[2]}")
ditemukan = True
break
if not ditemukan:
text_output.delete("1.0", tk.END)
text_output.insert(tk.END, "Data tidak ditemukan.")
# GUI Setup
window = tk.Tk()
window.title("Manajemen Mahasiswa")
window.geometry("400x500")
tk.Label(window, text="Nama").pack()
entry_nama = tk.Entry(window)
entry_nama.pack()
tk.Label(window, text="NIM").pack()
entry_nim = tk.Entry(window)
entry_nim.pack()
tk.Label(window, text="Prodi").pack()
entry_prodi = tk.Entry(window)
entry_prodi.pack()
tk.Button(window, text="Simpan Data", command=simpan_data).pack(pady=5)
tk.Label(window, text="Cari NIM").pack()
entry_cari = tk.Entry(window)
entry_cari.pack()
tk.Button(window, text="Cari", command=cari_nim).pack(pady=5)
tk.Button(window, text="Lihat Semua Data", command=lihat_semua).pack(pady=5)
text_output = tk.Text(window, height=10)
text_output.pack()
label_status = tk.Label(window, text="", fg="green")
label_status.pack()
tk.Button(window, text="Keluar", command=window.quit).pack(pady=5)
window.mainloop()
Leave a Reply