121 lines
3.5 KiB
Python
Executable File
121 lines
3.5 KiB
Python
Executable File
# Variabel global untuk menyimpan data
|
|
# Ini adalah 'state' program, terpisah dari fungsi.
|
|
# Berbeda dengan 'self.data_mahasiswa' yang terikat pada objek.
|
|
data_mahasiswa = []
|
|
|
|
|
|
def tampilkan_data():
|
|
print("\n--- Daftar Data Tersimpan ---")
|
|
|
|
# Langsung mengakses variabel GLOBAL 'data_mahasiswa'
|
|
if not data_mahasiswa:
|
|
print("Belum ada data yang tersimpan.")
|
|
else:
|
|
# Menampilkan data sesuai format
|
|
for i, data in enumerate(data_mahasiswa, start=1):
|
|
print(f"{i}. {data['nama']}, {data['alamat']}")
|
|
print("-----------------------------")
|
|
|
|
|
|
# Ini juga FUNGSI biasa
|
|
def tambah_data():
|
|
print("\n--- Menu 1: Tambah Data ---")
|
|
nama = input("Masukkan data nama: ")
|
|
alamat = input("Masukkan data alamat: ")
|
|
|
|
# Langsung memodifikasi variabel GLOBAL
|
|
data_mahasiswa.append({"nama": nama, "alamat": alamat})
|
|
print("\nData baru berhasil ditambahkan!")
|
|
|
|
|
|
# FUNGSI biasa
|
|
def ubah_data():
|
|
print("\n--- Menu 2: Ubah Data ---")
|
|
|
|
# Memanggil FUNGSI global lainnya
|
|
tampilkan_data()
|
|
|
|
if not data_mahasiswa:
|
|
print("Data kosong, tidak ada yang bisa diubah.")
|
|
return
|
|
|
|
try:
|
|
pilihan_str = input("Pilih data yang akan dirubah : ")
|
|
pilihan = int(pilihan_str)
|
|
index = pilihan - 1
|
|
|
|
if 0 <= index < len(data_mahasiswa):
|
|
print(
|
|
f"Anda akan mengubah data ke-{pilihan}: {data_mahasiswa[index]['nama']}"
|
|
)
|
|
nama_baru = input("Masukkan nama baru: ")
|
|
alamat_baru = input("Masukkan alamat baru: ")
|
|
|
|
# Langsung memodifikasi variabel GLOBAL
|
|
data_mahasiswa[index] = {"nama": nama_baru, "alamat": alamat_baru}
|
|
print("\nData berhasil diubah!")
|
|
else:
|
|
print("Nomor data invalid.")
|
|
|
|
except ValueError:
|
|
print("Input Invalid. Masukkan Angka.")
|
|
|
|
|
|
# FUNGSI biasa
|
|
def hapus_data():
|
|
print("\n--- Menu 3: Hapus Data ---")
|
|
|
|
tampilkan_data()
|
|
|
|
if not data_mahasiswa:
|
|
print("Data kosong, tidak ada yang bisa dihapus.")
|
|
return
|
|
|
|
try:
|
|
pilihan_str = input("Pilih data no data yang akan dihapus : ")
|
|
pilihan = int(pilihan_str)
|
|
index = pilihan - 1
|
|
|
|
if 0 <= index < len(data_mahasiswa):
|
|
# Langsung memodifikasi variabel GLOBAL
|
|
data_yang_dihapus = data_mahasiswa.pop(index)
|
|
print(f"\nData '{data_yang_dihapus['nama']}' berhasil dihapus.")
|
|
else:
|
|
print("Nomor data invalid.")
|
|
|
|
except ValueError:
|
|
print("Input Invalid. Masukkan Angka.")
|
|
|
|
|
|
# FUNGSI utama untuk menjalankan program
|
|
def jalankan_program():
|
|
while True:
|
|
print("\nMenu")
|
|
print("1. Tambah data")
|
|
print("2. Ubah data")
|
|
print("3. Hapus data")
|
|
print("4. Tampil data")
|
|
print("5. Keluar") # Tambahan kecil
|
|
|
|
pilihan = input("Pilihlah no menu diatas: ")
|
|
|
|
# Memanggil FUNGSI global, bukan method objek
|
|
if pilihan == "1":
|
|
tambah_data() # Bukan app.tambah_data()
|
|
elif pilihan == "2":
|
|
ubah_data() # Bukan app.ubah_data()
|
|
elif pilihan == "3":
|
|
hapus_data() # Bukan app.hapus_data()
|
|
elif pilihan == "4":
|
|
tampilkan_data() # Bukan app.tampilkan_data()
|
|
input("\nTekan Enter untuk kembali ke menu...")
|
|
elif pilihan == "5":
|
|
print("Program selesai.")
|
|
break # Keluar dari loop
|
|
else:
|
|
print("Pilihan invalid. Pilih nomor 1-5.")
|
|
|
|
|
|
# Langsung panggil FUNGSI global untuk memulai program
|
|
jalankan_program()
|