PROJECT UAS
STRUKTUR DATA
O
L
E
H
KELOMPOK 1
NAMA : Olivia Rilan Jedahul (12230090)
Muhamad Rehan Fadilah (12230095)
Andika Bayu (12230044)
Dini Intan Febrianti (11230121)
PROGRAM PENDAFTARAN SISWA
from collections import deque
# Struktur data list untuk menyimpan data siswa yang terdaftar
siswa_terdaftar = []
# Struktur data linked list untuk menyimpan data siswa yang telah lulus
class Node:
def __init__(self, data=None):
[Link] = data
[Link] = None
class LinkedList:
def __init__(self):
[Link] = None
def insert(self, data):
if not [Link]:
[Link] = Node(data)
else:
current = [Link]
while [Link]:
current = [Link]
[Link] = Node(data)
def display(self):
current = [Link]
while current:
print([Link])
current = [Link]
siswa_lulus = LinkedList()
# Struktur data stack untuk menyimpan data siswa yang baru mendaftar
stack_siswa_baru = []
# Struktur data queue untuk menyimpan data siswa yang akan dihapus
queue_siswa_hapus = deque()
# Fungsi untuk mendaftarkan siswa baru
def daftar_siswa(nama, nisn):
global siswa_terdaftar, stack_siswa_baru
siswa_terdaftar.append((nama, nisn))
stack_siswa_baru.append((nama, nisn))
print(f"Siswa {nama} dengan NISN {nisn} telah terdaftar.")
# Fungsi untuk menghapus siswa yang telah lulus
def hapus_siswa(nisn):
global siswa_terdaftar, siswa_lulus, queue_siswa_hapus
for i, (nama, nisn_) in enumerate(siswa_terdaftar):
if nisn_ == nisn:
siswa_lulus.insert((nama, nisn))
queue_siswa_hapus.append((nama, nisn))
del siswa_terdaftar[i]
print(f"Siswa {nama} dengan NISN {nisn} telah dihapus.")
return
print(f"Siswa dengan NISN {nisn} tidak ditemukan.")
# Fungsi untuk menampilkan daftar siswa yang terdaftar
def tampilkan_siswa():
global siswa_terdaftar
print("Daftar Siswa yang Terdaftar:")
for nama, nisn in siswa_terdaftar:
print(f"{nama} - {nisn}")
# Fungsi untuk mencari siswa berdasarkan nama atau NISN
def cari_siswa(nama_or_nisn):
global siswa_terdaftar
for nama, nisn in siswa_terdaftar:
if nama == nama_or_nisn or nisn == nama_or_nisn:
print(f"Siswa {nama} dengan NISN {nisn} ditemukan.")
return
print(f"Siswa dengan nama atau NISN {nama_or_nisn} tidak
ditemukan.")
# Fungsi untuk menghitung jumlah siswa yang terdaftar
def hitung_siswa():
global siswa_terdaftar
print(f"Jumlah siswa yang terdaftar: {len(siswa_terdaftar)}")
# Menu program
def main():
while True:
print("Menu:")
print("1. Daftar Siswa Baru")
print("2. Hapus Siswa yang Telah Lulus")
print("3. Tampilkan Daftar Siswa")
print("4. Cari Siswa")
print("5. Hitung Jumlah Siswa")
print("6. Keluar")
pilihan = input("Pilih menu (1-6): ")
if pilihan == '1':
nama = input("Masukkan nama siswa: ")
nisn = input("Masukkan NISN siswa: ")
daftar_siswa(nama, nisn)
elif pilihan == '2':
nisn = input("Masukkan NISN siswa yang akan dihapus: ")
hapus_siswa(nisn)
elif pilihan == '3':
tampilkan_siswa()
elif pilihan == '4':
nama_or_nisn = input("Masukkan nama atau NISN siswa: ")
cari_siswa(nama_or_nisn)
elif pilihan == '5':
hitung_siswa()
elif pilihan == '6':
print("Keluar dari program.")
break
else:
print("Pilihan tidak valid, silakan coba lagi.")
if __name__ == "__main__":
main()