, ,

Proyek Besar: Aplikasi GUI Manajemen Data Mahasiswa

rantissi Avatar
Proyek Besar: Aplikasi GUI Manajemen Data Mahasiswa

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

Your email address will not be published. Required fields are marked *